如何避免每个用户 table

How to avoid table for each user

我面前有一个相当特殊的用例。将有一个包含大约一千个条目(行)的 excel 文件,每一行代表用户应该判断的内容。

现在,每个人的条目都是一样的。应该收集的数据是
a) 有多少用户喜欢任何给定的条目
b) 任何给定用户喜欢什么条目

由于应用程序的一部分已经 运行 并且我们有用户帐户, 我想为每个用户 (!) 创建一个包含上述 excel 信息的 table,添加一行用于收集选票。我会通过遍历用户列表并创建像 "userid_excelentries".

这样的 tables 来创建那些 tables

我不认为这很优雅。我宁愿在 table 中只存储一次 excel 信息,并且只在 table "user".

中保存用户的投票

该应用程序旨在显示 table 从 excel table 创建的(我已经完成了网格)和它旁边的一行复选框。我该如何构建它?临时 tables ?我如何存储每个用户在 "user" table 中选择的信息,因为我不知道有多少选择是先验的?

我有一个疯狂的想法,即通过 javascript 实际处理 xls 对象,将其序列化为散列并将该散列存储到每个用户行的字段中......但我不知道这是否是理智:o


我们正面临 272 个用户 - 这就是我考虑采用 "one table for each user" 方法的原因。

您可以在数据库中使用 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