数据库中的主键primary key:作用、用法和注意事项 (数据库中primary key)

随着信息技术的快速发展,我们开始随处可见各种类型的数据库。数据库在现代社会中扮演着重要的角色,大量信息的存储、传递和处理都离不开数据库。数据库设计必不可少的一部分是定义表的结构,而一个表中最基本的元素就是主键(primary key)。

那么主键在数据库中到底有什么作用呢?主键主要有以下几个作用:

1.唯一标识每一行数据

在一个表中,每一行数据的主键必须是唯一的,这样才能保证每一行数据的独立性和唯一性。主键的唯一性是建立在整个表的基础上的,不能仅仅是在一列数据中唯一。

2.提高检索效率

在建立索引时,主键是最常用的索引。主键的唯一性和稳定性可以提高检索效率。

3.维护表之间的关系

在关系型数据库中,主键是表之间建立关系的关键。通过主键,可以方便地对多张表进行关联,从而实现数据的查询、更新等操作。

主键的用法

在设计表结构时,主键是必不可少的元素。在创建具有主键的表时,一般存在以下几种情况。

1.使用单列主键

这是最常见的情况。一张表中只能存在一个主键,主键通常是一个整数类型的列。比如,在一个用户表中,ID列被定义为主键,在这个表中,每一个用户数据记录都有一个唯一的ID值。

2.使用组合主键

在某些情况下,一个单列主键难以满足需求,此时可以考虑使用组合主键。组合主键由两个或多个列组成,这些列的值的组合必须是唯一的。比如,在一个商品表中,商品的编号和品牌组合在一起,可以作为这个表的组合主键。

3.使用自然主键

自然主键是指通过表中自然存在的列来定义主键,这些列的数据值是具有特定含义的。比如,在一个学生表中,学号可以作为自然主键。

注意事项

在定义主键时,需要注意一些问题,以确保数据的正确性和完整性。

1.主键不能为NULL值

一个主键的值必须是非NULL,否则会出现记录无法唯一标识的情况。

2.主键需稳定

主键在表被创建时就要选择好,随意更改主键的值会破坏表的关系,导致数据无法正确地检索或更新。

3.尽量使用整型数据类型

主键更好选择整型数据类型,因为整数类型的数据使用起来更方便快捷,且速度更快。

4.避免使用过长的主键

较长的主键会占用过多的存储空间,降低检索速度。

主键是关系型数据库设计中的重要组成部分。主键的作用包括标识每一行数据、提高检索效率、维护表之间的关联等。在创建具有主键的表时,一般采用单列主键、组合主键和自然主键三种方式。同时,在定义主键时,需要遵守一些规则和注意事项,以确保数据的正确性和完整性。

相关问题拓展阅读:

超键(super key)、候选键(candidate key)和主键(primary key) 外键(foreign key)的区别

超岁悄盯键(super key):在关系中能唯一标识

元组

的属性集称为关系模式的超键

候选键(candidate key):不含有多余属性的超键称为候选运让键

主键(

primary key

):用户选作元组标识的一个候选键程序主键

比如一个小范围的所有人,没有重名的,考虑以下属性

身份证

姓名 性别 年龄

身份证唯一,所以是一个超键

姓名唯一,所以是一个超键

(姓名,性别)唯一,所以是一个超键

(姓名,性别,年龄)唯一,所以是一个超键

–这里可以看出,超键的组合是唯一的,但可能不是最小唯一的

身份证唯一,而且没乎和有多余属性,所以是一个候选键

姓名唯一,而且没有多余属性,所以是一个候选键

–这里可以看出,候选键是没有多余属性的超键

考虑输入查询方便性,可以选择 身份证 为主键

也可以 考虑习惯 选择 姓名 为主键

–主键是选中的一个候选键

首先,这几个概念的含义是:

超键:如果一个关系(表)中所有属性(列)都由一个属性决定,那么这组属性称为超键。

显然,由一个关系的所有属性组成的属性必然是这个关系的慎闹超键。

通俗地讲,超键用来唯一确定一个元组(行,记录)。

候选键:一个可以用来唯一确定一个元组的极小的属性,即极小超键。(minimal superkey)

主键:一个关系的所有候选键中选择一个用来唯一确定关系的元组,这个候选键成为主键。

