【问题标题】:Mysql one middle table for multiple similar tablesmysql 一张中间表对应多个相似表
【发布时间】:2017-02-19 19:54:48
【问题描述】:

我有一个名为 category 的表。有一些表与类别表有关。例如,用户有类别,帖子有类别等。每个人都必须有自己的中间表来与类别表相关联。 (例如:一个帖子有很多类别)

现在有两种不同的方法

第一:每个表(如用户、帖子...)都有自己的与category 表相关的中间表。

第二个:所有表都有一个中间表,由名为type的列分隔(类型可以有这些值:userpost 等)。 (这里没有外键,因为外键是虚拟的)

哪个更好?有什么想法吗?

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    当您有不同的实体集(如UserPost)不是更高类型的子类型时,我推荐第一种方法 - 制作单独的关系表。这样做的原因是紧贴逻辑关系的基本概念,即要求每个组件/角色都有一个域。

    从长远来看,这将大大简化查询和一致性。如果您将不同的 ID 值集混合到同一列中,则会阻止您使用唯一约束和外键约束来确保完整性,并且您的查询将需要条件逻辑来处理不同的情况。

    当您有更高类型的子集时——例如CustomerEmployee,它们都是Person 的子集,理想的做法是创建一个超类型表,然后在超类型上创建关系。这在设计阶段比在数据库中填充数据后要容易得多。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 2012-04-04
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多