文章目录
数据库的一些基本概念
- DBMS: database management system:数据库管理系统
- Hierarchical Databases: 层次性数据库
- Network Databases:网状型数据库
- Relational Databases: 关系型数据库
- Object-Oriented Databases:面向对象型数据库
- XMl Databases:支持XML文档的数据库
- NoSQL Databases:Not- only -SQL
- 三级ANSI/ SPARC体系结构:External level-logical level-Internal level
关系型数据库
定义
- 属性(attribution):表中的固定属性类别,如学籍表的姓名,年龄
- 域(domain):修饰属性的数据类型及其范围
- 元组(Tuple):表中某一行的值,为所有域的笛卡尔积的一个元素
- 关系(relation):行和列形成的表,表的的取值为所有域的笛卡尔积的一个子集
- 关系模式(relational schema):多个二维表的集合,包含所有的属性,每个属性跟域相关
- 关系数据库模式(relatioal database schema):多个关系模式的集合,是一个完整性约束的集合
- 关系数据库状态(relational database state)
完整性约束(Intergrity Constraints,IC)
- 域约束(domain Intergrity constraints):描述元组的值,每个值必须在其属性的取值范围之类,需要符合数据类型及其范围
- 关键字约束(key Intergrity constraints):描述元组,用主键保证元组在表中唯一存在(超键->候选键->主键)
- 实体完整性约束(entity intergrity constriants):描述主键,主键不能为空(NOT NULL)
- 引用完整性约束(referential intergrity constraints):对关系模式的描述,存在引用关系的表,一个参考表的外键必须在被引用的表能够找到(这个外键表示被引用的属性)
ps:insert,delete,update会影响完整性约束
实体关系模型(entity relationnal model,E-R model)
实体关系模型与关系数据库的联系:
关系型数据库 | 实体关系模型 |
---|---|
属性 | 属性 |
域 | 域 |
元组 | 实体/关系 |
关系 | 实体集合/关系集合 |
关系模型 | 实体类型/关系类型 |
实体类型和实体集合
- 实体类型定义了一个拥有属性的实体;
- 实体集合是指某一时刻,数据库包含的实体集合。实体和元组类似,包含了多个属性,例如员工实体,其属性包括address,phonenumber,age…
关系类型和关系集合
- 关系类型定义了多个实体之间的相同的联系,该联系包含隶属这段关系的属性。
- 关系集合是指拥有相同关系的实体集合,注意关系集合实际是实体集合。例如组长和组员存在监督关系,那么这段关系包含两个实体的属性.
实体关系图
先说明一下基本图标元素:
元素 | 图形 |
---|---|
实体(entity) | ![]() |
弱实体(weak entity) | ![]() |
关系(relation) | ![]() |
弱关系(weak relation) | ![]() |
属性(attribute) | ![]() |
| 主键(key attribute) |
|
需要提醒一点的是,弱实体是指其拥有的属性不足以给予是这个实体特征标识,例如不同教师的子女名字可能相同,这个实体就是弱实体,弱实体一般需要依附于某一个实体,比如教师的子女依附于某一教师这个实体。
主键是指能够识别实体的实体属性。例如下图是一个简单的ER图:
在圣杯战争中从者(servant)是弱实体,因为很多应召唤而来的同名从者拥有不同的灵基,因此需要依附于御主(master)来加以区别,说到某某御主的某某从者就能分清楚了。
在实际生活中,可能存在更加复杂的E-R图,比如存在递归关系,或者更高集成度的关系这样表示:
如图表示master为servant提供magic,其中关系provide而拥有一个属性unit表示数量。
约束(constraints)
基数比例(Cardinality ratios)
-
一对一:
表示一个御主最多只有一个从者,一个从者最多只有一个御主。
-
一对多:
表示一个御主可以用多个从者,一个从者最多只能有一个御主。
-
多对多
类似的,一个御主可以有多个从者,一个从者可以有多个御主。
-
范围对范围(基数限制):
一个御主必须有一个且最多有一个从者,一个从者必须有至少一个御主。(m,n)表示一个实体与m~n个实体有该关系。
参与约束(Participation constraints)
- 完全参与:
用两段直线表示完全参与,这个图表示,一个master必须有一个从者,一个从者最多(可能没有可能有)有一个御主。
- 局部参与
就是如上图的单线。
分离约束(Disjointness constraints)
- 分离(disjoint):子类实体成员完全隔离,不重叠;
- 重叠(overleaf):子列实体成员可以重叠。
先了解一下父类与子类的关系。
概念上,子类和父类拥有父类的相同属性,但是名称不同,且具有更显式的表达。例如:
父类和子类的关系称为ISA。魔术师主要为阿特拉斯院(atlas)魔术师,时钟塔(clock tower)魔术师,迦勒底(chaldeans)魔术师,彷徨海(Baldanders)魔术师。
- 专门化:自上而下地的定义一个实体的子类;
- 一般化:下而上地把拥有多个公共属性的子类归纳成一个父类。
在图上,专门化指将magician上而下地定义了几个不同派别的魔术师,他们拥有magician的属性的同时也会拥有自己的特别属性;一般化指将几个不同派别的魔术师归纳为魔术师这一个实体。
完整性约束(Completeness constraints)
- 完全约束(Total):每一个父类实体必然属于至少一个子类的成员
- 部分约束(默认)(Partial):部分父类可能不属于任何一个子类。
构建E-R模型步骤
- 识别实体类型;
- 识别关系类型;
- 识别实体类型和关系类型的属性和域;
- 识别实体的主键;
- 找出约束(基数比例,参与约束,分离约束,完整性约束)。
参考文章
【数据库】数据库入门(三): SQL -https://blog.csdn.net/sinat_36645384
数据库基础:Fundamentals of Database Systems, 7th Edition (Global Edition), R. Elmasri and S. Navathe, 2017