Database Self Relationship (Relasi Antara Suatu Tabel dengan Tabel itu Sendiri)

Posted on 262 views
Ada satu hal yang menggangu saya sehingga memberi dorongan pada saya untuk memposting artikel ini yaitu untuk melanjuntan dari Aritkel yang telah saya post sebelumnya tentang : Perancangan Database dengan ERD (Entity Relation Diagram).
Pada artikel sebelumnya saya berbagi tentang cara merancang dan membuat ERD (Entity Relationship Diagram) pada artikel tersebut dibahas tentang relasi antar tabel. Ternyata selain relasi anatar tabel terdapat juga relasi antara tabel dengan tabel tersebut atau bisa disebut dengan self relationship.
Self relationship merupakan materi lanjut dari materi pemodelan database, dan kebetuan saya dapat materi ini ketika saya mempelajari database menggunakan modul pembelajaran dari Oracle. Metode self relation ini dapat diterapkan di semua DBMS (Database Management System) pada tutorial kali ini saya akan menggunakan MySQL untuk praktik penerapan.

Apa itu Self Relationship pada Database Modeling ?

Self Relation adalah suatu relasi yang dimiliki oleh suatu tabel yang terhubung dengan tabel itu sendiri, jadi suatu primary key pada suatu tabel memiliki relasi dengan forigen key pada tabel tersebut.

Pada tutorial sebelumnya Perancangan Database dengan ERD (Entity Relation Diagram) saya juga sempat menjelaskan tentang derajat kardinalitas pada relasi antar tabel. Pada tabel yang menerapkan self relationship juga memiliki drajat kardinalitas namun terbatas yaitu hanya :
  • one-to-many (1-n), yang artinya suatu data pada tabel keberadaannya mempengaruhi banyak data yang berada di tabel yang lain. Dalam konsep self relation 1 data pada satu tabel dapat berelasi dengan banyak data di tabel yang sama.
  • one-to-one (1-1), adalah relasi antar tabel apabila suatu data pada suatu tabel hanya dapat berelasi dengan satu data di tabel lain. Dalam konsep self relation 1 data pada satu tabel dapat berelasi dengan satu data di tabel yang sama.
Untuk drajat kardinalitas many-to-many (n-n) tidak dapat diimplementasikan pada table yang menggunakan relasi berupa self relation karena pada dasar nya many-to-many berdampak memunculkan satu entitas / tabel baru yang memungkinkan yang isi attributnya berbeda sehingga tidak dapat diimplementasikan.
Jika suatu Tabel pada database menerapakan self relationship dengan derajat kardinalitas one to many maka memungkinkan data pada tabel tersebut akan berberbentuk herarki. Herarki adalah susunan sekumpulan object / data tertentu yang dikelompokkan berdasarkan tingkat atau level.

Mengapa Self Relation Diimplementasikan pada Database?

Tujuan dari Self Relation diterapkan adalah untuk meminimalisir penggunaan tabel yang ada pada database, dangan kata lain adalah menyederhanan penggunaan tabel. Dengan meminimalisir jumlah tabel akan berdampak effectif dalam menulis source code program.
Misalkan terdapat 2 buah tabel yaitu Tabel Karyawan dan Tabel Manager yang memiliki attribut yang sama sehingga dapat disederhanan menjadi 1 tabel, meruhan relasi dan memberikan enum() type data untuk attibut karyawan_position.
Gambar Design Tabel Manager dan Tabel Kayawan 
(*~yang akan disederhanan)
Berikut adalah gambar dari 2 buah table yang telah disederhanan menjadi sebuah table yaitu tabel karyawan. Penggunaan Self Relation  pada tabel karyawan, menjadi seolah-olah kita menggunakan 2 buah tabel.
Gambar Design Tabel Karyawan
(implementasi penerapan self relation)
Ketika  terdapat 2 buah tabel karyawan dan manager maka kita perlu menulis 2 buah program CRUD untuk mengakess dan menaipulais masing-masing tabel.
Biasanya ketika seorang sistem analisis / programer menerapkan self relationship pada beberapa tabel pada database yang akan dirancang harusnya diidentifikasi dari awal, atau jika aplikasi sudah berjalan, kemudian akan diubah cukup membuang waktu untuk memperbaikinya.

Contoh Penerapan Self Relationship pada Table Database

Penggunaan self relationship dapat diterapkan untuk beberapa kasus pada pembuatan pada tabel database. Berikut ini kasus yang dapat diterapkan :
  • Tabel anggota keluarga,
  • Tabel pegawai / karyawan pada suatu perusahaan,
  • Tabel metri dan pejabat di susunan kabinet,
  • Tabel anggota pada bagan organisasi,
  • Tabel user pada multi level marketing,
  • dan lain sebagainya
Gambar data pada Tabel Karyawan

Seperti yang telah saja jelaskan diatas tabel yang memiliki self relasi meiliki data yang berbentuk herarki. Dengan begitu dari data pada tabel karyawan diatas dapat di interpretasikan delam bentuk bagan:

Gambar Herarki pada dari Data pada Tabel Karyawan

Cara Mengimplemantasikan Self Relationship pada Database

Cara menerapkan self relationship pada database yaitu dengan cara menghungkan attribute id sebagai primary key dengan attribute id yang lain sebagai forigen key.
Pada tutorial kali ini saya akan menggunakan tabel karyawan untuk database perusahaan sebagi contoh pembuatan. Berikut ini langkah-langkah membuatan tabel yang mengunakan self relation pada dbms MYSQL :
  1. Silahakan buka dulu XAMPP, kemudian jalankan Apache, dan MySQL.

  2. Kemudian buka web browser anda kemudian buka phpmyadmin : localhost/phpmyadmin.
    pilih Tab SQL pada navigasi bar untuk membuka fitur SQL Executor  :
    Gambar Halaman Ketika Tab SQL active pada  PHPMYADMIN
  3. Membuat database baru dengan nama  “perusahaan_db“, menggunakan source code berikut ini  :

    CREATE DATABASE perusahaan_db;
    silahkan copykan code diatas kemudian paste di SQL editor pada halaman PHPMYADMIN di atas.
    Gambar Menjalan Command untuk membuat database di PHPMYADMIN
  4. Membuat tabel dengan nama “karyawan“, selanjutnya silahkan silahkan copy code dibawah ini kemudian eksekusi.

  5. Membuat constraint antara karyawan_id dengan manager_id untuk membuat self relationship pada tabel karyawan. silahkan gunakan souce  code dibawah ini kemudian eksekusi untuk membuat relasi antar tabel.

     Gambar Hasil Tabel dengan Relasi Self Relation
  6. Insert data manager dan karyawan pada tabel karyawan. Silahkan copykan source code di bawah ini kemudain eksekusi di MYSQL anda
Berikut ini hasil data yang di return dengan PHP dalam bentuk JSON, maka bentuk datanya dapat terlihat seperti hirarki  :



NOTE :

  1. Source code diatas dapat digunakan pada DBMS selain mysql karena pada dasarnya DBMS mengeksekusi perintah dalam bentuk query language.
  2. Untuk penggunaan source code di atas silahkan anda sesuaikan nama_tabel, nama_attribut, tipe_data dlsb dengan khasus atau project anda yang sedang anda kerjakan.
Sekian penjelaasan tentang penjelasan dan penerapan self relationship pada perancagnan tabel database yang telah saya tulis pada artikel ini, banyak kekurangan saya ucapkan mohon maaf.
~Terima Kasih~
~Semoga Bermanfaat~

Leave a Reply

Your email address will not be published. Required fields are marked *