Cara membuat Tabel dan Relasinya pada MySQL

Sumber: Unsplash

Pada pembahasan kali ini penulis akan membahas perintah create untuk membuat tabel di mysql namun sebelum membahas lebih jauh tentang cara membuat tabel dan relasinya di MySQL dalam hal ini penulis menanggap bahwa kalian sudah memahami tentang tipe data, constraint dan key sehingga kalian dapat menentukan constraint dan properti yang dibutuhkan pada setiap kolom yang kalian buat. Format/sintaks untuk membuat tabel di mysql adalah sebagai berikut:

create table [if not exists] nama_tabel (
kolom_1 definition, 
kolom_2 definition, 
KolomN definition) engine = "engine name" [default] {charset = "charset name"} {collate = "collate name"};

Dari format diatas, kita dapat menggunakan tambahan perintah if not exists untuk mencegah pesan error muncul ketika membuat tabel dengan nama yang sama dari yang sudah ada namun tidak akan memberikan dampak apapun pada tabel yang sudah selain hanya mencegah pesan error muncul, selain itu setiap nama tabel pada mysql haruslah unique yang artinya tidak boleh sama. Sementara format/sintaks untuk mendefinisikan kolomnya adalah sebagai berikut:

nama_kolom tipe_data(length) [not null] [default value] [auto_increment] constraint_kolom;
  • nama_kolom merupakan nama dari kolom pada tabel. Setiap kolom memiliki tipe data dan panjang nilai contohnya varchar(255)
  • constraint not null memastikan bahwa kolom tidak boleh NULL (kosong).
  • default menunjukan untuk memberikan nilai default pada kolom
  • auto_increment mengindikasikan bahwa nilai pada kolom akan bertambah satu secara otomatis ketika menginputkan data baru kedalam tabel dan hanya satu kolom pada setiap tabel yang dapat diberikan auto_increment
Contohnya seperti berikut ini:

mysql> create table latihan1 (kolom_1 int auto_increment primary key, kolom_2 varchar(25) default "Coba", kolomN date not null);
Query OK, 0 rows affected (0.30 sec)

mysql> desc latihan1;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| kolom_1 | int         | NO   | PRI | NULL    | auto_increment |
| kolom_2 | varchar(25) | YES  |     | Coba    |                |
| kolomN  | date        | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)

mysql> create table if not exists latihan1 (kolom_2 int auto_increment primary key, kolom_1 varchar(25) default "Coba", kolomN date not null);
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> desc latihan1;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| kolom_1 | int         | NO   | PRI | NULL    | auto_increment |
| kolom_2 | varchar(25) | YES  |     | Coba    |                |
| kolomN  | date        | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
3 rows in set (0.08 sec)

mysql> create table if not exists latihan2 (kolom_1 int, kolom_2 varchar(25), kolomN date) engine = innodb default charset = utf8mb4 collate = utf8mb4_general_ci;
3 rows in set (0.13 sec)

Dari contoh diatas penggunaan opsi if not exists tidak memberikan dampak apapun selain hanya mencegah pesan error muncul saat membuat tabel dengan nama yang sudah ada dan tidak akan mengganti/merubah tabel yang sudah ada sebelumnya, selain itu, kita juga dapat menambahkan opsi tambahan untuk memberikan karakteristik pada tabel. Contoh diatas adalah bagaimana membuat sebuah tabel sementara biasanya pada mysql tabel-tabel tersebut memiliki relasi dengan tabel lainnya, maka berikut ini adalah cara membuat relasi tabel di mysql.

Membuat Tabel dengan Foreign Key
Dalam membangun relasi antar tabel di mysql dibutuhkan key yakni primary dan foreign key sehingga tabel dengan foreign key yang disebut sebagai child tabel dapat mengambil referensi data dari tabel parent, contoh seperti berikut ini:

mysql> create table dosen (id_dosen int primary key auto_increment, nid char(8), nama varchar(65), j_kel ENUM("L", "P"), t_lahir date, alamat varchar(45), kota varchar(45), telepon varchar(45), email varchar(45)) engine = innodb default charset = utf8mb4 collate = utf8mb4_general_ci;
Query OK, 0 rows affected (0.27 sec)

