Oracle
 sql >> Database >  >> RDS >> Oracle

Inserimento di una chiave esterna con più valori

Sfortunatamente hai appena posto la vecchia domanda;

La risposta è, ovviamente, che non lo fai; hai due colonne Per estendere l'esempio del tuo dipendente, la tua tabella dei dipendenti diventerebbe:

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) 
   );

Come puoi vedere, questa non è una cosa particolarmente carina da fare e interrompe la normalizzazione; cosa succede se vuoi che il tuo dipendente (o il tuo dipendente vuole ovviamente) abbia 3 abilità? O 10?.

Probabilmente sarebbe meglio creare una terza tabella ed eseguire tutti i join con un'unica chiave primaria ed esterna; quindi avresti

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 );