mysql - 合并 MySQL 数据表是最佳实践吗?

标签 mysql database database-design

我正在考虑更改数据库方案以减少表的数量。我有几个包含不同但相似数据的表,我想知道以这种方式保留它是否是最佳做法,或者将它们组合起来是否会很复杂。

例如,假设我有以下两个表:

Table `status`

`status_id` | `status_text`
---------------------------
1           | Open
2           | Closed
3           | On Hold

Table `type`

`type_id`   | `type_text`
---------------------------
1           | Regular Work
2           | Advanced Work
3           | Warranty Work

将这些组合成一个表格是否有利,例如下表?

Table `text`

`id`        | `type`        | `text`
-------------------------------------------
1           | 1             | Open
2           | 1             | Closed
3           | 1             | On Hold
1           | 2             | Regular Work
2           | 2             | Advanced Work
3           | 2             | Warranty Work

type 列将关联到表示数据集类型的 PHP 常量。

我目前大概有 6 个表格,其中的数据完全符合这个方案。它们是如此相似,而且每个只包含 2-5 行,这让我很烦恼。我真的很想像上面那样将它们结合起来,但我不确定这样做是否会出现并发症,或者它是否违反了最佳实践。

我确实意识到 id 列会发生冲突并且不会成为主键的候选者,但它将是一个唯一键以及 type 以防止冲突。我不担心 auto_increment,因为这些表是手动管理的。

还要记住的另一件事是,这些表涉及多个 JOINS。除了向 ON 子句添加一个条件之外,我不认为它会使 JOIN 复杂化。

如果这是一个重复的问题,我深表歉意,这似乎是一个很难查找的主题,因为我提出的不是关于选择数据的常见问题,而是方案。

最佳答案

没有。这不行。您将在正确的数据库设计/规范化方面倒退,并且不必要地混淆了您的数据。

当然你可以做到这一点,但你会在将来的某个时候后悔这样做。您是否真的希望收到这样的问题:“嘿 Demonslay335,文本类型表中的这种工作类型是什么文本类型?您能帮我打出来吗?Typey-type type type。”

一个词说多了就会变成乱码,就像对数据进行元类型化一样。

关于mysql - 合并 MySQL 数据表是最佳实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225023/

相关文章:

database - Postgres 回归

python - Hadoop:在 Ubuntu 12.04 中通过 NameNode 格式化 HDFS 文件系统

database - 为什么 Doctrine 只在链接表的一列上创建索引?

php - PostgreSQL 查询 mySQL

database - 从不受信任的来源下载和使用数据库?

php - 错误的utf8编码导出Mysql数据库

postgresql - 如何在没有 FK 的情况下映射表

database - 逻辑模型与领域模型

由于另一列,PHP 多次回显整个列

mysql - 识别两个表之间缺失的行