【问题标题】:Same To-Many-Relationship for different entities不同实体的相同对多关系
【发布时间】:2016-08-24 07:04:24
【问题描述】:

这可能是很多人都会遇到的问题,但我目前还没有找到真正令人满意的答案,也许没有完美的解决方案。

我有很多实体,比如:红色、绿色、蓝色、黄色等... 所有这些实体都没有任何共同点,但假设我想让几个实体“用户”负责这些实体,并且我想在我的数据模型中实现这种关系。

因此,最自然的解决方案是创建一对多对多关系,例如: RedToUser(带有外键 user_id 和 red_id)、YellowToUser(带有外键 user_id 和 yellow_id)等等。

虽然这是一个非常明确的解决方案,但它并不能真正令人信服,因为我有很多“颜色”,而且除了我的外键“color_id”之外,与用户的关系看起来总是一样的。感觉就像一遍又一遍地重复自己。

是否有最佳实践解决方案来设计这样的东西?

【问题讨论】:

    标签: database-design doctrine-orm


    【解决方案1】:

    在数据模型方面,所有这些红色、绿色……实体都有一个超实体,例如 AttendedObject,与用户实体具有 m:n 关系。

    为了将此类超实体结构映射到关系表,有不同的方法进行了详细描述,例如在https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html。对于像您这样的简单案例,我将只定义一个带有鉴别器的表,该鉴别器告诉用户参与哪种类型的实体,例如

    Attendance(id, user_id, object_id, discriminator, ...)
    

    判别器取红色、绿色等值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多