serial primary key not null unique,
name varchar(255) not null unique
);
И есть таблица items
CREATE TABLE items
(
id serial primary key not null unique,
categories ???
);
Как правильно объявить связь чтобы в поле categories был массив с айдишниками категорий(только если такие есть)?
Перестать делать массивы, а сделать отношэние один-ко-многим.
получается нужно создать CREATE TABLE categories ( id serial primary key not null unique, name varchar(255) not null unique, item_id integer references items (id) not null ); А в items ничего не хранить?
https://sqlize.online/sql/psql14/77ac9c1d5e96cb445c970f1bd0ac68a5/ ''' CREATE TABLE item_categories ( item_id int4 references items(id), category_id int4 references categories(id) ); '''
Каждый раз когда я захочу получать запись с таблицы items мне нужно будет сперва выбирать айдишники категорий принадлежащих этому итему и потом по каждому айдишнику еще категорию?
JOIN https://sqlize.online/sql/psql14/f338da5d70b8398e3423de827d589efe/
Примерно. Не думаю, что тут нужэн id (primary key из name, item_id и так хорош). И varchar(255) сейчас не рекомендовано, лучшэ text и check length(name) <= 255. Но это всё мелочи.
Обсуждают сегодня