Membuat Relasi Tabel MySQL Dengan Foreign Key Constraint


Membuat relasi tabel dengan foreign key constraint berbeda seperti membuat relasi menggunakan fitur desainer, meskipun secara konsep sama hanya saja menurut saya pribadi ini lebih simple dibandingkan menggunakan desainer tabel yang disediakan di phpMyAdmin. Tetapi secara esensi baik menggunakan foreign key constraint ataupun desainer itu tetap sama, karena kriteria yang perlu dipenuhi juga sama yaitu dua tabel yang direlasikan perlu didefinisikan foreign key dengan tipe data/attribute yang sama.

Baca juga : 

Ketentuan Relasi Tabel MySQL

Ada beberapa ketentuan dan hal – hal yang perlu diketahui sebelum membuat relasi tabel pada database MySQL diantaranya adalah sebagai berikut :

  1. Kolom pada tabel yang akan direlasikan setidaknya harus memiliki kunci index/unik yang akan dijadikan sebagai foreign key
  2. Attribute atau tipe data harus sama
  3. Constraint properties harus sesuai dengan actionnya, maksudnya misal pada saat proses ON DELETE Anda mengeset proportion ke SET NULL maka nilai default pada tabel anak haruslah NULL

Jika data – data pada kolom tabel yang akan direlasikan ini tidak sesuai, maka akan terjadi error pada saat pembuatan relasi seperti misalnya error creating foreign key on (check data type)

Manfaat Relasi Tabel MySQL

Manfaat utama dari relasi tabel MySQL menurut saya adalah pengguna bisa dengan mudah memasukan data pada tabel Anak tanpa harus mengetahui nilai pada tabel induk, hanya tinggal pilih saja tanpa harus mengetik manual atau tanpa harus mengetahui id data pada tabel induk

Membuat Relasi Tabel MySQL Dengan Foreign Key Constraint

Disini Saya akan mencontohkan membuat relasi tabel MySQL menggunakan interface dari phpMyAdmin. Anda bisa mengikuti langkah – langkah berikut :

Persiapan dan Penjelasan

  1. Silahkan siapkan dua buah tabel yang akan direlasikan. 
      
      CREATE TABLE `tb_jurusan` (
      `id` int(10) UNSIGNED NOT NULL,
      `nama_jurusan` varchar(100) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    -- --------------------------------------------------------
    
    --
    -- Struktur dari tabel `tb_mahasiswa`
    --
    
    CREATE TABLE `tb_mahasiswa` (
      `id` int(10) UNSIGNED NOT NULL,
      `nama_mahasiswa` varchar(50) DEFAULT NULL,
      `jurusan` int(10) UNSIGNED DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    --
    -- Indexes for dumped tables
    --
    
    --
    -- Indexes for table `tb_jurusan`
    --
    ALTER TABLE `tb_jurusan`
      ADD PRIMARY KEY (`id`),
      ADD KEY `id` (`id`);
    
    --
    -- Indexes for table `tb_mahasiswa`
    --
    ALTER TABLE `tb_mahasiswa`
      ADD PRIMARY KEY (`id`),
      ADD KEY `jurusan` (`jurusan`);
    
    --
    -- AUTO_INCREMENT for dumped tables
    --
    
    --
    -- AUTO_INCREMENT for table `tb_jurusan`
    --
    ALTER TABLE `tb_jurusan`
      MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
    --
    -- AUTO_INCREMENT for table `tb_mahasiswa`
    --
    ALTER TABLE `tb_mahasiswa`
      MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
      
      
  2.  Pada contoh tabel diatas terdapat tabel tb_jurusan dan tb_mahasiswa
  3. tb_jurusan akan menjadi tabel Induk yang akan diakses oleh tabel anak tb_mahasiswa yang memiliki kolom jurusan
  4. Sehingga relasi nantinya akan dibuat pada tabel anaknya, bukan tabel induk
  5. Jadi kolom tabel yang akan direlasikan adalah kolom jurusan pada tb_mahasiswa ke kolom id pada tabel tb_jurusan

Praktik

  1. Klik tb_mahasiswa lalu klik struktur > Relation View. Sehingga nanti akan muncul tampilan seperti berikut

    Membuat Relasi Tabel MySQL Dengan Foreign Key Constraint

  2. Pada Foreign key constraints, Anda bisa mendefiniskan nilai – nilainya seperti pada contoh diatas
  3. Selanjutnya klik Simpan.
  4. Anda juga bisa menjalankan SQL berikut untuk menambahakan relasi dari tb_mahasiswa ke tb_jurusan
    ALTER TABLE `tb_mahasiswa` ADD CONSTRAINT `jurusan_foreign` FOREIGN KEY (`jurusan`) REFERENCES `mahasiswa`.`tb_jurusan`(`id`) ON DELETE SET NULL ON UPDATE RESTRICT;

Keterangan :
  1. Action constraint properties, terdapat dua kondisi yaitu ON DELETE dan ON UPDATE, maksudnya adalah action yang terjadi ketika misalnya tabel induknya melakukan DELETE dan UPDATE. Pada contoh diatas action pada ON DELETE diset ke NULL, sehingga ketika tabel induk pada tb_jurusan dihapus maka kolom jurusan pada tb_mahasiswa tidak akan terhapus atau akan diset NULL
  2. Kolom, merupakan foreign key atau index yang akan dihubungkan ke tb_jurusan
  3. Database yang digunakan
  4. Nama tabel induk
  5. Index atau Primary key tabel Induk



0 Response to "Membuat Relasi Tabel MySQL Dengan Foreign Key Constraint"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin