Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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

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
Sql 数据库-表之间的关系_Sql_Database_Database Design - Fatal编程技术网

Sql 数据库-表之间的关系

Sql 数据库-表之间的关系,sql,database,database-design,Sql,Database,Database Design,我是数据库新手,所以理解某些东西有点困难 我的主要怀疑是关于一种情况 一个(愚蠢的)例子: 我有一张总统桌和另一张选举桌 主席: 主席 名称 出生日期 选举: 选举ID 选举日期 总统可以参加许多选举,只要他们来自不同的国家 我要做的新桌子的设计是什么 如果这很简单,很抱歉,但我不知道如何解决这个问题。选举总统 ElectionPresident ------------------ PresidentID <--PK, FK to President ElectionID <-

我是数据库新手,所以理解某些东西有点困难

我的主要怀疑是关于一种情况

一个(愚蠢的)例子:

我有一张总统桌和另一张选举桌

主席: 主席 名称 出生日期

选举: 选举ID 选举日期

总统可以参加许多选举,只要他们来自不同的国家

我要做的新桌子的设计是什么

如果这很简单,很抱歉,但我不知道如何解决这个问题。

选举总统
ElectionPresident
------------------
PresidentID <--PK, FK to President
ElectionID <-- PK, FK to Election 
------------------
PresidentID没有解决国家/地区的限制。因此,一个表格选举President只有这两个FK,没有更多列?没有PK?@wormwood87请看我的编辑,该表格上有一个复合PK。如果你指的是单一的代理PK,那是你的选择。如果您这样做,那么您应该在
(PresidentID,ElectionID)
上放置一个唯一的索引。这样更好,但是您最好在选举表中引用国家ID,因为否则我可以说我在同一个国家参加了两次选举,但在此列中错误地提供了错误的国家ID。我们可以通过传递性假设,如果约束条件在选举表上,则country ID是对countries表的有效引用。
ElectionPresident
------------------
PresidentID <--PK, FK to President
ElectionID  <-- PK, FK to Election 
CountryID   <-- FK to Country