在本课中,我们将简要地讨论本节中使用的数据库概念。
主键是用来唯一地识别表中的某一行。下图所示的player
表中的id列作为所有数据记录的唯一标识符。没有两条记录使用相同的主键值。
主键可以用来将两个表连接在一起。当一个表的主键被用于另一个表时,它被称为外键。为了连接player
和player_profile
表,player_profile
表中的id
列被放置在player
表中。profile_id
列被称为外键列,用于指向player_profile
表中的记录,该记录被链接到player
表中的记录。
数据库中的表以不同的方式连接。
当table_a
中的一条记录对应于table_b
中的一条记录时,就被称为一对一的关系。以player
和player_profile
表为例。一个player
有一个player_profile
条目,所以这两个表之间存在一对一的关系。
当table_a
中的一条记录对应于table_b
中的多条记录时,就被称为一对多的关系。一对多关系的反义词是多对一关系,table_b
中的许多行对应于table_a
中的一行。例如,一个player
可以注册许多比赛。player
表和registration
表之间存在一对多的关系。
当table_a中的一行对应于table_b中的许多行,table_b中的一行对应于table_a中的许多行,那么我们就有了所谓的多对多的关系。以锦标赛(tournament
)和比赛类别category
(如单打、双打等)为例。一个tournament
有一个以上的category
。同样地,一个category
是许多tournament
的一部分。tournament
表和category
表之间存在着多对多的关系。
当两个表相互关联时,数据应该反映出一致的状态。所有的外键应该指向有效的、现有的主键值。例如,一个profile
属于一个player
,所以这个player
必须存在。如果一个player
记录被删除,那么player_profile
表中的相应记录也应该被删除。缺乏参考完整性会导致数据库中的记录丢失。