【发布时间】:2011-12-18 19:26:47
【问题描述】:
业务场景:
客户可以使用他们的电子邮件地址作为登录名来登录在线电子商务应用程序。
我们有一个依赖于同一个数据库的 CRM 应用程序。员工使用 CRM 应用添加非在线客户,此处电子邮件不是必填字段。
技术上: 在 Customer 表中没有“自然地”进行 PK。无论如何,即使没有自然的PK,我也总是使用人工PK。我担心这最终会导致搜索、完整性等方面的问题。不过,我无法确切确定会出现什么问题。
我认为开发人员不会期望电子邮件列允许 null,他们会创建忽略这种情况的程序。
请记住,整个系统,以及大部分数据库都会依赖于客户数据,如果客户表出现问题,很可能会被其他表继承。
两种类型的客户的存在在我的大脑中引发了异常,但我无法弄清楚异常的信息。你怎么看?现在是不是更好地找到出路?或者你认为,没关系,一直这样直到出现问题,因为它不太可能导致问题,记住问题不是必要的错误,它可能是可维护性或开发复杂性?
谢谢
【问题讨论】:
-
有什么问题?为什么不能使用简单的代理键(自动递增)作为 PK?
-
人工PK就是这个意思
-
CRM 是打包解决方案还是内部开发?
-
是哪一个?它是一个打包的解决方案,还是内部开发的?或者,您是说您工作的公司修改了打包解决方案?
-
@Costa:如果是购买的软件包,我永远不会尝试修改内部表,也不会尝试将数据直接插入这些表中。创建一个“卫星”系统来管理您的扩展需求。
标签: asp.net sql-server database-design architecture e-commerce