1.什么是关系模型

1.1关系模型研究什么

一个关系(relation)就是一个Table
关系模型就是处理Table的,它由三个部分组成:

  • 描述DB各种数据的基本结构形式(Table/Relation)
  • 描述Table与Table之间所有可能发生的各种操作(关系运算)
  • 描述这些操作所应遵循的约束条件(完整性约束)
1.2 关系模型的三个要素

基本结构: Relation/Table
基本操作: 并、差、广义积、选择、投影、交、连接、除
(其中并、差、广义积、选择、投影为基本运算,交、连接、除为扩展运算)
完整性约束: 实体完整性、参照完整性、用户自定义的完整性

1.3 表的严格定义

在这里插入图片描述

域(Domain) : 是一组值的集合,这组值具有相同的数据类型,如整数的集合、字符串的集合、全体学生的集合,再比如,由8位数字组成的集合

域的基数(Cardinality) : 集合中元素的个数称为域的基数

笛卡尔积: 一组域D1,D2,…Dn的笛卡尔积为D1 * D2 * … * Dn = {(d1,d2,…dn) | di<Di,i=1,…n}
笛卡尔积的每个元素(d1,d2,…,dn)称作一个n-元组(n-tuple)
若Di的基数为mi,则笛卡尔积的基数,即元组的个数为m1 * m2… * mn

在这里插入图片描述
简单点说: 就是从第一列取出一个,然后从第二列取一个,再从第三列取一个,所有的组合就是笛卡尔积

2. 关系

一组域D1 * D2 * … * Dn的笛卡尔积的子集
也就是从笛卡尔积中选出的具有一定意义的组合,这种意义可以用关系(表)的名字表达
在这里插入图片描述

2.1 关系模式

关系可用R(A1:D1,A2:D2, … An:Dn)表示,可简记为R(A1,A2,…An),这种描述又被称为关系模式(Schema)或标题(head) ,R是关系的名字,Ai是属性,Di是属性多对应的域,n是关系的度或目(degree).关系中元组的数目称为关系的基数.
举例如下
家庭(丈夫:男人,妻子:女人,子女:儿童)或家庭(丈夫,妻子,子女)
关系模式R(A1:D1,A2:D2, … An:Dn)中红色部分在DBMS中一般直接说明为类型,长度等
例如 Student(Sname char(10),Ssex char(2))

2.2 关系模式与关系

关系模式是 关系的结构,关系是 关系模式在某一时刻的数据
关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的
在这里插入图片描述

3. 关系特性

(1) 列是同质:每一列中的分量来自同一域,是同一类型的数据
在这里插入图片描述
不同的列可来自同一个域(域可以定的大一些,比如Person域)
(2) 列位置互换性:区分哪一列是靠列名,而不是所在位置
行位置互换性:区分哪一行是靠某一或某几列的值
关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分
(3) 关系的任意两个元组不能完全相同,表可能并不完全遵守此特性
(4) 关系需要满足第一范式:即属性不可再分特性.举例如下:
在这里插入图片描述
在这里插入图片描述

4. 候选码与外码

候选码(Candidate Key): 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码.
(1)例如:学生(id,Sname,Sage,Sclass),id就是一个候选码.
(2)有时,关系中有很多组候选码,例如:学生(id,Sname,Sage,Sclass,Saddress),其中属性组(Sname,Saddress)也是候选码(同名同地址的两个学生是不存在的)

主码
当有多个候选码时,可以选定一个座位主码,DBMS以主码为主要线索管理关系中的各个元组.在上面(1)(2)例子中,选哪个作为主码都可以.

主属性: 包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性.上面例子(1)中,id就是 主属性,其他都是非主属性.

  • 最简单的,候选码只包含一个属性
  • 最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)

外码(Foreign Key)/外键

  • 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码外键.
  • 例如,"合同"关系中的客户号不是候选码,但却是外码.因它与客户关系中的候选码"客户号"相对应.
  • 两个关系通常是靠外码连接起来的
    在这里插入图片描述

上述概念结构图

在这里插入图片描述

5. 完整性

  • 实体完整性
    关系的主码中的属性值不能为空值
  • 参照完整性
    如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值或者为空值
  • 用户自定义完整性
    用户针对具体的应用环境定义的完整性约束条件
    在这里插入图片描述

范式

一张数据表的表结构所符合的某种设计标准的级别。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。

1NF
符合1NF的关系中的每个属性都不可再分。表1所示的情况,就不符合1NF的要求。
在这里插入图片描述
2NF
是否存在非主属性对于码的部分函数依赖
就是要有主键, 要求其他字段都依赖于主键. 为什么要有主键, 没有主键就没有唯一性, 没有唯一性在集合中就定位不到这行记录, 所以要主键.

3NF
在2NF的基础之上,消除了非主属性对于码的传递函数依赖.
消除冗余, 就是各种信息只在一个地方存储, 不出现在多张表中.
在这里插入图片描述
BCNF
在 3NF 的基础上消除主属性对于码的部分与传递函数依赖.

数据库三大范式的一己之见https://blog.csdn.net/qq_26683009/article/details/51170540

如何理解关系型数据库的常见设计范式? - 骆小龙的回答 - 知乎
https://www.zhihu.com/question/24696366/answer/243381425

Logo

更多推荐