我有一个多对多的关系,通过表“farmer2crop
”链接,将农民与作物类型联系起来(例如大米,小麦,玉米,香料等)
e.g。
FARMER2CROP
f2c_id
farmer_id
crop_id
然而,一些作物需要进一步的子类别查找,例如香料(小茴香,胡椒等)
部分我认为所有香料子类型都应该是庄稼表的一部分,也许应该有一个父类别,但客户希望香料是次要查找,而大多数作物不是有父类型。
所以我可以将第三级多对多表连接到farmers2crops:
FARMERS2CROPS2SPICES
f2c_id
spice_id
但这看起来有点令人费解,是否有任何关于更好设计的建议 - 或者这是最好的交易?
提前致谢。
答案 0 :(得分:1)
从逻辑上讲,您应该拥有以下表格:
农民(farmer_id,......)
CROP(crop_id,farmer_id,...)
CROPSUB(cropsub_id,crop_id ......)
使用这三个表,您可以通过连接连接所有内容(三个点表示其他可能的表字段)。
我希望这对你有所帮助。
答案 1 :(得分:1)
我会忘记farmers2crops2spices
选项,对于需要IMO来说太复杂了。
简单选项:添加subcategory
表+ crop.subcategory_id
列(NULLable)。
但是,您最终可能会使用subsubcategory
,subsubsubcategory
等表格(+ crop.subsubcategory_id
等)。
但我想您长期需要的是作物类别的nested set。我建议使用像Propel这样的ORM(如果你使用PHP),它将抽象所有硬件以有效地使用这样的结构。