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.ChildIdphải tồn tại trongParent_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ểm | PostgreSQL INHERITS | MySQL FK |
|---|---|---|
| Cột con kế thừa cột cha | Tự động | Phải định nghĩa lại |
| Truy vấn cha trả về cả con | Có (SELECT * FROM parent) | Phải UNION / JOIN thủ công |
| Khóa chính chung | Có 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.