我有五张桌子如下
1.tblFruits
2.tblGroceries
3.tblVegetables
4.tblPlants
5.tblDescriptions
除了第一个tblDescriptions
之外的所有表都将id作为一列和主键,而Items作为第二列。
表1至表4中的列类似,如下所示
ids item_name
现在我想在第五个表中存储四个表项的描述,如下所示
Desc_Id Description Ids
现在的问题是,因为我存储id以识别其他四个表中项目的描述,当我将四个表的ID放在一起时,我可能会得到类似的ID。
让我知道上述要求的表格设计
答案 0 :(得分:0)
由于您的表类似,最佳做法是组合所有表甚至描述并使用类型列定义行类型。
id name description type
[Fruits, Groceries, Vegetables, Plants]
更容易理解和维护。
但如果您的表格不同,您有两个选择:
1-为你的类型使用超级表格,我建议使用这些表格。
2-在描述字段中使用类型行,并将其定义为该表中ID旁边的主键。
答案 1 :(得分:0)
tblDescription
=====================
id | pk_id | description | type
id : auto_generated id of tblDescription
pk_id : foreign key to linked to the tblFruits,tblGroceries.. table
description : the description
type : value either be fruits, groceries,vegetables,plants .To identify the table.
提取描述的SQL如下:
Select f.item_name, d.description from tblDescription d
inner join tblFruits f on d.pk_id=f.id and d.type='fruits'
inner join tblGroceries g on d.pk_id=g.id and d.type='groceries'
答案 2 :(得分:0)
使用Polymorphic Association
。作为包含说明的第5个表的外键,使用两列object_id
和object_model
。
表格内容示例:
Desc_Id Description Object_ID Object_Model
1 'dsferer' 12 `Fruit`
2 `desc2 12 `Vegetable`
2 `descfdfd2 19 `Vegetable`
出于性能原因,请记住在两列上添加唯一索引。
Here you有一篇文章在PHP中解释了这一点