Привет, лор. Нужен совет. Есть (будет) такая база
CREATE TABLE item (
item_id SERIAL PRIMARY KEY,
name VARCHAR(127) NOT NULL,
manufacturer_id INT
);
CREATE TABLE matroska (
count INT NOT NULL -- вложенность матрёшек, не применимо к другим товарам
) INHERITS (item);
CREATE TABLE "order" (
order_id SERIAL PRIMARY KEY,
customer_id INT
);
CREATE TABLE order_items (
order_id INT NOT NULL REFERENCES "order",
item_id INT NOT NULL REFERENCES item
);
insert into matroska (name, manufacturer_id, count) values ('Маша', 9001, 9);
insert into "order" (customer_id) values (100500);
Очевидное содержимое таблиц очевидно:
=> select * from matroska ;
item_id | name | manufacturer_id | count
---------+------+-----------------+-------
1 | Маша | 9001 | 9
(1 строка)
=> select * from item;
item_id | name | manufacturer_id
---------+------+-----------------
1 | Маша | 9001
(1 строка)
=> select * from "order";
order_id | customer_id
----------+-------------
1 | 100500
(1 строка)
=> insert into order_items values (1,1);
ОШИБКА: INSERT или UPDATE в таблице "order_items" нарушает ограничение внешнего ключа "order_items_item_id_fkey"
ПОДРОБНОСТИ: Ключ (item_id)=(1) отсутствует в таблице "item".