选择一对多关系或多对一关系进行设计

时间:2013-09-12 20:31:15

标签: relation

我需要帮助来定义模型之间的关系。

我有2个型号:

  1. 用户
  2. 产品
  3. 用户拥有许多产品,产品仅由一个用户拥有。

    我的用例: 登录的用户可以访问其个人帐户中的某些信息: - 显示他的所有产品 - 添加新产品

    稍后我想添加一个用例:任何用户都可以在某个屏幕上看到任何产品(并了解产品的所有者)。

    所以,我可以定义这样的模型:

    A)ONE TO MANY

    class User{
    
    private Set<Product> products;
    ..
    }
    
    class Product{
    
    ...
    } 
    

    B)很多人

    class User{
    
     ..
    }
    
    class Product{
    
     private User owner;
    }
    

    哪个最好?一对多或多对一?

    因为我的用例显示已登录用户的产品我认为最好选择一对多

1 个答案:

答案 0 :(得分:0)

最可能的选择是One To Many,因为用户拥有产品。他有产品(所以列出了它们)。在第二个选项中,您会说:产品拥有用户。

至于要求:

  • 显示他的所有产品
    • 您是否会展示他的所有产品,或者您是否会显示所有以该用户为所有者的产品。
  • 添加新产品
    • 用户将产品添加到其列表中,而产品则将用户添加为所有者。

最后一项要求非常棘手:“任何用户都可以在某个屏幕上看到任何产品(并了解产品的所有者)”。现在,如果这是主要功能,第二种设计会更好,因为从产品中找到所有者会更容易。虽然用例描述似乎主要集中在One to Many设计上。