kali ini kita akan mencoba membuat database sistem akademik untuk mahasiswa beserta table-tablenya dengan mysql
hal-hal yang di perlukan sebelum memulai perancangan database kali ini
aplikasi untuk menjalankan server mysql secar lokal [XAMPP,MAPP,WAMPP,Laragon,dll]
jika belum mengsintal salah satu aplikasinya silahkan install terlebih dahulu
silahkan buka cmd/terminal dan masuk ke mysql masing-masing
pertama buat databasenya dahulu,disini saya menamakan databasenya db_akademik kalian bisa menggunakan nama lainnya sesuka kalian
CREATE DATABASE db_akademik;
jika berhasil maka hasilnya Query OK, 1 row affected….
kemudian jalankan perintah `USE nama_database
` untuk masuk/memakai ke dalam databasenya
selanjutkan kita akan membuat tabel mahasiswa
CREATE TABLE `tb_mahasiswa` [ `nim` varchar[15] NOT NULL, `nama` varchar[50] NOT NULL, `alamat` varchar[100] NOT NULL, RIMARY KEY [`nim`] ];
tabel dosen
CREATE TABLE `tb_dosen` [ `id_dosen` varchar[20] NOT NULL, `nama` varchar[50] NOT NULL, `email` varchar[50] DEFAULT NULL, `id_mata_kuliah` varchar[10] DEFAULT NULL, RIMARY KEY [`id_dosen`] ];
tabel mata kuliah
CREATE TABLE `tb_mata_kuliah` [ `id_mata_kuliah` varchar[10] NOT NULL, `nama_mata_kuliah` varchar[50] NOT NULL, RIMARY KEY [`id_mata_kuliah`] ];
table kelas
CREATE TABLE `tb_kelas` [ `kode_kelas` VARCHAR[10] NOT NULL , `nama_kelas` VARCHAR[100] NOT NULL , `lokasi_kelas` VARCHAR[100] NULL DEFAULT NULL, PRIMARY KEY [`kode_kelas`] ]
table krs yang terelasi dengan table mata kuliah,mahasiswa,dan kelas
CREATE TABLE `tb_krs` [ `id` INT NOT NULL AUTO_INCREMENT, `id_mata_kuliah` VARCHAR[10] NOT NULL, `kode_kelas` VARCHAR[10] NOT NULL, `nim` VARCHAR[15] NOT NULL, `sks` INT[3] NOT NULL, `tahun` VARCHAR[10] NOT NULL, `semester` INT[3] NOT NULL, PRIMARY KEY [`id`], INDEX [`id_mata_kuliah`], INDEX [`kode_kelas`], INDEX[`nim`], FOREIGN KEY[nim] REFERENCES tb_mahasiswa [nim] ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY[id_mata_kuliah] REFERENCES tb_mata_kuliah [id_mata_kuliah] ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY[kode_kelas] REFERENCES tb_kelas [kode_kelas] ON DELETE RESTRICT ON UPDATE CASCADE ]
terakhir buat tabel nilai yang terelasi dengan tabel mata kuliah,dosen dan mahasiswa
CREATE TABLE tb_nilai[ id_nilai INT NOT NULL AUTO_INCREMENT, nim varchar[15], id_mata_kuliah varchar[10], id_dosen varchar[20], nilai INT not null, INDEX[nim], INDEX[id_mata_kuliah], INDEX[id_dosen], FOREIGN KEY[nim] REFERENCES tb_mahasiswa [nim] ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY[id_mata_kuliah] REFERENCES tb_mata_kuliah[id_mata_kuliah] ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY[id_dosen] REFERENCES tb_dosen[id_dosen] ON DELETE RESTRICT ON UPDATE CASCADE, PRIMARY KEY[id_nilai] ];
jika sudah semua dan tidak ada masalah dan error,jika ada kolom yang namanya tidak sesuai atau ada kolom yang kurang kita bisa mengubah/menambah kolom dengan perintah ALTER
alter table untuk me-rename atau mengubah nama kolom
ALTER TABLE "nama_tabel" Change "kolom_lama" "kolom_baru" VARCHAR[30];
alter table untuk menambah kolom
ALTER TABLE nama_tabel ADD nama_kolom INT;
kita bisa lanjut untuk mengisi data di setiap tabelnya
tabel mahasiswa
INSERT INTO `tb_mahasiswa` [`nim`, `nama`, `alamat`] VALUES ['193001', 'Muhammad Amir', 'Samarinda'], ['194001', 'Samsul Kurnia', 'Bontang'], ['194002', 'Bambang Arifin', 'Sangata'];
tabel dosen
INSERT INTO `tb_dosen` [`id_dosen`, `nama`, `email`, `id_mata_kuliah`] VALUES ['1001', 'Andri Basuki', '', 'MK001'], ['1003', 'zulfikar', '', 'MK004'], ['1004', 'yudi', '', NULL], ['1102', 'Annisa Fitria', '', 'MK002'];
tabel mata kuliah
INSERT INTO `tb_mata_kuliah` [ `id_mata_kuliah`, `nama_mata_kuliah` ] VALUES ['MK001', 'Sistem Basis Data'], ['MK002', 'Pemograman Berorientasi Objek'], ['MK003', 'Bahasa Inggris'], ['MK004', 'Algoritma Pemograman'];
table kelas
INSERT INTO `tb_kelas` [ `kode_kelas`, `nama_kelas`, `lokasi_kelas` ] VALUES [ 'SIS1J', 'Reguler A', 'Gedung Belakang' ];
pastikan tidak ada error dan masalah
jika kalian memasukan data yang salah dan ingin mengbahnya bisa menggunakan perintah UPDATE
contoh :
UPDATE `tb_mahasiswa` SET `nama`="nama baru" WHERE `nim`="193001";
Untuk menghapus data bisa menggunakan perintah DELETE
DELETE FROM `tb_mahasiswa` WHERE `nim`="193001";
kemudian kita akan mencoba mengisi tabel nilai,di karenakan tabel nilai memiliki 3 foreign key yang artinya saat mengisi/memasukan nilainya harus sesuai dengan tabel-tabel yang terelasi dengannya
INSERT INTO `tb_nilai` [ `id_nilai`, `nim`, `id_mata_kuliah`, `id_dosen`, `nilai` ] VALUES [1, '193001', 'MK001', '1001', 7];
193001 di ambil dari tabel tb_mahasiswa
MK001 di ambil dari tabel tb_mata_kuliah
1001 di ambil dari tabel tb_dosen
jika berhasil tanpa masalah dan error maka data nilai akan terinput,kalian bisa menginput lagi data tersebut
kita lihat data tersebut menggunakan perintah “SELECT * FROM tb_nilai” hasilnya kira-kira akan seperti ini
tidak ada yang salah dengan hasil di atas namun jika kita sebagai user tentunya informasi tersebut masih kurang lengkap,kita perlu menampilkan sesuai kebutuhan user misalnya jika user ingin melihat nilai beserta nama mahasiswa,nama mata kuliah serta nama dosennya
untuk itu di mysql ada beberapa perintah yang bisa di pakai untuk melakukan hal ini
yang pertama kita bisa mengabungkan 2 tabel atau lebih dengan menggunakan WHERE berdasarkan foreign keynya
SELECT tb_mahasiswa.nama, tb_mata_kuliah.nama_mata_kuliah, tb_nilai.nilai from tb_nilai, tb_mahasiswa, tb_mata_kuliah WHERE tb_nilai.nim = tb_mahasiswa.nim AND tb_nilai.id_mata_kuliah = tb_mata_kuliah.id_mata_kuliah;
maka hasilnya akan seperti ini
yang kedua kita bisa menggunakan JOIN ,perintah JOIN memiliki 3 jenis yaitu INNER JOIN,LEFT JOIN,RIGHT JOIN info lengkapnya bisa di lihat disini
contoh menggunakan INNER JOIN
SELECT tb_mahasiswa.nama, tb_mata_kuliah.nama_mata_kuliah, tb_nilai.nilai from tb_nilai INNER JOIN tb_mahasiswa ON tb_nilai.nim = tb_mahasiswa.nim INNER JOIN tb_mata_kuliah ON tb_nilai.id_mata_kuliah = tb_mata_kuliah.id_mata_kuliah;
berikurnya kita akan mengisi table krs
INSERT INTO `tb_krs` [ `id`, `id_mata_kuliah`, `kode_kelas`, `nim`, `sks`, `tahun`, `semester` ] VALUES [ NULL, 'MK001', 'SIS1J', '193001', '3', '2019/2020', '2' ];
sama halnya dengan table nilai kita akan menampilkan krs kita beserta nama mata kuliah dan nama kelas menggunakan INNER JOIN
SELECT tb_mata_kuliah.id_mata_kuliah, tb_mata_kuliah.nama_mata_kuliah, tb_krs.sks, tb_kelas.kode_kelas FROM tb_krs INNER JOIN tb_kelas ON tb_kelas.kode_kelas = tb_krs.kode_kelas INNER JOIN tb_mata_kuliah ON tb_krs.id_mata_kuliah = tb_mata_kuliah.id_mata_kuliah
mari kita tambah beberapa data lagi di table krs
INSERT INTO `tb_krs` [ `id`, `id_mata_kuliah`, `kode_kelas`, `nim`, `sks`, `tahun`, `semester` ] VALUES [ NULL, 'MK002', 'SIS1J', '193001', '3', '2019/2020', '2' ], [ NULL, 'MK003', 'SIS1J', '193001', '3', '2019/2020', '2' ], [ NULL, 'MK004', 'SIS1J', '193001', '3', '2019/2020', '2' ], [ NULL, 'MK002', 'SIS1J', '194001', '3', '2019/2020', '2' ], [ NULL, 'MK002', 'SIS1J', '194001', '3', '2019/2020', '2' ], [ NULL, 'MK003', 'SIS1J', '194001', '3', '2019/2020', '2' ], [ NULL, 'MK004', 'SIS1J', '194001', '3', '2019/2020', '2' ];
kita kan menampilkan data dengan inner join dan berdasarkan nim serta di urutkan berdasarkan nama mata kuliah
SELECT tb_mata_kuliah.id_mata_kuliah, tb_mata_kuliah.nama_mata_kuliah, tb_krs.sks, tb_kelas.kode_kelas FROM tb_krs INNER JOIN tb_kelas ON tb_kelas.kode_kelas = tb_krs.kode_kelas INNER JOIN tb_mata_kuliah ON tb_krs.id_mata_kuliah = tb_mata_kuliah.id_mata_kuliah WHERE tb_krs.nim = '193001' ORDER BY tb_mata_kuliah.nama_mata_kuliah ASC
ok untuk kali ini itu saja kalian bisa mengombenasikannya dengan query-query lain agar mendapatkan data yang kalian inginkan
kalian bisa belajar query-query lainnya disini