数据库基础
关系模型
关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表。
- 关系
一个关系对应通常是一张表。 - 元组
表中的一行即为一个元组。 - 属性
表中的一列即为一个属性,给每一个属性起一个名称即属性名。 - 码
- 超码
一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。
比如学生表(学号,身份证号,姓名,性别),{ 学号 } 可以标识一个元组,{ 身份证号 } 可以标识一个元组,{ 学号,姓名 } 可以标识一个元组,{ 身份证号,姓名 } 也可以标识一个元组,{ 学号,身份证号,姓名,} 同样可以标识一个元组,这些都是超码。 - 候选码
超码中可能包含无关紧要的属性,如果K是一个超码,那么K的任意超集也是超码,如果有一些超码,它的任意真子集都不能成为超码,那么这个最小的超码成为候选码。比如上面例子中,{ 学号 } 和 { 身份证号 } 都是候选码。 - 主码
用来表示被数据库设计者选中的,用来区分不同元组的候选码。 - 外码
关系 R1 可能在它的属性中包含另一个关系 R2 的主码,这个属性在 R1 上称作参照 R2 的外码。
- 超码
- 域
域是一组具有相同数据类型的值的集合,属性的取值范围来自某个域,如性别域是 [ 男,女 ]。 - 分量
元组中的一个属性值。
文章图片
image.png 数据库管理系统(DBMS)从三个层次来管理数据:外部层次(External Level),概念层次(Conceptual Level)和 内部层次(Internal Level)。
其中外部层次的数据是用户所看到的数据,及数据之间的约束,又叫用户层次。
概念层次的数据是DBMS中全局管理(可以理解地为所有的)数据,及数据之间的约束,所以又叫逻辑层次。
内部层次的数据是存储在介质上的数据,包括存储路径,存储方式,索引方式等,所以又叫物理层次。
而模式,就是对数据的结构性描述,所以对于不同层次的数据,就对应着不同层次的模式,分别是:外模式(用户模式),模式(概念模式/逻辑模式)与 内模式(物理模式)。
- 内模式
- 模式
在数据模型中有 型 和 值 的概念,型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。例如学生记录定义为(学号,姓名,性别,年龄,籍贯,系)这样的记录型,而(22,)则是该记录型的一个记录值。模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。而模式的一个具体值称为模式的一个实例(数据库实例是给定数据库中数据的一个快照),同一个模式可以有很多实例,模式是相对稳定的,而实例是相对变动的。
- 外模式
外模式是以视图的形式展现给用户的。数据库中的视图又叫作虚表,这里的虚表是相对于基本表来说的。视图是对这些基本表中的数据的某种展现形式,是这些数据的一个子集,但不限于某张表中的数据的子集,也可以是多张表联合起来进行显示的一组数据。但需要注意的是:视图本身并不实际存放数据。通过外模式,可以让不同的用户看到不同的数据。
- 实体完整性
若属性A是某关系R的主属性,则A不能取空值。 - 参照完整性
- 数据定义语言(Data-Definition Language, DDL)提供定义关系模式,删除关系以及修改关系模式的命令。
- 数据操纵语言 (Data-Manipulation Language, DML)提供从数据库中查询信息,以及在数据库中插入元组,删除元组,修改元组的能力。
- 数据库约束
- 主键约束:唯一性,非空性
- 唯一约束:唯一性,可以空,但只能有1个
- 默认约束:该数据的默认值
- 外键约束:
- 非空约束:设置非空,该字段不能为空。
- 数据库的完整性
- 检查主码值是否唯一,如果不唯一则拒绝插入或修改
- 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
- 参照完整性
- 参照完整性检查和违约处理
- 参照完整性违约处理
- 拒绝(NO ACTION)执行
- 级联(CASCADE)操作
- 设置为空值(SET-NULL)
参考资料
1. https://www.zhihu.com/question/38737183
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 装聋作哑,关系融洽
- Python基础|Python基础 - 练习1
- Java|Java基础——数组
- 数据库设计与优化
- Java基础-高级特性-枚举实现状态机
- 关系问句
- 数据库总结语句
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础