物理外键和逻辑外键

56 阅读1分钟

1.物理外键是什么

  • 物理外键是指在数据库表中通过约束(如 FOREIGN KEY)实现的外键关系。它在数据库层面上强制执行数据完整性约束,确保一个表中的某一列或某几列的数据在另一个表中有对应的值。

比如:

-- 创建顾客表
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(100) NOT NULL
);

-- 创建订单表,其中 customer_id 是外键
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

image.png

  • 物理外键会影响数据库的性能,特别是在插入、更新或删除数据时,因为数据库需要维护这种约束。

2.逻辑外键是什么

  • 逻辑外键并不在数据库中通过约束来强制执行。它通常是通过应用程序的逻辑来确保数据之间的关联性。

比如:

-- 创建顾客表
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(100) NOT NULL
);

-- 创建订单表,没有外键约束
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT
);

image.png

  • 逻辑外键的好处是灵活性更高,可以在不影响数据库性能的情况下,通过业务逻辑来处理数据之间的关系。

最后总结,推荐使用逻辑外键,听说阿里面也推荐使用逻辑外键。