带有动态列的SQL Server表?

时间:2012-04-05 15:41:25

标签: sql-server-2008 dynamic

我想知道如何解决这个问题。

我们的数据库中有一个配置文件表,它将由一个读取的进程填充 上传的Excel文档,然后将列和行中的数据转储到 用户的个人资料(所有此类Excel电子表格中唯一常见的是电子邮件地址)。

因此,我们无法真实地预测给定用户的个人资料的样子。 如何创建我的个人资料表?

3 个答案:

答案 0 :(得分:1)

如果您已经使用编程语言处理这些数据,而不是盲目地进行映射,那么它应该非常简单。

带有ID的User_table,以及一些修复信息,例如名称等等。

然后你有一个配置文件表,它有一个user_id外键和密钥对值,标题/值

答案 1 :(得分:1)

抱歉,我必须创建另一个答案,但评论不会让我创建ascii草图

----------
| user   |
----------
| id   pk|
| name   |
| .....  |
----------

----------------
| preference   |
----------------
| user_id   fk | <-- reference user.id
| header       |
| value        |
----------------

csv_row = 1,churk,height,11,weight,500lb,width,22,... 或者csv_row = 1,churk,height=11,wieght=500lb,width=22......

这将在用户表中产生1行,user.id = 1,user.name = Churk 至少3行优先。 {[1,高度,11],[1,重量,500磅],[1,宽度,22]}

因此,当您查询数据库时,您只需要

SELECT * FROM user JOIN preference on preference.user_id = user.id WHERE user.name = 'Churk';

答案 2 :(得分:0)

以后如何查询这些数据?尽管我讨厌这种做法,但这可能是需要在列中存储csv数据的情况。

<强>更新
这可能非常适合Entity Attribute Value架构。我也不是EAV的粉丝,但至少它比一栏中的csv数据更不邪恶。