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)
);
- 物理外键会影响数据库的性能,特别是在插入、更新或删除数据时,因为数据库需要维护这种约束。
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
);
- 逻辑外键的好处是灵活性更高,可以在不影响数据库性能的情况下,通过业务逻辑来处理数据之间的关系。
最后总结,推荐使用逻辑外键,听说阿里面也推荐使用逻辑外键。