Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да приложим връзки едно към едно, едно към много и много към много, докато проектирате таблици?

Едно към едно: Използвайте външен ключ към посочената таблица:

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

Трябва също така да поставите уникално ограничение върху колоната за външен ключ (addess.student_id ), за да предотвратите множество редове в дъщерната таблица (address ) от свързан със същия ред в посочената таблица (student ).

Едно към много :Използвайте външен ключ от много страни на връзката, свързвайки обратно към страната "един":

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

Много към много :Използвайте маса за свързване (пример):

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

Примерни заявки:

 -- 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. java.sql.SQLException:ORA-03115:неподдържан тип мрежови данни или представяне

  2. Отражение в PLSQL?

  3. Опция за доставка при подаване на едновременна заявка в R12.1.3

  4. REGEX, за да изберете n-та стойност от списък, позволявайки нулеви стойности

  5. ORA-03113:край на файла на комуникационния канал