如何在SQL Server 2008中的单个列上存储项目列表

jor*_*epc 3 t-sql sql-server

我正在寻找一种在SQL Server 2008表中存储用户信息的有效方法.

设计中的所有用户数据将被存储在一系列的列在一个表中,但其中一列需要存储值的列表,例如:'column1'将存储username,'column2'将存储userID'column3'将存储项目,将列表随着时间的推移而变化.

我想避免将这些信息放在每个用户的不同表上,因为这需要数据库中的大量表.

我应该使用什么数据类型'column3'?我应该采用完全不同的方法吗?

我看到在SQL Server上我们可以使用表数据类型,但这似乎只适用于临时存储.

谢谢.

Mar*_*ers 6

我认为你需要一种不同的方法。

如果您尝试建模多对一关系,那么您应该使用带有外键约束的额外表。

如果您尝试建模多对多关系,则可以使用三个表,其中一个表是将其他两个表链接在一起的联结表。

如果您正在寻找灵活的模式,您可能需要考虑实体-属性-值方法。这种设计有其缺点,但我认为它比在单个字段中存储大量不同类型的值更好。


Dan*_*plo 5

通常,在列中存储多个值表示数据库设计不佳.这使得根据该单个列中的条件有效地选择行非常困难.话虽如此,如果您真的只需要按行选择这些值,那么考虑使用XML,因为SQL Server本身支持XML数据.