这是否正确归一化?

时间:2019-03-15 18:25:40

标签: sqlite database-design diagram database-normalization erd

我需要规范化该数据库。这是针对允许用户注册将在实际位置托管的游戏锦标赛的应用程序。搜索比赛时,用户可以注册比赛,赞助比赛或观看比赛。将有多个比赛,如Fortnite,Apex以及您拥有的比赛。这些游戏将在PS4,PC和Xbox One等平台上进行。一个锦标赛中可以有多个玩家,并且可以同时注册多个锦标赛,观众和赞助商都可以。每个结果都应该被存储,例如胜利和失败,并放在排行榜中。请帮助我标准化此ERD图。

enter image description here

1 个答案:

答案 0 :(得分:0)

要规范化数据库,必须确保以下规则:

1)表的每一列中的值都是原子的。

我不确定您打算在表格的获胜和亏损栏中保留什么。但是它们必须是原子的。获胜的数量还可以,但是获胜的不是。

2)没有重复

我看不到任何明显的重复,所以我认为这部分还可以。

3)没有传递依赖

在锦标赛表中同时有Team和Gamer FK。如果游戏玩家只能在锦标赛中(如果他在团队中),那么您具有传递依赖关系,应删除表格的GamerTag。 LeaderBoard和结果表也是如此

还有其他更正,例如在游戏表中有一个“属性名称”列。在团队表中,TournamentID未设置为FK,而GamerTag不是FK,因为在游戏者表中不是PK。用户表也有一个“属性名称”。其中。

除此之外,我不确定该模型是否会真正执行您想要的操作。通常,您的列名称不是助记符,因此我不能100%确定它们是什么。就像结果表中的Leader Fk一样。

对于第一个模型,这是一个好的开始。我建议您在继续对其进行标准化之前,请仔细进行修改,并在每一列中写出目的。

对表进行规范化是一件好事,但并非始终是存储表的最佳方法。因此,我也将停止思考是否真的有必要这样做。