MySQL一个中间表,用于多个类似表



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

现在有两种不同的方法:

first :每个表(例如用户,帖子...)都有与category表相关的中间表。

second :所有表都有一个中间表,由一个称为type的列隔开(类型可以具有以下值: user post 等)。(这里没有外键,因为外键是虚拟的)

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

当您具有不同的不是较高类型的亚型的不同实体集(例如UserPost)时,我建议第一种方法 - 制作单独的关系表。之所

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

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

最新更新