我想知道如何解决这个问题。
我们的数据库中有一个配置文件表,该表将由一个进程填充,该进程读取上传的 excel 文档,然后将列和行中的数据转储到用户的配置文件中(所有此类 excel 电子表格之间唯一的共同点是电子邮件地址)。
因此,我们无法真正预测给定用户的个人资料会是什么样子。如何创建我的个人资料表?
我想知道如何解决这个问题。
我们的数据库中有一个配置文件表,该表将由一个进程填充,该进程读取上传的 excel 文档,然后将列和行中的数据转储到用户的配置文件中(所有此类 excel 电子表格之间唯一的共同点是电子邮件地址)。
因此,我们无法真正预测给定用户的个人资料会是什么样子。如何创建我的个人资料表?
如果你有办法使用编程语言处理这些数据,而不是盲目地做映射,那应该很简单。
带有 ID 的 User_table,以及一些修复信息,例如名称和其他信息。
然后你有一个配置文件表,它有一个 user_id 外键,和键对值,标题/值
抱歉,我必须创建另一个答案,但评论不会让我创建 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,height,11],[1,weight,500lb],[1,width,22]}
因此,当您查询数据库时,您所需要的只是
SELECT * FROM user JOIN preference on preference.user_id = user.id WHERE user.name = 'Churk';
以后如何查询这些数据?尽管我讨厌这种做法,但这可能是需要将 csv 数据存储在列中的情况。
更新:
这可能非常适合实体属性值模式。我也不是 EAV 的真正粉丝,但至少它不像列中的 csv 数据那么邪恶。