ZMedia Purwodadi

Cara Membuat Sistem Basis Data (Informasi Akedemik)

Daftar Isi

Membuat Database

Hallo, selamat datang di blog www.antra.web.id, pada kali ini kami akan membuat sebuah artikel untuk membahas sistem basis data, normalisasi dan cara normalisasi database (proyek tugas kelompok) yang telah kami normalisasikan, dan informasi (output) yang akan ditampilkan. Langsung saja simak artikel berikut ini:

 

Apa Itu Sistem Basis Data

 

Sistem basis data adalah sebuah kumpulan data yang berstruktur dan disimpan secara elektronika dalam computer, yang dapat digunakan untuk mengolah dan menganalisis data. Komponen utama dari sistem basis data meliputi:

1. Data: informasi yang disimpan, seperti teks, gambar, suara, file, dan berbagai jenis data lainnya

2. Perangkat Lunak: Sistem manajemen basis data (DBMS), seperti Mysql, PostgreSQL, mariaDb, MonggoDB, Oracle Databases, dan Bahasa kueri, seperti SQL.

 

Apa Itu Normalisasi

 

Normalisasi database adalah proses mengorganisasikan data dalam suatu basis data untuk mengurangi redundansi dan meningkatkan integritas data. Proses ini mencakup pembersihan atau pengaturan data sehingga dapat dibuat dan terstruktur dengan baik sesuai standar. Untuk mengurangi duplikasi data dan memudahkan pemeliharaan, normalisasi memecah tabel besar menjadi tabel yang lebih kecil. Tujuan lain dari proses ini adalah untuk memastikan bahwa informasi yang disimpan dalam tabel dapat dengan mudah diakses, diubah, dan diperbarui tanpa menimbulkan inkonsistensi.

 

Dalam basis data, terdapat beberapa tingkatan tahapan normalisasi. Tahapan dalam normalisasi data umunya terdiri dari 1NF sampai 3NF. Berikut merupakan pembahasan dari 1NF hingga 3NF.

1.    1NF

Suatu tabel dikatakan 1NF jika dan hanya jika setiap atribut dari data tersebut hanya memiliki nilai tunggal dalam satu baris. Inti dari normalisasi 1NF adalah tidak boleh ada grouping data ataupun duplikasi data.

2.    2NF

Syarat untuk menerapkan normalisasi bentuk kedua ini adalah data telah dibentuk dalam 1NF, berikut adalah beberapa fungsi normalisasi 2NF.

a.    Menghapus beberapa subset data yang ada pada tabel dan menempatkan mereka pada tabel terpisah.

b.    Menciptakan hubungan antara tabel baru dan tabel lama dengan menciptakan foreign key.

c.     Tidak ada atribut dalam tabel yang secara fungsional bergantung pada candidate key tabel tersebut.

3.    3NF

Pada 3NF tidak diperkenankan adanya partial “transitive dependency“ dalam sebuah tabel. Transitive dependency biasanya terjadi pada tabel hasil relasi, atau kondisi dimana terdapat tiga atribut A, B, C. Kondisinya adalah A B dan B C. Maka C dikatakan sebagai transitive dependency terhadap A melalui B. Intinya pada 3NF ini, jika terdapat suatu atribut yang tidak bergantung pada primary key tapi bergantung pada field yang lain maka atribut-atribut tersebut perlu dipisah ke tabel baru.

Pendahuluan

Untuk memastikan bahwa aplikasi yang dibuat memenuhi kebutuhan pengguna dan berfungsi dengan baik, tahapan yang diperlukan dalam pengembangan aplikasi harus dilakukan secara teratur. Salah satu kasus nyata yang sering terjadi adalah fitur yang belum digunakan pada aplikasi, ini terlihat pada widget dalam sistem informasi akademik mahasiswa yang disebut "Under Development". Permasalahan ini menunjukkan betapa pentingnya perencanaan dan pengembangan fitur dengan tahapan yang jelas.

Rumusan Masalah

Permasalahan yang akan di bahas pada web SATU USU pada menu Beranda

