从技术上讲,这两种方法都是可用的。
这个问题真的归结为重用之一。如果您打算将此站点用于其他民意调查,那么您的同事的方法是正确的。
但是,如果这是单次交易,那么您开始的交易就可以了。
您的方法将减少代码/设置。他将花费更多时间让您了解 EAV 模型的复杂性;尤其是在报告方面。使用 EAV 设计构建高性能查询并不适合胆小的人。
当然有一个中间立场。即将登录信息分离到自己的表中,并创建一个“投票”答案表,其中仅包含您关心的 4 列。这种方法不具备 EAV 方法的任何灵活性,但符合有关结构的标准 DB 设计标准,并且肯定很容易组合和查询。
最后,还有第四个选择:不用自己编写,只需在提供免费投票的网站之一上注册即可。例如: http: //www.micropoll.com/ 注意:我不隶属于他们,也没有使用过他们的产品。这只是一个在 2 秒谷歌搜索中弹出的网站。
因评论而更新是的,您可以针对您最初拥有的结构执行简单查询。例如:
统计用户数:
select count(*) from users
计算说是的人数:
同意同意_1:select count(*) from users where agree_1 = 'yes'
双方同意:同意select count(*) from users where agree_1='yes' and agree_2='yes'
以下任何一项:select count(*) from users where agree_1='yes' or agree_2='yes'
计算拒绝的人数:
不同意_1:select count(*) from users where agree_1 = 'no'
对两者都拒绝:select count(*) from users where agree_1='no' and agree_2='no'
对任何一个都拒绝:select count(*) from users where agree_1='no' or agree_2='no'
仅显示
评论:select reason_1, reason_2 from users
仅是评论:select reason_1 from users where agree_1 = 'yes'
来自任一列中的评论任何是:
select reason_1 from users where agree_1 = 'yes' union all select reason_2 as reason_1 from users where agree_2 = 'yes'