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
但不同d
的INSERT
或UPDATE
正被运行将失败。
http://dbfiddle.uk/?rdbms=postgres_10&fiddle=5fc308eaaedef4d3d2232ec3d70f3de6
以上是 2单个表中的函数依赖关系 的全部内容, 来源链接: utcz.com/qa/259196.html