我想设计一个数据库来存储填字游戏,主要是我有2个表:问题表,网格表,
问题表(q_id, question , answer...) 网格表(g_id, name, ....)
当我将问题表与网格表联系起来时,我在想一个好方法,
Questions_Grid(q_id, g_id),这对是主键,
我老板建议的另一个解决方案:Grids Table (g_id, q_ids, ....) q_ids 存储此网格中使用的问题的所有 id
哪一个更好?如果你有更好的选择?
我想设计一个数据库来存储填字游戏,主要是我有2个表:问题表,网格表,
问题表(q_id, question , answer...) 网格表(g_id, name, ....)
当我将问题表与网格表联系起来时,我在想一个好方法,
Questions_Grid(q_id, g_id),这对是主键,
我老板建议的另一个解决方案:Grids Table (g_id, q_ids, ....) q_ids 存储此网格中使用的问题的所有 id
哪一个更好?如果你有更好的选择?
看起来您老板的建议是将问题 ID 列表存储为网格表中的文本列。如果我理解您的要求并且确实如此,那么第一个当然要好得多,因为它已标准化。在您的方案中,您可以进行许多有用的查询,这些查询在您老板的方案中可能会变得混乱或不可能(如果可能的话,速度会很慢)。
第一个选项更好,这样您的数据库架构不会限制每个网格的问题数量。一个经验法则是,当您必须更改架构以使应用程序扩展时,您还没有获得最佳架构。
具有一对元组的链接表更加规范化。
Question_grid
-------------
q_id
g_id
这将允许您对网格有尽可能多的问题,仅此而已。如果您尝试对列表进行硬编码,那么每个网格将需要相同数量的问题,或者会有空白或其他东西......不好。
那么规则是当你在“许多”(问题)关系上有一个“一个”(网格)时制作一个链接表。所以你的选择将是最好的答案,它是标准化的!