• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2019-10-27 21:42 Aet 隐藏边栏 |   抢沙发  1 
文章评分 1 次,平均分 5.0

Foreign Key

概述

  1. 外键约束用于在两个表之间建立参照完整性(Referential Integrity),确保数据的一致性和完整性
  2. 外键是一个表中的列或一组列,其值必须匹配另一个表中主键或唯一键的值
  3. 通过外键,可以在不同表之间建立关系,从而维护数据库的逻辑结构
  4. 按个数分类
    1. 单一外键(给一个字段添加外键约束)
    2. 复合外键(给多个字段联合添加一个外键)
  5. 外键约束,外键字段,外键值
    1. 给某个字段添加外键约束后,它就变成了外键字段,外键字段出现的每一个数据都被称为外键值
    2. 外键字段可以为空,外键为空的数据叫孤儿数据
    3. 被引用的字段必须具有unique约束
    4. 有了外键引用之后,表分为父表和子表。创建表时应该先创建父表,再创建子表;插入数据时应该父表数据再插入子表数据
    5. 一对多的关系,多的一方添加外键,可以减少数据冗余

特点

  1. 确保外键列的值必须存在于被引用表的主键或唯一键列中
  2. 外键通常用于表示多对一(Many-to-One)关系
    1. 例如,订单项表的每一行都引用订单表中的一个订单
  3. 级联操作:
    1. 级联删除(CASCADE DELETE):当被引用表中的一行被删除时,自动删除引用该行的所有行
    2. 级联更新(CASCADE UPDATE):当被引用表中的一行被更新时,自动更新引用该行的所有行
  4. 可以显式为外键约束命名,便于引用和管理

语法

  1. 创建表时添加

  1. 创建表后添加

优缺点

  1. 优点
    1. 数据完整性:确保引用关系的有效性,防止孤立记录
    2. 维护参照完整性:通过级联操作自动维护表之间的关系
    3. 逻辑结构清晰:明确表之间的关系,便于理解数据库结构
  2. 缺点
    1. 性能开销:在插入、更新和删除操作时,外键检查和级联操作可能会带来额外的性能开销
    2. 复杂性增加:设计和维护外键约束需要仔细考虑,尤其在复杂的数据库结构中

级联操作

  1. 级联删除
    1. 当被引用表中的记录被删除时,自动删除引用该记录的所有记录

  1. 级联更新
    1. 当被引用表中的记录被更新时,自动更新引用该记录的所有记录

外键约束的删除

示例

  1. 创建部门表

  1. 创建员工表并添加外键

  1. 插入数据

  1. 删除被引用的记录

问题

  1. 关于外键的选择?
    1. B可以使用表A的主键或唯一键作为外键
    2. 也就是说,表B中外键引用的列可以是表A中的主键(PRIMARY KEY)或具有唯一约束(UNIQUE)的列
  2. 当表A中删除了某一项数据后,表B也会删除关联数据?
    1. 当表A中删除了某一项数据后,表B是否也会删除关联数据,取决于外键约束中设置的级联删除(ON DELETE CASCADE)规则
  3. B删除了某些数据后,不会影响到表A吧?
    1. 当表B删除某些数据后,通常不会影响到表A
    2. 外键约束主要用于维护参照完整性,确保表B中的数据在表A中有对应的记录
      但它不会反向操作,即删除表B中的记录不会影响表A中的数据

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2024-06-26
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享