数据建模
即对于一个特定的应用,如何在数据库中表示数据
设计关系模型方法:
关系模型设计理论
概念设计模型
-E/R--传统的
-UML子集--目前常用的
Unified Modeling Language,统一建模语言
UML用于面向对象建模,但是现在也用于数据库建模
UML与E/R模型相似,但是不提供多元联系
UML和E/R术语对比
UML ER
class(类) -- Entity set(实体集)
Association(关联)-- Binary relationship(二元联系)
Association Class(关联类) -- Attributes on a relationship(联系的属性)
Subclass(子类)-- Isa hierarchy(Isa 层次关系)
Aggregation(聚集)-- Many-one relationship(多对一联系)
Composition(组成)-- Many-one relationship with referential integrity(带参照完整性的多对一联系)
UML中
类是具有相同属性和方法的对象的集合
属性是静态的,是状态,具有数据类型
PK表示主键
方法是动态的,是行为,包括参数的声明和返回值的声明
两个类间对象的联系称为关联(association)
表示方法:
两个类间用直线(箭头可选)连接
连接名字通常写在直线下方
在直线连接两个类的端点处标上关联类型(Multiplicity)
m ..n 表示与C2类中一个对象有关的C1类对象的个数最少为m,最多为n。
*表示“无上限”
m ..*表示“没有上限”
0..n表示“没有下限”
0..*表示“根本没有限制”
关联类型(Multiplicity)简写和默认值
*”是“0..*”的简写
“1”是“1..1”的简写
默认值为“1..1”
关联也可以有属性
-称为关联类( association class) .
-与E/R图中联系的属性类似
自身关联(Self-Associations)
类自己与自己关联
子类(Subclasses)
UML类都可以包含下级子类
子类用连线连接父类,与父类连接处以空心三角指向父类
主键来自父类(Superclass)
子类继承父类的属性(包括attributes and associations)
子类可以有子类自己的属性以及与其它类的关联
UML允许4种类型的子类
-Complete(完全)(父类中的每个对象都是某个子类的成员)或partial(部分).
-Disjoint(分散)(一个对象不能包含在两个子类中)或overlapping(重叠).
在0bject-Oriented系统中,子类是disjoint,即两个子类中不存在同一对象。
E/R模型自动允许overlapping子类
E/R模型和00系统都允许complete或partial子类
有两种类型的多对一(n:1)关联(many-one associations)
-聚集(Aggregations)
-组成(compositions)
聚集(Aggregations)
聚集用连线连接两个类,一方以空心菱形箭头结束
空心菱形箭头指向一方参与对象的个数必须为0..1,不需要另外标注
组成(Compositions)
组成与聚集类似.
但是菱形箭头一方参与对象必须为1..1.
菱形箭头相反一方类的每个对象必须与菱形箭头方的一个对象关联
组成以实心菱形表示
UML子类转换为关系
1.E/R风格:每个子类关系只存储其自身属性和码
2.OO风格:子类关系存储其自身和其父类所有的属性
总结:
UML(统一建模语言)跟E/R模型都属于概念设计模型
UML类就是E/R中的实体集,关联类-属性,PK-标识符,方法-类型
如果没有标注关联类型默认1..1
关联类型0..*-没有限制
0..n-无下限
1-1个
n..*-无上限
感觉UML模型跟E/R的制作思路都差不多,只是换了一种形式,对E/R多熟悉一些,UML也会特别容易上手