igordcard Asked: 2011-06-03 11:06:56 +0800 CST2011-06-03 11:06:56 +0800 CST 2011-06-03 11:06:56 +0800 CST 在 SQL 中,它是复合键还是复合键? 772 关于 SQL(计算/数据库): 当我们在一个表中有两个或多个字段共同唯一标识其记录时,调用它们的正确方法是什么?复合键还是复合键? 我在网上看到这两种用途,所以我不太确定。 terminology database-design 5 个回答 Voted Best Answer nvogel 2011-06-03T13:00:28+08:002011-06-03T13:00:28+08:00 复合键和复合键都描述了具有多个属性的候选键。根据关系数据库字典 (CJDate),它们的含义相同。 在 ER 建模中,术语“复合键”也有更具体的含义。它意味着一个键,其组成属性是对其他实体中键的引用——即复合键形成一种识别关系。对于大多数目的,这不是一个特别有用或重要的概念,因此术语复合/复合通常被视为可互换的。除非您专门指的是复合键的 ER 建模概念,否则最好坚持使用“复合键”。 jcolebrand 2011-06-03T12:21:28+08:002011-06-03T12:21:28+08:00 我仍然不确定为什么没有咨询http://en.wikipedia.org/wiki/Compound_key 。它非常清楚地说明(并且是正确的): 在数据库设计中,复合键是由 2 个或多个唯一标识实体出现的属性组成的键。构成复合键的每个属性本身就是一个简单键。 这通常与复合键相混淆,即使这也是由 2 个或多个唯一标识实体出现的属性组成的键,但构成复合键的至少一个属性本身并不是一个简单的键。 复合键由可能是也可能不是外键的元素组成。示例:在交易明细表中,键为 (TransactionId, ItemNumber)。交易明细是交易的子实体。TransactionId 是一个外键,引用 Transactions 表。ItemNumber 本身并不是一个键。它仅在单个事务的上下文中唯一标识一个项目。 复合键是键的任何部分都是外键的键。示例:在酒店预订系统中,预订具有复合键 (GuestId, HotelId, ArrivalDate)。GuestId 标识来宾,并引用来宾表。HotelId 标识一个Hotel,并引用Hotels 表。ArrivalDate 标识一个日期。它可能有也可能没有它引用的 Dates 表,但它以任何方式标识一个实体(一个日期)。 同样值得注意的是这个事实:简单键是由一列组成的键,而复合键由两列或更多列组成。 Tom Gnade 2014-06-28T04:25:20+08:002014-06-28T04:25:20+08:00 在我看来,复合键是包含复合键的超集。如果我们接受复合键由多个属性(任何类型)组成,并且复合键由多个简单键组成。复合键是一种具有更具体含义的复合键,但术语“复合”键总是适合使用。 Hemme 2011-06-03T11:18:47+08:002011-06-03T11:18:47+08:00 在英语中它是“复合键”。例如,看看 MSDN 网站(任何包含“sql 复合键”的搜索都可以)。 http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com 假设问题与关系数据库有关,我在Wikipedia中搜索了“中性”定义: 复合键是由表中的两个或多个属性组成的键,它们(一起)唯一地标识一条记录 user3448324 2020-11-24T01:53:53+08:002020-11-24T01:53:53+08:00 当来自不同表的 2 个或多个主键作为外键出现在实体中时,将创建复合键。复合键是两个或多个列的组合,它们唯一地标识实体中的行
复合键和复合键都描述了具有多个属性的候选键。根据关系数据库字典 (CJDate),它们的含义相同。
在 ER 建模中,术语“复合键”也有更具体的含义。它意味着一个键,其组成属性是对其他实体中键的引用——即复合键形成一种识别关系。对于大多数目的,这不是一个特别有用或重要的概念,因此术语复合/复合通常被视为可互换的。除非您专门指的是复合键的 ER 建模概念,否则最好坚持使用“复合键”。
我仍然不确定为什么没有咨询http://en.wikipedia.org/wiki/Compound_key 。它非常清楚地说明(并且是正确的):
复合键由可能是也可能不是外键的元素组成。示例:在交易明细表中,键为 (TransactionId, ItemNumber)。交易明细是交易的子实体。TransactionId 是一个外键,引用 Transactions 表。ItemNumber 本身并不是一个键。它仅在单个事务的上下文中唯一标识一个项目。
复合键是键的任何部分都是外键的键。示例:在酒店预订系统中,预订具有复合键 (GuestId, HotelId, ArrivalDate)。GuestId 标识来宾,并引用来宾表。HotelId 标识一个Hotel,并引用Hotels 表。ArrivalDate 标识一个日期。它可能有也可能没有它引用的 Dates 表,但它以任何方式标识一个实体(一个日期)。
同样值得注意的是这个事实:简单键是由一列组成的键,而复合键由两列或更多列组成。
在我看来,复合键是包含复合键的超集。如果我们接受复合键由多个属性(任何类型)组成,并且复合键由多个简单键组成。复合键是一种具有更具体含义的复合键,但术语“复合”键总是适合使用。
在英语中它是“复合键”。例如,看看 MSDN 网站(任何包含“sql 复合键”的搜索都可以)。
http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com
假设问题与关系数据库有关,我在Wikipedia中搜索了“中性”定义:
当来自不同表的 2 个或多个主键作为外键出现在实体中时,将创建复合键。复合键是两个或多个列的组合,它们唯一地标识实体中的行