sql主键在讨论SQL主键时,定义和解释每种不同类型的键是一个很好的起点。有主键、外部键、惟一键、候选键、自然键和代理键。最符合逻辑的出发点是回答“SQL中的关键是什么?”

新的SQL ?成为一个数据库表设计大师在Udemy.com。

根据SQL标准,键是表中列的子集,它允许唯一标识一行。换句话说,包含一个值或一组值的一列或一组值,这些值对该表边界内的每一行都是唯一的。因此,键可以是标识表中任意一行的一个或多个列。

但是,如果一个键包含的键数超过了标识一行所需的最小键数,那么SQL标准将该键指定为超级键。另一方面,如果一个键包含标识表中单个行所需的最小列数,那么它就是一个最小超级键。

考虑下表:

标题 第一个名字 D.O.B 电子邮件 位置
经理 罗伯特。 棕色(的) 18:03:1968 (电子邮件保护) 伦敦
经理 杰奎琳 黑色的 22:06:1981 (电子邮件保护) 纽约
经理 斯科特 绿色 23:02:1978 (电子邮件保护) 罗马
经理 玛丽 白色 01:09:1980 (电子邮件保护) 巴黎
经理 罗伯特。 红色的 05:05:1975 (电子邮件保护) 佛罗里达

在SQL中,超级键是一组列,这些列组合了单行中不同于其他行的值,也就是说,这个组合对于表中的每一行都是唯一的。

表管理器中可能的超级键有;

  1. 家庭的名字,
  2. 姓,D.O.B
  3. 姓,出生日期,电子邮件
  4. 姓,出生日期,电子邮件,地点

在这个小表中,很容易找到惟一的组合,但是在一个有数百万条记录的表中,要找到只匹配一行的惟一的列组合要困难得多。

在上面的例子中,可以唯一标识一行的最小键是:

最小键“email”是唯一可能在表增长时扩展的键。

请访问Udemy.com了解更多关于数据库模式和设计的信息。

什么是天然钥匙?

一个自然键由表中彼此之间具有逻辑关系的列组成。在上面的例子中,manager、Family Name、D.O.B、Email和Location有一个逻辑关系。因此,任何组成这些列的键都是一个自然键,因为这些列已经存在。对于代理键,数据库设计人员不需要创建列来提供唯一的特征。

代理键是一种人工键,其中列值与表中的其他列没有关系。代理键通常只是设计器添加的一个自定义列,并将一个简单的顺序号作为值保存。当添加新行时,列的行值增加1。通过为表中的每一行提供一个唯一的数字作为标识符,设计者为表创建了一个人工键。表中的每一行都有一个唯一的标识符,无论策略、巧合或增长如何。

考虑添加代理键后的Table Managers。

CompanyID 标题 第一个名字 D.O.B 电子邮件 位置
101 经理 罗伯特。 棕色(的) 18:03:1968 (电子邮件保护) 伦敦
102 经理 杰奎琳 黑色的 22:06:1981 (电子邮件保护) 纽约
103 经理 斯科特 绿色 23:02:1978 (电子邮件保护) 罗马
104 经理 玛丽 白色 01:09:1980 (电子邮件保护) 巴黎
105 经理 罗伯特。 红色的 05:05:1975 (电子邮件保护) 佛罗里达

通过添加代理键Company ID,设计人员确保表具有唯一的最小键Company ID,无论电子邮件策略发生了什么变化,或新员工共享相同的姓氏或D.O.B.。设计器现在有一个完美的备选键作为表的主键,而另一个备选键' Email '现在成为了辅助键。

密钥的具体类型是什么?

在SQL中,有惟一键、竞争者键、外键和最重要的—主键。它们都有一个共同点,那就是它们都有相同的基本原则。它们可以是一个或多个列的构造。它们的不同之处在于它们的目的,尤其是外键。

外键不同于其他键类型。外键实际上是指向另一个表中唯一键的指针。一个表(A)中的外键引用另一个表(B)中的唯一键,它定义了一个连接表的关系。

唯一键就是表中的唯一键。

有一些关于外键和唯一键的基本规则:

选择强主键非常重要,因为即使在更改期间,它也保持惟一。主键唯一地标识数据库中的每条记录,并且需要是唯一的。数据库设计人员从现有的强稳定自然键中选择主键,或者通常从自定义代理键中选择主键。可以有几个主键角色的候选者,但只能选择一个主键。因此,必须仔细选择正确的列。

在Udemy.com了解更多关于SQL和表设计的信息。

SQL顶级课程

SQL和PostgreSQL:完整的开发人员指南
Stephen主梁
4.7 (1340)
评价最高
完整的SQL训练营2021:从零到英雄
何塞Portilla
4.7 (97704)
畅销书
终极MySQL训练营:从SQL初学者到专家
柯尔特·斯蒂尔,这是伊恩·斯库诺弗
4.6 (53535)
畅销书
SQL - MySQL的数据分析和商业智能
365年职业生涯
4.6 (27320)
畅销书
高级SQL: SQL专家认证准备课程
8万多名学员,Code Star学院
4.4 (2089)
完整的SQL和数据库训练营:零到精通[2021]
Andrei Neagoie, Mo Binni
4.6 (1391)
SQL初学者:学习SQL使用MySQL和数据库设计
Tim Buchalka的学习编程学院,Jon Avis - SQL讲师
4.5 (9909)
SQL & PostgreSQL初学者:成为一个SQL专家
Jon Avis - SQL讲师
4.5 (3156)
畅销书

多个SQL课程

SQL学生也学习

让你的团队。领导行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示