1.   Kelayakan masalah untuk diselesaikan

2.   Hal yang menjadi masalah pada web SATU USU pada menu beranda dan pemberian solusi terhadap masalah

3.   Desain ERD dari solusi untuk mengatasi masalah

4.   Mengolah data yang didapat

5.   Membuat database

6.   Menggunakan query untuk mengakses

Tujuan

Tujuan dari diskusi kami adalah

1.   Membahas 3 tahapan awal dalam pengembangan aplikasi yaitu Feasibility, Analysis, dan Design

2.   Mengaitkan 3 tahapan awal tersebut pada permasalahan fitur yang belum ada pada beranda mahasiswa

3.   Memberikan solusi pada masalah menggunakan ERD

4.   Melakukan olah data dan analisis terhadap data yang ada

5.   Menggunakan query untuk mengelola, mengambil, dan mengakses data dari database

Permasalahan

Projek kami adalah menganalisa masalah yang ada pada bagian Beranda web SATU USU. Di sini kami menemukan masalah yaitu bagian Mata Kuliah Diambil pada bagian Beranda hanya memunculkan widget “Under Development”, Di sini kami mengangkat masalah ini dan akan meperbaiki masalah ini dengan database yang telah dirancang. berikut dibawah ini merupakan gambar yang kami jadikan permasalahan:

Bagian Yang Menjadi Permasalahan
 

Feasibility

Mengevaluasi kelayakan pengembangan fitur daftar mata kuliah yang diambil oleh mahasiswa pada beranda mahasiswa

a.   Kelayakan Biaya (costs) sangat layak dikarenakan untuk mengakses database hanya perlu menambahkan entity

b.   Kelayakan waktu (schedule) sangat layak dikarenakan hanya membutuhkan waktu 5 hari

 

Analysis

Masalah yang didapat pada kasus mata kuliah diambil, yaitu widget "Under Development", yang mana seharusnya bagian ini menampilkan informasi terkait mata kuliah yang telah diambil oleh mahasiswa

Didapatkan solusi di mana pada bagian mata kuliah diambil akan ditampilkan beberapa informasi mengenai mata kuliah dan menjadikannya entity pada database seperti Mahasiswa (User Entity), Mata Kuliah (Matkul Entity), dan Relasi Mahasiswa dan Matkul (Get_Matkul Entity).

 

Design

Tim pengembang mulai mendefinisikan struktur database, hubungan antar data, antarmuka pengguna (UI), serta alur kerja aplikasi (workflow)

Desain sistem meliputi beberapa elemen pada kasus widget "Under Development"

a.  Desain database, disini akan merancang tabel yang akan menyimpan informasi mata kuliah yang telah diambil oleh mahasiswa

b.  Relasi antar entitas, disini akan menentukan relasi antara entitas mahasiswa dengan mata kuliah yang diambilnya.

c.  Desain antarmuka, dimana akan merancang tampilan daftar mata kuliah yang diambil oleh mahasiswa akan ditampilkan dengan jelas dan mudah diakses.


Cara Menormalisasikan Database

Berikut merupakan terdapat table awal yang belum kami normalisasikan. Dan akan kami normalisasikan.

Gambar 1.1 Tabel awal

 

Normalisasi 1NF

Agar suatu table dalam bentuk normal yang pertama, table tersebut harus memebuhi kriteria berikut ini.

1.    Satu sel tunggal tidak boleh menampung lebih dari satu nilai

2.    Harus ada kunci utama untuk identifikasi

3.    Tidak ada baris atau kolom yang duplikasi

Berikut merupakan hasil dari normalisasi 1NF kami.

Gambar 1.2 Normalisasi 1NF

Table tersebut sudah memenuhi kriteria normalisai 1NF. Setiap sel hanya berisi satu nilai, seperti NIM, nama mahasiswa, kode_mk, matakuliah, nama dosen, dan sebagainya.

 

Normalisasi 2NF

Suatu table dikatakan berada dalam 2NF jika memenuhi kriteria berikut ini.

