跳至主要內容

1.25 表关系 🎉

刘春龙...大约 2 分钟数据库mysql

1.25 表关系 🎉

设计关系数据库的一个重要部分是将数据元素划分为相关的表,我们可以根据数据本身的关联性,将不同表之间的数据聚合在一起。

相关信息

无论在表与表之间建立了什么样的关系,决定数据之间是否有关系的不是表,而是数据本身。

表与表之存在三种关系(relation),即一对一,一对多,多对多关系。

  • 一对一(one-to-one):一种对象与另一种对象是一一对应关系,比如一个学生只能在一个班级里。

  • 一对多(one-to-many): 一种对象可以属于另一种对象的多个实例,比如一个班级里有很多学生。

  • 多对多(many-to-many):两种对象彼此都是"一对多"关系,比如一个歌单里包含多首歌,同时一首歌可以属于多个歌单。

一对多关系 💎

一种对象可以属于另一种对象的多个实例。

一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表中的多条数据。

可以添加外键约束保证数据的参照完整性,外键永远在多方。外键允许重复,允许含有空值。

警告

如果添加的外键约束,那么删除数据时,一定是先删除有外键一方的数据。

一对一关系 💎

一种对象与另一种对象是一一对应关系。

一对一关系是建立在一对多的基础之上,一个表中的一条数据只能对应另一个表中的一条数据。

可以添加外键约束保证数据的参照完整性,外键可以在任何一方,需要让外键具备唯 一约束。

警告

如果添加的外键约束,那么删除数据时,一定是先删除有外键一方的数据。

多对多关系 💎

两种对象彼此都是"一对多"关系

需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主键,然后每个列在作为外键参照各自的表的主键。

警告

存数据:先两侧,再中间表。

删数据:先中间表(即有外键的表),再两侧。

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7