phpMyAdmin
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> phpMyAdmin

Làm thế nào để thiết lập một khóa ngoại phụ thuộc vào mối quan hệ của hai bảng khác?

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.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Tìm kiếm thông qua cơ sở dữ liệu với PhpMyAdmin

  2. phpMyAdmin - # 1932 Bảng không tồn tại (đối chiếu đang được sử dụng) sau khi cài đặt lại

  3. MySQL Timestamp - tại sao tất cả các số không?

  4. PhpMyAdmin không hoạt động trên localhost

  5. Chọn cột MYSQL có điều kiện