SQL 面试题 Summary

SQL 中如何处理一对一、一对多和多对多的关系?

推荐答案

在SQL中,处理一对一、一对多和多对多的关系通常通过外键和中间表来实现。以下是每种关系的处理方式:

一对一关系

  • 实现方式:在其中一个表中添加一个外键,指向另一个表的主键,并且该外键必须是唯一的。
  • 示例
    -- -------------------- ---- -------
    ------ ----- ------ -
        -------- --- ------- ----
        ---- ------------
    --
    
    ------ ----- -------- -
        ---------- --- ------- ----
        -------- --- -------
        -------------- ------------
        ------- --- ---------- ---------- ----------------
    --

一对多关系

  • 实现方式:在“多”的一方表中添加一个外键,指向“一”的一方表的主键。
  • 示例
    -- -------------------- ---- -------
    ------ ----- ---------- -
        ------------ --- ------- ----
        -------------- ------------
    --
    
    ------ ----- -------- -
        ---------- --- ------- ----
        ------------ -------------
        ------------ ----
        ------- --- -------------- ---------- ------------------------
    --

多对多关系

  • 实现方式:通过创建一个中间表(也称为关联表或连接表)来实现,中间表包含两个外键,分别指向两个相关表的主键。
  • 示例
    -- -------------------- ---- -------
    ------ ----- ------- -
        --------- --- ------- ----
        ----------- ------------
    --
    
    ------ ----- ------ -
        -------- --- ------- ----
        ---------- ------------
    --
    
    ------ ----- ------------- -
        --------- ----
        -------- ----
        ------- --- ----------- ----------
        ------- --- ----------- ---------- -------------------
        ------- --- ---------- ---------- ----------------
    --

本题详细解读

一对一关系

  • 概念:一对一关系表示两个表中的记录一一对应。例如,一个人只能有一个护照,一个护照也只能属于一个人。
  • 实现:在其中一个表中添加一个外键,并确保该外键是唯一的,以避免重复。

一对多关系

  • 概念:一对多关系表示一个表中的记录可以对应另一个表中的多个记录。例如,一个部门可以有多个员工,但一个员工只能属于一个部门。
  • 实现:在“多”的一方表中添加一个外键,指向“一”的一方表的主键。

多对多关系

  • 概念:多对多关系表示两个表中的记录可以相互对应多个记录。例如,一个学生可以选修多门课程,一门课程也可以被多个学生选修。
  • 实现:通过创建一个中间表,中间表包含两个外键,分别指向两个相关表的主键,并且这两个外键的组合作为中间表的主键,以确保唯一性。
Feed
back