如何与一位知名会员建立1:n的关系

时间:2016-03-30 06:54:34

标签: sql-server entity-relationship

我正在开发一个管理客户及其应用程序打包请求的程序。我希望将信息存储在MS SQL数据库中,并根据客户具有不同的默认值,因为不同的客户具有不同的相关或使用值集。

我的数据库有2个相关表:客户和应用程序。一个客户可以拥有多个应用程序(1:n应用程序中的外键)但每个客户也只有一组默认值(客户中的1:1外键)

在一些研究之后,我找不到任何尝试类似事物的人,我对这两个参考文献感到非常不舒服。是否有更优雅的方式来实现1:N关系的N方面的一个优秀成员?

1 个答案:

答案 0 :(得分:0)

有几种方法:

您的客户和默认设置为1:1。

所有其他应用程序实体的客户是1:n

  • 您可以将默认值直接放入客户表(简单快捷但不干净)
  • 您可以定义两个具有相同结构的表。一个用非可空列来定义默认值并将它们绑定为1:1,将第二个绑定为1:n关系(需要UNION查询将它们放在一起)
  • 您可以在应用程序表中使用标记来标记“默认”行(您需要确保只有一个标记记录)
  • 您可能 - 这似乎是您当前的方法 - 将FK-ID设置到您的客户表中以存储默认行的ID。
  • 我的方法是:在您的应用程序表中添加一个排名列。您可以将customerID和rank的组合设置为唯一...这使您能够将具有最低排名的组合定义为默认值 - 并且 - 类似于级联样式表 - 您可以从最高级别开始并向后移动直到找到一个非NULL的值。