Как нормализовать таблицу, где столбец ссылается на несколько строк другого столбца в одной таблице - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь создать таблицу, в которой перечислены различные приложения, и если они интегрируются с другими приложениями в этом списке.

ID  SKU     NAME            Integrations
1   pdk1    hubspot crm pdk3,pdk4,pdk5
2   pdk2    sugar crm   pdk5
3   pdk3    pipedrive   pdk1
4   pdk4    quickbooks  pdk1
5   pdk5    mailchimp   pdk1,pdk2

Как нормализовать столбец интеграции?

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Отношения между SKU в вашем примере "многие-ко-многим" (М: М). Хранение нескольких значений через запятую в столбце нарушает первую нормальную форму (1NF). Следовательно, вам нужно нормализовать таблицу и отношение модели M: M, используя дополнительную таблицу ссылок.

Стол SKU

SKU
---
ID  SKU     NAME        
1   pdk1    hubspot crm 
2   pdk2    sugar crm   
3   pdk3    pipedrive   
4   pdk4    quickbooks  
5   pdk5    mailchimp   

Таблица ссылок

SKU_INTEGRATION
---------------
ID  INTEGRATED_WITH_ID
1   3
1   4
1   5
2   5
3   1
4   1
5   1
5   2

Вы можете взглянуть на книгу " Программирование с базами данных ", которая охватывает темы нормализации, моделирования различных типов ссылок и т. Д.

0 голосов
/ 06 июня 2019

Это то, что вы хотите?

select id, sku, name,
       regexp_split_to_table(integrations) as integration
from t;

Это не совсем "нормализовано", но оно исключает использование строки с разделителями для представления нескольких значений.

...