我正在尝试创建一个表,列出不同的应用程序,如果它们与列表中的其他应用程序集成。
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如何规范集成列?
发布于 2019-06-06 14:11:34
在你的例子中,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您可以看一看"用数据库编程“一书,这本书涵盖了规范化、不同类型链接的建模等主题。
发布于 2019-06-06 10:39:58
这是你想要的吗?
select id, sku, name,
regexp_split_to_table(integrations) as integration
from t;这并不完全是“规范化”的,但它删除了使用分隔字符串来表示多个值。
https://stackoverflow.com/questions/56475847
复制相似问题