mysql - 为通常为空的列建议的数据库设计

标签 mysql sql database database-design

我有一个表格,其中包含四个通常填写的字段:

`animal`
- id
- type
- name
- weight
- location

如果动物 type = 'person',则会填写三个附加字段。这种情况发生的概率约为 5%。附加表将是:

`person_additional`
- animal_id (FK)
- IQ
- native_language
- handedness

数据库设计中建议的做法是将其存储在两个表还是一个表中?这对我来说几乎没有什么区别,但我很好奇最佳实践以及为什么一个比另一个更可取。

最佳答案

两个表可能是正确的方法,但我可能建议使用不同的第二个表。我将其定义为:

`animal_additional`
- animal_id (FK)
- Trait (this would enumerate allowable traits)
- value

这会让您更加灵活地为不同类型设置不同特征,甚至为同一类型设置不同特征。

关于mysql - 为通常为空的列建议的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12114982/

相关文章:

MYSQL 案例

mysql - Laravel 4 远方 Eloquent 关系

mysql - CI : Querying two tables in the model, explode

javascript - sequelize 更新多行

mysql - 当多个函数运行查询时连接到数据库的有效方法

mysql - 将 NULL 值插入 MySQL,来自 Coldfusion

mysql - 将行转为列 - 评级数据库

.net - 存储很少更改但经常访问的数据,这是解决方案吗?

json - MongoDB 更改/更新子文档字段

MySQL JOIN 表返回 NULL 或 0