我有一个名为 category 的表。有一些表与类别表有关。例如,用户具有类别,帖子具有类别等。每个都必须有自己的中间表才能与类别表相关。(例如:帖子有很多类别)
现在有两种不同的方法:
first :每个表(例如用户,帖子...)都有与category
表相关的中间表。
second :所有表都有一个中间表,由一个称为type
的列隔开(类型可以具有以下值: user , post 等)。(这里没有外键,因为外键是虚拟的)
哪个更好?有什么想法吗?
当您具有不同的不是较高类型的亚型的不同实体集(例如User
和Post
)时,我建议第一种方法 - 制作单独的关系表。之所
从长远来看,这将大大简化查询和一致性。如果将不同的ID值集中到同一列中,它将阻止您使用唯一的约束和外键约束来确保完整性,并且您的查询将需要有条件的逻辑来处理不同的情况。
当您具有较高类型的子集 - 例如Customer
和Employee
,它们都是Person
的子集时,理想是创建一个Supertype表,然后在Supertype上创建关系。在设计阶段,与数据库填充数据相比,这要容易得多。