Database 将外键约束添加到';部分';PostgreSQL中的主键

Database 将外键约束添加到';部分';PostgreSQL中的主键,database,postgresql,foreign-keys,constraints,Database,Postgresql,Foreign Keys,Constraints,我正在尝试向PostgreSQL 8.4数据库中的表添加外键约束,但失败了,因为目标字段(虽然是多列主键的一部分)本身不是唯一的 数据库具有以下结构: 表1(主要ID的名称): 表2(每种主ID类型的子ID名称): 表3(包含主ID和子ID的日志): 显然,表3外键的第二部分是导致问题的原因。我只需要确保日志中的主ID和子类型ID对是有效的组合 提前感谢。对于表3的外键,请更改: foreign key PrimaryType references Table1(PrimaryType) for

我正在尝试向PostgreSQL 8.4数据库中的表添加外键约束,但失败了,因为目标字段(虽然是多列主键的一部分)本身不是唯一的

数据库具有以下结构:

表1(主要ID的名称):

表2(每种主ID类型的子ID名称):

表3(包含主ID和子ID的日志):

显然,表3外键的第二部分是导致问题的原因。我只需要确保日志中的主ID和子类型ID对是有效的组合


提前感谢。

对于表3的外键,请更改:

foreign key PrimaryType references Table1(PrimaryType)
foreign key SubType references Table2(Subtype)

PrimaryType, SubType, Name
[Primary key = "PrimaryType, SubType"]
[Foreign key = "Table2.PrimaryType = Table1.PrimaryType"]
PrimaryType, SubType, DATA1, DATA2, ..., DATAN
[Foreign key = "Table3.PrimaryType = Table1.PrimaryType" AND "Table3.SubType = Table2.SubType"]
foreign key PrimaryType references Table1(PrimaryType)
foreign key SubType references Table2(Subtype)
foreign key (PrimaryType, SubType) references Table2(PrimaryType, SubTYpe)