跳转到内容

表关系设计

一对一(One-to-One)

指的是一个实体(表)的一条记录与另一个实体(表)的一条记录之间存在关联,且每个实体的记录只与另一个实体的一条记录相关联。

例如,一个人只有一个身份证号,而一个身份证号也只对应一个人。

一对多(One-to-Many)

指的是一个实体(表)的一条记录与另一个实体(表)的多条记录之间存在关联,且每个实体的记录可以关联到多个另一个实体的记录。

例如,一个班级可以有多个学生,但一学生只有一个班级。

多对多(Many)-to-Many)

指的是一个实体(表)的多条记录与另一个实体(表)的多条记录之间存在关联,且每个实体的记录可以与多个另一个实体的记录相关联。这种关系通常需要通过中间表来实现。

例如,一个学生可以选择多门课程,一门课程也可以有多名学生选修。

JOIN 查询

  • INNER JOIN 只返回同时存在于两张表的行数据。
  • LEFT JOIN 则返回左表都存在的行。
  • RIGHT JOIN 返回右表都存在的行。
  • FULL JOIN,它会把两张表的所有记录全部选择出来,并且,自动把对方不存在的列填充为 NULL

外键约束操作

  • CASCADE 主表主键更新,从表关联记录的外键跟着更新,主表记录删除,从表关联记录删除。这可以用于确保关联数据的一致性。
  • SET NULL 主表主键更新或者主表记录删除,从表关联记录的外键设置为 NULL。这意味着从表的记录与主表的关联断开。
  • RESTRICT 限制在主表的记录被删除或更新时,只要从表中还有关联记录存在,就阻止操作执行。这保证了关联数据的完整性。
  • NO ACTION 类似于 RESTRICT。这是一种较为严格的限制,但在某些数据库系统中(mysql),NO ACTION 的实际行为可能与 RESTRICT 相同。