`

关系数据库设计与范式回顾

 
阅读更多

今天先把关系数据库设计及范式相关知识回顾总结一下,大部分出自我2010年底的学习笔记,发上来供大家参考,同时也希望对看到的人有所帮助。

--------------------------------------------

一、三大范式

1、第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF。

2、第二范式:消除部分依赖性即可转化为2NF。部分依赖性表示一个记录中包括的字段只依赖于主键的一部分。解决部分依赖性的最简单方法是将复合主键分成两部分,每一部分表示一个单独的表。

3、第三范式:消除可传递依赖性即可满足3NF。可传递依赖性表示记录中至少一个值不依赖主键,而是依赖于这个记录中的另一个字段。

4、数据库规范化:

1NF:删除重复的组,并确定一个主键或复合主键。

2NF:确定表处于1NF状态,消除任何部分依赖性。

3NF:确定表处于2NF状态,消除任何可传递依赖性。

5、连接数据库中的表:大多数情况下,两个表之间的连接是通过一个公共字段建立的。公共字段是两个表中都存在的一个字段。许多情况下,公共字段是其中一个表的主键。外键一般出现在“多”端。

6、关系数据库中不能存在多对多关系。用来消除多对多关系的最常用方法是通过添加桥接表来创建两个一对多关系。

二、数据库设计相关
1.数据规范化
关系模式满足的约束条件称为范式。范式由低到高分为:1NF、2NF、3NF、BCNF、4NF、5NF。
规范化:就是指把一个低一级的关系模式分解为高一级关系模式的过程。
规范化的基本思想:逐步消除不合适的函数依赖,使数据库中的各个关系模式达到某种程度的分离。
函数依赖:通俗的说,就像自变量x确定之后,相应的函数值f(x)也就唯一的确定了一样。
码:给定一个码能完全决定一个元组。一个关系可能有多个码,选其中一个做为主码。包含在任一码中的属性称为主属性。不包含在任何码中的属性称为非主属性。
第一范式(1NF):如果关系中所有属性的值域都是简单域,其元素(属性)不可再分,是属性项不是属性组,那么关系模式属于第一范式。这一限制是关系的基本性质,所以任何关系都必须满足第一范式。
第二范式(2NF):如果一个范式属于1NF,且所有的非主属性都完全的依赖主属性,称为第二范式。可以用分解的方法消除部分依赖的情况,而使关系达到2NF的标准。方法是从现有关系中分解出新的关系表,使每个表中所有的非关键字都完全依赖于各自的主关键字。
(消除部分依赖)
第三范式(3NF):如果一个关系属于2NF,且每个非主属性不传递依赖于主属性,这种关系是3NF。从2NF中消除传递依赖,就是3NF。
(消除部分传递依赖)
BC范式(BCNF):
无论2NF还是3NF都没有涉及主属性间的函数依赖,所以有时仍会引起一些问题。
定义:如果关系模式属于1NF,且每一个函数依赖关系中的决定因素都包含码,则关系满足BC范式。主属性对不含他的码完全函数依赖,没有属性完全函数依赖于一组非主属性。
多值依赖和4NF:第四范式是BC范式的推广。
定义:关系模式R<U,F>属于1NF,若对任意多值依赖XY。X必包含R的主键,则称R是第四范式。
多值依赖:对列A中的一个值,不论列C取什么值,总有一组确定的列B的值。所以有AB。如果A包含关系R的主键,则关系R满足4NF。可以采用分解法消除不满足4NF的多值依赖。
规范化设计带来的性能问题在实际应用中可能令人无法想象。如果出现这种情况,就要进行非规范化处理。由于非规范化必然导致冗余,占用更多的存储空间,因此需要对性能和空间的考虑进行平衡。常用方法有冗余属性,合并表等等。

 

2.数据库设计

常用方法:

(1)基于3NF的数据库设计方法:

在需求分析的基础上,识别并确认数据库模式中的全部属性和属性间的依赖,将他们组织成一个单一的关系模式,然后再分析模式中不符合3NF的约束条件,用投影和连接的办法将其分解,使其达到3NF。

(2)LRA方法:逻辑记录存取法。

(3)基于实体联系(E-R)的数据库设计方法。

(4)基于视图概念的数据库设计方法。

(5)面向对象的关系数据库设计方法。

通常将数据库设计分为需求分析、概念结构设计、逻辑结构设计和数据库物理设计4个阶段。

 

概念结构设计常用的方法是实体分析法、属性综合法。

二元联系的类型与定义:二元联系指两个实体之间的联系。分为一对一、一对多、多对多3种。

(1)一对一联系:对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系。

(2)一对多联系:对于实体集A中的每一个实体,实体集B有n个实体(n>=0)与之联系,反之对于实体集B中的每一个实体,实体集A至多只有一个实体与之联系。则实体集A与实体集B有一对多关系,记为1:n。

(3)多对多联系:若对于实体集A中的每一个实体,实体集B有n个实体(n>=0)与之联系。反过来,对于实体集B中的每一个实体,实体集A有m个实体(m>=0)与之联系。则实体集A与实体集B具有多对多联系,记为m:n。

消除冗余联系:若出现两个或两个以上的联系表示的是同一概念,则存在着冗余的联系,具有冗余联系的E-R模型转换为关系模型可能会得到非规范化的关系,因此必须予以消除。

 

警惕连接陷阱:

连接陷阱是一种存在语义缺陷的联系结构,分为扇形陷阱、断层陷阱、深层扇形陷阱3种信息。

扇形陷阱:指由一个实体引出的两种不同类型的扇形联系,形成双扇形结构。

3.数据库物理设计:

利用已确定的逻辑结构及DBMS提供的方法、技术。已较优的存储结构、数据存储路径、合理的数据存储位置及存储分配,设计一个高效可实现的物理数据库结构。

 

三、模式

数据库三级模式结构:这是数据库管理系统内部的系统结构。

1、概念模式:

只涉及行的描述,不涉及具体的值。概念模式的一个具体值称为模式的一个实例,同一模式可以有很多实例。概念模式反映的是数据库的结构及其联系,所以是相对稳定的。而实例反映的是数据库某一时刻的状态,所以是相对变动的。

概念模式不仅要描述记录类型,还要描述记录间的联系、操作、数据的完整性、安全性。但概念模式不涉及存储结构、访问技术等细节。

(注:可理解为系统表部分)

2、外模式:

也称用户模式或子模式。是用户与数据库系统的接口,是用户用到的那部分记录的描述。由若干外部记录组成,用户使用DML(数据操作语言)操作外模式的外部记录。

(注:可理解为用户表部分)

3、内模式:

也称存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。定义所有内部记录的类型、索引、文件的组织方式。记录的存储方式是顺序存储、B树存储、Hash方法存储等。

 

两级映像:模式/内模式映像、外模式/模式映像。

 

实体与记录:实体表示客观存在,能区别的事物。记录是字段的有序集合,一般一条记录描述一个实体。

属性与字段:属性描述实体某方面的特性,字段标记实体属性的命名单位。

码与记录码:码是唯一能区分实体的属性或属性集,记录码是唯一标识文件中的每条记录的字段或字段集。

实体集与文件:实体集是具有共同特性的实体的集合。文件是同一类记录的汇集。

实体型与记录型:实体型是属性的集合,记录型是记录的结构定义。

 

数据模型三要素:

数据库结构的基础是数据模型,是用来描述数据的一组概念和定义。

数据模型三要素是数据结构、数据操作、数据的约束条件。

 

E-R模型:是实体-联系模型的简称。所采用的3个主要概念是实体、联系、属性。

实体:现实世界中可以区别其它对象的物体或事件。

联系:实体的联系分为实体内部的联系和实体与实体之间的联系。

 

两个不同实体之间的联系:

(1)一对一:指实体集E1中的一个实体最多只与实体集E2中的一个实体相联系。(1:1)

(2)一对多:表示实体集E1中的一个实体可与实体集E2中的多个实体相联系。(1:N)

(3)多对多:表示实体集中E1中的多个实体可与实体集E2中的多个实体相联系。(M:N)

 

两个以上不同实体集的联系:

两个以上不同实体集之间存在1:1:1、1:1:N、1:M:N和R:M:N

 

同一实体集内的二元联系:

同一实体集内的各实体之间也存在1:1、1:N和M:N的联系。

 

属性是实体某方面的特性。

 

派生属性可以从其它属性得来,例如:参加工作时间和工作年限,工作年限可以从当前时间和参加工作时间得到,这里工作年限就是一个派生属性。

 

概念模型中最常用的方法是实体-联系法,简称E-R方法。

 

扩充的E-R模型:

弱实体:这种实体对另一些实体有着很强的依赖关系,即一个实体的存在必须以另一个实体为前提。例如职工与家属的关系。

特殊化:一个实体集可以按照某种特征区分为几个子实体。例如:学生实体集可以分为研究生、本科生、大专生。我们称这种过程为特殊化,反之叫普遍化。

 

层次模型:采用树形结构表示数据与数据之间的联系。

网状模型:采用网状结构表示数据与数据之间的联系。

 

关系模型:在关系模型中以表格结构表达实体集,以及实体集之间的联系。

 

关系代数:

笛卡尔积:D1={0,1}、D2={a,b}。D1*D2={0,a}{0,b}{1,a}{1,b}。

 

关系的3种类型:

基本关系:实际存在的表,是实际存储数据的逻辑表示。

查询表:查询结果对应的表。

视图表:由基本表或其它视图表导出的表,由于它本身不独立存储在数据库中。数据库只存放它的定义,所以常称为虚表。

 

完整性约束:

完整性规则提供了一种手段来保证授权用户对数据库操作修改时不会破坏数据的一致性。

 

关系的完整性分为3类:

(1)实体完整性:规定基本关系R的主属性A不能取空值。

(2)参照完整性:在关系模型中实体与实体间的联系是用关系来描述的。这样自然就存在着关系与关系间的引用。

(3)用户定义完整性:反映某一具体应用所涉及的数据必须满足的语义要求,由应用环境决定。


5种基本的关系代数运算:并、差、广义笛卡尔积、投影、选择。

扩展关系运算:交、连接、除、广义投影、外连接。

列举关系运算的例子。

 

SQL支持三级模式结构:视图对应外模式,基本表对应模式,存储文件对应内模式。

 

索引:

数据库中索引与书籍中索引类似,利用索引可以快速查找整本书信息,无需阅读整本书。

数据库索引可以使数据库程序无需对整个表进行扫描,就可以在其中找到所需数据。

 

索引分为:

聚集索引和非聚集索引。

聚集索引是指索引表中索引项的顺序与表中记录的物理顺序一致的索引。

 

视图创建遵循如下规定:

(1)子查询不允许有order by和distinct语句。

(2)with check option表示对update、insert、delete操作时保证更新、插入或删除的行满足视图定义的谓词条件(即满足子查询中的where后的条件表达式)。

(3)组成视图的属性列名或者全部省略或者全部指定。如果省略属性列名,则隐含视图由SELECT子查询目标列的主属性组成。

 

SQL的访问控制:数据库控制是控制用户的存储权限,由DBA来决定。

通过GRANT和REVORK将授权通知系统,并存入数据字典。


四、规范化

规范化:将关系模式从低一级范式转化成高一级范式的过程。

5NF包含于4NF包含于BCNF包含于3NF包含于2NF包含于1NF。

 

1NF定义:关系模式R中的每个分量是不可再分的数据项,则关系模式R属于第一范式。1NF冗余度大、引起修改的不一致性、插入及删除异常。

2NF定义:若关系模式属于1NF,且每个非主属性完全依赖于码,则关系模式属于2NF。即1NF消除了非主属性对码的部分函数依赖。

3NF定义:2NF消除了非主属性对码的传递函数依赖,则称3NF。3NF的模式必是2NF的模式。产生冗余和异常的两个重要原因是部分函数依赖和传递依赖。

BCNF(巴科斯范式):即3NF消除了主属性对码的部分和传递依赖,称为BCNF。

4NF:4NF是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。

如果只考虑函数依赖,BCNF是关系模式最高的规范化程度。如果考虑多值依赖,4NF是关系模式最高的规范化程度。

 

五、事务管理

事务有4个特性ACID。

原子性(A):要么全做,要么全不做。

一致性(C):一个事务独立执行的结果,将保持数据的一致性,即数据不会因为数据的执行而遭受破坏。

隔离性(I):一个事务的执行不能被其它事物干扰。

持久性(D):一个事物一旦提交,对数据库的改变必须是永久的。

SQL中事物定义语句有3条:

BEGIN TRANSACTION:事务开始。

COMMIT:事务提交。

ROLLBACK:事务回滚。

 

六、并发控制
并发控制主要技术是封锁,主要包含:排他锁(简称X锁或写锁)、共享锁(简称S锁或读锁)。
排他锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A。其它事务不能对A加任何锁,直到T释放锁。
共享锁:若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A。其它事务只能再对A加S锁。保证其它事务可以读取A,但在T释放A上的S锁前不能修改A。

三级封锁协议:
一级封锁协议:事务在修改数据前必须先对其加X锁,直到事务结束才释放(结束包括commit或rollback)。一级封锁协议解决丢失更新的问题。
二级封锁协议:在一级协议的基础上,加上事务在读数据之前必须加S锁,读完后即可释放S锁。二级封锁协议解决读脏数据的问题。因为读完后即释放,所以不能保证可重复读。
三级封锁协议:在一级协议的基础上,加上事务在读数据之前必须加S锁,直到事务结束时释放S锁。除了防止丢失更新、读脏数据的问题,还进一步防止不可重复读。

活锁和死锁:
活锁:当事务T1封锁数据R,事务T2请求数据R于是T2等待。T1释放了R上的封锁,系统首先批准了T3的请求,T2继续等待,之后系统批准了T4的请求……依此类推,T2可能永久等待。这种现象称为活锁。
死锁:是指两个以上事务分别请求封锁对方已经封锁的数据,导致长期等待而无法继续进行下去的现象叫死锁。

并发调用可串行性:
多个事务并发执行,当且仅当其结果与某一次序串行地执行它们时的结果相同,我们称这种调度是可串行化调度。
给定一个并发调度,当且仅当它是可串行化的才认为是正确调度。

两段封锁协议:指所有事务必须分为两个阶段对数据项加锁和解锁。
第一阶段是获得封锁:事务可以获得任何数据项上的任何类型的锁,但不能释放。
第二阶段是释放封锁:事务可以释放任何数据项上的任何类型的锁,但不能申请。

事务是不能嵌套的,因为这违背了事务的原子性。事务是不能嵌套是指当且仅当当前没有事务在运行时,程序才能执行BEGIN TRANSACTION操作。

通过Resource授权来控制创建新关系的能力,具有Resource授权的用户在创建新关系后自动获得该关系上的所有权限。
分享到:
评论

相关推荐

    关系数据库基础教程(13个word和ppt)

    5. 数据库设计原则,如范式理论,如何避免数据冗余和异常。 通过这些资料的学习,初学者可以逐步掌握关系数据库的基本概念和操作技能,为后续的数据库管理和开发打下坚实基础。对于已经有一定经验的用户,这些材料...

    DB关系数据库设计秋PPT课件.pptx

    首先,我们回顾关系数据库设计的基本理论。函数依赖是数据库设计中的基础概念,它描述了一个属性集X对另一个属性集Y的决定性影响。如果在关系r中,对于任何两个元组,只要它们在X上的属性值相等,那么它们在Y上的...

    数据库技术与应用PPT

    5. 数据库设计:涵盖了数据库的概念设计、逻辑设计和物理设计,强调了范式理论在逻辑设计中的应用,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 通过徐人凤老师的大型数据库课件,学习者可以深入理解...

    东北大学 数据库设计与实践 题型与练习题

    例如,可能包括SQL查询语言的使用(如SELECT语句、JOIN操作、子查询等)、关系代数表达式、数据库范式理论等知识点。 数据库系统概论期末复习题2.doc、数据库系统概论期末复习题4.doc、数据库系统概论期末复习题3....

    S2-2-MySchool数据库设计优化(PPT+源码)【第八章】

    1. **数据库设计基础**:在"第八章"中,通常会回顾数据库设计的基础知识,包括关系型数据库模型、范式理论(第一范式到第五范式)以及ER(实体关系)模型。理解这些基础对优化至关重要,因为它们确保数据的一致性、...

    花店管理系统-数据库设计.doc

    该报告由遵义师范学院计算机与信息科学学院的一位学生完成,旨在将所学的数据库知识应用于实际项目,为毕业设计打下基础。 1. **系统需求分析** - **需求分析任务**:主要涉及花店管理系统的各类信息和操作要求,...

    城建学院数据库课程设计 完整版

    在城建学院的数据库课程设计中,学生们将深入学习并实践如何使用数据库管理系统,特别是SQL Server,来解决实际问题。这个完整的课程设计由徐立辉老师指导,旨在帮助学生掌握数据库设计、实施和管理的核心技能。以下...

    数据库设计与应用开发归纳.pdf

    2. **数据库设计**:数据库设计包括创建符合范式理论的规范化表结构。例如,学生管理可能包含学生表(Student)、课程表(Course)和选课表(SC)。每个表应包含必要的字段,如学生表中可能有学号(Sno)、姓名...

    数据库设计和编码规范.docx

    ### 数据库设计与编码规范详解 #### 一、概述 本文档旨在为开发部全体成员提供一份关于数据库设计和编码规范的手册。良好的数据库结构设计是确保系统性能的基础,而明确的规范则有助于减少错误、促进团队协作以及...

    数据库技术与应用复习回顾PPT学习教案.pptx

    这份复习回顾PPT涵盖了数据库系统的基础知识,包括数据管理技术的发展、数据库的体系结构、数据描述、数据模型以及关系数据库的基本原理。 首先,DB(数据库)是存储数据的仓库,它包含了现实世界信息的计算机表示...

    数据库课程设计 火车票

    E-R图是数据库设计中常用的一种工具,能直观展示实体、属性和联系,便于理解系统实体间的关系。接着是**逻辑结构设计**,包括将E-R图转换为关系模型,这一步通常涉及将实体和联系转化为表格形式,并进行**规范化**,...

    数据库设计课件.pptx

    这通常包括理解业务需求、识别实体、定义实体之间的关系以及规范数据结构,确保遵循数据库设计的范式原则,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。第一范式要求每个字段都不可再分,消除重复组;第...

    数据库参考数据库试题大全

    试题可能会要求你进行数据库的规范化设计,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯-科德范式)。 5. **数据库安全性与完整性**:这部分可能涉及访问控制、权限管理、角色分配、视图的...

    数据库原理与应用-设计报告画出E-R转换成关系图

    ### 数据库原理与应用——设计报告:E-R图转换成关系模型 #### 一、基础知识回顾 在深入了解本实验之前,我们首先回顾一下E-R图的基本概念及其转换为关系模型的过程。 **1.1 E-R图简介** 实体-关系图(Entity-...

    大连理工大学数据库课件

    4. **数据库设计**:包括ER图、关系模式、范式理论等。 5. **SQL语言**:逐步深入SQL语法,包括SELECT语句、JOIN操作、子查询等。 6. **数据库操作**:如何创建、修改和删除数据库对象。 7. **索引与查询优化**:...

    数据库系统原理与应用教程 ch06 关系模式的规范化设计.ppt

    最后的章节小结回顾了本章的关键点,强调了规范化设计在保证数据库效率和数据完整性方面的重要性。 总之,关系模式的规范化设计是确保数据库高效、可靠和易于维护的关键技术。通过函数依赖分析和关系模式的分解,...

    2020春《数据库系统》期末试题C-v1.2.pdf

    在分析这些问题时,需要掌握扎实的关系数据库基础理论知识,熟练应用SQL语言进行数据操作,以及对数据库设计与实现过程中的关键问题有深入理解。通过这个考试,学生不仅能够回顾和巩固数据库的理论知识,还能提高...

    数据库期末复习

    - 关系数据库遵循特定的范式来减少数据冗余和提高数据一致性。 - 数据库系统提供了并发控制机制,以处理多用户同时对数据的读写操作,防止数据不一致。 5. 数据库并发控制与封锁 - 并发控制是数据库管理系统用来...

    数据库原理与设计:第5讲关系数据理论.ppt

    【数据库原理与设计:第5讲关系数据理论】 在数据库设计中,关系数据理论是核心概念之一,它探讨如何有效地组织和管理数据以避免数据冗余、插入异常、删除异常和更新异常等问题。本讲主要关注关系数据理论的几个...

Global site tag (gtag.js) - Google Analytics