Мы пытаемся создать простую базу данных, но мы всегда сталкиваемся с той же ошибкой, и для записи, которую я проверил, задавали другие вопросы ограничения внешнего ключа, но они вообще не помогали.Ошибка ограничения внешнего ключа SQL 1215
Как вы знаете, когда мы преобразуем нашу диаграмму EER в карту отношений, отношения принимают первичные ключи сущностей, к которым они подключены, например: Допустим, что у наших entites есть один первичный ключ, каждый из которых, как TC_NO, randevu_no, hasta_no и наше отношение шло к тому, что они собирались взять первичные ключи этих сущностей. Нравится;
CREATE TABLE REQUEST(
TC_NO int not null,
randevu_no int not null,
hasta_no int not null,
PRIMARY KEY(randevu_no,TC_NO,hasta_no),
FOREIGN KEY(hasta_no) REFERENCES PATIENT(hasta_no) ON DELETE CASCADE,
FOREIGN KEY(randevu_no) REFERENCES APPOINTMENT(randevu_no) ON DELETE CASCADE,
FOREIGN KEY(TC_NO) REFERENCES PATIENT(TC_NO) ON DELETE CASCADE
);
Однако мы всегда получаем ту же ошибку. Нет орфографической ошибки, мы проверили это часами, но не смогли ее решить, и мы понятия не имеем, почему это не работает.
Для людей, которые нуждаются в всем коде базы данных:
CREATE TABLE PERSON(
isim varchar(12) not null,
soyisim varchar(12) not null,
cinsiyet char(1) not null,
dogum_tarihi date not null,
adres varchar(150) not null,
TC_NO int not null,
PRIMARY KEY(TC_NO),
UNIQUE KEY(TC_NO));
CREATE TABLE EMPLOYEE(
departman varchar(20) not null,
sicil_no int not null,
TC_NO int not null,
PRIMARY KEY(TC_NO,sicil_no),
UNIQUE KEY(sicil_no),
FOREIGN KEY(TC_NO) REFERENCES PERSON(TC_NO) ON DELETE CASCADE
);
CREATE TABLE PATIENT(
hastalik_gecmisi varchar(400) not null,
kan_grubu char(4) not null,
hasta_no int not null,
TC_NO int not null,
PRIMARY KEY(TC_NO,hasta_no),
FOREIGN KEY(TC_NO) REFERENCES PERSON(TC_NO) ON DELETE CASCADE
);
CREATE TABLE DOCTOR(
diploma_no int not null,
brans varchar(40) not null,
sicil_no int not null,
TC_NO int not null,
PRIMARY KEY(TC_NO,sicil_no,diploma_no),
FOREIGN KEY(TC_NO) REFERENCES EMPLOYEE(TC_NO) ON DELETE CASCADE,
FOREIGN KEY(sicil_no) REFERENCES EMPLOYEE(sicil_no) ON DELETE CASCADE
);
CREATE TABLE APPOINTMENT(
hasta_no int not null,
departman varchar(20) not null,
randevu_no int not null,
doktor_no int not null,
tarih date not null,
saat int not null,
PRIMARY KEY(randevu_no)
);
CREATE TABLE SECRETARY(
TC_NO int not null,
sicil_no int not null,
PRIMARY KEY(sicil_no,TC_NO),
FOREIGN KEY(sicil_no) REFERENCES EMPLOYEE(sicil_no) ON DELETE CASCADE,
FOREIGN KEY(TC_NO) REFERENCES EMPLOYEE(TC_NO) ON DELETE CASCADE
);
CREATE TABLE REQUEST(
TC_NO int not null,
randevu_no int not null,
hasta_no int not null,
PRIMARY KEY(randevu_no,TC_NO,hasta_no),
FOREIGN KEY(hasta_no) REFERENCES PATIENT(hasta_no) ON DELETE CASCADE,
FOREIGN KEY(randevu_no) REFERENCES APPOINTMENT(randevu_no) ON DELETE CASCADE,
FOREIGN KEY(TC_NO) REFERENCES PATIENT(TC_NO) ON DELETE CASCADE
);
CREATE TABLE NOTIFY(
randevu_no int not null,
sicil_no int not null,
PRIMARY KEY(randevu_no,sicil_no),
FOREIGN KEY(randevu_no) REFERENCES APPOINTMENT(randevu_no) ON DELETE CASCADE,
FOREIGN KEY(sicil_no) REFERENCES SECRETARY(sicil_no) ON DELETE CASCADE
);
CREATE TABLE CONFIRMATION(
hasta_no int not null,
sicil_no_s int not null,
diploma_no int not null,
sicil_no_d int not null,
PRIMARY KEY(sicil_no_s,hasta_no,diploma_no,sicil_no_d),
FOREIGN KEY(sicil_no_s) REFERENCES SECRETARY(sicil_no_s) ON DELETE CASCADE,
FOREIGN KEY(hasta_no) REFERENCES PATIENT(hasta_no) ON DELETE CASCADE,
FOREIGN KEY(diploma_no) REFERENCES DOCTOR(diploma_no) ON DELETE CASCADE,
FOREIGN KEY(sicil_no_d) REFERENCES DOCTOR(sicil_no_d) ON DELETE CASCADE
);
Нет, у него нет ключевого слова в качестве основного ключа, и я добавил полный код базы данных к основному вопросу. – mtilhan
Я также столкнулся с той же проблемой прошлой ночью. Я снова попробовал ее с вашими таблицами, но тщетно. Вы можете добавить один внешний ключ из таблицы пациентов, но не другой .. Я думаю, что это ограничение в mysql.http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html – Chatz
Я нашел и исправил проблему, написав как новый андерсер. – mtilhan