文章目录:
1.基本概念
1.1 几个专有名词
①数据(data):Data。
②数据库(DB):DataBase。
③数据库管理系统(DBMS):DataBase Management System。
④数据库系统(DBS):DataBase System,广义上讲:由数据库、硬件、软件和人员组成。
⑤数据库管理员(DBA):DataBase Administrator。
1.2 DBMS的功能
①数据定义。②数据库操作。③数据库运行管理。④数据的组织、存储和管理。⑤数据库的建立和维护。等等......
1.3 DBMS的特征
①数据结构化且统一管理。②有较高的数据独立性。③数据控制功能(数据库的安全性、完整性、并发控制、故障恢复)。
2.三级模式——两级映像
2.1 三级模式
①模式:也称概念模式,它是数据库中全体数据的逻辑结构和特征的描述。只涉及型的描述,不涉及具体的值。概念模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。描述模式的数据定义语言为:模式DDL。
②外模式:也称用户模式或子模式,是用户与数据库系统的接口,是用户看到的那部分数据的描述。 描述外模式的数据定义语言为:外模式DDL。
③内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方法,定义所有的内部记录类型、索引和文件的组织方法,以及数据控制方面的细节。描述内模式的数据定义语言为:内模式DDL。
(一个数据库系统中,外模式可以有多个,而模式和内模式只有有一个!!!)
外模式——模式——内模式分别对应:视图——基本表——文件
2.2 两级映像
首先,数据的独立性是由DBMS的两级映像功能来保证的。
①模式/内模式映像:存在于概念级和内部级之间,实现了模式和内模式之间的相互转换。保证了数据的物理独立性。
②外模式/模式映像:存在于外部级和概念级之间,实现了外模式和模式之间的相互转换。保证了数据的逻辑独立性。
3.数据库设计过程
4.E-R模型
在E-R模型中,实体用矩形表示、属性用椭圆形表示、联系用菱形表示。
在上图中学生和课程都是实体,而学号、姓名、性别、年龄这四个是学生实体的属性,课程号、课程名、任何教师这三个是课程实体的属性,因为一个学生可以选修多门课程、一门课程也可以被多个学生选修,所以学生与课程之间是多对多联系,即选课联系用菱形表示,而成绩是选课联系中对应的属性。
在E-R模型中,每个实体必须转换为一个关系模式,而联系分为(1:1,1:n,m:n)三种,前两种可以转也可以不转,第三种则是必须转。所以上面这个例题,A、B、C三个实体为多对多对多联系,所以必须转换,即一共可转换为4个关系模式。具体的转换规则如以下三个表所示:👇👇👇
E-R模型转关系模式的规则:1对1联系 |
|||||||
联系类型 |
联系是否转换 |
属性 |
主键 |
外键 |
|||
1:1联系 |
转 |
联系自身属性+ 各实体关键字 |
每个实体的关键字 均可作为主键 |
每个实体的关键字 均可作为外键 |
|||
不转 |
任意一端实体中添加 联系自身属性以及 另一端实体的关键字 |
仍为原关系模式的主键 |
另一端实体的关键字 |
||||
E-R模型转关系模式的规则:1对多联系 |
|||||||
联系类型 |
联系是否转换 |
属性 |
主键 |
外键 |
|||
1:n联系 |
转 |
联系自身属性+ 各实体关键字 |
n端实体的关键字 |
各实体关键字 |
|||
不转 |
n端实体添加 联系自身属性以及 1端实体的关键字 |
仍为原关系模式的主键 |
1端实体的关键字 |
||||
E-R模型转关系模式的规则:多对多联系 |
||||
联系类型 |
联系必须转换 |
属性 |
主键 |
外键 |
m:n联系 |
转 |
各实体关键字+ 联系自身属性 |
各实体关键字的组合 |
各实体的关键字 |
5.关系代数
①集合运算符:并、交、差、笛卡儿积。②专门的关系运算符:选择、投影、连接、除。
其中,并、差、笛卡儿积、选择、投影这五种运算是基本的运算。(对于属性列,笛卡儿积不去重,自然连接去重)
大家应该都学过数据库中的关系代数,我在这里只介绍了相应的考点,具体的大家可以自行学习!!!
6.规范化理论
6.1 函数依赖
假设:学号→姓名,表示学号唯一确定一个学生的姓名,也就是说姓名是完全依赖于学号。
假设(学号,课程号)→系名,而根据常识,显然根据一个学生的学号,就已经可以确认这个学生所在系,根本不需要课程号这个属性,所以这就是一个部分函数依赖。
假设:学号→系名,系名→系主任姓名,在这里我们可以直接得出:学号→系主任姓名,所以这就是一个传递函数依赖。
这里还要介绍一下函数依赖的公理系统,设关系模式R(U,F):👇👇👇
①A1自反律:若Y包含于X包含于U,则X→Y为F所蕴涵。
②A2增广律:若X→Y为F所蕴涵,且Z包含于U,则XZ→YZ为F所蕴涵。
③A3传递律:若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵。
④合并规则:若X→Y,X→Z,则X→YZ为F所蕴涵。
⑤伪传递律:若X→Y,WY→Z,则XW→Z为F所蕴涵。
⑥分解规则:若X→Y,Z包含于Y,则X→Z为F所蕴涵。
6.2 求候选关键字
6.2.1 码的相关概念
①候选码:也称候选键,若关系模式中的某一属性或属性组能唯一的标识一个元组,则称该属性或属性组为候选码。例如:学号可以唯一确定学生性别、姓名等信息,所以学号就是学生关系模式的候选码。
②主码:也称主键,若一个关系模式有多个候选码,则选定其中一个作为主码。例如:学号可以唯一确定学生姓名,身份证号也可以唯一确定学生姓名,那么学号和身份证号都是学生关系模式的候选码,我们选择候选码之一:学号作为主码。
③超码:也称超键,对于学生关系模式,学号可以唯一确定学生性别,所以学号可以作为候选码,那么(学号,姓名)组合起来也可以唯一确定学生性别,那么这里的(学号,姓名)就称为学生关系模式的超码。
④外码:也称外键,如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系模式的码,那么该属性或属性组对关系模式R而言就是外码。
⑤全码:如果在一个关系模式中,需要所有的属性才可以唯一标识其中的每一个元组,那么就称这个属性组为全码。
⑥(非)主属性:包含在任何一个候选码中的所有属性称为主属性,不包含在任何候选码中的属性称为非主属性。
6.2.2 候选码的求解方法
在一个关系模式中,我们对函数依赖集中的所有的属性进行分类(L、R、LR、N),L类表示该属性只出现在左边,R类表示该属性只出现在右边,LR类表示该属性在左右两边都出现过,N类表示该属性没有出现。
对关系模式中的所有属性进行分类之后,最终的结论是:候选码中一定包含L类属性和N类属性,一定不包含R类属性,可能包含LR类属性。此时我们只需要去求L类和N类属性集的闭包就可以了,如果该属性集的闭包等于全集,那么该属性集就是该关系模式的候选码。如果不是,就从LR类属性中依次添加单个属性,每添加一个,就求一次闭包,直到属性集的闭包等于全集,即可确定该关系模式的候选码。
①对于例1:由关系模式R和函数依赖集F可知,L类属性:A1,R类属性:A4,LR类属性:A2、A3,则候选码中一定包含A1,一定不包含A4,可能包含A2、A3。而A1属性的闭包为:A1A2A3A4=全集U,所以关系R的候选码为A1。
②对于例2:由关系模式P和函数依赖集可知,L类属性:A、B、C、D,R类属性:E、F、H、I,LR类属性:G、J,N类属性:无,所以候选码中一定包含ABCD,一定不包含EFHI,可能包含GJ。而属性集ABCD的闭包为:ABCDEFGHIJ=全集U,所以关系模式P的候选码为ABCD。
③对于例3:由关系R和函数依赖集F可知,L类属性:无,R类属性:C,LR类属性:A、B,N类属性:无。所以候选码中一定不包含C,此时我们就依次添加LR类属性来求闭包,首先是属性A,它的闭包为:ABC=全集U,所以可以作为关系R的候选码,那么此时AB和AC也可以唯一标识每一个元组,称AB和AC为关系R的超码;其次看属性B,它的闭包为:ABC=全集U,也可以作为关系R的候选码,那么AB和BC同样可以作为关系R的超码。即属性A和B都可以作为关系R的候选码。
6.3 价值与用途
6.4 范式
①1NF(第一范式):若关系模式R的每一个分量都是不可再分的数据项,则关系模式R∈1NF。
②2NF(第二范式):若关系模式R∈1NF,且每一个非主属性完全依赖于码,则关系模式R∈2NF。(换句话说,当1NF消除了非主属性对码的部分函数依赖,则称为2NF)
③3NF(第三范式):若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性Z(Z不包含于Y)使得X→Y,Y→Z成立,则关系模式R∈3NF。(换句话说,当2NF消除了非主属性对码的传递函数依赖,则称为3NF)
④BCNF(BC范式):关系模式R(U,F)∈1NF,若X→Y且Y不包含于X时,X必含有码,则R∈BCNF。(换句话说,关系模式R中,若每一个决定因素都包含码,则称为BCNF)
一个满足BCNF的关系模式有:①所有非主属性对每一个码都是完全函数依赖。
②所有主属性对每一个不包含它的码也是完全函数依赖。
③没有任何属性完全函数依赖于非码的任何一组属性。
6.5 模式分解
对于保持函数依赖和模式分解,在这里只介绍一些简单的例子,具体的大家可以自行学习。
假设一个关系模式R(A,B,C),函数依赖集F={A→B,B→C},我们将关系模式R分解为R1(A,B),R2(B,C)。那么在R1中,我们能够找出A→B;在R2中,我们能够找出B→C,这与原函数依赖集完全对应,所以就称这样的模式分解保持函数依赖。(换句话说,对于一个总关系模式分解成了若干个子关系模式,如果根据这些子关系模式中的属性能够推出与原函数依赖集相同的内容,则称保持函数依赖)
对于模式分解,如果分解的子关系模式数量大于2,则需使用表格法进行还原(表格法在这里就不再详细讲解了);如果分解的子关系模式只有两个:R1和R2,那么只需要求一下 R1∩R2(交集)、R1-R2(差运算)、R2-R1(差运算),如果此时 R1∩R2 能够推出 R1-R2或R2-R1 其中之一,则称模式分解是无损的。