我想设计一个存储填字游戏的数据库, 主要是我有2个表: 问题表,网格表,
问题表(q_id,问题,答案......) 网格表(g_id,name,....)
当我将问题表与网格表联系起来时,我想到了一个好方法,
Questions_Grid(q_id,g_id),该对将是主键,
我的老板提出的另一个解决方案:网格表(g_id,q_ids,....) q_ids存储此网格中使用的问题的所有ID
哪一个更好?如果你有更好的选择?
答案 0 :(得分:2)
看起来老板的建议是将问题ID列表存储为网格表中的文本列。如果我理解你在问什么,那就是它,第一个当然要好得多,因为它已经正常化了。在你的计划中,你可以在老板的计划中制作许多有用的查询,这些查询会很麻烦或不可能(如果可能的话,速度很慢)。
答案 1 :(得分:1)
第一个选项更好,这样,数据库的架构不会限制每个网格的问题数量。根据经验,当您必须更改架构以使应用程序扩展时,您还没有最佳架构。
答案 2 :(得分:1)
具有一个元组对的链接表更加规范化。
Question_grid
-------------
q_id
g_id
这将允许您为网格提供尽可能多的问题,而不是更多。 如果你试图对列表进行硬编码,那么每个网格都需要相同数量的问题,或者会有空白或者什么......没有好处。
答案 3 :(得分:1)
当你在“很多”(问题)关系上有“一个”(网格)时,规则就是制作链接表。所以你的选择是最好的答案,它是标准化的!