kfm*_*e04 6 mysql postgresql schema database-migration
背景
在MySQL中,如果我想保持规范化表,我需要使用两个表和多对多三个表来建模一对多.
我正在调查向PostgreSQL的迁移,令人惊讶的是,它允许向量甚至多维向量字段!
问题
有哪些cannonical映射一个一对多和多对一许多在PostgreSQL的?
是一个一对多只是一个表与矢量场?
有多种方法可以模拟多对多,还是取决于具体情况(比如我需要查询)?
使用数组字段有什么警告吗?
Cra*_*ger 18
在PostgreSQL中,您通常应该坚持使用关系建模,就像您目前在MySQL中使用的一样.
PostgreSQL的数组很有用,但由于种种原因,它不应该是数据建模的首选:
值得注意的是,更新数组时,必须更新整个数组,重写整个数组.由于MVCC,无法进行就地更新.
当您构建复杂查询时,数组非常有用,对于某些非规范化任务,出于性能原因需要创建实体化视图.他们应该不会是建模权威数据存储的首选.
PostgreSQL中一对多和多对多的规范映射与任何关系数据库中的完全相同:
1:米
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),
...
);
Run Code Online (Sandbox Code Playgroud)
M:N:
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),
...
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9707 次 |
最近记录: |