【问题标题】:Schema question for owner of an object对象所有者的架构问题
【发布时间】:2011-06-07 11:47:43
【问题描述】:

我在用户表中有一个 user_id 列。接下来我在品牌表中有一个brand_id。每个用例都有自己的页面:用户有个人资料,品牌有品牌页面。 (注意:Thgere 有更多这样的关系。公司有公司页面,城市有城市页面等)。因此,当用户上传照片时,我需要将其引用给所有者。所有者可以是品牌、用户、城市、组织等。

对于用户来说很简单,photo_id 属于 user_id,其中 user_id 是用户表的 FK。但是要将brand_id添加为照片的所有者,我需要一个单独的列还是可以在user_id列本身中完成,如果我将其重命名为将引用(用户ID或品牌ID)的owner_id?

【问题讨论】:

    标签: mysql database schema relationship


    【解决方案1】:

    2 列,放下手。 (当然,两者之一必须始终为空)

    单列有很多问题:

    • 无 DB 级引用约束(= 外键)
    • 品牌和用户表之间的 ID 冲突风险
    • 令人困惑

    【讨论】:

      【解决方案2】:

      您可以为每个创建一个映射表,例如user_photosbrand_photos

      这样您就拥有从user_photosuserbrand_photosbrands 的完整引用完整性。这也会对过滤用户/品牌照片的查询的性能产生积极影响。

      【讨论】:

      • 但是父照片表仍然会有“owner_id”列?还是说要杀死照片表并将照片存储到基于所有者的多个表中?那么如果我明天更改照片架构,我需要更新所有这些表吗?
      猜你喜欢
      • 2010-10-04
      • 2011-05-12
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2020-12-21
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多