sql >> Databasteknik >  >> RDS >> Oracle

Hur implementerar man en-till-en-, en-till-många- och många-till-många-relationer samtidigt som man designar tabeller?

En-till-en: Använd en främmande nyckel till den refererade tabellen:

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

Du måste också sätta en unik begränsning på kolumnen för främmande nyckel (addess.student_id ) för att förhindra flera rader i den underordnade tabellen (address ) från att relatera till samma rad i den refererade tabellen (student ).

En till många :Använd en främmande nyckel på många sidan av relationen som länkar tillbaka till "en"-sidan:

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

Många-till-många :Använd en korsningstabell (exempel):

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

Exempelfrågor:

 -- 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. SQLSTATE[HY000] [2002] Ett anslutningsförsök misslyckades.. - Vid försök att ansluta från lokal till fjärrserver

  2. Kan inte ansluta till Oracle-databasen med JDBC om lösenordet har specialtecken

  3. Jämför replikeringslösningar från Oracle och MySQL

  4. Returnera en DML-utlösartyp på en tabell i SQL Server