数据库☞主键
本文主要是根据对数据库的相应学习,并对数据库中的一个重要的知识点——主键 进行总结!
中间也会穿插其他的一些知识点,例如外键、关系型数据库吖等。
前言
主键的应用是很重要的,这对于数据库的设计十分重要!泛型【在整理中~后贴哦】
一、概念
主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。
二、设计原则
关系数据库依赖于主键【它是数据库物理模式的基石】。
主键在物理层面上只有两个用途:
(1)惟一地标识一行。
(2)作为一个可以被外键有效引用的对象。
- 原则1:主键应当是对用户没有意义的
其实从设计角度来说主键对用户无意义最好,为什么呢?
主键最主要的作用就是保证实体的完整性,加快数据库的操作速度。但往往在范式的规范下,有时候主键的组成不止由单属性组成,此时在操纵数据库中的数据时会比较麻烦 。
另外,有初学者会想,主键不是唯一么?主键也不能为空等等。很多时候简单的表格会以用户名这种作为主键,但是不要忘记当用户数量过于庞大时,会带来很多的麻烦,亦或者说,如果你想用唯一属性可以使用UNIQUE,而主键有时候有自增的功能可以省去很多的麻烦等等。
- 原则2: 主键应该是单列的
就像我上一个原则里说的一样,主键有时候会由多属性组成,此时操作起来会出现很多问题(DuplicateKeyException…),主键应该是单列的以便提高连接和筛选操作的效率。
- 原则3:永远也不要更新主键
主键在实际中是可以被更新的,但是设计的时候最好考虑的是不要更新主键。
- 原则4:主键不应包含动态变化的数据
如时间戳、创建时间列、修改时间列等这些动态变化的数据不应该被定义为主键;主键是不可被直接修改的。
三、SQL定义主键约束(实体完整性)
在实例说明之前,先说一下主键的作用:
(1)保证实体的完整性;
(2)加快数据库的操作速度;
(3)在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
(4)DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
栗子:(具体的e-r图等,在这篇文章☞关系型数据库总结—易理解!都有介绍,可以观看哦~)
读者表 Reader
/*
* 单属性:主键只有一个属性组成
*/
/*一、主键约束:列级完整性约束*/
CREATE TABLE m_reader
(
rno varchar(10) PRIMARY KEY, --- 设置为主键 /*列级完整性约束条件*/
rname varchar(10) UNIQUE not NULL,