数据库设计:通过一对多关系避免冗余

时间:2018-08-12 00:14:56

标签: database database-design

我有两个表:Cateogy和Product

Category : id (autoincrement), label
Product : id (autoincrement), label, image (blob), category_id(foreign key)

因此,按照该设计,每次我向产品添加类别时,这意味着该产品以某种方式重复但唯一会更改的值是“ category_id”。我真的觉得多余:

------------------
| Category       |
-----------------------
| id | label          |
-----------------------
| 1  | entertainment  |
| 2  | professional   |
| 3  | kitchen        |
-----------------------

------------------------------------------
| Product                                |
------------------------------------------
| id | label     | image | category_id   |
------------------------------------------
| 1  | computer  | [BLOB]| 1             |
| 2  | computer  | [BLOB]| 2             |
| 3  | TV        | [BLOB]| 1             |
------------------------------------------

问题:有没有一种方法可以消除product表中的冗余并避免重复产品,以便我可以添加类别?

致谢

2 个答案:

答案 0 :(得分:2)

  1. 从“产品”表中删除“类别”列。
  2. 创建一个名为“产品类别”的新表,其中包含以下列:产品ID(外国),类别ID(外国)

答案 1 :(得分:2)

您所说的结构实际上是说每种产品可以属于一个类别。因此,没有“将类别添加到产品中”的问题。如果确实需要“向产品添加类别”(意味着产品必须与/ ...相关联/...>1个类别),那么数据库结构就是错误的,必须是修改。