Membuat relasi antar tabel pada database mysql

Membuat relasi antar tabel pada database mysql

Perbesar

Iluatrasi mengelola basis data. Foto: Christina Morillo/Pexels

Cara Membuat Database di phpMyAdmin

Membuat relasi antar tabel pada database mysql

Perbesar

Iluatrasi mengelola basis data. Foto: Lukas/Pexels

Cara Membuat Relasi Antar Tabel di PHPMyAdmin

Membuat relasi antar tabel pada database mysql

Perbesar

Iluatrasi mengelola basis data. Foto: Christina Morillo/Pexels

Cara Membuat Relasi di PHPMyAdmin

Membuat relasi antar tabel pada database mysql

Perbesar

Ilustrasi Database. Foto: Kevin Ku/unsplash

Cara Membuat Relasi di phpMyAdmin

Skema relasi merupakan sebuah cara untuk merepresentasikan hubungan antara satu tabel dengan tabel lainnya melalui sebuah kolom kunci. Pada skema relasi sebuah primary key suatu tabel merupakan foreign key pada tabel lainnya. Kunci tersebut selanjutnya dapat digunakan untuk membantu kita menggabungkan informasi dari tabel-tabel yang terpisah.

Secara umum kolom kunci merupakan suatu kolom berisi nilai-nilai unik yang menunjukkan sebuah observasi. Pada database relasional terdapat dua jenis kolom kunci, antara lain:

  1. Primary Key : satu atau beberapa kolom yang secara unik mengidentifikasikan setiap observasi (baris dalam tabel). Primary key umumnya berupa nilai unik, seperti: nomor id atau nomor seri. Pada access primary key disimbolkan dengan logo kunci.
  2. Foreign Key : suatu kolom yang berisi primary key tabel lainnya. Sebuah tabel dapat berisi lebih dari satu foreign key.

Kesesuaian nilai antara kolom kunci menjadi dasar dari relasi antar tabel. Relasi antar tabel digunakan untuk mengombinasikan data dari satu tabel dengan tabel lainnya dengan mencocokkan primary key dengan foreign key.

Menyimpan data terpisah pada beberapa tabel yang saling terkait memiliki keuntungan sebagai berikut:

  1. Konsistensi: karena setiap item (observasi) data yang direkam hanya sekali dalam satu tabel, maka lebih sedikit kemungkinan untuk terjadi ambiguitas atau inkonsistensi. Contoh: data identitas konsumen hanya direkam sekali pada tabel Konsumen, dibanding menyimpan data tersebut berulang kali pada tabel pesanan (inkonsisten).
  2. Efisiensi: merekam data pada satu tempat dapat menghemat memori komputer yang dibutuhkan. Selain itu, ukuran memori data yang kecil akan mempercepat pemanggilan data.
  3. Komprehensibilitas: desain database lebih mudah untuk dimengerti jika subjeknya dipisahkan ke dalam tabel secara benar.

Terdapat sejumlah syarat yang harus terpenuhi sebelum skema relasi dapat dibuat di access, antara lain:

OK.. kali ini saya akan mencoba membahas bagaimana cara membuat query SQL yang melibatkan tabel lebih dari satu (multi tabel) dimana saling berelasi satu sama yang lain. Dalam hal ini, pembahasan hanya akan berfokus pada query berbentuk SELECT saja.

Untuk lebih jelasnya, saya berikan sampel 3 buah tabel yang saling berelasi satu sama lain beserta sampel datanya. Tabel ini merupakan studi kasus dari data perkuliahan mahasiswa.

CREATE TABLE `ambilmk` (
  `nim` varchar(5),
  `kodemk` varchar(4),
  `nilai` float,
  `smt` varchar(10),
  `thajar` varchar(10),
  PRIMARY KEY (`nim`,`kodemk`)
);

CREATE TABLE `mhs` (
  `nim` varchar(5),
  `namamhs` varchar(20),
  `alamat` text,
  `tgllhr` date,
  PRIMARY KEY (`nim`)
);

CREATE TABLE `mk` (
  `kodemk` varchar(4),
  `namamk` varchar(20),
  `sks` int(11),
  `smt` varchar(10),
  PRIMARY KEY (`kodemk`)
);

