我应该在具有索引主键的唯一列和键之间选择多少值?

时间:2017-12-03 04:42:37

标签: sql-server database-design many-to-many

我有2张桌子,有许多关系。所以我使用第三个表将2个表映射到一起。而且我不知道在具有自动递增的整数主键然后在其他索引上放置唯一索引或使用主键具有多个值之间应该选择什么。每种方式都有什么好处?

非常感谢

2 个答案:

答案 0 :(得分:1)

在Microsoft SQL Server数据库中,PRIMARY KEY约束与非可空列上的UNIQUE约束之间没有显着差异。 PRIMARY KEY基本上只是语法糖。公约和个人偏好是使用PRIMARY KEY约束的最常见原因。

在任何DBMS中,真正重要的是你拥有什么键以及如何使用它们,而不是你指定的键#34;主要"。

答案 1 :(得分:1)

数据建模的理论,两种解决方案都是正确的。

但实际上:最好使用第二种解决方案。
获取新的自动增量ID并将其设置为主键并将两个传输的外键设置为唯一(一起)。

优势:
数据冗余: 假设我们有两个名为A和B的表,AB是新创建的中间表(因为多对多关系)。
现在,如果AB与C有一个新的关系(一对多),我们应该将AB的Primary-Key作为外键发送给C.所以最好转换ID而不是两个属性。如果C与D ...有一个新的关系(一对多),那么同样如此。

缺点:
访问ID的性能:虽然第一个解决方案中存在冗余,但在不使用任何JOIN的情况下可以访问ID。 (假设在表C中,我们想要访问A和B ID。),仅使用访问到ID。