我试图为我已经开始的项目设计一个MySQL数据库,但我无法弄清楚实现它的最佳方式。建模也存在父子关系的多种数据类型的存储
它是一个OOP系统,它包含不同类型的对象,所有这些对象都需要存储在数据库中。但是这些对象也需要保持彼此的父母子女关系。另外,我希望在系统投入生产时能够灵活地轻松添加新的数据类型。
据我所见,我有三个选择,一个是纯关系型,一个我认为是实体属性值(我没有正确理解EAV),最后一个是我认为的混合设计我自己,但我认为之前已经想过,并有一个专有名称。
关系设计将由两个表组成,一个包含列的大表允许其存储任何类型的对象,另一个表维护第一个表中行的父子关系。
EAV设计将有两个表,一个是具有三列(实体id,属性和值)的EAV表,然后第二个表将关联这些实体的父子关系。
混合设计将为每种类型的对象都有一个表,然后是一个父子关系表,它必须存储父,子的id以及这些id来自的表的某种标识符。
我确信这个问题已经被解决并且已经解决了好几百次,所以我会很感激任何参考资料,所以我可以阅读有关解决方案。
不使用EAV。阅读Table Inheritance http://martinfowler.com/eaaCatalog/singleTableInheritance.html –