0

Relasi Antar Tabel

Jumat, 03 Agustus 2012


Relasi Antar Tabel

Pada saat melakukan normalisasi terhadap sebuah data, maka data akan dipecah kedalam beberapa tabel yang berelasi satu sama lainnya. Ada 3 relasi antar table sebagai berikut.

One-to-one Satu-ke-satu

Relasi one-to-one merupakan relasi tabel yang jarang digunakan, relasi ini merelasikan satu data sebuah tabel dengan hanya satu data dari tabel lainnya. Indikasi untuk menggunakan tipe relasi ini adalah jika sebuah data memiliki sebuah subset data tertentu yang menerangkan lebih detil data itu, dimana subset data ini tidak dimiliki oleh data tersebut pada umumnya. Sebagai contoh, sebuah product secara umum memiliki id_produk, nama, harga, jenis. Namun pada tipe product tertentu seperti buku, memiliki data tambahan seperti penulis, penerbit, ISBN, tanggal_terbit. Satu data di tabel product hanya terhubung dengan satu data di tabel buku. Jika digambarkan seperti di bawah.
one-to-one1.png

One-to-many Satu-ke-banyak

Relasi one-to-many adalah relasi antar dua tabel dimana satu data (record) dari Tabel 1 bisa terhubung dengan beberapa record di Tabel 2. Misalnya penjualan memiliki id_penjualan, tanggal_jual, kasir. Setiap penjualan bisa terhubung dengan banyak item_penjualan. item_penjualan memilikiid_item,id_penjualan, id_produk, jumlah, harga_jual. Jika digambarkan seperti:
one-to-many.png

Many-to-many Banyak-ke-Banyak

Relasi many-to-many merupakan relasi yang paling kompleks, karena diperlukan tabel lain untuk menghubungkan dua tabel data yang saling berkepentingan. Seperti halnya penjualan bisa terhubung (berkepentingan) dengan banyak product, dan product bisa terhubungan dengan banyak penjualan. Tabel penjualan dan product memiliki relasi banyak ke banyak yang dihubungkan oleh tabel item_penjualan. Contoh lain adalah dosen bisa memiliki banyak mahasiswa dan mahasiswa bisa memiliki banyak dosen. Relasi banyak ke banyak antara dosen dan mahasiswa memerlukan tabel lain, sebut saja tabel mahasiswa_dosen. Jika digambarkan seperti di bawah.
many-to-many.png

Menyimpan Data ke Beberapa Tabel

Seperti dijelaskan sebelumnya tidak ada cara khusus untuk menyimpan data ke beberapa tabel. Berikut adalah cara menyimpan data ke beberapa tabel berdasarkan tipe relasi tabel.

Menyimpan Data ke Tabel Berelasi Satu-ke-satu

Disini akan diambil contoh seperti contoh di atas, menyimpan produk dengan tipe buku. Pertama buat html form dengan kode di bawah.
  1. <form name="form1" action="simpan.php" method="post">
  2. <dl>
  3. <dt>Nama</dt>
  4. <dd><input type="text" name="nama"/></dd>
  5. <dt>Harga</dt>
  6. <dd><input type="text" name="harga"/></dd>
  7. <dt>Jenis</dt>
  8. <dd>
  9. <select name="jenis">
  10. <option value="BUKU">Buku</option>
  11. </select>
  12. </dd>
  13. <dt>Penulis</dt>
  14. <dd><input type="text" name="penulis"/></dd>
  15. <dt>Penerbit</dt>
  16. <dd><input type="text" name="penerbit"/></dd>
  17. <dt>ISBN</dt>
  18. <dd><input type="text" name="isbn"/></dd>
  19. <dt>Tanggal Terbit</dt>
  20. <dd><input type="text" name="tgl_terbit"/></dd>
  21. <dt></dt>
  22. <dd><input type="submit" value="Simpan"/></dd>
  23. </dl>
  24. </form>
Simpan kode di atas dengan nama form.php, kemudian buat file simpan.php untuk menyimpan data ke tabel product dan tabel buku, dengan kode di bawah.
  1. <?php
  2. if($_POST){
  3. $conn = mysql_connect("localhost","root","");
  4. mysql_select_db("test",$conn);
  5. //menyimpan ke table product
  6. $sql = "insert into product (nama,harga,jenis) values ('{$_POST['nama']}','{$_POST['harga']}','{$_POST['jenis']}')";
  7. mysql_query($sql) or die('Gagal menyimpan produk');
  8. //mencari id produk
  9. $sql = "select max(id_produk) as last_id from product limit 1";
  10. $hasil = mysql_query($sql);
  11. $row = mysql_fetch_array($hasil);
  12. $lastId = $row['last_id'];
  13. //menyimpan data buku ke table buku
  14. $sql = "insert into buku (id_produk,penulis,penerbit,isbn,tgl_terbit)
  15. values ('$lastId','{$_POST['penulis']}','{$_POST['penerbit']}','{$_POST['isbn']}','{$_POST['tgl_terbit']}')";
  16. mysql_query($sql) or die('Gagal menyimpan data buku');
  17. echo 'data tersimpan';
  18. }

0 Responses to "Relasi Antar Tabel"