Với kế thừa như @Denis đã đề cập, điều này sẽ rất đơn giản. Cũng hoạt động cho Postgres 8.4. Hãy chắc chắn xem xét các hạn chế .
Về cơ bản, bạn sẽ có một bảng chính, tôi cho rằng trong một lược đồ chính:
CREATE TABLE master.product (title text);
Và tất cả các bảng khác trong schemata khác nhau inherit từ đó, có thể thêm nhiều cột cục bộ hơn:
CREATE TABLE a.product (product_id serial PRIMARY KEY, col2 text)
INHERITS (master.product);
CREATE TABLE b.product (product_id serial PRIMARY KEY, col2 text, col3 text)
INHERITS (master.product);
vv
Các bảng không nhất thiết phải chia sẻ cùng một tên hoặc lược đồ.
Sau đó, bạn có thể truy vấn tất cả các bảng chỉ trong một cú ngã nhào:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
Đó là một cách tiện dụng để cho biết nguồn của mỗi hàng. Chi tiết:
- Tìm hiểu lược đồ nào dựa trên các giá trị của bảng
SQL Fiddle.