dan… berikut ini adalah sampel datanya

INSERT INTO `ambilmk` VALUES ('M001', 'MK01', '3', 'GANJIL', '2001-2002');
INSERT INTO `ambilmk` VALUES ('M001', 'MK02', '2', 'GANJIL', '2001-2002');
INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '4', 'GANJIL', '2001-2002');
INSERT INTO `ambilmk` VALUES ('M003', 'MK03', '4', 'GENAP', '2001-2002');

INSERT INTO `mhs` VALUES ('M001', 'XXX', 'SOLO', '1990-10-01');
INSERT INTO `mhs` VALUES ('M002', 'YYY', 'SEMARANG', '1992-08-11');
INSERT INTO `mhs` VALUES ('M003', 'ZZZ', 'SOLO', '1991-04-15');

INSERT INTO `mk` VALUES ('MK01', 'KALKULUS I', '3', 'GANJIL');
INSERT INTO `mk` VALUES ('MK02', 'GEOMETRI', '2', 'GANJIL');
INSERT INTO `mk` VALUES ('MK03', 'KALKULUS II', '3', 'GENAP');

Berdasarkan ketiga tabel tersebut, kita bisa melihat relasi antar ketiga tabel tersebut sebagaimana tergambar pada gambar berikut ini

Membuat relasi antar tabel pada database mysql

Nah… selanjutnya, misalkan kita ingin menampilkan data mahasiswa (nim, nama) dari mahasiswa yang pernah mengambil matakuliah ‘MK01’. Bagaimana cara membuat query SQL nya?

Sebelum kita mulai membuat query SQL nya, terlebih dahulu harus kita tentukan ‘Di tabel manakah kita akan bekerja‘ dari ketiga tabel tersebut. OK… untuk menampilkan nim dan nama, kita bisa menggunakan tabel ‘mhs’. Sedangkan untuk prasyarat dari query yaitu ‘mahasiswa yang pernah mengambil matakuliah MK01 kita menggunakan tabel ‘ambilmk’. Dengan demikian query yang akan kita buat hanya melibatkan kedua tabel tersebut, yaitu ‘mhs’ dan ‘ambilmk’.

Eh… masih ada lagi hal yang harus diperhatikan, yaitu relasi kedua tabel tersebut. Bila Anda lihat gambar relasi di atas atau hubungan antar ketiga tabel, tabel ‘ambilmk’ dan tabel ‘mhs’ direlasikan melalui field apa? Dari gambar, kita tahu bahwa kedua tabel terhubung melalui field ‘nim’ yang ada di tabel ‘mhs’ dan field ‘nim’ yang ada di tabel ‘ambilmk’. Oleh karena itu di dalam query SQL terutama pada bagian klausa WHERE perlu adanya perintah untuk menggambarkan hubungan tersebut.

Query SQL untuk menampilkan data mahasiswa (nim, nama) dari mahasiswa yang pernah mengambil matakuliah ‘MK01’ adalah sbb:

SELECT mhs.nim, mhs.namamhs
FROM mhs, ambilmk
WHERE mhs.nim = ambilmk.nim AND ambilmk.kodemk = 'MK01';

Perhatikan perintah “mhs.nim = ambilmk.nim” pada query di atas. Perintah tersebut digunakan untuk merelasikan tabel ‘mhs’ dengan ‘ambilmk’ dimana kedua tabel terhubung oleh field ‘nim’ yang ada di masing-masing tabel.

Sehingga hasil dari query SQL di atas adalah

Membuat relasi antar tabel pada database mysql

Selanjutnya misalkan kita ingin menampilkan data mahasiswa (nim, nama) beserta nilainya dari mahasiswa yang pernah mengambil matakuliah bernama ‘KALKULUS I’. Bagaimana query SQL nya?

OK… langkah pertama, kita tentukan dulu tabel mana saja yang kita pilih. Untuk menampilkan nim dan nama, kita butuh tabel ‘mhs’. Nilai, kita butuh tabel ‘ambilmk’. Sedangkan nama matakuliah ‘KALKULUS I’ yang digunakan sebagai syarat, kita dapatkan dari tabel ‘mk’. Jadi untuk query ini, kita butuh ketiga tabel semuanya.

