数据库设计,同一表中的多种类型的客户

时间:2011-10-31 14:44:18

标签: asp.net sql-server database-design architecture e-commerce

业务场景:

  • 客户可以使用他们的电子邮件地址登录在线电子商务应用程序。

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

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

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

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

两种类型的客户的存在引发了我脑中的异常,但我无法弄清楚异常的消息。你怎么看?现在找到一些出路更好吗?或者你认为,没关系,留下这样的问题,直到出现问题为止,因为它不太可能导致问题,请记住,问题不是由于neccissary,它可以是可维护性还是开发并发症?

由于

1 个答案:

答案 0 :(得分:1)

是否有特定原因将这些数据放在同一个表中? CRM“客户”和电子商务客户是否共享此数据库中的许多其他表?

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

根据您在此处提供的信息,我认为您不会因为为电子商务客户创建单独的数据库和表而丢失任何重要信息。将不相关的数据分开。

修改

要明确这一点:如果您的电子商务客户不与CRM客户共享大量数据,创建新的客户表。如果他们分享大量数据,那么一个空列可能不是世界末日。