Relasi Database MYSQL

Apa Itu Relasi Tabel?

Relasi tabel adalah hubungan antar tabel dalam database yang saling terhubung melalui data yang berkaitan. Hubungan ini memungkinkan data di satu tabel untuk berinteraksi atau dikaitkan dengan data di tabel lain. Untuk membangun relasi ini, digunakan dua konsep utama, yaitu primary key dan foreign key.

Primary key adalah kolom unik dalam suatu tabel yang digunakan untuk mengidentifikasi setiap baris data secara khusus. Contohnya, jika ada tabel "users", maka kolom "user_id" bisa dijadikan primary key untuk membedakan setiap pengguna.

Foreign key adalah kolom dalam tabel yang merujuk ke primary key di tabel lain. Kolom ini digunakan untuk membentuk hubungan antar tabel, dan menjaga konsistensi data. Misalnya, dalam tabel "orders", kolom "customer_id" bisa menjadi foreign key yang mengarah ke "customer_id" di tabel "customers".

Jenis-Jenis Relasi dalam Database MySQL

  1. One-to-One (Satu ke Satu)

Relasi ini terjadi ketika satu baris di tabel A hanya berhubungan dengan satu baris di tabel B, dan sebaliknya. Contohnya, tabel "users" dan tabel "profiles". Satu user hanya memiliki satu profil.

Tabel users:
user_id username
1 john
2 alice

Tabel profiles:
profile_id user_id bio
1 1 Developer
2 2 Designer

Setiap user memiliki satu profil, dan tiap profil hanya milik satu user.

  1. One-to-Many (Satu ke Banyak)

Relasi ini terjadi ketika satu baris di tabel A bisa berhubungan dengan banyak baris di tabel B. Tapi setiap baris di tabel B hanya terhubung ke satu baris di tabel A. Contoh paling umum adalah tabel kategori dan produk.

Tabel categories:
category_id name
1 Books
2 Clothes

Tabel products:
product_id category_id name
1 1 Book A
2 1 Book B
3 2 Shirt

Kategori "Books" memiliki dua produk, yaitu Book A dan Book B. Sementara setiap produk hanya memiliki satu kategori.

  1. Many-to-Many (Banyak ke Banyak)

Relasi ini terjadi ketika satu baris di tabel A bisa berhubungan dengan banyak baris di tabel B, dan sebaliknya. Untuk membuat relasi ini, harus menggunakan tabel perantara atau junction table.

Tabel students:
student_id name
1 John
2 Alice

Tabel courses:
course_id name
1 Math
2 Science

Tabel student_courses (tabel perantara):
student_id course_id
1 1
1 2
2 2

John mengikuti mata kuliah Math dan Science. Alice hanya mengikuti Science. Jadi, relasi antara tabel students dan courses bersifat many-to-many dan dihubungkan melalui tabel student_courses.

  1. Self-Referencing (Relasi ke Diri Sendiri)

Relasi ini terjadi ketika sebuah tabel memiliki kolom yang merujuk ke dirinya sendiri. Biasanya digunakan untuk menggambarkan struktur organisasi, seperti manajer dan bawahan.

Tabel employees:
employee_id name manager_id
1 John (NULL)
2 Alice 1
3 Bob 1
4 Charlie 2

John adalah atasan Alice dan Bob. Alice adalah atasan dari Charlie. Kolom manager_id merujuk ke employee_id yang sama dalam tabel yang sama.

  1. Relasi Menggunakan Foreign Key

Relasi antar tabel umumnya dibentuk menggunakan foreign key. Ini menjaga agar data antar tabel tetap konsisten.

Tabel customers:
customer_id name
1 John
2 Alice

Tabel orders:
order_id customer_id amount
1 1 100
2 2 150

Kolom customer_id di tabel orders adalah foreign key yang merujuk ke customer_id di tabel customers. Artinya, order tersebut dibuat oleh pelanggan tertentu.

Apakah Wajib Membuat Tabel Baru pada Relasi Many-to-Many?

Ya, wajib. Relasi many-to-many tidak bisa langsung dibuat hanya dengan dua tabel utama. Harus ada tabel tambahan (junction table) yang menyimpan data penghubung dari kedua tabel. Tanpa tabel ini, relasi tidak dapat dibuat secara benar dan akan menyulitkan dalam pengelolaan data.

Contoh Skema Relasi Database

Misalnya pada sistem sekolah:

Tabel students:
student_id name
1 John
2 Alice

Tabel courses:
course_id name
1 Math
2 Science

Tabel student_courses:
student_id course_id
1 1
1 2
2 2

Relasi ini menunjukkan bahwa:

  • John mengikuti Math dan Science

  • Alice hanya mengikuti Science

Relasi seperti ini sangat umum ditemukan dalam sistem sekolah, toko online, perpustakaan, dan aplikasi lainnya yang menggunakan basis data relasional.

Komentar

Postingan populer dari blog ini

Membuat Database dan Mengisinya Di PHPMYADMIN

ERD