将标识字段设为四列

时间:2017-08-17 13:48:24

标签: asp.net sql-server asp.net-mvc sql-server-2016

我正在设计一个新系统的数据库,其中我们有大约5个主表,即ClientDwg,DwgMaster,ChildDwg,DwgMaterial,DwgComponent。所有这些表都有相同的4个键(在某种程度上也是主键),它们是DwgNo,DwgType,DwgPart,DwgVersion。

现在我的问题是,我是否应该在每个表中都有上述四列的复合主键,或者我应该将标识字段(id)作为主键?两者的起伏都会是什么?我担心的是,如果我在上面复合主键上面,那么在我的应用程序和数据库中,我将不得不在任何地方引用所有四个字段(进行连接,获取/更新数据等)。

编辑:我们基本上是从头开始为现有的遗留应用程序编写新的应用程序,该应用程序使用了复合密钥的概念(应用程序是vb6和oracle db)。那个环境太令人头疼了。现在我们在ASP.Net MVC 5和SQL Server 2016中重新编写应用程序。

1 个答案:

答案 0 :(得分:1)

我(几乎)总是投票给一个代理密钥 - 如果你需要将该表加入其他代码,那就更简单了。

如果您有复合键,那么引用您的表格的所有表格必须 所有这些列才能建立FK连接。每次编写JOIN查询时,都必须指定所有这些列

如果你的复合索引中有两列以上的话,这会让真的很累并且很快就会烦恼......