sql >> Databasteknik >  >> RDS >> Oracle

Infoga en främmande nyckel med flera värden

Tyvärr har du just ställt den urgamla frågan;

Svaret är förstås att du inte gör det; du har två kolumner. För att utöka ditt medarbetarexempel skulle din medarbetartabell bli:

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

Som du kan se är detta inte en särskilt vacker sak att göra och bryter normaliseringen; vad händer om du vill att din medarbetare (eller din medarbetare vill förstås) ska ha 3 kompetenser? Eller 10?.

Det skulle förmodligen vara bättre att skapa en tredje tabell och göra alla dina kopplingar med en enda primär och främmande nyckel; så skulle du ha

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. Fel i lagrad procedur PLS-00201:identifierare 'UTL_HTTP' måste deklareras

  2. Oracle-databas - ORA-01460 - oimplementerad eller orimlig konvertering begärd

  3. OCCI-appen kraschar när den körs i felsökningsläge i Visual Studio 2005

  4. Bitdatatyp till enum-typmappning från databas till datauppsättning i SQL Server 2008