在域表为自由文本提供“其他”选项的情况下,数据库规范化的最佳做法是什么?

问题描述 投票:0回答:1

我目前正在为我的公司对数据库进行规范化,一种模式是我在数据库中看到的很多情况都是使用域查找表来获取值,但也允许“其他”并将结果存储在单独的位置列。

我的问题是,是否可能有一种更清洁的方式来表示这一点?对于上下文,我遵循的是5NF之前的普通形式和域密钥形式。我看到的更大的问题是在某些表中,此模式重复了一个以上,因此我们有一个如下表:

╔══════════════╦══════════════════╦═════════════════════╦═══════════════════╦══════════════════════╗
║ appliance_id ║ location_type_id ║ other_location_type ║ appliance_type_id ║ other_appliance_type ║
╠══════════════╬══════════════════╬═════════════════════╬═══════════════════╬══════════════════════╣
║          123 ║                1 ║ {null}              ║                13 ║ Freestanding Boiler  ║
║          124 ║               13 ║ Annex               ║                 1 ║ {null}               ║
╚══════════════╩══════════════════╩═════════════════════╩═══════════════════╩══════════════════════╝

例如,在相关查找表中,location_type_id和Appliance_type_id为13时是“其他”。

例如,位置类型表看起来像这样:

╔═════╦═══════════════╗
║ id  ║ location_type ║
╠═════╬═══════════════╣
║ 1   ║ Living Room   ║
║ 2   ║ Kitchen       ║
║ ... ║ ...           ║
║ 13  ║ Other         ║
╚═════╩═══════════════╝

这很可能是最好的解决方案(尽管我可能会将位置和设备类型分成不同的表),尽管我想对此有更多的了解,但这是我第一次尝试从上到下的重组,我很想从一开始就做好。

谢谢!

mysql sql database-design database-schema database-normalization
1个回答
0
投票

讨论完之后,我们将按照建议进行操作,并进行文本扫描并使用它来填充我们的查找,然后继续,我们将尝试阻止使用自由文本字段进行查找,并将值存储在暂时没有单独的表格,因此我们不会使主表格混乱。

© www.soinside.com 2019 - 2024. All rights reserved.