mysql> create table gaji (id_gaji int auto_increment, dosen_id int, kontrak varchar(9), gaji_poko varchar(15), tunjangan varchar(15), lembur varchar(15), primary key (id_gaji), foreign key (dosen_id) references dosen (id_dosen))  engine = innodb default charset = utf8mb4 collate = utf8mb4_general_ci;
Query OK, 0 rows affected (0.13 sec)

Dari contoh sintaks diatas saat mendifinisikan primary key kita bisa melakukannya di awal atau setelah mendinifisikan kolom sedangkan untuk foreign key hanya bisa dilakukan setelah mendefinisikan kolom, atau cara lainnya adalah dengan perintah alter namun pembahasan tersebut tidak akan dibahas pada artikel kali ini, untuk lebih lengkapnya dapat dilihat pada menu daftar isi belajar mysql. References pada foreign key mengacu pada tabel parent sebagai referensi data yang dihubungkan pada kolom dengan primary key dari tabel parent, maka dari sini kita telah membangun relasi antar tabel dosen dengan gaji.

Lalu, apa fungsinya relasi tersebut?

Berdasarkan skema tabel diatas, simak isi tabel berikut:

Data pada tabel dosen

 mysql> select * from dosen;
+----------+----------+--------------------+-------+------------+------------+---------+------------+-----------------+
| id_dosen | nid      | nama               | j_kel | t_lahir    | alamat     | kota    | telepon    | email           |
+----------+----------+--------------------+-------+------------+------------+---------+------------+-----------------+
|        1 | 12345678 | Ronaldo Christiano | L     | 1977-02-13 | Jl Buntu 1 | Jakarta | 0812345678 | cr77@mail.com   |
|        2 | 13345678 | David Beckham      | L     | 1977-02-13 | Jl Buntu 2 | Jakarta | 0812345672 | dvb712@mail.com |
+----------+----------+--------------------+-------+------------+------------+---------+------------+-----------------+
2 rows in set (0.00 sec)

Data pada tabel gaji

 mysql> select * from gaji;
+---------+----------+-----------+------------+-----------+--------+
| id_gaji | dosen_id | kontrak   | gaji_pokok | tunjangan | lembur |
+---------+----------+-----------+------------+-----------+--------+
|       1 |        1 | 2012/2022 | 8100000    | 150000    | 125000 |
|       2 |        2 | 2012/2022 | 9100000    | 155500    | 125200 |
+---------+----------+-----------+------------+-----------+--------+
2 rows in set (0.00 sec)

Tabel yang baik adalah tabel yang tidak terlalu memiliki banyak kolom dalam satu tabel karena selain dapat mempengaruhi performa ketika data yang disimpan cukup banyak juga mengurangi redudansi data maka dibuatlah tabel relasi untuk mengatasi hal tersebut. Dari contoh diatas tabel dosen dapat mengakses tabel gaji dan begitu juga sebaliknya sehingga menghasilkan informasi atau data baru dimana biasanya menggunakan perintah join, seperti contoh berikut ini:

 mysql> select dosen.nid as NID, dosen.nama as Nama, gaji.gaji_pokok as Gaji from dosen inner join gaji on dosen.id_dosen=gaji.dosen_id;
+----------+--------------------+---------+
| NID      | Nama               | Gaji    |
+----------+--------------------+---------+
| 12345678 | Ronaldo Christiano | 8100000 |
| 13345678 | David Beckham      | 9100000 |
+----------+--------------------+---------+
2 rows in set (0.00 sec)

Sampai disini pembahasan membuat tabel dan relasi pada mysql telah selesai, untuk mencari pembahasan lainnya dapat dilihat melalui halaman daftar isi serta jangan sungkan untuk bertanya jika masih ada hal yang belum dapat dipahami.
Bayu Radityo

Seorang lulusan teknik informatika yang senang dalam berbagi ilmu pengetahuan, dan membuat karya digital berupa photomanipulation dan digital drawing. instagram external-link

Posting Komentar

Lebih baru Lebih lama