我正在学习UML来为类项目建模数据库。本质上,数据库用于社交网络。表格包括用户,朋友,个人资料,状态,wall_posts和评论。我在确定关系方面遇到了一些麻烦。
乍一看,似乎所有表都具有组合关系(具有不同的多样性);用户“有”个人资料(1-1),用户“有”朋友(1-0 .. *),wall_posts(1-0 .. *)和wall_post“有”评论(1-0。 。*)。如果用户被删除,则效果会级联,并应删除具有该用户ID的任何记录。用户表的信息类似于uid的名称(未在wall_posts表中复制),因此必须删除类似消息记录的内容。
我的逻辑是否有缺陷?
答案 0 :(得分:2)
a user "has" friends(1-0..*)
有缺陷的部分。
这应该是用户表与其自身之间的 n-m (或UML表示法中的0..*-0..*
),因为所有这些朋友不是一个用户专有的。每个人(希望)都可以有很多朋友。可以由friendship
表实现,该表包含用户表的两个(不同的)外键以及可能描述该关系的其他属性。