mysql - 如何避免每个用户的表

标签 mysql excel design-patterns database-design

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

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

由于应用程序的一部分已经在运行并且我们有用户帐户, 我想为每个用户(!)创建一个包含所述 excel 信息的表,添加一行以收集选票。我会通过遍历用户列表并创建类似“userid_excelentries”的表来创建这些表。

我不认为这很优雅。我更愿意将 excel 信息只存储在一个表中一次,并且只将用户的投票保存在表“user”中。

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

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


我们正面临 272 个用户 - 这就是我考虑采用“每个用户一个表”方法的原因。

最佳答案

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

关于mysql - 如何避免每个用户的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28191075/

相关文章:

php - sql 查询返回一个值,但 php 上的 $result 始终是一个空数组

php - 在 CentOS 6 上,模型->保存函数强制将整数参数绑定(bind)到 varchar 列

mysql - 使用JSP从MySQL数据库导出Excel

excel - 如果没有安装 AddIns,则无法访问 Excel 的 Application.ComAddIns 属性

design-patterns - 抽象工厂问题

java - 使用工厂模式的主要目的?

PHP MySQLi 不插入到表中

Excel从非堆叠单元格创建数组

Excel:间接(地址(...))与偏移(...)

design-patterns - 在 PHP 项目中,存在哪些模式来存储、访问和组织辅助对象?