我有一个由表"farmer2crop
“链接的多对多关系,将农民与作物类型(例如,水稻、小麦、玉米、香料等)联系起来。
例如:
FARMER2CROP
f2c_id
farmer_id
crop_id
然而,有些作物需要进一步的子类别查找,例如香料(小茴香、胡椒等)
在某种程度上,我认为所有的香料子类型都应该是作物表的一部分,也许应该有一个父类别,但客户希望香料是第二次查找,而大多数作物没有父类型。
因此,我可以将第三级多对多表连接到farmers2crops:
FARMERS2CROPS2SPICES
f2c_id
spice_id
但这似乎有点令人费解,这里有没有更好的设计建议--或者这是最好的权衡吗?
提前谢谢。
发布于 2012-03-09 19:18:06
从逻辑上讲,您应该有以下表格:
FARMER (farmer_id,...)
裁剪(crop_id,farmer_id,...)
crop_id (cropsub_id,CROPSUB ...)
有了这三个表,您就可以通过joins连接一切(三个点表示其他可能的表字段)。
我希望这对你有帮助。
发布于 2012-03-09 19:29:41
我会忘记farmers2crops2spices
选项,它太复杂了,不需要IMO。
简单的选项:添加一个subcategory
表+ crop.subcategory_id
列(NULLable)。但是,您可能会得到subsubcategory
、subsubsubcategory
等表(+ crop.subsubcategory_id
等)。
但我猜,从长远来看,你需要的是你的作物类别的nested set。我建议使用像Propel这样的对象关系映射(如果你使用PHP),它将抽象出所有困难的东西来有效地使用这样的结构。
https://stackoverflow.com/questions/9632862
复制相似问题