@holllop

Как сделать структуру баз данных?

Есть две таблицы
Первая
Table "public.printers"
    Column     |         Type          | Collation | Nullable | Default
---------------+-----------------------+-----------+----------+---------
 id            | integer               |           | not null |
 printer       | character varying(45) |           |          |
 id_work       | integer               |           |          |
Indexes:
    "printers_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "id_work" FOREIGN KEY (id_work) REFERENCES type_work(id_work) NOT VALID
Referenced by:
    TABLE "printers" CONSTRAINT "id_work" FOREIGN KEY (id_work) REFERENCES typ
e_work(id_work) NOT VALID

В которой такие данные
1	"Принтер ч/б"	1
2	"Принтер цвет"	2
3	"Принтер ч/б и цвет"	3

И вторая
Table "public.material"
  Column  |         Type          | Collation | Nullable | Default
----------+-----------------------+-----------+----------+---------
 id       | integer               |           | not null |
 material | character varying(30) |           |          |
Indexes:
    "material_pkey" PRIMARY KEY, btree (id)

в которой такие данные
1	"610*175m"
2	"610*50m"
3	"914*175m"
4	"914*50m"
5	"A3"
6	"A4"
7	"A3color"
8	"A4color"

Нужно что-бы каждому принтеру соответствовало несколько видов материалов, допустим цветной умеет печатать только на А4, а ч/б принтер на всех видах материалов.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@holllop Автор вопроса
Нужно создать промежуточную таблицу
CREATE TABLE printer_material (
  printer_id integer REFERENCES printers (id),
  material_id integer REFERENCES material (id),
  PRIMARY KEY (printer_id, material_id)
);

и добавить связи
INSERT INTO printer_material (printer_id, material_id)
VALUES
  (1, 1),
  (2, 1),
  (2, 2),
  (3, 1),
  (3, 2),
  (3, 3);

Связь многие к многим
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы