UML Data Modeling
如果我们创建一个数据库在关系系统中数据库将由关系组成。一般我们不是直接设计关系!数据库设计师,我们会在这里画出来的,使用更高级别的设计模型。然后那个模型就会出现通过类似转换器,这个通常可以是自动的将翻译的过程更高级别的模型进入由数据库系统实现的关系。
高级别数据库设计
- E/R模型使用了非常久的时间,也非常的流行,不过UML正在兴起!
- 两者都是图形化的
- 两者都可以被自动的转化成relation
UML模型的五个特点概念
Classes
这个概念不像relation中的概念,更像是编程语言中面向对象的概念
Associations
类似两个class中有一定的关系存在(用一个箭头,让设计者知道有这样的关系)
多重association
下面是一个多重association的例子
relation之间的类型:主要是一对一、一对多、多对多、默认的是1对1。
Association Classes
association classes 的用途就是给我们原有的class提供额外的信息
但是有时候其实我们不需要association class
self-association
SubClass
subclass的术语和性质
complete:every object in the super class is in at leat one sub class
disjoint: a sub class relationship is known as disjoint if every object is in at most one subclass.
Composition & Aggregation
这里的aggregation 和 sql中的aggregation不是一个概念,要自己注意
composition用一个实心的菱形表示,表示某个class属于另一个class
aggregation用一个空的菱形表示,说的是某个class可能属于另一个class
UML to Relations
这一部分讲的是UML转换到Relations
Classes 转化
每一个class变成了一个relation,并且pk ->primary key
Association 转化
如下图中的apply就是association,他是一种 Relation with key from each side,即连接两边pk的attribute的一种Relation!
Keys for Association Relations
实际上association不一定需要,当有0...1或者1...1关系在一边的时候,就可以把这边的pk属性放在另一边(对应关系比如*)。
看下图中的applied的association class是解决student中的SID与College中的cName,实际上如果每个学生只能申请一个大学或者不申请大学,那么我们就可以在student类中加上cName,从而去掉Applied这个class。
Association Classes转化
这个在上面也提到过了,这个association class必须要两边的primary key ,还可以自己添加一些attribute!转化成的relation就如下图粉色笔记所示。
Self-Associations 转化
注意下图关系中的*号,代表两边都是任意数目!
下图中注意satellite是一个key,home不是key!
Sub-Class
subclass的转换大致有三种,如下图,选择哪一种要根据?提到过的subclass之前的关系!
- 严重的overlapping subclass relation的话,换句话说,就是一个object出现在多个subclass中,这时候我们选取(3)会比较合适
- 如果subclass的relation是disjoint,并且是complete的话,complete是指在superclass的object至少在一个subclass中,这样选取(2)
可以看看老师讲的例子加强理解!注意老师讲了一点,subclass可以自动继承superclass的key
Composition & Aggregation
后记:上次曾经看到国内字节跳动面经,在数据库方面面试官提到了E/R模型,老师在本次课提到了这个模型,但是没详细介绍。
转载一篇我觉得讲的关于E/R模型 还算清楚的文章:https://www.cnblogs.com/HongjianChen/p/10696135.html