在关系数据库中,如果我们想为足球锦标赛创建数据库,我们会将锦标赛视为迷你世界(我们想要创建数据库并收集的单位)数据)。因此,我们可以创建匹配,团队等表格。而且,我们不会创建一个名为锦标赛的表格,因为我们只有我们正在做的所有这一切的游戏。
在实践中,这就是我过去所做的。但是,如果我想在我的数据库中保存有关锦标赛的一些属性,例如它的名称,日期和发生的国家,该怎么办...我该怎么办?创建只有一条记录的表锦标赛是一个好习惯吗?如果是的话,外键呢?在这种情况下,将锦标赛的ID作为外键添加到表匹配,团队中是不是很好......?如果没有,最佳做法是什么?
为什么我要将锦标赛信息存储在数据库中?因为我想创建一个只读取动态数据的网页。我不想将这些信息(锦标赛名称,日期......)作为静态数据添加到网页上。
我也在考虑产品未来发展的可能性。稍后,我可能会有多个锦标赛,并且数据库中的锦标赛表部分将允许在不修改元数据的情况下顺利整合更多锦标赛。
答案 0 :(得分:3)
是的,通常使用一行来存储相关的单个值。 (通常这是为参数设置完成的)。但是,除非您有多个锦标赛,否则您不需要此行中的ID用于锦标赛,也不需要在其他表中使用外键。
是的,这有助于扩展到多个锦标赛。它还有助于扩展到数据库的“时间”/历史版本,在该版本中,我们为每行保留时间戳,以便我们可以查询给定时间的当前状态。 (这通常涉及进一步规范化,以便为一起更改但可能在与其他列集不同时间的列具有单独的表。)
在移动到多个锦标赛时,与任何架构更改一样,将旧表的名称重新定义为新表的视图会很有帮助。遗憾的是,通过视图进行的更新通常得不到SQL DBMS的支持,所以在这方面,从一开始就拥有一个具有多个锦标赛功能的设计会很有用。