I think your circuit should be something like this
create table order_nature ( nature_id int primary key, description text ); insert into order_nature (nature_id, description) values (1, 'sale'), (2, 'buy') ; create table order_type ( type_id int primary key, description text ); insert into order_type (type_id, description) values (1, 'type 1'), (2, 'type 2') ; create table order_nature_type ( nature_id int references order_nature (nature_id), type_id int references order_type (type_id), primary key (nature_id, type_id) ); insert into order_nature_type (nature_id, type_id) values (1, 1), (1, 2), (2, 1), (2, 2) ; create table sale_information ( nature_id int default 1 check (nature_id = 1), type_id int, foreign key (nature_id, type_id) references order_nature_type (nature_id, type_id) );
If the foreign key clause also accepts, the sale information may omit the nature_id column
create table sale_information ( type_id int, foreign key (1, type_id) references order_nature_type (nature_id, type_id) );
Pay attention to 1 in foreign key
source share