【发布时间】:2017-12-03 11:28:25
【问题描述】:
我正在尝试基于这 2 个功能依赖项创建架构。
A -> B、C、D
B -> D
我正在尝试使用以下约束创建一个包含这两个 FD 的表:
- 一对元组 (B, D) 可以重复,但遵循 FD 的定义(只要有两个 B 值相同,则 D 值也相同)。
现在,我已经在 2 个表中实现了这一点,如下所示:
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)
);
我只是想知道是否有一种方法可以在 Postgresql 中不使用 TRIGGERS 将这 2 个表合并到一个表中?
编辑:
示例数据:
【问题讨论】:
-
combine these 2 tables in just one table是什么意思?您能否举出您想要的示例,最好包括示例数据? (我相信我理解你描述的约束,我只是不明白最后一点......) -
@MatBailie 我的意思是,我不想创建 2 个单独的表,而只想创建一个包含所有这些属性的表。我已经用一个例子编辑了这篇文章。
-
好吧,我想你的意思是
I just want to create one table containing all these attributes AND enforce all of these constraints without requiring the second table... -
@MatBailie 你的“想要”也不清楚;它没有说明两个表的“组合”值是什么。 jeevaa_v 大概想要他们的联接,这是无损的并且满足两个 FD,而不是两个表,它们是它的投影。
-
@philipxy - 在我提供答案的上下文中,它被接受并评论,我相信它实际上是相对清楚的。
标签: sql database postgresql functional-dependencies