SQL FOREIGN KEY: Cara Membuat di SQL Server dengan Contoh

Apa itu KUNCI ASING?

A Kunci asing menyediakan cara untuk menegakkan integritas referensial dalam SQL Server. Dengan kata sederhana, kunci asing memastikan nilai dalam satu tabel harus ada di tabel lain.

Aturan untuk KUNCI ASING

  • NULL diperbolehkan dalam kunci Asing SQL.
  • Tabel yang direferensikan disebut Tabel Induk
  • Tabel dengan Kunci Asing dalam SQL disebut Tabel Anak.
  • Kunci Asing SQL di tabel anak mereferensikan kunci utama di tabel induk.
  • Hubungan orang tua-anak ini menerapkan aturan yang dikenal sebagai “Referensial Integrity. "

Contoh Kunci Asing dalam SQL di Bawah ini dengan diagram merangkum semua poin di atas untuk KUNCI ASING

Aturan untuk FOREIGN KEY di SQL
Cara Kerja Kunci Asing

Cara Membuat KUNCI ASING di SQL

Kita dapat Membuat Kunci asing di SQL server di 2 cara:

  1. Studio Manajemen SQL Server
  2. T-SQL

Studio Manajemen SQL Server

Tabel Induk: Katakanlah, kita sudah memiliki tabel Induk sebagai 'Kursus'. Course_ID dan Course_name adalah dua kolom dengan Course_Id sebagai Kunci Utama.

Buat KUNCI ASING di SQL

Tabel Anak: Kita perlu membuat tabel kedua sebagai tabel anak. 'Course_ID' dan 'Course_Strength' sebagai dua kolom. Namun, 'Course_ID' adalah Kunci Asing.

Langkah 1) Klik kanan pada Tabel>Baru> Tabel…

Buat KUNCI ASING di SQL

Langkah 2) Masukkan nama dua kolom sebagai 'ID_Kursus' dan 'Kekuatan_Kursus'. Klik kanan pada Kolom 'Id_Kursus'. Sekarang klik Hubungan.

Buat KUNCI ASING di SQL

Langkah 3) In 'Hubungan Kunci Asing,' Klik 'Menambahkan'

Buat KUNCI ASING di SQL

Langkah 4) Di 'Spesifikasi Tabel dan Kolom' klik ikon '…'

Buat KUNCI ASING di SQL

Langkah 5) Pilih 'Tabel Kunci Utama' sebagai 'KURSUS' dan tabel baru sekarang dibuat sebagai 'Tabel Kunci Asing' dari drop down.

Buat KUNCI ASING di SQL

Langkah 6) 'Tabel Kunci Utama' – Pilih kolom 'Id_Kursus' sebagai kolom 'Tabel Kunci Utama'.

'Tabel Kunci Asing'- Pilih kolom 'Id_Kursus' sebagai kolom 'Tabel Kunci Asing'. Klik Oke.

Buat KUNCI ASING di SQL

Langkah 7) Klik Tambah.

Buat KUNCI ASING di SQL

Langkah 8) Berikan nama Tabel sebagai 'Course_Strength' dan klik OK.

Buat KUNCI ASING di SQL

Hasil: Kami telah mengatur hubungan orang tua-anak antara 'Kursus' dan 'Tentu saja_kekuatan.'

Buat KUNCI ASING di SQL

T-SQL: Buat tabel Induk-anak menggunakan T-SQL

Tabel Induk: Pertimbangkan kembali, kita sudah memiliki tabel Induk dengan nama tabel sebagai 'Kursus'.

Course_ID dan Course_name adalah dua kolom dengan Course_Id sebagai Kunci Utama.

Buat Tabel Induk-anak menggunakan T-SQL

Tabel Anak: Kita perlu membuat tabel kedua sebagai tabel anak dengan nama 'Course_Strength_TSQL.'

'Course_ID' dan 'Course_Strength' sebagai dua kolom untuk tabel anak Course_Strength_TSQL.' Namun, 'Course_ID' adalah Kunci Asing.

Di bawah ini adalah sintaks untuk membuat tabel dengan FOREIGN KEY

sintaks:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

