Entity-relationship modeling
- 什么是ER modeling:该模型直接从现实世界中抽象出实体类型和实体间联系,然后用实体联系图(E-R图)表示数据模型,是描述概念世界,建立概念模型的实用工具。
概念模型
概念模型是对真实世界中的问题的事物的描述,不是对软件设计的描述。概念模型通常用ER图,ER图是由实体,属性和关系三个要素构成的。在ER图中三要素分成,实体集用矩形框表示,矩形框内写上实体名。实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—N或M—N。
逻辑模型
逻辑数据模型反映的是系统分析设计人员对数据储存的观点。是对概念数据模型进一步的分解和细分。
物理模型
物理模型是对真实数据库的描述。数据库中的一些对象:表,视图,字段,数据类型,长度,主键,外键,索引,是否可为空,默认值。概念模型到物理模型的转换是把概念模型中的对象转换成为物理模型的对象。
数据库ER图基础概念整理
-
R图中关联关系有三种:
-
1对1(1:1) :1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。
-
1对多(1:N) :1对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。
-
多对多(M:N) :多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。
a可能跟b有联系 用一个横线连接,如果a一定与b有联系用两个横线连接。
例:
-
-
一个weak entity:
-
weak and strong entity:
-
ER Diagrams Vs. EER Diagrams:
-
Super vs Sub classes :
Super Class:
- An entity type that has a relationship with one or more subtypes. 与一个或多个子类型有关系的实体类型。
- An entity cannot exist in a database merely by being a member of any super class。一个实体不能仅仅通过成为任何超类的成员而存在于数据库中
Sub class: - A group of entities with unique attributes。具有唯一属性的一组实体
- Inherits properties and attributes from its super class。从其超类继承属性和属性
-
Specialisation and Generalisation:
-
disjoint and overlap :
disjoint 不相交的:有三种类型的车辆:汽车、卡车和摩托车。每辆车必须是其中的一辆。
overlap : 赛道有三种类型:比赛、计时赛和对决。每个轨迹可以是其中的一个或多个。
union : 一个赛车手可以是人,npc或幽灵。
functional dependency
- 函数依赖是数据库中某个关系中两组属性之间的约束。
- 规定一个关系R,在R中的一组属性X可以定义另一组在R中的属性Y。
- 写成:
- 函数依赖优点:
- 函数依赖可以找到不同在好的database设计和坏的database设计中。
- 函数依赖避免了数据冗杂(data redundancy)。所以一些相同的数据不能出现在不同的位置。
- 避免数据冗杂可以阻止INSERT,UPDATE,DELETE异常(anomalies)。
- 维持数据质量
- 更清晰的意思和更清晰的约束。
Key Attributes
如果正确的设计database,everything will be dependent on the key( and only the key ).
Non Key Attributes
问题:surname有没有functional dependent on forename?
foremane - surname 否
问题:正确或否?
age - date of birth 是
问题:正确或否?
date of birth - age 是
抽象abstraction
R是一个table,table里面有A,B,C这三个属性。然后A决定B,B决定C。
armstrong’s axioms
如果我们有一组函数依赖我们可以通过Armstrong 原子理论去推到另一组函数依赖。基本规则分为三类:自反性(reflexivity)、扩充性(augmentation)和传递(transitivity)。
- reflexivity:如果我们有AB,它是ABC的一个子集,那么ABC将确定AB,所以这意味着,给定一组属性ABC,我们就可以确定AB。
- augmentation : 如果A可以决定B,那么AC可以决定BC。
- transitivity : 如果A可以决定B,B可以决定C,那么A可以决定C。
secondary rule
-
union:如果A决定B,同时A可以决定C。我们可以结合BC,得出BC函数依赖A,BC are functionally dependent on A.
-
伪传递性(Pseudo transitivity): A可以决定B,(B函数依赖A),BC决定D。那么CA可以决定D。
A决定B,同时乘上C,变成AC决定BC。然后代入下面。就得到CA决定D。 -
decomposition : 分解。
F+
根据Armstrong‘s Axioms和secondary rules 可以创造很多函数依赖(functio