数据库MySQL关系模型之基本概念
1.什么是关系模型1.1关系模型研究什么一个关系(relation)就是一个Table关系模型就是处理Table的,它由三个部分组成:描述DB各种数据的基本结构形式(Table/Relation)描述Table与Table之间所有可能发生的各种操作(关系运算)描述这些操作所应遵循的约束条件(完整性约束)1.2 关系模型的三个要素基本结构: Relation/Table基本操作...
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
更多推荐
所有评论(0)