关于SQL(计算/数据库):

当表中有两个或多个字段一起唯一地标识其记录时,调用它们的正确方法是什么?组合键或复合键?

我在网络上都看到过这两种用法,所以我不太确定。

评论

查看以下两种Google搜索趋势:goo.gl/5u4XdR。

#1 楼

复合密钥和复合密钥都描述了具有多个属性的候选密钥。根据关系数据库字典(C.J.Date),它们含义相同。

在ER建模中,“复合键”一词也具有更具体的含义。这意味着其组成属性是对其他实体中的键的引用的键-即复合键形成标识关系。对于大多数目的来说,这不是一个特别有用或重要的概念,因此术语“复合/化合物”通常被视为可互换的。除非您特别提到复合键的ER建模概念,否则最好坚持使用“复合键”。

评论


“在ER建模中,术语“复合键”也具有更具体的含义” –听起来令人信服:)但是您有引用吗?

–有一天
2012年4月13日在12:26

因此,复合键将是通常用于许多关系的联结表中的键吗?

–乔什(Josh P)
19年11月19日在16:30

#2 楼

我仍然不确定为什么不参考http://en.wikipedia.org/wiki/Compound_key。它非常清楚地指出(并且是正确的):在数据库设计中,复合键是由2个或更多可唯一标识实体出现的属性组成的键。组成复合键的每个属性本身就是一个简单键。

这通常与复合键相混淆,尽管复合键也是由两个或多个唯一地组成的属性组成的键标识一个实体出现,至少一个组成组合键的属性本身并不是一个简单的键。


组合键由可能会或可能不会的元素组成是外键。示例:在交易明细表中,键为(TransactionId,ItemNumber)。交易明细是交易的子实体。 TransactionId是一个外键,引用事务表。 ItemNumber本身不是键。它仅在单笔交易的上下文中唯一标识一个项目。

复合键是键,而键的任何部分都是外键。示例:在酒店预订系统中,预订具有复合键(GuestId,HotelId,ArrivalDate)。 GuestId标识来宾,并引用来宾表。 HotelId标识酒店,并引用酒店表。 ArrivalDate标识日期。它可能引用也可能不引用它的Dates表,但是无论哪种方式它都标识一个实体(一个Date)。

这个事实还值得注意:一个简单的键是一个由一个键组成的键。列,而组合键则由两列或更多列组成。

评论


jcolebrand:“复合密钥是一种密钥,密钥的任何部分都可以识别记录。”那是不对的。根据定义,密钥必须是不可还原的(最小的超级密钥)。如果只需要某些属性来唯一地标识一个元组,那么根据定义,这是一个超键而不是键。

– nvogel
2011年6月2日20:39

a)我引用了维基百科页面。 b)我倾向于同意。复合键的任何部分本身就是一个简单键。我不介意您是否也称它为超级键。我不相信所有复合键都可以是超级键。恩,我支持Wikipedia文章中的内容,并且支持我引用的定义。如果可以使您更开心,我可以去拿我出版的精装数据库设计书。

–jcolebrand♦
2011年6月2日20:48

但是,我认为您错过了相关的要点,那就是复合键由其他实体的键组成。密钥的适当子集不可能是密钥。如您所知,键必须是最小的(在它的表中是键)-因此,如果您从中删除任何属性,那么它将不再是键。

– nvogel
2011年6月2日21:06

不正确,我不同意。候选密钥很可能根本不是密钥。当确定是钥匙时,它只是钥匙。还应注意,候选键通常是在关系上,而不是实体上。

–jcolebrand♦
2011年6月2日在21:07



维基百科页面上“复合键”和“复合键”的定义已于2014年7月13日更改,并且不再与此答案中的定义匹配。 (我没有更改定义,只是指出这些定义现在不匹配。)

–spencer7593
2015年1月7日在23:56



#3 楼

组合键由多个属性组成,以唯一地标识实体的出现。这与复合键的不同之处在于,构成键的一个或多个属性本身并不是简单的键。例如,您有一个保存CD集合的数据库。实体之一称为轨道,它在CD上保存轨道的详细信息。它具有CD名称,曲目号的复合键。

#4 楼

在我看来,复合键是包含复合键的超集。如果我们接受一个组合键由一个以上的属性(任何种类的属性)组成,而一个复合键由多个以上的简单键组成。复合键是一种复合键,具有更特殊的含义,但是术语“复合”键始终适合使用。

#5 楼

在英语中,它是“复合键”。例如,看看MSDN网站(任何包含“ sql复合键”的搜索都可以)。

http://www.google.com/search?q=sql+composite+key+ site:msdn.microsoft.com

假设问题与关系数据库有关,我在Wikipedia中搜索了“中性”定义:


复合键是由表中的两个或多个属性组成的键(共同),它们唯一地标识一条记录


评论


msdn.microsoft.com/zh-CN/library/bb399391.aspx

– Hemme
2011年6月2日19:40

#6 楼

当来自不同表的2个或更多主键作为实体中的外键存在时,将创建复合键。组合键是由两个或更多列组成的,它们唯一地标识实体中的行

评论


没有参考,这不过是猜测。

– Max Vernon♦
20/11/23在16:16