在OOP中建模M-N关系

时间:2014-02-12 00:31:04

标签: sql oop uml class-diagram erd

这是我在here

上找到的最接近问题的内容

我正在开发一个项目,我想为它添加一个安全模型,所以由于我亲身体验到跳转到编码和跳过规划阶段有多糟糕,我决定先做。所以我创建了一个ERD,很酷的一直在做,然后是UML类图,从大学开始就没有做过其中的一个,好吧一点点google,去吧。

参见ERD和UML类图Here

上面的图片是我迄今为止所做的一点,我知道我当然需要一个User Class和一个Permission Class,但我不知道如何处理这两者之间的关系。我一般都知道在一个M-N关系中,你用一个属性来建模它,这个属性是相关类的集合但是相关类的属性呢?以下是我最好的猜测,如果有人有更正,评论或材料的链接,那将是很棒的。我的目标是提前正确实施OOP。

class User{
    private $id;
    private $password;
    private $active;
    private $permissions;
    /* skip getters and setters */

    function getUserPermissions(){
        return UserPermission[];
    }

}

class UserPermission{
    private $id;
    private $deny;
    private $grant;
    private $active;
    /* skip getters and setters */

     function getPermissions(){
        return Permission[];
     }
}

class Permission{
    private $id;
    private $name;
    private $description;
    private $active;

    /* skip getters and setters */      
}

1 个答案:

答案 0 :(得分:1)

  • 您可以将这些数组直接返回,作为数组或列表。但那不是那么重要。

  • 更重要的是,每个UserPermission,即一个类关联,都应该有一个User数组和一个Permission数组。

  • 此外,每个User都应该有UserPermission,每个权限也应该有UserPermission

  • 并且User应该没有UserPermission的数组。他们的关联是1:n,n在用户方面。这意味着:UserPermission有很多User个,用户有1 UserPermission