2单个表中的函数依赖关系

我正在尝试基于这两个函数依赖关系创建一个模式。2单个表中的函数依赖关系

A - > B,C,d

乙 - > d

我试图建立一个单一的表既包括这些的FD与以下约束的:

  • 一对元组(B,D)可以重复,但遵循FD的定义(每当有两个B值相同,则D值也相同)。
    CREATE TABLE one(

    B INT PRIMARY KEY,

    D INT NOT NULL,

    UNIQUE (B, D)

    );

    CREATE TABLE two(

    A INT PRIMARY KEY,

    B INT NOT NULL,

    C INT NOT NULL,

    D INT NOT NULL,

    FOREIGN KEY(B, D) REFERENCES one(B, D)

    );

    我只是想知道如果有一个方法可以让我在短短一个表结合这2桌,而无需使用TRIGGERS:现在

,我在2个表如下实施本在Postgresql中?

编辑:

示例数据:

回答:

我必须学习它自己,但我认为这是你想要的...

CREATE EXTENSION btree_gist; 

CREATE TABLE fd (

a INT PRIMARY KEY,

b INT NOT NULL,

c INT NOT NULL,

d INT NOT NULL,

EXCLUDE USING gist (b WITH =, d WITH <>)

);

一个排除约束互相检查所有行,就像UNIQUE约束检查所有行。但它更广泛。

如果所有支票(b WITH =, d WITH <>)都是TRUE则该行被拒绝。

(相反地,这意味着行是唯一可以接受的,如果至少一个检查是FALSE。)

因此,如果两行具有相同的b但不同dINSERTUPDATE正被运行将失败。

http://dbfiddle.uk/?rdbms=postgres_10&fiddle=5fc308eaaedef4d3d2232ec3d70f3de6

以上是 2单个表中的函数依赖关系 的全部内容, 来源链接: utcz.com/qa/259196.html

回到顶部