我想设计一个数据库来存储纵横填字游戏,主要有两个表:问题表,网格表,
问题表(q_id,问题,答案...)网格表(g_id,name,...)
当我把问题表和网格表联系起来的时候,我想到了一个好方法,
Questions_Grid(q_id,g_id),则该对将是主键,
我老板建议的另一个解决方案:网格表( g_id,q_ids,...)q_ids存储此网格中使用的问题的所有ids
哪一个更好?如果你有更好的选择呢?
发布于 2012-04-05 21:13:44
看起来你的老板的建议是将问题ids列表存储为网格表中的文本列。如果我理解你问的是什么,当然,第一个要好得多,因为它是标准化的。在你的方案中,你可以进行许多有用的查询,这些查询在你老板的方案中是杂乱的或不可能的(如果可能的话,还会很慢)。
发布于 2012-04-05 21:13:12
第一个选项更好,这样数据库的模式就不会限制每个网格的问题数量。经验法则是,当您必须更改模式以使应用程序变得可伸缩时,您没有得到最佳模式。
发布于 2012-04-05 21:13:37
具有一个元组对的链接表更加规范化。
Question_grid
-------------
q_id
g_id这将允许您在网格中有尽可能多的问题,但不会更多。如果您尝试对列表进行硬编码,那么每个网格将需要相同数量的问题,或者将有空格或其他东西。不是很好。
https://stackoverflow.com/questions/10029247
复制相似问题