在本课中,我们将简要地讨论本节中使用的数据库概念。

主键

主键是用来唯一地识别表中的某一行。下图所示的player表中的id列作为所有数据记录的唯一标识符。没有两条记录使用相同的主键值。

截屏2022-05-19 19.23.03.png

外键

主键可以用来将两个表连接在一起。当一个表的主键被用于另一个表时,它被称为外键。为了连接playerplayer_profile表,player_profile表中的id列被放置在player表中。profile_id列被称为外键列,用于指向player_profile表中的记录,该记录被链接到player表中的记录。

数据库关系

数据库中的表以不同的方式连接。

一对一关系(One to One Relationship)

table_a中的一条记录对应于table_b中的一条记录时,就被称为一对一的关系。以playerplayer_profile表为例。一个player有一个player_profile条目,所以这两个表之间存在一对一的关系。

截屏2022-05-19 19.26.08.png

一对多关系(One to Many Relationship)

table_a中的一条记录对应于table_b中的多条记录时,就被称为一对多的关系。一对多关系的反义词是多对一关系,table_b中的许多行对应于table_a中的一行。例如,一个player可以注册许多比赛。player表和registration表之间存在一对多的关系。

截屏2022-05-19 19.28.30.png

多对多关系(Many to Many Relationship)

当table_a中的一行对应于table_b中的许多行,table_b中的一行对应于table_a中的许多行,那么我们就有了所谓的多对多的关系。以锦标赛(tournament)和比赛类别category(如单打、双打等)为例。一个tournament有一个以上的category。同样地,一个category是许多tournament的一部分。tournament表和category表之间存在着多对多的关系。

截屏2022-05-19 19.32.22.png

参照完整性(Referential integrity)

当两个表相互关联时,数据应该反映出一致的状态。所有的外键应该指向有效的、现有的主键值。例如,一个profile属于一个player,所以这个player必须存在。如果一个player记录被删除,那么player_profile表中的相应记录也应该被删除。缺乏参考完整性会导致数据库中的记录丢失。