sql >> Databáze >  >> RDS >> Oracle

Vložení cizího klíče s více hodnotami

Bohužel jste právě položili starou otázku;

Odpověď je, samozřejmě, že ne; máte dva sloupce. Chcete-li rozšířit váš příklad zaměstnance, vaše tabulka zaměstnanců by se stala:

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

Jak vidíte, není to zrovna hezká věc a narušuje normalizaci; co se stane, když chcete, aby váš zaměstnanec (nebo váš zaměstnanec samozřejmě chce) měl 3 dovednosti? Nebo 10?.

Pravděpodobně by bylo lepší vytvořit třetí tabulku a všechna vaše spojení provádět pomocí jediného primárního a cizího klíče; takže byste měli

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. Existuje nějaký rozdíl mezi DateTime v c# a DateTime na SQL serveru?

  2. Jak opravit skript automatického zálohování pro postgres [Window]?

  3. Unikátní index přes postgresql oddíly

  4. Postgres spouštěcí procedura při vkládání pomocí dat do vložených polí k vložení vypočítaných dat do jiného pole