2011-10-31 220 views
1

业务场景多种类型的客户:数据库设计,在同一个表

  • 客户可以登录到在线电子商务应用,使用他们的电子邮件地址作为其登录信息。

  • 我们有一个CRM应用程序依赖于同一个数据库。员工使用CRM应用程序添加非在线客户,并且此处不需要电子邮件字段。

技术上: 在客户表中没有什么“自然”做出PK。无论如何,即使没有自然的PK,我也总是使用人造PK。我担心这最终会导致搜索,完整性等方面的问题。但我无法确定究竟会出现什么问题。

我认为开发人员不会期望电子邮件列允许为空,他们将创建忽略这种情况的程序。

请记住整个系统和大部分数据库都依赖于客户数据,如果客户表中出现问题,它可能会被其他表继承。

两种类型的客户在我的大脑中触发异常,但我无法弄清楚异常的消息。你怎么看?现在找出一些出路是否更好?或者你认为,这样可以,直到出现问题为止,因为这不太可能会导致问题,请记住,问题不是由于秘密的问题,它可以是可维护性或发展并发症?

感谢

+0

问题是什么?为什么不能使用简单的代理键(自动递增)作为PK? –

+0

那我的意思是通过人工PK – Costa

+0

CRM是一个打包解决方案还是内部开发? – home

回答

1

是否有一个具体的理由在同一个表将这些数据一起? CRM“客户”和电子商务客户在此数据库中共享许多其他表格吗?

老实说,我不会把电子商务客户放在这个数据库中。尽管您可以创建视图来轻松分离电子商务和CRM数据,但这对我来说似乎完全没有必要。此外,您还没有描述为什么电子商务和CRM数据需要存在于同一个数据库中的任何特定原因。也许有一个原因,你没有包括在问题中,但如果你问我,这已经闻起来了。

从我们这里包含的信息来看,我不认为你会为电子商务客户创建一个单独的数据库和表格,从而失去任何重要的东西。将不相关的数据分开。

编辑:

为了让体验更加明确:如果你的电子商务客户不与CRM客户共享大量的数据,创建新的客户表。如果他们分享大量的数据,那么一个空列可能不是世界的尽头。

+0

系统已经存在,我没有参与这个设计。 所以,你同意我的观点,总有一天会引起一些麻烦,我必须做点什么,否则你会这样离开,直到出现问题。 – Costa

+1

新的电子商务客户是否会与CRM客户分享大量数据?您在原始问题中没有提供关于此的详细信息。 **如果答案是肯定的,那么我认为可以将电子商务客户放在同一张表中 - 空电子邮件列不是世界末日。 **如果答案不是**,那么您需要考虑创建一个单独的电子商务数据库和客户表。 – jwiscarson

+0

e-Commerece应用程序需要电子商务客户电子邮件,但客户关系管理应用程序不需要CRM客户电子邮件,而且这两个应用程序几乎共享所有内容。 因此,我在同一张桌子上,我将有一个设计,并不真正强制电子商务应用程序的完整性....同意? – Costa