mysql - 创建组合或分离的关系表? (在 MySQL 中)

标签 mysql database database-design

我正在创建一个 MySQL 数据库,但我不确定如何创建关系表以获得最佳性能。

我有轮船和汽车表。每辆车或每艘船都会有几张照片。我想我有两个选择。

1-) 我将创建一个上传表 -> id, parent_table, parent_id ...

2-) 我将创建两个表,如 upload_ship 和 upload_car -> id, parent_id

哪个对性能更好? 一般关系表是分表还是合表?

最佳答案

从逻辑上讲,它们是单独的表,因为约束(在本例中为外键)不同。如果合适,您稍后可以将它们组合到一个 View 中。

从物理上讲,默认情况下不会有太大的性能差异,但是如果您的访问模式将从中受益,则拥有单独的表可以让您灵活地将它们放在单独的磁盘上。


id, parent_table, parent_id

永远不要那样做。

您实质上是在阻止 DBMS 为您强制执行参照完整性。在 concurrent 环境中,尝试从触发器或应用程序代码中强制执行它实际上并不容易,并且生成的代码可能具有微妙的竞争条件和/或不如“ native ” FOREIGN KEY 执行得好。


Generally, must relational tables be separated or combined?

这是一个很大的话题。我建议阅读有关数据库建模和规范化的内容。你可能会发现 ERwin Methods Guide为此很有趣 - 它是关于特定产品的(一种称为 ERwin 的建模工具),但它解释的概念是通用的。

关于mysql - 创建组合或分离的关系表? (在 MySQL 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311577/

相关文章:

database - 为新用户注册填充数据库数据的方法

sql - 从多个子查询中选择结果

mysql - 数据库设计: split column with multiple data types

mysql - 搜索可以位于两个不同列中的数据(查询/设计)

是否使用PHP框架(Cake PHP)

php - 按年份和月份计算帖子存档

mysql - 用于标记特定用户完成的任务的 SQL 查询

php - 解析一串逗号和数字

sql - 我应该如何将短文本字符串存储到 SQL Server 数据库中?

更新列的 SQL 语句