【发布时间】:2018-10-13 22:44:35
【问题描述】:
我有一个存储产品的表,并且在同一个表中存储了我希望产品所在的类别的 ID。
我的产品表如下所示:
id | product_name | category_id | price
然后我有我的类别表:
id | category
我的问题是知道如何将多个类别插入到我的 category_id 中,以及是否可以。
如果没有,我能做到的最好方法是什么?
【问题讨论】:
我有一个存储产品的表,并且在同一个表中存储了我希望产品所在的类别的 ID。
我的产品表如下所示:
id | product_name | category_id | price
然后我有我的类别表:
id | category
我的问题是知道如何将多个类别插入到我的 category_id 中,以及是否可以。
如果没有,我能做到的最好方法是什么?
【问题讨论】:
这是可能的,但你真的不想去那里。在 99.99999% 的情况下,在单个数据行列中存储多个值是一个糟糕的想法。
如需了解更多信息,请阅读Is storing a delimited list in a database column really that bad?,您会在其中看到很多理由说明为什么这个问题的答案是绝对是的!
您要做的是添加另一个表来存储产品和类别之间的关系。这称为多对多关系。
这个新表应该在一列中保存产品 ID,在另一列中保存类别 ID,并具有由这两列组合而成的复合主键。
这样,您可以在同一类别中拥有多个产品,并且同一产品可以拥有多个类别。
【讨论】:
你需要一个many to many 关系,这意味着你需要第三个表让我们称之为ProductCategories,在这种情况下你将拥有
产品
id | product_name | category_id | price
类别
id | category
产品类别
PruductID | CategoryID (combined PK)
【讨论】: