У в базе должны быть пользователи, у каждого пользователя свой набор карт, у каждой карты свой набор событий и конфиг. Возникает вопрос как лучше хранить события для карты?
У меня есть два варианта :
1) хранение в json
CREATE TABLE maps( 
map_id serial primary key NOT NULL,
user_id integer references users(user_id) NOT NULL,
map_name varchar (30) NOT NULL,
map_description text,
map_events json,
map_config jsonb 
);
2) создание общей таблицы с событиями из которой буду делать выборку по id_карты
CREATE TABLE maps( 
map_id serial primary key NOT NULL, 
user_id integer references users(user_id) NOT NULL,
map_name varchar (30) NOT NULL,
map_description text,
map_config jsonb 
);
/*структура события*/
CREATE TABLE events( 
event_id serial primary key NOT NULL,
map_id integer references maps(map_id) NOT NULL,
event_header varchar (30), 
event_description text, 
event_media_url varchar (100), 
event_location varchar (100)
);
Моё веб приложение работает с событиями к карте следующим образом: получение событий карты (события должны быть расположены в определённой последовательности, поэтому от варианта с jsonb отказался сразу), изменение событий и их порядка, перезапись ВСЕХ событий в базу данных.