Berikut penjelasan parameter di atas:

  • childTable adalah nama tabel yang akan dibuat.
  • kolom_1, kolom_2- kolom yang akan ditambahkan ke tabel.
  • fkey_name- nama batasan kunci asing yang akan dibuat.
  • child_column1, child_column2…child_column_n- nama kolom chidTable untuk mereferensikan kunci utama di parentTable.
  • parentTable- nama tabel induk yang kuncinya akan direferensikan di tabel anak.
  • parent_column1, parent_column2,… parent_column3- kolom yang membentuk kunci utama tabel induk.
  • DI HAPUS. Parameter opsional. Ini menentukan apa yang terjadi pada data anak setelah data induk dihapus. Beberapa nilai untuk parameter ini antara lain NO ACTION, SET NULL, CASCADE, atau SET DEFAULT.
  • PADA PEMBARUAN- Parameter opsional. Ini menentukan apa yang terjadi pada data anak setelah pembaruan pada data induk. Beberapa nilai untuk parameter ini antara lain NO ACTION, SET NULL, CASCADE, atau SET DEFAULT.
  • TANPA TINDAKAN- digunakan bersama dengan ON DELETE dan ON UPDATE. Artinya tidak akan terjadi apa-apa pada data anak setelah data induk diperbarui atau dihapus.
  • CASCADE- digunakan bersama dengan ON DELETE dan ON UPDATE. Data anak akan dihapus atau diperbarui setelah data induk dihapus atau diperbarui.
  • SET NULL- digunakan bersama dengan ON DELETE dan ON UPDATE. Anak akan disetel ke null setelah data induk diperbarui atau dihapus.
  • SET DEFAULT- digunakan bersama dengan ON DELETE dan ON UPDATE. Data anak akan disetel ke nilai default setelah data induk diperbarui atau dihapus.

Mari kita lihat contoh Foreign Key dalam SQL untuk membuat tabel dengan Satu Kolom sebagai FOREIGN KEY:

Contoh Kunci Asing dalam SQL

Query:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

Langkah 1) Jalankan kueri dengan mengklik jalankan.

Kunci Asing dalam SQL

Hasil: Kami telah mengatur hubungan orang tua-anak antara 'Kursus' dan 'Tentu saja_kekuatan_TSQL.'

Kunci Asing dalam SQL

Menggunakan ALTER TABLE

Sekarang kita akan belajar bagaimana menggunakan Kunci Asing di SQL dan menambahkan Kunci Asing di server SQL menggunakan pernyataan ALTER TABLE, kita akan menggunakan sintaks yang diberikan di bawah ini:

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

Berikut penjelasan parameter yang digunakan di atas:

  • childTable adalah nama tabel yang akan dibuat.
  • kolom_1, kolom_2- kolom yang akan ditambahkan ke tabel.
  • fkey_name- nama batasan kunci asing yang akan dibuat.
  • child_column1, child_column2…child_column_n- nama kolom chidTable untuk mereferensikan kunci utama di parentTable.
  • parentTable- nama tabel induk yang kuncinya akan direferensikan di tabel anak.
  • parent_column1, parent_column2,… parent_column3- kolom yang membentuk kunci utama tabel induk.

Ubah tabel, tambahkan contoh Kunci Asing:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

Kami telah membuat kunci asing bernama fkey_student_admission pada tabel departemen. Kunci asing ini merujuk pada kolom penerimaan tabel siswa.

Contoh Query FOREIGN KEY

Pertama kita lihat Data Tabel Induk kita, KURSUS.

Query:

SELECT * from COURSE;

Contoh Query FOREIGN KEY

Sekarang mari kita masukkan beberapa baris ke dalam tabel Anak: 'Tentu saja_kekuatan_TSQL.'

Kami akan mencoba menyisipkan dua jenis baris

  1. Tipe pertama, dimana Course_Id di tabel anak akan ada di Course_Id tabel Induk. yaitu Course_Id = 1 dan 2
  2. Tipe kedua, dimana Course_Id pada tabel anak tidak ada pada tabel Course_Id Induk. yaitu Course_Id = 5

Query:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

Contoh Query FOREIGN KEY

Hasil: Mari kita jalankan Query bersama-sama untuk Melihat tabel Induk dan Anak kita

Baris dengan Course_ID 1 dan 2 ada di tabel Course_strength. Sedangkan Course_ID 5 merupakan pengecualian.

Contoh Query FOREIGN KEY

Kesimpulan

  • Setiap nilai kunci Asing harus menjadi bagiannya Kunci utama dari tabel lainnya.
  • MySQL Foreign Key dapat merujuk ke kolom lain dalam tabel yang sama. Referensi ini dikenal sebagai referensi diri.
  • Batasan Kunci Asing SQL : digunakan untuk mengamankan tautan antara tabel dan data yang tidak valid untuk dimasukkan ke dalam kolom Kunci Asing.
  • Anda dapat membuat Kunci Asing menggunakan Buat Tabel, Alter Tabel, atau Studio Manajemen SQL Server.
  • Berikut perbedaan antara Primary Key vs Foreign Key: Klik disini