我正在尝试创建一个表,该表列出了不同的应用程序以及它们是否与该列表中的其他应用程序集成。
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
如何规范积分列?
答案 0 :(得分:1)
您的示例中SKU之间的关系为“多对多”(M:M)。在列中存储多个逗号分隔的值违反了第一个范式(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
您可能会看一本书“ Programming with databases”,其中涉及标准化,不同类型的链接建模等主题。
答案 1 :(得分:0)
这是您想要的吗?
select id, sku, name,
regexp_split_to_table(integrations) as integration
from t;
这不是完全“规范化”的,但是它消除了使用分隔字符串来表示多个值的情况。