Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL không hỗ trợ kế thừa bảng – dùng Foreign Key thay thế

Tóm tắt

MySQL **không hỗ trợ table inheritance** (kế thừa bảng) như PostgreSQL. Thay vào đó dùng Foreign Key để mô quan hệ cha-con (1-nhiều).

Ví dụ: Mô hình Parent-Child

1. Tạo bảng cha

CREATE TABLE Parent_Table (
    ParentId INT,
    PRIMARY KEY (ParentId)
);

2. Tạo bảng con tham chiếu

CREATE TABLE Child_Table (
    ChildId INT,
    PRIMARY KEY (ChildId)
);

3. Thêm Foreign Key

ALTER TABLE Child_Table
ADD CONSTRAINT FK_Child FOREIGN KEY (ChildId) REFERENCES Parent_Table(ParentId);

Ý nghĩa

  • Child_Table.ChildId phải tồn tại trong Parent_Table.ParentId.
  • Không thể xóa Parent nếu còn Child (mặc định ON DELETE RESTRICT).
  • Có thể thêm ON DELETE CASCADE để xóa tự động con khi xóa cha.

So sánh với Inheritance (PostgreSQL)

Đặc điểmPostgreSQL INHERITSMySQL FK
Cột con kế thừa cột chaTự độngPhải định nghĩa lại
Truy vấn cha trả về cả conCó (SELECT * FROM parent)Phải UNION / JOIN thủ công
Khóa chính chungCó thểPhải quản lý thủ công

Kết luận

MySQL dùng mô hình quan hệ chuẩn (FK) thay vì kế thừa. Thiết kế: bảng cha lưu thuộc tính chung, bảng con lưu thuộc tính riêng + FK trỏ về cha.