SQL 属性值与索引的映射
SQL Mapping values of attributes with indexes
考虑到我有以下3个属性:
WeatherCondition
- rainy
- sunny
- cloudy
Daytime
- day
- night
RoadType
- city
- highway
- underconstruction
我想用索引映射这个值(day - 1,night - 2,等等)
我的问题是,考虑到任何时候我想为一个属性或什至新属性添加 2-3 个更多选择,我应该怎样做?
解决方案1:
AttributessTable:
ID AttributeType AttributeValue
AT1 WeatherCondition rainy
AT2 WeatherCondition sunny
AT3 Daytime day
AT4 Daytime night
AT5 WeatherCondition cloudy
方案二:
为每个只有 2 列(ID 和值)的属性分隔 tables。 WeatherCondition table 具有值(1,多雨;2,晴天;3,多云)
白天 table 具有值(1,天;2,夜)
我不太愿意使用第二种解决方案,认为我可能必须创建 30 个 tables。
最后的结果是,我想要一个 "lookup" 或 "bridge" table,其 ID FK 来自另一个 table,如下所示:
FinalConditions
ID Attribute
1 AT1
1 AT3
1 AT5
2 AT2
2 AT5
此外,通过将所有这些数据一起加入来创建报告对我来说很重要,我认为使用解决方案 2 将更难加入总共 30 tables。
我认为这一切都归结为可伸缩性 - 表格预期容纳多少行(所有这些,总和)。如果它们永远不会高于 10k,您不必担心 - 解决方案 1 就可以。
但是,如果您希望最终的数字达到,比如说,数百万行,解决方案 2 绝对是可行的方法 - 它会导致更少的锁,并且可能会容易得多维护(尽管更难实施 - 您可能必须 "create 30 tables")。
希望对您有所帮助。
考虑到我有以下3个属性:
WeatherCondition
- rainy
- sunny
- cloudy
Daytime
- day
- night
RoadType
- city
- highway
- underconstruction
我想用索引映射这个值(day - 1,night - 2,等等)
我的问题是,考虑到任何时候我想为一个属性或什至新属性添加 2-3 个更多选择,我应该怎样做?
解决方案1:
AttributessTable:
ID AttributeType AttributeValue
AT1 WeatherCondition rainy
AT2 WeatherCondition sunny
AT3 Daytime day
AT4 Daytime night
AT5 WeatherCondition cloudy
方案二: 为每个只有 2 列(ID 和值)的属性分隔 tables。 WeatherCondition table 具有值(1,多雨;2,晴天;3,多云) 白天 table 具有值(1,天;2,夜)
我不太愿意使用第二种解决方案,认为我可能必须创建 30 个 tables。
最后的结果是,我想要一个 "lookup" 或 "bridge" table,其 ID FK 来自另一个 table,如下所示:
FinalConditions
ID Attribute
1 AT1
1 AT3
1 AT5
2 AT2
2 AT5
此外,通过将所有这些数据一起加入来创建报告对我来说很重要,我认为使用解决方案 2 将更难加入总共 30 tables。
我认为这一切都归结为可伸缩性 - 表格预期容纳多少行(所有这些,总和)。如果它们永远不会高于 10k,您不必担心 - 解决方案 1 就可以。
但是,如果您希望最终的数字达到,比如说,数百万行,解决方案 2 绝对是可行的方法 - 它会导致更少的锁,并且可能会容易得多维护(尽管更难实施 - 您可能必须 "create 30 tables")。
希望对您有所帮助。