【问题标题】:UML Class Diagram Multiplicity and ER Diagrams CardinalityUML 类图多重性和 ER 图基数
【发布时间】:2020-06-14 12:33:17
【问题描述】:

我有一个关于类图的多样性和 ER 图的基数的简单问题。他们让我很困惑如何选择它们。我应该从一个实例的概念还是从整个系统的概念中选择它们。

例如: 一个用户可以创建并拥有许多配置文件。并且这些配置文件只能有一个用户。 (一对多) 但是一般来说(在整个系统中),配置文件可以有许多用户,而不是这个特定的用户。 (多对多)

所以我的问题是,当我设计类和 ER 图时,我应该从一个实例(一个用户)的角度(如第一个实例)还是从整个系统的角度来看待它。许多用户可以拥有许多个人资料,反之亦然?

【问题讨论】:

    标签: database uml entity-relationship class-diagram erd


    【解决方案1】:

    一个用户可以创建并拥有许多个人资料。并且这些配置文件只能有一个用户。 (一对多)

    类图可以是:

    图表表明给定的用户可以有任何正数或空的Profile,给定的Profile是一个且只有一个用户

    这意味着 Profile 的实例如果没有 User 的关联实例就不能存在,因此关系可以是一个组合(当 User 的实例> 消失,它的个人资料也消失了):

    但是,一般情况下(在整个系统中),个人资料可以拥有除此特定用户之外的许多用户。 (多对多)

    上图还是正确的,它没有假设UserProfile的实例总数。

    您可以通过对象图显示实例示例:


    根据您的评论:

    我将有两个类,一个名为 User,一个名为 Modules,因此用户可以注册到模块中,所以这样会多对多,对吗?很多用户可以注册到模块,而模块可以有很多用户,对吗?还是应该只使用一个实例? Like 一个用户可以注册多个模块,而这些模块只能有一个用户(一个实例)

    除非模块是专门为一个给定的用户创建/创建的,在这种情况下你有多对多的可能性很小,所以两边的多重性都是“*”。

    【讨论】:

    • 非常感谢。我有另一个关于用户注册模块的例子,所以我将有两个类,一个名为 User 和一个名为 Modules 所以用户可以注册到模块,所以这样它会多对多,对吗?很多用户可以注册到模块,而模块可以有很多用户,对吗?还是应该只使用一个实例?比如一个用户可以注册很多模块,而这些模块只能有一个用户(一个实例)或者你对这两个例子感到困惑?
    • @JackWilson 是通过另一个问题吗?
    • @JackWilson 是的,那时它是多对多的,所以两边都有“*”表示多重性
    • @JackWilson 我还编辑了答案以添加对象图
    • @JackWilson 请编辑您的问题,而不是向 cmets 添加问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多