类似于这个问题:拥有大表还是很多表更好(MySQL)
我正在尝试重新设计数据库架构的一部分,我注意到有很多小表(2-8 条记录)包含枚举数据(例如动态表单选项)。我试图在创建具有更多枚举的新表或创建一个包含所有枚举的单个中央“枚举表”和查找键之间做出决定。与此类似:
create table options_table (
type NVARCHAR,
value NVARCHAR,
description NVARCHAR
);
该值类似于:
('print_options', '1', '5x5')
('print_options', '2', '10x10')
('exam_type', 'o', 'Online')
('exam_type', 'i', 'In Person')
这些值当然会连接到保存核心信息的主表。我的问题是:这种信息应该包含在主表、副表还是多个副表中?就速度/存储而言,数据库最有效的实现是什么?我怀疑包含所有选项的单个表将是最简单的实现,否则我们可能会拥有一个包含大约 50 个表和大约 100 个枚举样式表的数据库。
你可以简单地将它们合并到一张表中,只要保证数据不冲突即可。但枚举类型的目的是为了让字段值的含义更加明确,否则就只能用数字了。
所以把它们合并在一起,就得重新思考意义设定,比较麻烦。
如果只看执行性能,分散到几十个小表不会造成性能问题
它会起作用的。但我建议更改名称、数据类型和索引:
我三十年才干过一次这样的事。我曾经
description
使一些网页更加用户友好。一张表(和 2 列联接)与许多表(和 1 列联接)相比——性能差异非常小。
另请参见
ENUM
和SET
和FIND_IN_SET()
。