设计一个数据库的最佳方法是什么,该数据库的对象类型共享一些列,但也有一些自己的列?
共享数据有1个表,让每个类型都有自己的表
[objects] o_id | o_name | object_type
[object_type_1] o_t_id | o_id | option1 | option 2
[object_type_2] o_t_id | o_id | option3 | option 4
或 有 1 个表中的所有列并且有很多 NULL 的
[objects] o_id | o_name | object_type | option1 | option 2 | option3 | option 4
最佳答案
这是一个常见问题。不存在单一的最佳解决方案。您必须始终根据您的模型权衡每一项的利弊。
看看你的选择:
- http://martinfowler.com/eaaCatalog/singleTableInheritance.html
- http://martinfowler.com/eaaCatalog/classTableInheritance.html
- http://martinfowler.com/eaaCatalog/concreteTableInheritance.html
对于您的额外属性,另一种方法是 EAV。这有一些严重的好处,但也有一些巨大的缺点,所以在认为它是“银弹”之前要小心:
关于mysql - 数据库设计对象略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8233999/