gpt4 book ai didi

mysql - 投票问题 - 将投票存储为序列化而不是多行

转载 作者:行者123 更新时间:2023-11-29 06:09:47 26 4
gpt4 key购买 nike

我的问题是:最好的方法是什么将用户的投票(包括 ip 和答案 id)存储在新的 mysql 行中,或者在答案行中仅使用 ine 字段将所有投票包含为“序列化”数据而如果存储此序列化数据的文件类型是什么

最佳答案

在一列中存储多个值几乎总是一个坏主意,因为解析出所需的值变得很困难,并且在提取部分所需的字符串操作之后可能会导致列索引无法使用。

创建一个规范化表,其中存储每个用户的每个答案一行。如果单个答案本身就是单个数据点,则它属于自己的行。

如果您通过 IP 跟踪用户:

CREATE TABLE votes (
voteid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
userip VARCHAR(15) NOT NULL,
answerid INT NOT NULL
);

此外,这还使您能够通过以下方式查询数据:

/* Get vote count per user */
SELECT userip, COUNT(*) FROM votes GROUP BY userip;

/* Get users who have voted 3 or more times */
SELECT userip FROM votes GROUP BY userip HAVING COUNT(*) >= 3;

要使用序列化列完成相同的任务,您需要将其查询到应用程序代码中,解析出分隔符,然后执行分析。要在应用程序代码中实现第二个(计数 >= 3),需要重新实现数据库已经非常擅长的许多功能,例如排序、分组和计数。

关于mysql - 投票问题 - 将投票存储为序列化而不是多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com