Oracle
 sql >> Base de données >  >> RDS >> Oracle

Insertion d'une clé étrangère avec plusieurs valeurs

Malheureusement, vous venez de poser la vieille question;

La réponse est, bien sûr, que vous ne le faites pas; vous avez deux colonnes. Pour étendre votre exemple d'employé, votre table d'employés deviendrait :

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

Comme vous pouvez le voir, ce n'est pas une chose particulièrement jolie à faire et rompt la normalisation; que se passe-t-il si vous voulez que votre employé ( ou votre employé veut bien sûr ) ait 3 compétences ? Ou 10 ?.

Il serait probablement préférable de créer une troisième table et de faire toutes vos jointures par une seule clé primaire et étrangère ; donc vous auriez

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