对于引用的 table PostgreSQL,没有匹配给定键的唯一约束
there is no unique constraint matching given keys for referenced table PostgreSQL
我使用 PostgreSQL 创建了一个 ER 图,并尝试根据导出的 .sql 文件创建表,但我收到错误。我可能会犯结构性错误。如果您注意到实体关系图的结构性错误,您能解释一下吗?
错误:
Error image
这是我的 ER 图:
ER DIAGRAM IMAGE
这是我导出的 SQL 脚本:
BEGIN;
CREATE TABLE public."Persons"
(
id bigserial NOT NULL,
name character varying(30) NOT NULL,
surname character varying(30) NOT NULL,
email character varying(30),
PRIMARY KEY (id)
);
CREATE TABLE public."System_Personals"
(
id bigserial NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Job_Seekers"
(
id bigserial NOT NULL,
ssn character(11) NOT NULL,
birth_date date NOT NULL,
password character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Employers"
(
id bigserial NOT NULL,
company_name character varying(30) NOT NULL,
website character varying(40) NOT NULL,
phone_number character(11) NOT NULL,
password character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Jobs"
(
id bigserial NOT NULL,
role character varying(30) NOT NULL,
definition character varying(500) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Job_Announcements"
(
id bigserial NOT NULL,
title character varying(100) NOT NULL,
company_name character varying(30) NOT NULL,
role character varying(30) NOT NULL,
city_name character varying(30) NOT NULL,
salary bigint NOT NULL,
job_definition character varying(300) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Cities"
(
id bigserial NOT NULL,
name character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Activations"
(
id bigserial NOT NULL,
email character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Employer_Activations"
(
id bigserial NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Job_Seeker_Activations"
(
id bigserial NOT NULL,
ssn character(11) NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE public."System_Personals"
ADD FOREIGN KEY (id)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."Job_Seekers"
ADD FOREIGN KEY (id)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."Employers"
ADD FOREIGN KEY (id)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."System_Personals"
ADD FOREIGN KEY (id)
REFERENCES public."Jobs" (id)
NOT VALID;
ALTER TABLE public."Employers"
ADD FOREIGN KEY (id)
REFERENCES public."Cities" (id)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (city_name)
REFERENCES public."Cities" (name)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (role)
REFERENCES public."Jobs" (role)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (job_definition)
REFERENCES public."Jobs" (definition)
NOT VALID;
ALTER TABLE public."Employer_Activations"
ADD FOREIGN KEY (id)
REFERENCES public."Activations" (id)
NOT VALID;
ALTER TABLE public."Job_Seeker_Activations"
ADD FOREIGN KEY (id)
REFERENCES public."Activations" (id)
NOT VALID;
ALTER TABLE public."Job_Seeker_Activations"
ADD FOREIGN KEY (ssn)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."Activations"
ADD FOREIGN KEY (email)
REFERENCES public."Persons" (email)
NOT VALID;
END;
为什么会出现该错误?有帮助吗?
所有这些都违反了:
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (city_name)
REFERENCES public."Cities" (name)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (role)
REFERENCES public."Jobs" (role)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (job_definition)
REFERENCES public."Jobs" (definition)
NOT VALID;
ALTER TABLE public."Activations"
ADD FOREIGN KEY (email)
REFERENCES public."Persons" (email)
NOT VALID;
A foreign key must reference columns that either are a primary key or form a unique constraint.
我使用 PostgreSQL 创建了一个 ER 图,并尝试根据导出的 .sql 文件创建表,但我收到错误。我可能会犯结构性错误。如果您注意到实体关系图的结构性错误,您能解释一下吗?
错误:
Error image
这是我的 ER 图:
ER DIAGRAM IMAGE
这是我导出的 SQL 脚本:
BEGIN;
CREATE TABLE public."Persons"
(
id bigserial NOT NULL,
name character varying(30) NOT NULL,
surname character varying(30) NOT NULL,
email character varying(30),
PRIMARY KEY (id)
);
CREATE TABLE public."System_Personals"
(
id bigserial NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Job_Seekers"
(
id bigserial NOT NULL,
ssn character(11) NOT NULL,
birth_date date NOT NULL,
password character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Employers"
(
id bigserial NOT NULL,
company_name character varying(30) NOT NULL,
website character varying(40) NOT NULL,
phone_number character(11) NOT NULL,
password character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Jobs"
(
id bigserial NOT NULL,
role character varying(30) NOT NULL,
definition character varying(500) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Job_Announcements"
(
id bigserial NOT NULL,
title character varying(100) NOT NULL,
company_name character varying(30) NOT NULL,
role character varying(30) NOT NULL,
city_name character varying(30) NOT NULL,
salary bigint NOT NULL,
job_definition character varying(300) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Cities"
(
id bigserial NOT NULL,
name character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Activations"
(
id bigserial NOT NULL,
email character varying(30) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Employer_Activations"
(
id bigserial NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE public."Job_Seeker_Activations"
(
id bigserial NOT NULL,
ssn character(11) NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE public."System_Personals"
ADD FOREIGN KEY (id)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."Job_Seekers"
ADD FOREIGN KEY (id)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."Employers"
ADD FOREIGN KEY (id)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."System_Personals"
ADD FOREIGN KEY (id)
REFERENCES public."Jobs" (id)
NOT VALID;
ALTER TABLE public."Employers"
ADD FOREIGN KEY (id)
REFERENCES public."Cities" (id)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (city_name)
REFERENCES public."Cities" (name)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (role)
REFERENCES public."Jobs" (role)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (job_definition)
REFERENCES public."Jobs" (definition)
NOT VALID;
ALTER TABLE public."Employer_Activations"
ADD FOREIGN KEY (id)
REFERENCES public."Activations" (id)
NOT VALID;
ALTER TABLE public."Job_Seeker_Activations"
ADD FOREIGN KEY (id)
REFERENCES public."Activations" (id)
NOT VALID;
ALTER TABLE public."Job_Seeker_Activations"
ADD FOREIGN KEY (ssn)
REFERENCES public."Persons" (id)
NOT VALID;
ALTER TABLE public."Activations"
ADD FOREIGN KEY (email)
REFERENCES public."Persons" (email)
NOT VALID;
END;
为什么会出现该错误?有帮助吗?
所有这些都违反了:
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (city_name)
REFERENCES public."Cities" (name)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (role)
REFERENCES public."Jobs" (role)
NOT VALID;
ALTER TABLE public."Job_Announcements"
ADD FOREIGN KEY (job_definition)
REFERENCES public."Jobs" (definition)
NOT VALID;
ALTER TABLE public."Activations"
ADD FOREIGN KEY (email)
REFERENCES public."Persons" (email)
NOT VALID;
A foreign key must reference columns that either are a primary key or form a unique constraint.