外键:在一个关系中,如果一个属性是另一个关系的主键,这个属性称为外键。

——

下面说说我的理解。

1. 键

键(Key)的含义很重要,却往往被人忽视。数据库用来记录事实,并且提供物理独立性,用户不需要关心数据在磁盘中如何存储,只需要知道数据保存在哪个表中的哪些列里。

在设计数据库时,通常先对需要记录的事实进行数据建模,抽象出实体,关系。每个实体总要有个方法去识别它,不然你就无法从数据库中查询你想要的数据。键(Key)就是用来识别实体的。换句话说,键可以用来确定表中具体的一行记录。

举个简单的例子,假设有一个表Person(FirstName, LastName, BirthTime, Gender),这张表用来记录关于人的数据(姓名,出生时间,性别)。

在日常生活中,我们用姓名来标识一个人。但有时候不同的人叫相同的名字,这时单纯用姓名就无法唯一确定一个人了。我们往往通过附加其他信息来确定这个人,比如出生时间,父母,城市,等等。

2. 超键

一组属性(或列)(A1, A2, …, An) 可以成为某个实体E的 super key, 如果通过这些属性可以确定一个实体。

如果同样的姓名和出生时间可以标识一个人,那么(FirstName, LastName, BirthTime)就是Person的一个超键。

当然,(FirstName, LastName, BirthTime)加上Gender,即 (FirstName, LastName, BirthTime, Gender)也是一个super key。

但(FirstName, LastName)不是super key,因为有同名同姓的人。如果没有同名同姓的人,那(FirstName, LastName)也是super key。

3. 候选键

从super key 中去掉一些属性,剩下的属性有可能是super key,也有可能不是。

如果从一个super key中的属性中,去掉任何一个属性,都不能唯一确定一个实体,那么这个super key就是candidate key。

要描述一个人,我们不需要把所有关于这个人的信息都说出来,那样没有必要。我们也不能只说这个人姓什么,因为这样还不够,听的人不知道是谁。

所以,我们要做的是,用最少的事实描述一个人。这就是 candidate key存在的意义。

4. 主键

描述一个东西可以用不同的属性组合.。一个人可以用姓名+出生时间指定,也可以用身份证号码(假设每个人都有身份证号)。因此,一个实体的candidate key也可能有多个。 那我们用哪个来描述一个实体呢?

都可以,所以叫 candidate (候选的) key。当然,候选也意味着有些被选上,有些被淘汰。在数据库中,有一种方法描述实体就够了,因此,要从候选键中选一个作为主键(Primary Key)。

有了主键,就可以用它描述实体。

5. 外键

每个表都应该有一个主键,用来唯一确定一行数据。

数据库中,不同的东西保存在不同的表中,有些表之间是互相关联的。假设有个表用来保存公司的员工,一个员工同时也是一个人,这个人的基本信息保存在另一个表Person中,这就需要引用别的实体。

前面说过,主键就是起这个作用的,兄孝皮可以用来标识一个实体。当一个表的主键被一个表引用,它在那个表中就成为外键(foreign key)。

注意:

上面所举的例子只是起说明概念的作用,实际上人的主键不好确羡差定。

a) 也许有两个人同名同姓同时出生,怎么办?

b) 即使没有同名同姓同时出生的人,用许多属性(甚至所有的关于一个实体的属性)来用描述一个人,很不经济。

c) 有些人没有身份证。

一个解决办法是,给每个人一个唯一的数值或名字,专门用来标识一个人,就像学生的学号。这样生成的键角人工键,替代键, 等等(artificial key, surrogate key).

有些人在设计数据库时,每个表都用surrogate,以防万一。实际上这是错误的,愚蠢的。原因有很多,很明显的原因是:他们不是真正意义上的主键。它们没有实际意义,用它们无法标识实体,无法避免重复,只能用过数据库之外的方法(如应用程序)来避免重复)。

数据库中primary key的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库中primary key,数据库中的主键primary key:作用、用法和注意事项,超键(super key)、候选键(candidate key)和主键(primary key) 外键(foreign key)的区别的信息别忘了在本站进行查找喔。


数据运维技术 » 数据库中的主键primary key:作用、用法和注意事项 (数据库中primary key)