Table inheritance là một tính năng mạnh mẽ trong PostgreSQL cho phép bạn tạo ra các bảng con (child tables) dựa trên các bảng cha (parent tables). Điều này giúp tổ chức dữ liệu theo cách phân cấp, cho phép các bảng con kế thừa cấu trúc và dữ liệu từ bảng cha, đồng thời cũng có thể có thêm các cột và đặc tính riêng.
Dưới đây là giải thích chi tiết về table inheritance trong PostgreSQL, bao gồm các khái niệm cơ bản, cách sử dụng, lợi ích và nhược điểm.
Khi một bảng con kế thừa từ bảng cha, nó tự động nhận tất cả các cột của bảng cha. Dữ liệu có thể được chèn vào bảng cha hoặc bảng con, và cả hai sẽ có thể truy cập dữ liệu từ bảng cha.
Đầu tiên, bạn cần tạo một bảng cha. Ví dụ:
CREATE TABLE vehicles ( id SERIAL PRIMARY KEY, name VARCHAR(100), type VARCHAR(50) );
Tiếp theo, bạn có thể tạo một bảng con kế thừa từ bảng cha:
CREATE TABLE cars ( doors INT ) INHERITS (vehicles);
Ở đây, bảng cars
kế thừa từ bảng vehicles
và thêm cột doors
.
Khi truy vấn dữ liệu từ bảng cha, PostgreSQL sẽ tự động bao gồm dữ liệu từ các bảng con. Ví dụ:
SELECT * FROM vehicles;
Câu lệnh trên sẽ trả về tất cả các bản ghi từ bảng vehicles
cũng như từ bảng cars
.
Bạn có thể chèn dữ liệu vào cả bảng cha và bảng con. Ví dụ:
INSERT INTO vehicles (name, type) VALUES ('Toyota', 'Car'); INSERT INTO cars (name, type, doors) VALUES ('Honda', 'Car', 4);
Khi xóa dữ liệu từ bảng cha, dữ liệu trong các bảng con không bị xóa trừ khi bạn chỉ định:
DELETE FROM vehicles WHERE id = 1; -- Xóa từ bảng cha
Table inheritance trong PostgreSQL là một tính năng hữu ích cho phép bạn tổ chức dữ liệu theo cách phân cấp, giảm thiểu sự lặp lại và cho phép quản lý dữ liệu hiệu quả hơn. Tuy nhiên, cần cân nhắc kỹ lưỡng về cách sử dụng để tránh những phức tạp không cần thiết trong việc quản lý và truy vấn dữ liệu.