Ber*_*nDK 2 sql sql-server query-optimization linq-to-sql
假设我们有3个表(实际上我目前有2个表,但这个例子可能更好地说明了这个想法):
[人]
[组]
[角色]
[PersonGroupRole]
如果PersonGroupRole关系中的3个ID中的任何一个被标记为PRIMARY键,还是它们都应该被合并为一个复合词?这样做的真正好处是什么?
据我所知,我可以加入,所以Person JOIN PersonGroupRole JOIN Group给了我哪些人在哪些组等.
我将在SQL-express和SQL-server之上使用LINQ/C#/ .NET,因此如果有任何关于语言/ SQL的原因可能会使选择更加明确,那就是我要求的平台.
期待看到弹出的答案,因为我在组合时会多次考虑这些主键/索引.
编辑:
好吧,问题是被误解我现在可以看到.
问题在于,如果将PersonGroupRole中的三个ID标记为PRIMARY KEYS用于索引目的是有意义的.这是否会为加入三个表中的每个表增加额外的速度,或者它们是否应该在PersonGroupRole表中没有PRIMARY KEY且在单独的表中只是Primary.
对不起,关于混乱.将尝试更好地解释我的问题.
复合键清楚地标识每一行(假设一个人不能在同一组中具有两次相同的角色),因此它可以生成一个好的主键.
是否实际将其声明为物理主键虽然取决于您正在使用的工具以及这些表周围的其余数据库.你有很多其他表有FK到这个表吗?如果是这样,那么代理键可能是有序的.