Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memasukkan kunci asing dengan banyak nilai

Sayangnya Anda baru saja mengajukan pertanyaan kuno;

Jawabannya adalah, tentu saja, Anda tidak melakukannya; Anda memiliki dua kolom. Untuk memperluas contoh karyawan Anda, tabel karyawan Anda akan menjadi:

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

Seperti yang Anda lihat, ini bukan hal yang bagus untuk dilakukan dan merusak normalisasi; apa jadinya jika anda ingin karyawan anda (atau karyawan anda tentunya ingin) memiliki 3 skill? Atau 10?.

Mungkin akan lebih baik untuk membuat tabel ketiga dan melakukan semua gabungan Anda dengan satu kunci utama dan asing; jadi Anda akan memiliki

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. Cara terbaik untuk bergabung dengan tabel induk dan anak

  2. SUM Bersyarat di Oracle

  3. pilih dari satu tabel, masukkan ke tabel lain kueri Oracle sql

  4. Kembalikan jumlah baris yang terpengaruh dari MERGE dengan cx_Oracle

  5. Oracle - ekstrak stempel waktu dari string varchar?