Tom*_*Lee 6 sql database database-design data-modeling
这无疑是一个新手问题,但我一直未能找到满意的答案.在为多对多关系创建链接表时,最好是创建唯一的id还是仅使用相应表的两个外键(复合键?).
以Northwind数据库的不同图表为例,我发现了两个"版本".即:带有fkProductID和fkOrderID的OrderDetails表以及添加了OrderDetailsID的版本.
有什么不同?(它还取决于数据库引擎吗?).SQL(或Linq)的优点/缺点是什么?
提前感谢您的解释.
汤姆
ORM一直强制要求使用非复合主键来简化查询...
乍一看,它使删除或更新一个特定的顺序/等容易-直到你意识到你需要知道的值适用的ID 第一.如果您必须根据订单细节搜索该id值,那么您最好直接在第一时间使用这些标准.
在此示例中,主键约束将确保两列(fkProductID和fkOrderID)将是唯一的并且已编制索引(如果聚簇索引尚不存在,这些天大多数DB会自动索引主键)使用最佳索引对于表.
单独的主键方法意味着OrderDetailsID使用表的最佳索引编制索引(SQL Server和MySQL将它们称为聚簇索引,对Oracle而言,它们都只是索引),并且需要额外的复合唯一约束/索引.某些数据库可能需要超出唯一约束的额外索引...因此,这会使数据模型更复杂,更复杂,并且没有任何好处:
我没有看到单个列主键相对于复合主键的好处.更多的工作需要额外的开销,没有净利益......