Tôi không sử dụng phpmyadmin, nhưng tôi sẽ bắt đầu với
- một ràng buộc duy nhất đối với subject.name,
- một ràng buộc duy nhất đối với cặp {teacher.name, teacher.subject_id},
- một ràng buộc duy nhất đối với {event.venue, events.subject_id, events.teacher_id},
- một ràng buộc duy nhất đối với cặp {teacher.id, teacher.subject_id}.
Ba điều đầu tiên phải làm với danh tính; cái cuối cùng cho phép bạn nhắm mục tiêu {teacher.id, teacher.subject_id} với ràng buộc khóa ngoại.
Trong trường hợp chung, tên của mọi người không phải là duy nhất. Vì vậy, bạn có thể có hai giáo viên trùng tên dạy cùng một bộ môn. Cách bạn có thể tiếp cận loại vấn đề đó phụ thuộc vào ứng dụng.
Sau đó, các khóa ngoại
- từ teacher.subject_id đến subject.id và
- từ {event.teacher_id, events.subject_id} đến {teacher.id, teacher.subject_id}
Điều đó ít nhất sẽ gây ra lỗi nếu bạn cố gắng chèn vào các sự kiện một giáo viên không đúng chủ đề.
Bạn cần sử dụng công cụ INNODB để thực thi các ràng buộc khóa ngoại. Các công cụ khác sẽ phân tích cú pháp chúng, nhưng bỏ qua chúng.
Các mệnh đề FOREIGN KEY và REFERENCES được hỗ trợ bởi công cụ InnoDBstorage, công cụ này sẽ triển khai ADD [CONSTRAINT [ký hiệu]] FOREIGN KEY [index_name] (...) TÀI LIỆU THAM KHẢO ... (...). Xem Phần 14.6.6, “Các ràng buộc chính của InnoDBand FOREIGN KEY”. Đối với các công cụ lưu trữ khác, các mệnh đề được phân tích cú pháp nhưng bị bỏ qua.