Có vẻ như tẻ nhạt nhưng tôi sẽ tạo bảng cho mỗi sản phẩm trong tổng.
CREATE TABLE foo (id uuid PRIMARY KEY);
CREATE TABLE bar (id uuid PRIMARY KEY,
s text NOT NULL);
CREATE TABLE baz (id uuid PRIMARY KEY,
a integer NOT NULL,
b integer NOT NULL,
c integer NOT NULL);
Bạn có thể muốn lưu trữ một số siêu dữ liệu cùng với hồ sơ của từng loại:
CREATE TABLE envelope (id uuid PRIMARY KEY,
t timestamptz NOT NULL DEFAULT now(),
by text NOT NULL DEFAULT sessions_user);
Và điều này cho thấy một ràng buộc khoá ngoại:
CREATE TABLE foo (id uuid PRIMARY KEY REFERENCES envelope);
CREATE TABLE bar (id uuid PRIMARY KEY REFERENCES envelope,
s text NOT NULL);
CREATE TABLE baz (id uuid PRIMARY KEY REFERENCES envelope,
a integer NOT NULL,
b integer NOT NULL,
c integer NOT NULL);
Và nếu bạn thậm chí còn nghiêm ngặt hơn bạn có thể tưởng tượng việc lưu trữ một cột ty
với tên của loại và sử dụng nó để tạo một khóa ngoài tổng hợp. (Như được mô tả dưới "Where Not to Use Table Inheritance" trong blog LedgerSMB.)
Bạn có thể đưa ra ví dụ về dữ liệu thực mà bạn có thể muốn lưu trữ không? – Shnugo
Ý tưởng đầu tiên của tôi sẽ là XML. Bạn có thể lưu trữ bất kỳ loại dữ liệu có cấu trúc hình ảnh nào cùng với dữ liệu meta mô tả (thuộc tính). Nhưng bạn sẽ cần logic cao để giải thích điều này ... – Shnugo
@shnugo Như tôi đề cập đến tôi quan tâm đến cơ sở dữ liệu quan hệ. – Halst