mysql– 模式迁移:PostgreSQL中的一对多,多对多

mysql– 模式迁移:PostgreSQL中的一对多,多对多,第1张

概述背景在MySQL中,如果我想保持规范化表,我需要使用两个表和多对多三个表来建模一对多.我正在调查向PostgreSQL的迁移,令人惊讶的是,它允许向量甚至多维向量字段!问题PostgreSQL中一对多和多对多的规范映射是什么?>一对多只是一个带有矢量场的表吗?>有多种方法可以模拟多对多,还是取决于具体情况(比如我需要查询)?>使用数组字段有

背景

在MySQL中,如果我想保持规范化表,我需要使用两个表和多对多三个表来建模一对多.

我正在调查向Postgresql的迁移,令人惊讶的是,它允许向量甚至多维向量字段!

问题

Postgresql中一对多和多对多的规范映射是什么?

>一对多只是一个带有矢量场的表吗?
>有多种方法可以模拟多对多,还是取决于具体情况(比如我需要查询)?
>使用数组字段有什么警告吗?最佳答案在Postgresql中,您通常应该坚持使用关系建模,就像您目前在MysqL中使用的一样.

Postgresql的数组很有用,但由于种种原因,它不应该是数据建模的首选:

>数组的粗略提取,锁定和写入粒度;
>缺少外键目标支持(至少在9.4中是真的; 9.5可能添加阵列FK支持,但由于性能问题而被删除);
>客户端库和应用程序中的有限支持

值得注意的是,更新数组时,必须更新整个数组,重写整个数组.由于MVCC,无法进行就地更新.

当您构建复杂查询时,数组非常有用,对于某些非规范化任务,出于性能原因需要创建实体化视图.它们不应该是建立权威数据存储的首选.

Postgresql中一对多和多对多的规范映射与任何关系数据库中的完全相同:

1:米

@H_502_35@CREATE table parent ( parent_ID integer primary key,...);CREATE table child ( child_ID integer primary key,parent_ID integer not null references parent(parent_ID),...);

M:N:

@H_502_35@CREATE table m( m_ID integer primary key,...);CREATE table n( n_ID integer primary key,...);CREATE table m_n ( m_ID integer references m(m_ID),n_ID integer references n(n_ID),PRIMARY KEY(m_ID,n_ID),...); 总结

以上是内存溢出为你收集整理的mysql – 模式迁移:PostgreSQL中的一对多,多对多全部内容,希望文章能够帮你解决mysql – 模式迁移:PostgreSQL中的一对多,多对多所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存