У меня есть 2 таблицы в PostgreSQL:
CREATE TABLE contacts (
id bigint NOT NULL,
header_1 text NOT NULL,
header_2 text,
header_3 text );
CREATE TABLE headers (
id bigint NOT NULL,
name character varying,
header_type text NOT NULL,
organization_id bigint );
INSERT INTO contacts
(id, header_1, header_2, header_3)
VALUES
(1,'bob1@hotmail.com','Bob1','lol'),
(2,'bob2@hotmail.com','Bob2','lol'),
(3,'bob3@hotmail.com','Bob3','lol'),
(4,'bob4@hotmail.com','Bob4','lol'),
(5,'bob5@hotmail.com','Bob5','lol');
INSERT INTO headers
(id, name, header_type, organization_id)
VALUES
(1,'Email','email', 1),
(2,'First Name','first_name', 1),
(3,'Last Name','last_name', 1);
Я хочу закончить с этой структурой, сложная часть состоит в том, что заголовки являются динамическими c, то есть могут быть n количество заголовков , столбцы «контакты» всегда будут начинаться с «header_», а «заголовки» всегда будут совпадать с идентификатором контакта,
Email | First Name | Last Name
------------------|------------|-----------
bob1@hotmail.com | Bob1 | lol
bob2@hotmail.com | Bob2 | lol
bob3@hotmail.com | Bob3 | lol
bob4@hotmail.com | Bob4 | lol
bob5@hotmail.com | Bob5 | lol
Предпочтительными являются оптимизированные запросы
РЕДАКТИРОВАТЬ: Просто для пояснения 1.- Может быть n количество таблиц контактов (contact1, contact2 и т. Д. c) 2.- Может быть n строк в таблицах заголовков и контактов. 3. Вы можете предположить, что данные всегда будут целыми, если в таблице "contacts24" есть столбец с именем "header_57", вы можете предположить, что в таблице заголовков будет строка с идентификатором: 57