Setelah itu, kembali lagi kita lihat gambar relasi ketiga tabel di atas. Tabel ‘mhs’ dan ‘ambilmk’ dihubungkan dengan field ‘nim’ yang ada pada keduanya. Sedangkan tabel ‘mk’ dan ‘ambilmk’ terhubung oleh field ‘kodemk’ yang juga ada pada keduanya. Nah… selanjutnya kita bisa membuat query SQL nya

SELECT mhs.nim, mhs.namamhs, ambilmk.nilai
FROM mhs, ambilmk, mk
WHERE mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk AND mk.namamk = 'KALKULUS I'; 

Perhatikan query SQL di atas, perintah “mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk” menunjukkan relasi ketiga tabel. Gunakan operator AND bila relasi tabelnya lebih dari 1 buah. Dan… kedua perintah relasi bisa dibolak-balik (“mk.kodemk = ambilmk.kodemk AND mhs.nim = ambilmk.nim”) karena sifat operasi AND adalah komutatif.

Hasil dari query tersebut adalah

Membuat relasi antar tabel pada database mysql

Trus… mungkin ada yang bertanya lagi… bagaimana jika query relasi tabelnya dijalankan di script PHP? Ya… caranya sama saja, Anda tinggal jalankan query SQL untuk relasi tabel di dalam script PHP nya. Dalam hal ini relasi tabel tetap ditentukan oleh query SQL nya.

Sebagai contoh, script PHP di bawah ini akan menampilkan hasil dari query terakhir di atas.

<?php

mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

$query = "SELECT mhs.nim, mhs.namamhs, ambilmk.nilai
          FROM mhs, ambilmk, mk
          WHERE mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk 
                AND mk.namamk = 'KALKULUS I'";
$hasil = mysql_query($query);

echo "<table border='1'>";
echo "<tr><td>NIM</td><td>Nama Mhs</td><td>Nilai</td></tr>";
while ($data = mysql_fetch_array($hasil))
{
   echo "<tr><td>".$data['nim']."</td><td>".$data['namamhs']."</td><td>".$data['nilai']."</td></tr>";
}
echo "</table>";

?>

dan hasilnya…

Membuat relasi antar tabel pada database mysql

Dengan demikian, saya ulangi lagi bahwa dalam hal ini relasi tabel dilakukan di dalam query SQL nya dan tidak di PHP nya. Script PHP hanya menjalankan query, memfetching data hasil query dan kemudian menampilkannya di browser.

OK… mudah-mudahan artikel ini bermanfaat bagi Anda yang sedang belajar merelasikan tabel dengan query SQL sekaligus menjalankannya di PHP.

Langkah langkah membuat relasi antar tabel?

Tahapan untuk membuat skema relasi antara lain:.
Klik tab Database Tools..
Klik Relationships..
Pada jendela Show Table, pilih nama tabel yang akan dibuat lalu klik Add. Lakukan proses tersebut berulang-kali sampai seluruh tabel yang akan dibuat skemanya muncul pada lembar Relationships..

Langkah langkah untuk membuat relasi antar tabel jika menggunakan phpMyAdmin?

Klik tab 'Designer' dan akan muncul tabel yang sebelumnya sudah kamu buat juga. Klik simbol 'Relasi' yang berbentuk seperti kabel penghubung, lalu klik 'Primery Key ' pada tabel yang ingin kamu hubungkan. Relasikan tabel tersebut dengan memilih 'Foreign Key' pada tabel kedua yang ingin kamu hubungkan.

Apa itu relasi pada MySQL?

Apa itu relasi pada MySQL? Relasi merupakan hubungan antara satu tabel dengan tabel yang lain, karena didalam suatu database terdapat tabel-tabel yang saling berelasi berdasarkan kunci utama (primary key) dengan kunci tamu atau kunci kandidat (foreign key).

Apa yang dimaksud dengan relasi antar tabel?

Mempunyai pengertian “Setiap baris data pada tabel pertama dihubungkan hanya ke satu baris data pada tabel ke dua”. Contohnya : relasi antara tabel mahasiswa dan tabel orang tua. Satu baris mahasiswa hanya berhubungan dengan satu baris orang tua begitu juga sebaliknya.