数据库规范化链接

时间:2015-08-06 23:51:55

标签: database database-design relational-database

我有多个表链接如下:

表1

product_id SERIAL NOT NULL,
name varchar,

Table2 (与table1分开,因为相同的产品名称,但可以是不同的颜色)

table2_id
product_id integer,
color varchar,
FOREIGN KEY (product_id) REFERENCES table1 (product_id) ON DELETE CASCADE

table3 (与table2分开,因为产品颜色相同但尺寸可能不同)

table3_id
table2_id integer,
size varchar,
FOREIGN KEY (table2_id) REFERENCES table2 (table2_id) ON DELETE CASCADE

例如,产品数据可能以这种方式存在:

a chair (name)  -  red (color)  - 100cm(size)
a chair (name)  -  red (color)  - 200cm(size)
b chair (name)  -  green (color)  - 100cm(size)
b chair (name)  -  green (color)  - 200cm(size)
c chair (name)  -  black (color)  - s(size)
c chair (name)  -  black (color)  - m(size)
d chair (name)  -  black (color)  - null(size)
e chair (name)  -  gold (color)  - big(size)
e chair (name)  -  gold (color)  - small(size)

为了规范化表格(即删除重复项目),我将它们分成3个表格,但我不确定这样的链接是否正确。

2 个答案:

答案 0 :(得分:0)

是的,这很好,但可以说模型应该是这样的:

product -< product_variant >- product_size

                  V
                  |
           product_colour

答案 1 :(得分:-1)

这是您提交的same question的第二个版本。答案是一样的。

产品是一个实体。尺寸和颜色是属性。

表包含实体。每个实体由一行表示。每行的字段是每个实体的属性。每次需要向实体添加属性时,都不会创建新表。这将使关系数据库无法使用。