1.    Sudah ada di 1NF

2.    Tidak memiliki ketergantungan persial, yang berarti semua atribut yang bukan kunci bergantung sepenuhnya pada kunci utama.

 

Gambar 1.2   Normalisasi 2NF

 

Pada table ini, kunci primary key yang digunakan adalah kode_mk. Tabel ini sudah memenuhi 2NF karena tidak ada ketergantungan parsial. Semua atribut ( mk_diambil, semester, jumlah_sks) sepenuhnya bergantung pada kunci utama kode_mk .

 

Gambar 1.3 Normalisasi 2NF

Pada tabel ini, nim adalah kunci primary key. Nama bergantung sepenuhnya pada nim. Tidak ada ketergantungan parsial, karena tabel ini memiliki kunci primer tunggal ( nim).

 


Gambar 1.4 Normalisasi 2NF

 

dosen, ruangan, dan jadwal bergantung sepenuhnya pada kombinasi kode_mk dan kelas. Tidak ada ketergantungan pada sebagian dari primary key (kode_mk atau kelas saja), sehingga tidak ada atribut yang harus dipisah untuk menghilangkan ketergantungan parsial.

 

Gambar 1.5 Normalisasi 2NF

 

Pada table ini, nim dan kode_mk membentuk composite primary key karena kombinasi keduanya digunakan untuk mengidentifikasi satu baris secara unik dan setiap mahasiswa (nim) bisa mengambil lebih dari satu mata kuliah (kode_mk), sehingga hanya nim atau kode_mk saja tidak cukup untuk menjadi primary key. Setiap atribut (dalam hal ini kode_mk) bergantung sepenuhnya pada composite primary key (nim + kode_mk). Tidak ada ketergantungan parsial.

 

Normalisasi 3NF

Suatu table berada dalam 3NF, jika memenuhi kriteria berikut ini

1.    Berada di 2NF

2.    Tidak memiliki ketergantungan parsial transitif

Ini berarti atribut non-prime (atribut yang bukan bagian dari kunci kandidat) bergantung pada atribut non-prima lainnya dihilangkan oleh bentuk normal ketiga (3NF)

 

Gambar 1.6 Normalisasi 3NF

 

Tidak ada ketergantungan transitif antara atribut non-prime. Artinya atribut seperti ruangan dan jadwal hanya bergantung langsung pada primary key (kode_mk dan k) dan tidak bergantung pada atribut non-prime lainnya. Mengurangi rendundasi, contohnya, mata kuliah TIF 1 003 untuk kelas 1A hanya memiliki satu lokasi (B-305) dan satu jadwal (Rabu 11.00-11.50).

 

Gambar 1.7 Normalisasi 3NF

 

Tidak ada ketergantungan transitif pada tabel ini karena dosen hanya bergantung langsung pada primary key (dosen_id) dan tidak ada atribut non-prime lain yang bergantung pada dosen. Dengan adanya primary key (dosen_id), data lebih konsisten dan valid. Tidak mungkin terjadi duplikasi data untuk satu dosen.

 

Gambar 1.8 Normalisasi 3NF

Data tidak menunjukkan adanya ketergantungan fungsional yang jelas antara atribut-atribut non-kunci. Kombinasi kode_mk menunjukkan kunci utama.

Nah, tahap normalisasi sudah dilakukan, Langkah selanjutnya adalah pembuatan databasenya, sediakan kopi! Dan baca terus artikel dibawah ini:

Cara Membuat Database

Pada tahap pembuatan database ini, dapat menggunakan terminal /pun dapat mengakses secara langsung database phpmyadminnya: pada tutorial ini kami menggunakan terminal dan kueri sql. Berikut ini merupakan kueri SQL untuk membuat semua databasenya:

 

-- Membuat database

CREATE DATABASE informasi_home;

USE informasi_home;

-- Membuat tabel `tabledosen`

