用于存储相关属性的列或行

时间:2010-11-14 18:20:32

标签: database-design

我想跟踪与主题表中的行相关的各种属性,但我不确定是否应该在主题表中创建列,或者创建属性表并在其自己的行中插入每个属性。 (或者可能是我没想到的第三种选择?)

例如:

properties
----------------
prop_id
type (representing boolean,range,text, or a date)
title

我认为在主表中引用它的两种方式是:

topic
----------------
topic_id
title
prop_id1
prop_id2
prop_id3
....

或为每个行上有一个属性的数据创建一个单独的表:

properties_data
----------------
topic_id
prop_id
bool
range_min
range_max
text
date

在我看来,第一种方法会更有效,但我希望每个主题可能使用或不使用~30-40个属性,因此我不确定使用哪种方法。

是否有一种标准的方法来完成这项任务,不同类型的数据都与主表行有关(理论上会同时查找)?

1 个答案:

答案 0 :(得分:2)

如果您要为每个主题添加可变数量的属性,那么您应该使用上面标识的后一个选项。这将为您提供最大的灵活性,如果您向数据库添加适当的索引,性能命中应该可以忽略不计。