【问题标题】:Modeling a database with UML: Relationships使用 UML 建模数据库:关系
【发布时间】:2012-03-11 01:43:35
【问题描述】:

我正在学习 UML 为班级项目建模数据库。本质上,该数据库用于社交网络。这些表是 user、friends、profile、status、wall_posts 和 cmets。我在确定确切的关系时遇到了一些麻烦。

乍一看似乎所有表都具有组合关系(变化的多重性);用户“有”个人资料(1-1),用户“有”朋友(1-0..*),wall_posts(1-0..*)和 wall_post“有”cmets(1-0. .*)。如果用户被删除,效果会级联并且应该删除任何具有该用户 ID 的记录。 user 表包含 uid 名称等信息(未在 wall_posts 表中复制),因此必须删除诸如消息记录之类的信息。

我的逻辑有问题吗?

【问题讨论】:

    标签: database uml database-design staruml


    【解决方案1】:

    a user "has" friends(1-0..*) 有缺陷的部分。

    这应该是用户表和它自己之间的 n-m(或 UML 表示法中的 0..*-0..*),因为所有这些朋友都不是一个用户独有的。每个人(希望)都可以有很多朋友。可以通过friendship 表实现,该表包含用户表的两个(不同)外键以及描述关系的可能附加属性。

    【讨论】:

    • friends 表的实现方式本质上是friendship 表(我应该换个名字)。它包含两个外键(f_uid,with_uid)和一个 since_date 属性。在这种情况下,与用户的关系类型是什么?还是作曲吗?友谊只存在于两个人之间,但一个用户可以拥有许多人。(2-n?)
    • @Ch0b0:userfriendship 之间的关系将是1-0..*,并且会有两个这些连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多