我想创建一个参考表。随着时间的推移,行数和列数会增加(并变得多余)。列名称也可能随时间而变化。让我们假设列'位置'中的值是'IT工程师',在行(n)中。对于列结构中更下方的特定行(n),让我们在“Behind Sheds”列中说,是我需要检索的值。如果列数已修复,则没有问题,但现在使用T-SQL动态添加列,这很容易做到,甚至重命名这些列。我的问题是,为上面的例子添加动态列是一个好习惯,还是有更好的选择,以及如何?
感谢。
答案 0 :(得分:1)
可能更好地使用类似添加表的字段:person_id
(主表的外键),person_param
(例如'位置'),person_value
(例如'IT'工程师')?
答案 1 :(得分:0)
我认为您的问题是实施EAV模式的权利。
基本上没有20列,你有3:
这样,对于数据库中的10个实体,每个实体有20列,您可以在EAV表中填充200行数据。它的性能较差,查询起来比较困难,但它确实具有灵活性,因此您可以使每个实体具有不同的属性集。