继承(subclass)
incorrect

correct

其实就是把共性部分抽出来,个性化部分在各自的表

聚合(aggregation)


可以看到,这个设计,其实就是一对多。另外留意到components这个表,主键是4个字段组成,所以,不要嫌字段多,该怎样就怎样
递归(recurrsive association)
incorrect

correct

表现为一个自环。
看表设计会更清晰,managerId也是employeeId,也来自于employeeId:

另一种方式更好,用专门的表来记录上下级关系,而且支持多对多:

UML一些经典实例
多对多
通常的做法是定义一个专门的类来维护这个关系,举例:
员工与公司
假设员工可以受雇于多个公司

账户与基金

递归(自环)
文件与文件夹
文件夹其实是一种特殊的文件

这篇文章介绍了文件与文件夹的另一种画法,我觉得它不如前面的画法:

网友评论