Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何设计我的数据库?_Database - Fatal编程技术网

Database 如何设计我的数据库?

Database 如何设计我的数据库?,database,Database,我想创建一个足球成绩数据库 显然,我们有: 国家(荷兰、德国,(还有欧洲)) 比赛(欧洲联赛、德甲、欧足联) 球队(特温特、拜仁慕尼黑、马德里竞技) 球员(卢克·德容、曼努埃尔·诺伊尔、蒂亚戈·门德斯) 比赛(特温特-埃因霍温、拜仁-勒沃库森等) 事件(卢克·德容在第40分钟进球) 我正在使用Dezing,我在其中创建了以下方案: 显然,一场比赛对一个国家、一名球员对一支球队等都是有约束力的 但随后出现了一些问题。事件属于一场比赛和一名球员。因此,事件可以获得一个匹配id和一个玩家id。但

我想创建一个足球成绩数据库

显然,我们有:

  • 国家(荷兰、德国,(还有欧洲))
  • 比赛(欧洲联赛、德甲、欧足联)
  • 球队(特温特、拜仁慕尼黑、马德里竞技)
  • 球员(卢克·德容、曼努埃尔·诺伊尔、蒂亚戈·门德斯)
  • 比赛(特温特-埃因霍温、拜仁-勒沃库森等)
  • 事件(卢克·德容在第40分钟进球)
我正在使用Dezing,我在其中创建了以下方案:

显然,一场比赛对一个国家、一名球员对一支球队等都是有约束力的

但随后出现了一些问题。事件属于一场比赛和一名球员。因此,事件可以获得一个
匹配id
和一个
玩家id
。但是任何球队的任何球员都可以在他不属于的比赛中“得分”(C队的球员可以在a队和B队之间的比赛中得分)。例如,我如何限制这一点

此外,一支球队可以参加“正常”比赛,也可以参加冠军联赛。因此,团队实体中的简单竞争id是不够的

你还有其他想法吗

编辑以响应Philipp

您缺少一个实体来表达
阵容(团队、比赛)
以及
阵容(阵容、球员)


然后,您可以将
事件
阵容
(特定比赛中的特定球员)相关联,从而通过
阵容
->
事件
链接到正确的
比赛
阵容
您缺少一个实体来表达
阵容(团队,比赛)
以及一个
阵容位置(阵容,球员)


然后,您可以将
事件
阵容
(特定比赛中的特定球员)关联,从而通过
阵容
->
阵容
->
匹配
将您的
事件
链接到正确的
匹配
,您的意思是这样的吗?我可以看到,这确实会为球员在比赛之外的得分问题起到作用。但是我如何限制两个以上的
阵容
具有相同的
匹配id
?在阵容中没有
匹配id
,而是在匹配中有
主阵容id
客场阵容id
。这样你每场比赛只能有两个阵容,而且你不会丢失主客场信息。我已经再次编辑了图像。非常感谢,我想我还有最后一个问题。当我在
LineupPosition
中创建条目时,我可以将多个球队的球员添加到同一
lineupid
。这可能会派上用场(例如,国家队),但对于“正常”比赛来说,这是不可能的。有什么想法吗?有点晚了,但很抱歉,不知道如何在数据库级别强制执行此操作。请参阅有问题的添加图像,您是指类似的内容吗?我可以看到,这确实会为球员在比赛之外的得分问题起到作用。但是我如何限制两个以上的
阵容
具有相同的
匹配id
?在阵容中没有
匹配id
,而是在匹配中有
主阵容id
客场阵容id
。这样你每场比赛只能有两个阵容,而且你不会丢失主客场信息。我已经再次编辑了图像。非常感谢,我想我还有最后一个问题。当我在
LineupPosition
中创建条目时,我可以将多个球队的球员添加到同一
lineupid
。这可能会派上用场(例如,国家队),但对于“正常”比赛来说,这是不可能的。有什么想法吗?有点晚了,但很抱歉,不知道如何在数据库级别强制执行此操作。