Panduan Lengkap Normalisasi Database: UNF, 1NF, 2NF, 3NF, Hingga BCNF dan ERD
Langkah-Langkah Merancang Database dari Universal hingga BCNF Lengkap dengan Studi Kasus dan ERD
Dalam dunia pengembangan aplikasi, perancangan database yang baik sangat krusial untuk menjaga konsistensi data, menghindari duplikasi, dan meningkatkan performa sistem. Salah satu pendekatan penting dalam merancang database adalah melalui normalisasi, yaitu proses mengorganisasi struktur tabel agar efisien dan bebas dari inkonsistensi.
Artikel ini akan membahas langkah-langkah perancangan database mulai dari Universal Form hingga Boyce-Codd Normal Form (BCNF), disertai studi kasus dan ERD berdasarkan struktur database sekolah sederhana.
Penjelasan Istilah-Istilah dalam Normalisasi Database
Sebelum kita masuk ke pembahasan utama, berikut adalah penjelasan singkat istilah penting yang akan digunakan:
- Database: Sekumpulan data yang tersimpan secara sistematis dan dapat diakses oleh sistem komputer.
- Tabel (Table): Struktur dasar dalam database yang menyimpan data dalam bentuk baris dan kolom.
- Atribut (Attribute): Kolom dalam tabel, menggambarkan jenis data tertentu (contoh: nama, tanggal lahir).
- Primary Key (PK): Kunci unik yang digunakan untuk mengidentifikasi setiap baris dalam tabel.
- Foreign Key (FK): Kunci asing yang menghubungkan satu tabel dengan tabel lain.
- Normalisasi: Proses pengorganisasian data untuk menghilangkan redundansi dan dependency yang tidak diperlukan.
- Functional Dependency: Ketergantungan antara satu atribut dengan atribut lainnya dalam tabel.
- ERD (Entity Relationship Diagram): Diagram visual yang menggambarkan hubungan antar entitas dalam database.
Tahapan Normalisasi dari UNF hingga BCNF
1. Universal Form (Unnormalized Form - UNF)
Tahapan awal ini merupakan bentuk mentah dari data, biasanya berasal dari hasil kuesioner, formulir, atau spreadsheet. Dalam tahap ini, data belum dipisah secara struktural dan masih banyak redundansi.
Contoh:
| id_siswa | nama | nis | tanggal_lahir | nama_kelas |
|----------|--------|-----------|----------------|------------|
| 1 | Budi | 1234567890| 2007-01-01 | X IPA 1 |
| 2 | Ani | 0987654321| 2006-12-12 | X IPA 1 |
Terlihat bahwa nama_kelas
muncul berulang kali, ini menandakan
adanya redundansi data.
2. First Normal Form (1NF)
Tujuan tahap ini adalah menghilangkan repeating group dan memastikan semua data atomik (tidak berupa array atau daftar).
Perubahan:
- Pisahkan
nama_kelas
ke dalam tabel terpisah - Setiap nilai harus tunggal dalam satu kolom
Hasil:
Tabel kelas
:
| id | nama_kelas |
|----|------------|
| 1 | X IPA 1 |
Tabel siswa
:
| id | nama | nis | tanggal_lahir | kelas_id |
|----|------|-----------|----------------|----------|
| 1 | Budi | 1234567890| 2007-01-01 | 1 |
3. Second Normal Form (2NF)
Tujuan dari 2NF adalah menghapus partial dependency (ketergantungan sebagian) dari primary key.
Karena siswa
sudah menggunakan
primary key tunggal (id), maka secara struktural tabel ini
sudah memenuhi 2NF.
4. Third Normal Form (3NF)
Langkah ini bertujuan menghapus transitive dependency, yaitu ketergantungan tidak langsung antar atribut non-primer.
Dalam struktur ini:
- Semua atribut non-primer hanya tergantung pada primary key
- Tidak ada atribut non-primer yang tergantung pada atribut non-primer lain
Artinya: database ini sudah 3NF.
5. Boyce-Codd Normal Form (BCNF)
BCNF adalah bentuk normalisasi yang lebih ketat dari 3NF.
Syaratnya:
Untuk semua functional dependency X → Y, X harus merupakan
superkey.
Pada struktur kita:
kelas.id → nama_kelas
(id adalah PK)siswa.id → semua atribut
(id adalah PK)- Tidak ada pelanggaran dependency
Kesimpulan: Sudah memenuhi BCNF.
Studi Kasus: Database Sekolah
Berikut adalah struktur database sekolah menggunakan SQL:
CREATE DATABASE IF NOT EXISTS sekolah;
USE sekolah;
CREATE TABLE kelas (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_kelas VARCHAR(50) NOT NULL
);
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
nis CHAR(10) UNIQUE,
tanggal_lahir DATE,
kelas_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (kelas_id) REFERENCES kelas(id)
);
Entity Relationship Diagram (ERD)
Gambaran hubungan antar entitas:
+-------------+ 1 n +-----------+
| kelas |---------------------<| siswa |
+-------------+ +-----------+
| id (PK) | | id (PK) |
| nama_kelas | | nama |
+-------------+ | nis |
| tanggal_lahir |
| kelas_id (FK) |
+--------------+
Jika Anda ingin versi visual ERD dalam bentuk gambar PNG atau SVG, silakan beri tahu dan saya akan buatkan.
Penutup: Pentingnya Normalisasi dalam Perancangan Database
Melalui tahapan normalisasi dari UNF hingga BCNF, struktur database akan:
- Lebih rapi
- Menghindari data ganda
- Memudahkan pemeliharaan
- Mempercepat pencarian data
Dalam konteks pengembangan aplikasi seperti sistem sekolah, normalisasi
menjamin integritas relasi antar data seperti siswa dan kelas.
Hal ini
sangat penting untuk skala aplikasi yang lebih besar dan kompleks.
Gabung dalam percakapan