小编Dmi*_*tri的帖子

使用表继承代替映射表

这似乎是一个很常见的场景:几种类型都构成相同的子类型。

这通常看起来像这样:

-- 'name' is unique per parent record
CREATE TABLE sometype (
  sometype_id serial PRIMARY KEY,
  name        text
);

CREATE TABLE foo (foo_id serial PK);
CREATE TABLE bar (bar_id serial PK);

CREATE TABLE foo_sometype (
  foo_id      int4,
  sometype_id int4
);

CREATE TABLE bar_sometype (
  bar_id      int4,
  sometype_id int4
);
Run Code Online (Sandbox Code Playgroud)

这很好,但查询起来很麻烦。我认为这可能更清洁:

-- 'name' is unique per parent record
CREATE TABLE sometype (
  name        text
);

CREATE TABLE foo_sometype (
  foo_id      int4
) INHERITS(sometype);

CREATE TABLE bar_sometype (
  bar_id      int4,
) …
Run Code Online (Sandbox Code Playgroud)

postgresql database-design inheritance subtypes

5
推荐指数
2
解决办法
6200
查看次数