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

Database design 用于存储相关属性的列或行,database-design,Database Design,我想跟踪与主题表中的行相关的各种属性,但我不确定是应该在主题表中创建列,还是创建属性表并将每个属性插入到它自己的行中。(或者是我没有想到的第三种选择?) 例如: properties ---------------- prop_id type (representing boolean,range,text, or a date) title 我认为在主表中引用这一点的两种方式是: topic ---------------- topic_id title prop_id1 prop_id2

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

例如:

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个属性,可能会用到,也可能不会用到,所以我不确定该使用哪种


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

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