我面前有一个相当特殊的用例。将有一个包含大约一千个条目(行)的excel文件,每行代表USER应该判断的内容。
现在,每个人的条目都是一样的。应收集的数据是
a)有多少用户喜欢任何给定的条目
b)任何给定用户喜欢哪些条目
由于部分应用已经投放,我们有用户帐户, 我想为每个包含所述excel信息的用户(!)创建一个表,添加一行来收集投票。我会通过用户列表通过iteratin创建这些表,并创建像“userid_excelentries”这样的表。
我不认为这很优雅。我更喜欢只在表中存储excel信息一次,并且只将用户的投票保存在“user”表中。
该应用程序旨在显示从excel表创建的表(我已经完成了网格)和旁边带有复选框的行。我该如何构建这个?临时表?如何在“用户”表中存储每个用户所选择的信息,因为我不知道将先验选择多少个选项?
我有一个疯狂的想法,即通过javascript实际处理xls对象,将其序列化为哈希并将该哈希存储到每个用户行中的字段中...但我不知道这是否理智:o
我们面临的用户数正好是272 - 这就是为什么我考虑做“每个用户一张桌子”的方法。
答案 0 :(得分:3)
您可以在数据库中使用3个表
users table
-----------
id
name
...
entries table
-------------
id
name
...
user_entries table
------------------
user_id
entry_id
user_response
要获得某个用户(即Tom
)喜欢的所有条目
select e.name
from entries e
join user_entries ue on ue.entry_id = e.id
join users u on ue.user_id = u.id
where u.name = 'tom'
and ue.user_response = 'like'
为了获得每个条目的喜好,你可以做到
select e.name, count(ue.user_id) as likes
from entries e
join user_entries ue on ue.entry_id = e.id
where ue.user_response = 'like'
group by e.id, e.name