SQl引用表-动态列

SQl引用表-动态列,sql,Sql,我想创建一个参考表。随着时间的推移,行和列的数量可能会增加(并变得多余)。列名也可能随着时间的推移而改变。让我们假设第(n)行“位置”列中的值为“IT工程师”。对于列结构中更下面的特定行(n),比如说在列“Behind Sheds”中,是我需要检索的值。如果列的数量是固定的,那就没有问题了,但是现在使用T-SQL动态添加列,这相当容易,甚至可以重命名这些列。我的问题是,在上面的例子中添加dynamicali列是一种好的做法,还是有更好的替代方法,以及如何添加 谢谢。最好使用添加表之类的字段:pe

我想创建一个参考表。随着时间的推移,行和列的数量可能会增加(并变得多余)。列名也可能随着时间的推移而改变。让我们假设第(n)行“位置”列中的值为“IT工程师”。对于列结构中更下面的特定行(n),比如说在列“Behind Sheds”中,是我需要检索的值。如果列的数量是固定的,那就没有问题了,但是现在使用T-SQL动态添加列,这相当容易,甚至可以重命名这些列。我的问题是,在上面的例子中添加dynamicali列是一种好的做法,还是有更好的替代方法,以及如何添加


谢谢。

最好使用添加表之类的字段:
person\u id
(主表的键)、
person\u param
(例如“位置”)、
person\u value
(例如“IT工程师”)?

我相信您的问题是实现该模型的权利

基本上没有20列,而是有3列:

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

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

+1我同意。一般来说,如果你正在动态修改你的模式,那你就错了;而是将多行中的列[Position]&[Where]作为唯一列,并将[value]列作为所需值。这样做容易多了。谢谢