0

我有五个表如下

1.tblFruits
2.tblGroceries 
3.tblVegetables
4.tblPlants
5.tblDescriptions

除第 5 个表外,所有表都tblDescriptions将 id 作为一列,作为主键,将 Items 作为第二列。

表 1 至表 4 列类似,如下

ids     item_name 

现在我想将四个表的项目的描述存储在第五个表中,如下所示

Desc_Id   Description     Ids

现在的问题是,因为我正在存储 id 来识别其他四个表中项目的描述,所以当我将四个表的 id 放在一起时,我可能会得到相似的 id。

让我知道上述要求的表格设计

4

3 回答 3

0

由于您的表相似,因此最佳做法是组合所有表甚至描述,并使用类型列定义行类型。

id   name   description   type
                          [Fruits, Groceries, Vegetables, Plants]    

它更容易理解和维护。

但是,如果您的表格不同,您有两种选择:

1-为您的类型使用超级表,它会产生我建议的唯一 ID。

2- 在描述字段中使用类型行并将其定义为该表中 ID 旁边的主键。

于 2012-07-23T06:27:44.837 回答
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'
于 2012-07-23T06:27:54.900 回答
0

使用Polymorphic Association. 作为带有描述的第 5 个表的外键,使用两列object_idobject_model.

表格内容示例:

Desc_Id Description Object_ID Object_Model
1       'dsferer'   12        `Fruit`
2       `desc2      12        `Vegetable`
2       `descfdfd2  19        `Vegetable`

出于性能原因,请记住在两列上添加唯一索引。

在这里你有一些用 PHP 解释这个的文章

于 2012-07-23T06:28:03.293 回答