Mysql 一张中间表多个相似表

标签 mysql database database-design

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

现在有两种不同的方法:

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

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

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

最佳答案

当您有不同的实体集(例如 UserPost)而不是高级类型的子类型时,我建议使用第一种方法 - 制作单独的关系表。这样做的原因是要严格遵守逻辑关系的基本概念,这要求每个组件/角色都有一个域。

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

当您拥有更高类型的子集时 - 例如 CustomerEmployee,它们都是 Person 的子集,理想的情况是创建父类(super class)型表,然后在父类(super class)型上创建关系。这在设计阶段比在数据库填充数据之后要容易得多。

关于Mysql 一张中间表多个相似表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42325574/

相关文章:

php - Mysql 出现套接字故障

database - 如何在 Ubuntu 13.04 上更改 Postgresql 中的数据目录

database - Vertica 中的最大列数和列长度?

Go 中的数据库继承

php - 使用php pdo向数据库中插入记录

python - 如何在Python中从SQL数据库打印UTF-8字符?

php - mysql服务器宕机怎么处理?

mysql - 分割地址

sql - 如何消除 MS Access 2003 中具有唯一 ID 的重复条目?

mysql - 一对多 MySQL