Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wstawianie klucza obcego z wieloma wartościami

Niestety właśnie zadałeś odwieczne pytanie;

Odpowiedź brzmi, oczywiście, że nie; masz dwie kolumny. Aby rozszerzyć przykład pracownika, Twoja tabela pracowników wyglądałaby następująco:

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 widać, nie jest to szczególnie ładna rzecz do zrobienia i łamie normalizację; co się stanie, jeśli chcesz, aby Twój pracownik (lub Twój pracownik oczywiście chciał) miał 3 umiejętności? Lub 10?.

Prawdopodobnie lepiej byłoby utworzyć trzecią tabelę i wykonać wszystkie połączenia za pomocą jednego klucza podstawowego i obcego; więc byś miał

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolumna automatycznego przyrostu — sekwencja jako wartość domyślna w Oracle

  2. Czy istnieje sposób na zainstalowanie Javy na Oracle 11g XE?

  3. ORA-20001 w R12 Zbierz statystyki schematu dotyczące 11g (FND_HISTOGRAM_COLS)

  4. Jak uzyskać instrukcję tworzenia tabeli Oracle w SQL*Plus?

  5. Użyj aliasu tabeli w innym zapytaniu, aby przejść przez drzewo