Я пытаюсь настроить прототип базы данных, и у меня возникают проблемы с одной из моих слабых сущностей, attachments
, которая продолжает выдавать следующую ошибку при создании:
ОШИБКА: есть нет уникального ограничения, соответствующего данным ключам для ссылочной таблицы "messages"
Ниже показано SQL операторов создания таблицы (которые являются частью большого файла схемы с большим количеством включенных).
CREATE TABLE IF NOT EXISTS Patients(
CPR_number integer NOT NULL,
first_name varchar(20),
last_name varchar(20),
zip_code integer,
address varchar(100),
country varchar(20),
history text,
PRIMARY KEY (CPR_number)
);
CREATE TABLE IF NOT EXISTS Messages(
CPR_number integer,
topic text,
body text,
date_send varchar(8),
date_read varchar(8),
PRIMARY KEY (body, date_send),
FOREIGN KEY (CPR_number) REFERENCES Patients(CPR_number)
);
CREATE TABLE IF NOT EXISTS Attachments(
CPR_number integer,
file text,
body text,
date_send varchar(8),
PRIMARY KEY (file),
FOREIGN KEY (body) REFERENCES Messages(body),
FOREIGN KEY (date_send) REFERENCES Messages(date_send),
FOREIGN KEY (CPR_number) REFERENCES Patients(CPR_number)
);
Кто-нибудь может мне помочь, почему я продолжаю получать ошибку, показанную выше? Первоначально я пытался установить атрибуты date
как TIMESTAMP
, но было понятно, почему это может быть довольно сложно разделить на наборы слабых объектов, поэтому я изменил его на varchar(8)
(для представления MM-DD-YYYY ). Но я не понимаю, почему вышеупомянутое не компилируется правильно.
У меня есть несколько других слабых наборов сущностей, которые имеют ту же структуру, но где создание завершается успешно каждый раз без каких-либо ошибок. И я не могу просто понять, почему вышеупомянутое не должно работать также. messages
имеет ключи: body
, date_send
и CPR_number
но как-то они не совпадают?
Может кто-нибудь увидеть, что может быть не так?