如何使用与不断增长的属性关系的表行创建数据库模型?

时间:2015-02-11 21:52:31

标签: sql database-design data-modeling

例如,如果我的表格中包含某种类型的'项目'无论是产品,动物,还有什么,我还需要存储随时间增长的属性。什么是建模的最佳方式?

一种方法是:

CREATE TABLE item
(
   item_id int,
   name varchar(255),
   description varchar(255),
);

CREATE TABLE item_attr
(
   item_attr_id int,
   item_id int,
   name varchar(255),
   description varchar(255),
   value varchar(255)
)

现在,如果我将一个项目添加到items表中,并且此项目获得100个不同的属性,包括名称,描述,任何可能的值(数字,文本等),那么我将只有100行用于该项目item_attr表。这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

这取决于属性是否在项目之间共享。在这种情况下,您将在单独的表中创建它们并在它们之间创建链接

CREATE TABLE item
(
   item_id int,
   name varchar(255),
   description varchar(255),
);

CREATE TABLE attr
(
   attr_id int,
   name varchar(255),
   description varchar(255),
)


CREATE TABLE item_attr
(
   item_attr_id int,
   item_id int,
   attr_id int,
   value varchar(255)
)