CREATE TABLE `tabledosen` (

  `dosen_id` varchar(512) NOT NULL,

  `dosen` varchar(512) DEFAULT NULL,

  PRIMARY KEY (`dosen_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Membuat tabel `tablematkul`

CREATE TABLE `tablematkul` (

  `kode_mk` varchar(512) NOT NULL,

  `kelas` varchar(512) DEFAULT NULL,

  `ruangan` varchar(512) DEFAULT NULL,

  `jadwal` varchar(512) DEFAULT NULL,

  PRIMARY KEY (`kode_mk`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Membuat tabel `user`

CREATE TABLE `user` (

  `Nim` int(12) NOT NULL,

  `Nama` varchar(225) NOT NULL,

  `password` varchar(225) NOT NULL,

  PRIMARY KEY (`Nim`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Membuat tabel `tablelengkap` dengan foreign key

CREATE TABLE `tablelengkap` (

  `kode_mk` varchar(512) DEFAULT NULL,

  `mk_diambil` varchar(512) DEFAULT NULL,

  `semester` varchar(512) DEFAULT NULL,

  `jumlah_sks` varchar(512) DEFAULT NULL,

  `dosen_id` varchar(512) DEFAULT NULL,

  `user_nim` int(12) NOT NULL,

  KEY `matkul_fk` (`kode_mk`),

  KEY `dosen_fk` (`dosen_id`),

  KEY `user_fk` (`user_nim`),

  CONSTRAINT `matkul_fk` FOREIGN KEY (`kode_mk`) REFERENCES `tablematkul` (`kode_mk`),

  CONSTRAINT `dosen_fk` FOREIGN KEY (`dosen_id`) REFERENCES `tabledosen` (`dosen_id`),

  CONSTRAINT `user_fk` FOREIGN KEY (`user_nim`) REFERENCES `user` (`Nim`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

 

Setelah menggunakan kueri sql diatas, anda akan secara otomatis mendapatkan / membuat sebuah database berdasarkan perintah diatas! Berikut ini merupakan hasil dari pembuatan database dengan perintah kueri sql diatas dan akan menjadi seperti bentuk erd yang telah diselesaikan tahap normalisasi diatas.

ERD hasil dari normalisasi

Report Output

Nah, setelah semua selesai dibuat mulai dari normalisasi, database. Sekarang waktunya masuk ke output / informasi apa yang ingin ditampilkan dari database tersebut!! Berikut ini merupakan kueri sql untuk menampilkan informasi yang telah kami butuhkan:

SELECT tl.kode_mk, tl.mk_diambil, tl.semester, tl.jumlah_sks, tm.ruangan, tm.jadwal, td.dosen

    FROM tablelengkap tl

    JOIN tabledosen td ON tl.dosen_id = td.dosen_id

    JOIN tablematkul tm ON tl.kode_mk = tm.kode_mk

    WHERE tl.user_nim = 231712001    

 

Berikut ini merupakan output hasil dari perintah kueri diatas:

 

Ouput Kueri Diatas

Nah, Diatas merupakan output dari menampilkan informasi berupa matkul yang diambil, data semester matkul, jumlah sks, ruangan, jadwal dan dosen. Kueri Diatas menampilkan data berdasarkan NIM. 

Jika ingin melihat langsung output yang dikeluarkan melalui platform website...bisa langsung membuka halaman ini: https://tugas-sbd.vercel.app/ (Data/output yang di tampilkan berbeda dengan versi dari normalisasi) 

Solusi yang kami berikan merupakan sebuah informasi yang kami tampilkan seperti gambar di bawah ini:

Solusi yang kami berikan seperti gambar ini

diatas merupakan sebuah report / hasil output sekaligus solusi yang kami berikan terhadap permasalahan yang kami angkat mengenai kalimat atau widget "Under Development" yang gambar sebelumnya seperti dibawah ini:

Widget Matkul
Nah, widget diatas merupakan permasalahan yang kami angkat, dan solusinya seperti gambar sebelumnya.


Baik, sekian dari tutorial / pembahasan pada artikel ini, jika terdapat kalimat, atau tutur Bahasa yang kurang dipahamin kami mohon maaf.  Semoga bermanfaat!!

Posting Komentar