人工管理阶段 → 文件系统阶段 → 数据库系统阶段及其发展过程 → 云数据库
数据模型(data model):用来描述数据的一组概念和定义(数据结构 + 数据操作 + 完整性约束)数据库(database, DB):长期存储在计算机外存上有结构、可共享的数据集合(较小的冗余度、较高的数据独立性和可扩展性、用户共享)数据库管理系统(DBMS):管理数据库的软件系统(定义、操纵、运行管理、建立维护)应用程序:利用DBMS和各种开发工具开发的、满足特定应用环境的数据库应用软件数据库系统相关人员(DBA):数据库管理员、应用程序开发员、最终用户数据库系统(DBS): 数据库应用系统:客户机/服务器结构数据库系统(C/S)、浏览器/服务器模式数据库系统(B/S) 数据独立性:指应用程序和数据库的数据结构之间相互独立,不受影响。分成物理数据独立性和逻辑数据独立性两个级别。数据模型三要素 ① 数据结构:关系(二维表)(关系可以有三种类型的表:基本关系、查询表、视图表) ② 关系操作:关系代数、关系演算、关系数据库的标准语言SQL(DDL/DML/DCL) ③ 关系的完整性约束:实体完整性、参照完整性、用户自定义的完整性
关系的性质 ① 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。 ② 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。 ③ 列的次序可以任意交换。 ④ 任意两个元组不能完全相同。 ⑤ 行的次序可以任意交换。 ⑥ 分量必须取原子值,即每一个分量都必须是不可分的数据项。
关系模式 关系的名称和关系的属性集 (主键要用下划线标出) R(U) / R(A1,A2,...,An)
E-R图的四个主要部分: ①实体集,用矩形表示。 ②属性,用椭圆形表示。 ③联系,用菱形或三角形表示。 ④直线,表示联系的类型及实体与实体之间的联系;多端用无箭头的直线,一端用有箭头的直线
实体到关系模式的转换:将实体的名称作为关系的名称,将实体的属性作为关系的属性,并用下划线标识出主属性。
①若实体间联系是1:1,可以在两个实体转换成的两个关系模式后,在其中任意一个关系模式的属性集中加入另一个关系模式的主键和联系自身的属性。也就是说1:1联系不单独转换为一个独立的关系。 ②若实体间联系是1:N,则在N端实体转换成的关系模式中加入1端实体的主键和联系的属性。同样1:N联系也不独立构成一个关系。 ③若实体间联系是M:N,则将联系转换成一个关系模式,其属性为两端实体的主键加上联系自身的属性,而联系关系的主键为一复合键,通常包含两端实体主键。
子类与超类——E/R图中“属于”联系到关系的转换
假若A类实体和B类实体之间是“属于”关系,这里假定为B属于A,为了表示出A和B之间的关系,用一种称为“属于”(“isa”)的特殊联系将实体集A和B相连。 “isa“联系用三角形表示,尖端指向A类实体集,底边指向B类实体集,三角形中还要写上”isa”的字样。A类实体和B类实体也称为超类和子类。 子类与超类有两个性质: ① 子类与超类之间具有继承性特点,即子类实体继承超类实体的所有属性。但子类实体本身还可以包含比超类实体更多的属性。 ② 这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。
例:
数据库设计中可能存在的问题: 数据冗余、修改异常、删除异常、插入异常
部分函数依赖和传递依赖是产生数据冗余和更新异常的主要根源 函数依赖:数据表中各个属性的依赖关系
设有关系模式R(U),X和Y是属性集U的子集,函数依赖(Functional Dependency,简记为FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X→Y在关系模式R(U)中成立
完全函数依赖与部分函数依赖:主要强调的是主键与非主属性之间的关系
对于函数依赖W→A,如果存在V包含于W(V是W的真子集)而函数依赖V包含于A成立,则称A部分依赖(Partial Dependency)于W;否则,若不存在这种V,则称A完全函数依赖(Full Dependency)于W
传递函数依赖
对于函数依赖X→Y,如果Y ←\ X(X不函数依赖于Y),而函数依赖Y→Z成立,则称Z传递函数依赖于X(Transitive Dependency)
范式(Normal Form,NF):符合某一规范级别的关系模式的集合。共有7种范式:1NF - 2NF - 3NF - BCNF - 4NF - 5NF - 6NF
范式定义备注第一范式一个关系模式R的所有属性都是不可再分的基本数据项基本要求第二范式R属于1NF,且每个非主属性都完全函数依赖于主键单个属性作为主键的一定是2NF第三范式R属于1NF,且每个非主属性都不传递依赖于主键BC范式R属于1NF,且每个属性都不传递依赖于主键决定因素必须包含键码 模式的分解:无损连接性、保持函数依赖性规范化:通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合例:
1NF: student(snum,sname,sdept,mname,cname,grade) 2NF: R1(snum,sname,sdept,mname) - R2 (snum,cname,grade) 3NF: R2 (snum,cname,grade) - R11(snum,sname,sdept)- R12(sdept,mname) BCNF: R2 (snum,cname,grade) - R11(snum,sname,sdept)- R12(sdept,mname)