SQl参考表 - 动态列

时间:2011-08-05 08:12:28

标签: sql

我想创建一个参考表。随着时间的推移,行数和列数会增加(并变得多余)。列名称也可能随时间而变化。让我们假设列'位置'中的值是'IT工程师',在行(n)中。对于列结构中更下方的特定行(n),让我们在“Behind Sheds”列中说,是我需要检索的值。如果列数已修复,则没有问题,但现在使用T-SQL动态添加列,这很容易做到,甚至重命名这些列。我的问题是,为上面的例子添加动态列是一个好习惯,还是有更好的选择,以及如何?

感谢。

2 个答案:

答案 0 :(得分:1)

可能更好地使用类似添加表的字段:person_id(主表的外键),person_param(例如'位置'),person_value(例如'IT'工程师')?

答案 1 :(得分:0)

我认为您的问题是实施EAV模式的权利。

基本上没有20列,你有3:

  • 实体
  • 属性(也称为列名称)
  • 价值(可能实际上是更多的值,不同的类型,而你只是填充正确的值)

这样,对于数据库中的10个实体,每个实体有20列,您可以在EAV表中填充200行数据。它的性能较差,查询起来比较困难,但它确实具有灵活性,因此您可以使每个实体具有不同的属性集。