主键是指定用于唯一标识每个表记录的特殊关系数据库表列(或列的组合)。它是唯一的标识符,如驾驶执照号码、电话号码(包括区号)或车辆识别号(VIN)。关系数据库必须始终只有一个primarykey。主键通常显示为关系数据库表中的列。
主键的主要功能包括:
主键可能使用基础数据模型中已经存在的一个或多个字段,或者可以创建特定的额外字段作为主键。
实例
例如,在商业银行中,数据库必须保存商业银行存储的所有数据。其中两个数据库表包括customer_MASTER,用于存储基本和静态客户数据(姓名、出生日期、地址、社会保险号等)和ACCOUNTS_masters,用于存储各种银行账户数据(账户创建日期、账户类型、提款限额或相应的账户信息等)。
为了唯一地识别客户,选择一列或列的组合以保证两个客户永远不会具有相同的唯一值。因此,某些列立即被删除,例如姓氏和出生日期。
一个好的主键候选是指定用于保存社会安全号码的列。然而,一些账户持有人可能没有社会保障号码,因此本栏的候选人资格被取消。
下一个合乎逻辑的选项是使用列的组合,例如在电子邮件地址中添加姓氏和出生日期,这样会导致主键冗长而繁琐。
最好的选择是在名为CUSTOMER_ID的新列中创建一个单独的主键。然后,每次添加客户时,数据库自动生成一个唯一编号,以确保唯一标识。
关系数据库中主键的选择通常取决于管理员的偏好。当用户的特定需求发生变化时,可以更改给定数据库的主键。例如,在一个应用程序中,可以根据他们的驾照号码唯一地识别城镇中的人,但在其他情况下,根据他们的电话号码识别他们可能更方便。
外键是关系数据库表中的一列或一组列,提供两个表中数据之间的链接。它作为表之间的交叉引用,因为它引用另一个表的主键,从而在它们之间建立链接。
关系数据库系统中的大多数表都遵循外键概念。在复杂的数据库和数据仓库中,adomain中的数据必须跨多个表添加,从而保持它们之间的关系。参照完整性的概念源于国外的键理论。
虽然主键可以独立存在,但外键必须始终引用某个地方的主键。包含主键的原始表是父表(也称为引用表)。此键可以由其他表(称为“子”表)中的多个外键引用。
对于充当外键的任何列,链接表中应存在相应的值。插入数据和从外键列中删除数据时必须特别小心,因为粗心的删除或插入可能会破坏两个表之间的关系。
简单地说,foreignkey是一组引用候选键的属性。例如,一个名为TEAM的表可能有一个属性MEMBER_NAME,它是一个外键,引用PERSON表中的一个索引键PERSON_NAME。由于MEMBER_NAME是一个foreignkey,任何作为团队成员名称存在的值也必须作为PERSON表中的人名存在;换句话说,团队的每个成员都是一个人。
比较基础 | 主键 | 外键 |
描述 | 主键约束是唯一标识关系数据库管理表中每一行的列。 | 外键是关系数据库表中的一列或一组列,它们在两个表中的数据之间提供链接。 |
作用 | 它用于唯一地标识数据库表中的每个记录。 | 它用于将两个表链接在一起。 |
索引 | 主键是聚集索引,DBMS表中的数据按照聚集索引的顺序进行物理组织。 | 外键无法自动创建聚集或非聚集索引。 |
空值 | 主键从不接受空值。 | 外键可以接受多个空值。 |
自然界 | 表中可以有一个主键。 | 一个表中可以有多个外键。 |
价值去除 | 无法从父表中删除主键的值。 | 可以从子表中删除外键值的值。 |
桌子 | 一个表只能有一个主键。 | 一个表可以有多个外键。 |
释义 | 可以在临时表上定义主键约束。 | 不能在本地或全局临时表上定义外键约束。 |
重复值 | 主键的两行不能有任何相同的值。 | 外键可以包含重复值。 |
亲子关系 | 它不能在表中创建父子关系。 | 它可以在表中创建父子关系。 |
重复值 | Primary是唯一的键属性,它不能存储关系中的重复值。 | 外键列中可以存储重复值。 |
删除 | 在主键下,通过确保外键引用表中不存在值,可以从引用表中删除该值。 | 在外键下,可以删除值而不会出现任何故障,因为值是否仍然存在于主键引用表中并不重要。 |
外键和主键之间的键区别在于,外键是一列或一组列,它们引用另一个表的主键或候选键,而主键是一列或一组列,可用于唯一标识表中的行。 可以用来标识或访问数据库中一行或一组行的列或一组列称为键。关系数据库中...
主键与候选键 虽然主键是从候选键中选择出来的,但是主键与其他候选键之间存在一些差异,本文将对此进行详细讨论。数据库设计是维护和存储数据时最重要的活动之一。在这个设计过程中,必须创建具有许多关系的不同...
在开发一个软件项目时,最重要的、基本的和内在的方面之一是一个结构合理的数据库模式。这相当于建造一所需要确保地基适当铺设的房子,否则建造优质房屋的机会大大减少。 ...
键盘快捷键可以极大地简化我们的工作流程,但是当你被告知使用一个键不清晰的快捷键时,你怎么办?你甚至不确定它是否在你的键盘上?今天的超级用户问答帖子有一个答案,可以帮助沮丧的读者找到他要找的钥匙。 今天...
...事实表主要由业务事实和外键组成,外键引用维度表中的主键。维度表主要由作为文本字段的描述性属性组成。 维度表为事实表的度量提供描述性或上下文信息。另一方面,事实表提供企业的度量,维度表包含一个代理键、自...
主键和唯一键都是关系数据库中的唯一键,它们保证一列或一组列上的值的唯一性。主键约束中已存在预定义的唯一键约束。主键特别用于标识表中的每条记录,而唯一键则用于防止列中的重复条目(空条目除外)。但是,这...
主键和唯一键的主要区别在于,一个表中只能有一个主键,不能有任何空值,因为它的功能是标识表中的每个记录,而一个表中可以有多个唯一键,因为它们的功能是确保一个列只具有唯一值,这样就不会有空值任何重复的数据...
...系描述两个表或实体如何相互连接。这些表可以使用诸如主键和外键之类的约束相互关联。主键是表的主键。它有助于唯一地标识表中的每条记录。当一个表中的主键添加到另一个表中时,该主键将成为新表中的外键。 Figure 2: R...
主键和候选键之间的主要区别在于,主键是表中有助于唯一标识每一行的最小属性集,而候选键是没有冗余属性的超级键。 通常,RDBMS的数据库由多个表组成。因此,键有助于建立表之间的关系。此外,一个键可以由一个属性或...
...的差异-密钥差异的比较 关键术语 候选密钥、复合密钥、主键、超级密钥 什么是候选密钥(candidate key)? 超级键是一组一个或多个属性,可以唯一地标识表中的记录。候选密钥是从超级密钥集中选择的密钥。此外,候选密钥不应...