csdn推荐
1 关系模式与关系数据库
1.1数据库的数据、逻辑、物理独立性
数据独立性高
本质:希望不管怎么变,想不修改应用程序
1.2关系数据库三级模式、两级映像数据库系统模式的概念
模式是数据库结构的描述、关系模式是表的结构的描述;
“型” 和“值” 的概念
型(Type)
对某一类数据的结构和属性的说明
值(Value)
是型的一个具体赋值
例如
学生记录型:
(学号,姓名,性别,系别,年龄,籍贯)
一个记录值:
(900201,李明,男,计算机,22,江苏)
模式(Schema)
数据库逻辑结构和特征的描述(数据模型是什么,表的结构、表之间的关系等等)
是型的描述,反映的是数据的结构及其联系
模式是静态的,相对稳定的,是数据库的蓝图或框架
一个数据库只有一个模式(三级模式中的概念模式)
实例(Instance)
模式的一个具体值
反映数据库某一时刻的状态
同一个模式可以有很多实例
实例随数据库中的数据的更新而变动
例如:在学生选课数据库模式中,包含学生记录、课程记录和学生选课记录
2003年的一个学生数据库实例,包含:
2003年学校中所有学生的记录
学校开设的所有课程的记录
所有学生选课的记录
2002年度学生数据库模式对应的实例与2003年度学生数据库模式对应的实例是不同的
数据库三级模式的结构和特征
外部模式(External Schema):
概念模式(Conceptual Schema):
内部模式(Internal Schema):
三级模式体系的优点 灵活性:能够根据不同用户或应用程序的需求定制不同的外部模式视图。数据安全性:通过外部模式控制用户对数据的访问权限,保障数据安全性和隐私。 示例说明
假设有一个大学管理系统,其数据库设计如下:
概念模式:
内部模式:
数据库的二级映像功能与数据独立性
三级模式是对数据的三个抽象级别
二级映象在DBMS内部实现这三个抽象层次的联系和转换
外模式/模式映像
模式/内模式映像
① 外模式/模式映象
模式:描述的是数据的全局逻辑结构
外模式:描述的是数据的局部逻辑结构
同一个模式可以有任意多个外模式
每一个外模式,数据库系统都有一个外模式/模式映象,定义外模式与模式之间的对应关系
映象定义通常包含在各自外模式的描述中
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
② 模式/内模式映象
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
例如,说明逻辑记录和字段在内部是如何表示的
数据库中模式/内模式映象是唯一的
该映象定义通常包含在模式描述中
保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。
应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
关系模式与关系r
关系模式是表的结构的描述
关系模式可以形式化地表示为:
R(U,D,DOM,F)
R 关系名
U 组成该关系的属性名集合
D 属性域
属性域定义了每个属性的取值范围或数据类型。例如,StudentID 的域可以是整数类型,Name 的域可以是字符串类型。
DOM 属性的取值范围
DOM(Ai) 表示属性 Ai的取值范围,确保每个属性的值符合其定义的域。例如,DateOfBirth 的域可能是日期格式。
F 属性间的数据依赖关系集合
函数依赖是一组约束,表示在关系中某些属性的值决定了其他属性的值。例如,StudentID -> Name 表示学生ID唯一确定学生的名字。
·
关系模式通常可以简记为
R (U) 或 R (A1,A2,…,An)
R: 关系名
A1,A2,…,An : 属性名
关系
在关系型数据库中,"关系"和"表"通常可以互换使用。
1.3关系数据库的完整性约束:实体完整性、参照完整性、 自定义完整性
码(Key):唯一标识实体的属性集称为码。例如学号是学生实体的码。又可以称为键。
候选码是最小的码集合,它可以唯一地标识数据表中的每一条记录,并且没有冗余的成分。换句话说,候选码是那些没有多余属性的码,不能再去掉任何属性而仍然保持其唯一性。
简单的情况:候选码只包含一个属性,最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key),若一个关系有多个候选码,则选定其中一个为主码(Primary key),所有的候选码的属性加起来称为主属性(Prime attribute),不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)。
三大完整性约束
实体完整性(Entity Integrity)
若属性A是基本关系R的主属性,则属性A不能取空值
例:
SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)
主码POSTGRADUATE 不能取空值
实体完整性规则的说明
(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现 实世界的一个实体集。
(2) 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识。
(4) 主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性
外码(Foreign Key)
设F是基本关系R的一个或一组属性,但不一定是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码,即该码是另一个表的主码。
基本关系R称为参照关系(Referencing Relation),即本表。
基本关系S称为被参照关系(Referenced Relation) 或目标关系(Target Relation),即外码对应的主码所在的表。
参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
蓝色表示有参照关系,横线表示主属性
用户定义的完整性
2关系代数 关系代数运算符
传统的集合运算 ① 并(Union)
② 差(Difference)
③ 交(Intersection)
④ 笛卡尔积(Cartesian Product)
专门的关系运算 ① 几个记号
② 选择(Selection)
③ 投影(Projection)
④ 连接(Join)
❶ 左连接、右连接、外连接
⑤ 除(Division)
⑥ 综合举例
,“除”运算有以下几个主要作用:
1. 处理全包含查询
“除”运算最常见的作用是处理全包含查询,即查找那些在所有给定条件下都符合的记录。例如:
2. 数据筛选和过滤
通过“除”运算,可以筛选出那些在特定条件下全部符合的记录。这在许多实际应用中非常有用,例如:
3SQL语⾔ 基本表的定义、删除与修改—TABLE
定义基本表的标准格式
CREATE TABLE (
[ ]
[, [ ] ]
………
[, ]
);
定义主码、定义外码
数据类型
以下是通用数据类型,不同数据库的数据类型可能有所不同,可查相关文档。
修改基本表
ALTER TABLE
[ ADD [ 完整性约束 ] ]
[ DROP ]
[ ALTER COLUMN ];
[例8]向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE;
[例9]将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
[例10]增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);
删除基本表
标准格式:
DROP TABLE [RESTRICT| CASCADE];
RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用(三类完整性约束,这里主要指参照完整性)
如果存在依赖该表的对象,则此表不能被删除(视图、索引、触发器)
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
数据库设计 一、数据库设计的必要性
在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的设计,我们构建的数据库不合理、不恰当,那么数据库的维护、运行效率会有很大的问题。这将直接影响到项目的运行性和可靠性。
二、什么是数据库设计
数据库对象包含表、索引、图表等等。
数据库设计实际上就是规划和结构化数据库中的数据对象以及这些数据对象之间的关系过程。
三、数据库设计的重要性
Ø 不经过设计的数据库或是设计糟糕的数据库很可能导致
1、 数据库运行效率地下
2、 更新、删除、添加数据出现问题
Ø 良好设计的数据库
1、 执行效率高
2、 使应用程序更便于开发
3、 扩展性好
4、 维护性好
四、数据模型
数据模型就像是数据间联系的一个轮廓图,整个模型就像一个框架。
如果按照数据间联系的表示方式,对数据模型进行分类,可以分为:层次模型、网状模型、关系模型。前两种又称为格式化数据模型。数据模型的好坏直接影响到数据库的性能,所以数据模型的选择是数据库设计的首要任务。一般选实体-关系(E-R)数据模型。
Ø 实体-关系(E-R)数据模型
E-R数据模型(Entity-Relationship data model),即实体-关系数据模型。E-R数据模型不同于传统的关系数据模型,它不是面向实现,而是面向现实物体的。
Ø 实体(Entity)
数据是用来描述现实中的物体的,而描述的对象都是形形色色的,有具体的、也有抽象的;有物理上存在的、也有概念性的。凡是可以互相区别而且可以被人们认识的事、物、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E-R数据模型中,也有型与值之分;实体可以作为型来定义,每个实体可以是它的实例和值。
Ø 属性(Attribute)
实体一般具有若干特征,这些特征称为实体的属性。而每个属性都有自己的取值范围,在E-R数据模型中称为值集(value set)。在同一实体集中,每个实体的属性及其值集都是相同的,但可能取不同的值。属性对应数据库表的列。
在一个实体中,能够惟一标识实体的属性或属性集称为“实体标识符”
Ø 联系(Relationship)
实体之间会有各种关系,这些关系抽象为联系。不但实体可以有属性,关系也可以有属性。
Ø联系的元数
一个联系涉及到的实体集个数,称为该联系的元数或度数(Degree)
• 一元联系(递归联系):同一个实体集内部实体之间的联系
• 二元联系: 两个不同实体集实体之间的联系
• 三元联系: 三个不同实体集实体之间的联系
五、数据库设计步骤
Ø 数据库设计可以分为以下几个阶段
1、 需求分析阶段:分析客户的业务需求,特别是数据方面的需求
2、 概要设计阶段:绘制数据库的E-R图,并确认需求文档的正确性和完整性,E-R图是项目的设计人员、开发人员、测试人员,以及和客户进行沟通的重要凭据
3、 详细设计阶段:将概要设计阶段的E-R图转换为数据库表,进行逻辑设计,确定各个表之间的主外键关系,运用数据库的三范式进行审核,并进行技术评审。最后决定选哪种数据库(Oracle、SQLServer、MySQL)来建库、建表。
Ø 需求分析阶段:数据库系统分析
需求分析阶段的重点是调查、收集、分析客户的业务数据需求以及数据的安全性、完整性需求等。
需求分析步骤:
1、 确认业务需求
2、 标识关系实体
3、 标识每个实体的具有的属性
4、 确认实体之间的关系
Ø 概要设计阶段:绘制E-R图
作为数据库设计者,你需要和项目组内其他成员分享你的设计思路,共同研讨数据库设计的合理性、安全性、完整性,并确认是否符合客户的业务需求。那么使用E-R图,这种图形化的表示方式最为直观。
* E-R图中的实体、属性和关系
上面的简单E-R图可以看出用户和收支之间的关系。在上图中可以看出:用矩形表示实体,实体是一般名词;椭圆表示属性,一般也是名词;菱形表示关系,一般是动词。
* E-R图
E-R图可以以图形化的方式将数据库的整个逻辑结构表示出来,组成部分有:
1、 矩形表示实体集
2、 椭圆表示属性
3、 菱形表示联系
4、 直线用来连接实体集与属性、实体集和联系
5、 直线箭头表示实体集之间映射基数
【P6】ER图_哔哩哔哩_bilibili
实体间的联系
1对1联系:1个A对应1个B
1对n联系:1个A对应n个B
n对m联系:n个A对应m个B
E-R图转换为关系模型
第一步:将各个实体的名字转换为各个关系模式的名字
第二步:实体的属性就是关系的属性,实体的码就是关系的码
第三步:实体间联系的转换
1对1联系:在任意一方加入对方的主码并设为其外码,并加入联系本身的属性
1对n联系:将1方的主码加入n方作为外码,并同时将联系的属性加入n方
n对m联系:将联系本身转换为一个关系模式,将联系双方的主码加入其中设为码,并将联系的属性也加入其中
聚簇索引(Clustered Index)
定义:聚簇索引是一种物理排序方式,其中数据记录按照索引的顺序存储在表中。每个表只能有一个聚簇索引,因为表中的数据行只能有一种物理顺序。
优点:
缺点:
二级索引(Secondary Index)
定义:二级索引又称非聚簇索引,存储的是索引键和对应数据行的指针。数据在表中的物理顺序不受索引影响,可以有多个二级索引。
优点:
缺点:
B+树索引(B+ Tree Index)
定义:B+树是一种平衡树数据结构,常用于实现数据库中的聚簇索引和二级索引。B+树的每个节点包含多个键值和指针,叶子节点通过指针相互连接,形成一个双向链表。
优点:
缺点:
总结 关系模式规范化
函数依赖
专业定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
案例演示:在关系Student(Sno, Sname, Ssex, Sage, Sdept),假设不允许重名,有:
Sno → Sname
Sno → Ssex
Sno → Sage
Sno → Sdept
Sname → Sno
Sname → Ssex
Sname → Sage
Sname → Sdept
平凡函数依赖
专业定义:X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
由于整体(X)可以确定其部分(Y),这种依赖总是存在的,因为部分总是由整体决定的,这就是为什么称之为“平凡”的原因。因此若不特别声明, 我们总是讨论非平凡函数依赖
非平凡函数依赖
专业定义:X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
这种依赖关系不是基于子集这一逻辑上的包含关系,而是需要通过数据的内在联系来确定,因此被认为是“非平凡”的。
完全函数依赖
专业定义:
案例演示:在关系SC(Sno, Cno, Grade)中,有:
部分函数依赖
专业定义:
案例演示:在关系SC(Sno, Cno, Grade)中,则有:
传递函数依赖
专业定义:
案例演示:在关系Std(Sno, Sdept, Mname)中,有:
Sno → Sdept , Sdept → Mname
6.2、码
注意:所有候选码的属性合起来为主属性,不是候选码的属性为非主属性。
Ø 数据库设计中经常出现的问题
1、 数据冗余大
2、 插入数据异常
3、 删除异常
4、 更新异常
Ø 规范设计
一个低一级范式的关系模式,通过模式分解(后面会介绍)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization) .
数据库第6章 关系数据理论(第二部分:范式理论 BCNF)_哔哩哔哩_bilibili
首先,需要判断关系模式中的候选码、主属性、非主属性
怎么判断?
枚举,视频中有。
1、 第一范式(1NF)
关系中的每个属性必须是不可再分的简单项,不能是属性组合,即属性的取值是不可拆分的原子值。
换句话说,不能表中有表。
2、 第二范式(2NF)
非主属性不存在对主属性的部分函数依赖。
如何规范化?
从部分函数依赖中找到非主属性部分依赖的主属性,并将这个主属性大哥复制,连同它的非主属性小弟新建一个关系模式。
3、 第三范式(3NF)
非主属性不存在对主属性的传递函数依赖。
如何规范化?
将传递函数依赖中的桥梁复制,带着它的非主属性小弟新建一个关系模式
4、 BCNF
主属性之间不存在部分函数依赖和传递函数依赖。
两种方式判断:
1 看箭头左侧是否都包含候选码,如果有一个没有则不满足BCNF
2 直接看主属性之间是否有存在部分函数依赖和传递函数依赖
如何规范化?
从部分函数依赖中找到主属性部分依赖的主属性,并将这个主属性大哥复制,连同它的主属性小弟新建一个关系模式。
Ø 规范化和性能关系
为了满足三大范式,数据库的性能可能会有一定程度的降低。所以,在实际数据库设计中,我们既要尽量满足三大范式,从而避免数据冗余和各种数据库的操作异常,同时也要考虑数据的访问性能。有时候,为了提高数据库的访问效率,适当的允许少量数据冗余咧存在,才是最适合的数据库设计方案。
文章来源:https://blog.csdn.net/never1624/article/details/139634723
微信扫描下方的二维码阅读本文
暂无评论内容