Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để triển khai các mối quan hệ một-một, một-nhiều và nhiều-nhiều trong khi thiết kế bảng?

Một-một: Sử dụng khóa ngoại cho bảng được tham chiếu:

student: student_id, first_name, last_name, address_id
address: address_id, address, city, zipcode, student_id # you can have a
                                                        # "link back" if you need

Bạn cũng phải đặt một ràng buộc duy nhất trên cột khóa ngoại (addess.student_id ) để ngăn nhiều hàng trong bảng con (address ) từ liên quan đến cùng một hàng trong bảng được tham chiếu (student ).

Một-nhiều :Sử dụng khóa ngoại ở nhiều phía của mối quan hệ liên kết ngược lại phía "một":

teachers: teacher_id, first_name, last_name # the "one" side
classes:  class_id, class_name, teacher_id  # the "many" side

Nhiều đến nhiều :Sử dụng bảng nối (ví dụ):

student: student_id, first_name, last_name
classes: class_id, name, teacher_id
student_classes: class_id, student_id     # the junction table

Truy vấn mẫu:

 -- Getting all students for a class:

    SELECT s.student_id, last_name
      FROM student_classes sc 
INNER JOIN students s ON s.student_id = sc.student_id
     WHERE sc.class_id = X

 -- Getting all classes for a student: 

    SELECT c.class_id, name
      FROM student_classes sc 
INNER JOIN classes c ON c.class_id = sc.class_id
     WHERE sc.student_id = Y



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển Cơ sở dữ liệu Oracle từ AWS EC2 sang AWS RDS, Phần 4

  2. Có biểu thức CASE như vậy trong JPQL không?

  3. Sử dụng truy vấn con trong câu lệnh Kiểm tra trong Oracle

  4. Cách tính hệ số phân cụm chỉ số Oracle

  5. Làm thế nào để viết một truy vấn tương tự như GROUP_CONCAT của MySQL trong Oracle?