祝你们过上和平健康的新年。 **
我正在为估计 10,000,000个用户的mysql / php / wordpress进行调查数据库设计。每个用户最终将在几年内回答 5,000个问题。这些问题的答案主要是:同意,中立,不同意,不要知道多项选择答案。没有正确或错误的答案。用户将来可以再次尝试这些问题。此外,在每次尝试时,他/她的answer_record都会使用新数据进行更新。从数据库性能和数据规范化角度来看,以下数据库设计是否合理?提前谢谢。
TABLE_USER:
TABLE_QUESTION:
TABLE_ANSWER:
此致
哈里森。
答案 0 :(得分:0)
我意识到你需要DB设计的帮助,但即使设计很完美,如果你的系统没有正确规划进行扩展(BIG),这将无法合理扩展。
正确设计的API可以无限扩展。
使用这些数字,加上外部并为其构建API可以更加便宜,以便您可以正确扩展。直接在WordPress中构建内容需要您在所有方向上快速扩展,以便运行PHP,HTTP和MySQL。
如果您在WordPress和调查数据库之间构建API,那么您可以扩展MySQL并在其间构建任意数量的系统,Memcache,搜索引擎等......
这样可以让您更好地分离系统,从而实现更高效的扩展。 只在需要时缩放每个。
所以我现在也计划你的系统/基础设施。
答案 1 :(得分:-1)
正确的数据库设计的一部分意味着退一步并确保如果再添加一个,则不必重新设计表,也可以分离出离散类型的信息。如果有几列正在做同样的事情(但记录不同的答案),你应该将它们分成另一个表并有一个链接表。
另外,你真的需要在表名中说Table吗?当然这是一张桌子,还有什么呢?
TABLE_USER很好
对于TABLE_QUESTION,您应该删除类别列,而是创建一个新表
TABLE_CATEGORIES 有关不同类别的信息
并有另一张表
CATEGORIES_PER_QUESTION
允许问题包含任意数量的类别,您可以通过查询categories_per_question查看每个问题的问题
TABLE_ANSWER应分为两个表,
RESPONSE
和ANSWERS
如果答案名称是“同意”,“中性”,“不同意”,“不知道”或您提供的任何其他答案。
如果你想要花哨,你甚至可以在ANSWERS和TABLE_QUESTION之间建立另一个连接表,指出每个问题可以得到什么答案。
要知道尝试次数以及我删除的其他信息,您可以查询数据库,使其不需要自己的列。