Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Einfügen eines Fremdschlüssels mit mehreren Werten

Leider haben Sie gerade die uralte Frage gestellt;

Die Antwort ist natürlich, dass Sie das nicht tun; Du hast zwei Spalten. Um Ihr Mitarbeiterbeispiel zu erweitern, würde Ihre Mitarbeitertabelle folgendermaßen aussehen:

create table employees (
   id number
 , name varchar2(4000)
 , skill_1 number
 , skill_2 number
 , constraint employee_pk primary key (id)
 , constraint employee_skill_1_fs 
      foreign key ( skill_1 ) 
   references skills(skillid)
 , constraint employee_skill_2_fs 
      foreign key ( skill_2 ) 
   references skills(skillid) 
   );

Wie Sie sehen können, ist dies keine besonders schöne Sache und unterbricht die Normalisierung; Was passiert, wenn Sie möchten, dass Ihr Mitarbeiter (oder Ihr Mitarbeiter möchte natürlich) 3 Fähigkeiten haben? Oder 10?.

Es wäre wahrscheinlich besser, eine dritte Tabelle zu erstellen und alle Ihre Verknüpfungen mit einem einzigen Primär- und Fremdschlüssel durchzuführen. also hättest du

employees ( employee_id, ..., pk employee_id);
employee_skills ( employee_id, skill_id, ..., pk employee_id, skill_id, fk skill_id );
skills ( skill_id, description, ..., pk skill_id );