父亲应该知道孩子还是反过来?
也就是说,在我有两种对象(项目和类别)的情况下,每种对象都有自己的特征和字段,我们之间有一个关系,即每个项目都有他所在的类别。
我想从两个方面询问理论上和php + mysql中会发生什么。
类别是否应该知道其中的所有项目,或者每个项目是否应该知道其类别?
在php + mysql中,确切的问题是我应该为其行中的每个项目保存其类别的id,还是应该为此关系创建一个特殊的表(每行包含一个类别ID和一个项目ID)?
答案 0 :(得分:3)
最佳做法是让孩子了解父母(例如:parent_id
)。替代方案不具备可扩展性,对您的系统非常不利。您可以轻松地运行查询以查找子项 - SELECT * FROM items WHERE item_category = x
。原因是当您添加或删除项目时,该类别不受影响。它不会成为一个不同的类别,因为您为其分配了一个项目或从中删除了一个项目,因此它不应该关心将哪些项目分配给它。
这与标记设置不同。在一对多类别分配方法中,项目将属于单个“类别”,但可能具有许多“功能”。标记功能是一种多对多关系,需要您提到的映射表。分配父类别只需要在items表中使用单个“父”字段。