Random

MySQL membuat relasi tabel

Masih bermain dengan contoh yang kita gunakan dari awal yaitu database kios_kelontong di dalamnya akan kita buat dua tabel dan akan direlasikan. Dua tabel tersebut yaitu tabel “barang” dengan tabel “pemasok”

Kita pastikan dua tabel tersebut sudah terbentuk ya… caranya membuat tabel dapat dilihat catatan kita sebelumnya di sini.

MySQL [kios_kelontong]> desc barang;
 +-----------+-------------+------+-----+---------+-------+
 | Field     | Type        | Null | Key | Default | Extra |
 +-----------+-------------+------+-----+---------+-------+
 | CODE_BRG  | char(6)     | NO   | PRI | NULL    |       |
 | NAMA_BRG  | varchar(30) | NO   |     | NULL    |       |
 | HARGA_BRG | int(8)      | NO   |     | NULL    |       |
 | JUMLAH    | int(6)      | NO   |     | NULL    |       |
 | KODE_PMS  | char(6)     | NO   |     | NULL    |       |
 +-----------+-------------+------+-----+---------+-------+
 5 rows in set (0.131 sec)
 MySQL [kios_kelontong]> desc pemasok;
 +---------------+-------------+------+-----+---------+-------+
 | Field         | Type        | Null | Key | Default | Extra |
 +---------------+-------------+------+-----+---------+-------+
 | KODE_PMS      | char(6)     | NO   | PRI | NULL    |       |
 | NAMA_PMS      | varchar(40) | YES  |     | NULL    |       |
 | NOMOR_TLP_PMS | int(20)     | YES  |     | NULL    |       |
 +---------------+-------------+------+-----+---------+-------+
 3 rows in set (0.004 sec)

Tabel barang kita akan tambahkan foreign key yang menghubungkannya dengan table pemasok:

MySQL [kios_kelontong]> DESC BARANG;
 +-----------+-------------+------+-----+---------+-------+
 | Field     | Type        | Null | Key | Default | Extra |
 +-----------+-------------+------+-----+---------+-------+
 | CODE_BRG  | char(6)     | NO   | PRI | NULL    |       |
 | NAMA_BRG  | varchar(30) | NO   |     | NULL    |       |
 | HARGA_BRG | int(8)      | NO   |     | NULL    |       |
 | JUMLAH    | int(6)      | NO   |     | NULL    |       |
 | KODE_PMS  | char(6)     | NO   |     | NULL    |       |
 +-----------+-------------+------+-----+---------+-------+
 5 rows in set (0.028 sec)
 MySQL [kios_kelontong]> ALTER table BARANG 
                        ADD foreign key (KODE_PMS)
                        references pemasok(KODE_PMS);
 Query OK, 7 rows affected (2.253 sec)
 Records: 7  Duplicates: 0  Warnings: 0

Lihat lagi descripsi dari table barang :

MySQL [kios_kelontong]> desc barang;
 +-----------+-------------+------+-----+---------+-------+
 | Field     | Type        | Null | Key | Default | Extra |
 +-----------+-------------+------+-----+---------+-------+
 | CODE_BRG  | char(6)     | NO   | PRI | NULL    |       |
 | NAMA_BRG  | varchar(30) | NO   |     | NULL    |       |
 | HARGA_BRG | int(8)      | NO   |     | NULL    |       |
 | JUMLAH    | int(6)      | NO   |     | NULL    |       |
 | KODE_PMS  | char(6)     | NO   | MUL | NULL    |       |
 +-----------+-------------+------+-----+---------+-------+
 5 rows in set (0.066 sec)

Sudah terdapat “MUL” pada kolom key untuk field KODE_PMS berarti foreign key sudah terbentuk.

Dengan demikian kita sudah dapat menampilkan kombinasi field dari kedua table dalam satu tabel saja.

Sebagai contoh saya ingin tampilkan Nama Barang dengan Jumlah Barang pada tabel barang dan Nama Pemasok pada tabel pemasok :

MySQL [kios_kelontong]> select                                                          barang.NAMA_BRG,barang.JUMLAH,pemasok.NAMA_PMS
from barang,pemasok 
where barang.KODE_PMS=pemasok.KODE_PMS;
 +--------------+--------+------------------+
 | NAMA_BRG     | JUMLAH | NAMA_PMS         |
 +--------------+--------+------------------+
 | Sandal Jepit |     24 | Anugerah Lestari |
 | Sapu         |     20 | Cakrawala Indah  |
 | Sabun        |    100 | Gunung Mas       |
 | Chiki        |    100 | Tiga Serangkai   |
 | Korek Api    |     50 | Rumah Warna      |
 | Pensil       |     12 | Darma Bangsa     |
 | Penggaris    |     12 | Darma Bangsa     |
 +--------------+--------+------------------+
 7 rows in set (0.019 sec)

Leave a comment