sql >> Database >  >> RDS >> Oracle

Een externe sleutel met meerdere waarden invoegen

Helaas heb je zojuist de eeuwenoude vraag gesteld;

Het antwoord is natuurlijk dat je dat niet doet; je hebt twee kolommen. Om uw werknemersvoorbeeld uit te breiden, wordt uw werknemerstafel:

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

Zoals je kunt zien, is dit niet bijzonder mooi om te doen en doorbreekt het de normalisatie; wat gebeurt er als u wilt dat uw werknemer (of uw werknemer wil natuurlijk) 3 vaardigheden heeft? Of 10?.

Het zou waarschijnlijk beter zijn om een ​​derde tabel te maken en al je joins te doen met een enkele primaire en externe sleutel; dus je zou hebben

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


  1. prestatie van vakbond versus vakbond allemaal

  2. CodeIgniter/PHP/MySQL:gegevens ophalen met JOIN

  3. Zoek naar een gegeven string in alle velden van een heel schema voor Oracle

  4. mysql triggers verwijderen