Postgres - Оптимизированные динамические c заголовки в отдельной таблице - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть 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

1 Ответ

0 голосов
/ 15 февраля 2020

При SQL таблица не может иметь различное количество столбцов для каждой строки. Таким образом, это означает, что вы не можете иметь динамическое число c, равное headers для каждой строки в таблице contacts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...