Bab 1:
Bab 2 :
Jika tidak jelas bisa bertanya 🙏
Web : https://docs.google.com/spreadsheets/
Normalisasi Databse Peminjaman Buku
Suatu tabel dikatakan 1NF jika dan hanya jika setiap atribut dari data tersebut hanya memiliki nilai tunggal dalam satu baris.
Jadi, tabel yang belum dinormalisasi tadi perlu diubah, sehingga bentuk 1NF menjadi seperti ini:
Inti dari normalisasi 1NF adalah tidak boleh ada grouping data ataupun duplikasi data. Sekarang lanjut pada tahap normalisasi 2NF.
Syarat 2NF adalah tidak diperkenankan adanya partial “functional dependency” kepada primary key dalam sebuah tabel.
Apa itu “functional dependency”?
Functional dependency adalah setiap atribut yang bukan kunci (non key) bergantung secara fungsional terhadap primary key. -Intinya adalah pada tahap normalisasi 2NF ini tabel tersebut harus dipecah berdasarkan primary key. Sehingga bentuk normalisasi 2NF dari tabel tersebut adalah sebagai berikut:
Pada 3NF tidak diperkenankan adanya partial “transitive dependency” dalam sebuah tabel.
Apa itu “transitive dependency”? 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.
Contohnya ada pada atribut qty, kolom tersebut tidak bergantung langsung pada primary key kode_faktur melainkan bergantung pada kolom kode_barang. Jadi setelah dinormalisasi 3NF akan menghasilkan tabel berikut:
normalisasi 3NF menghasilkan 1 tabel baru dari hasil pemecahan tabel transaksi yaitu tabel detail barang yang isinya menampung barang-barang yang dibeli.
kenapa di tabel detail barang terdapat kolom harga lagi? padahal kolom harga sudah ada di tabel barang.
-Kolom harga pada tabel detail barang digunakan untuk menyimpan harga barang pada saat proses transaksi. Jadi, meskipun kolom harga pada tabel barang berubah (naik/turun), harga barang yang ada pada tabel detail barang tidak ikut berubah (fixed). Bayangkan jika kita tidak menambahkan kolom harga pada pada tabel detail barang, maka yang terjadi total invoice dari transaksi akan berubah seiring berubahnya harga barang.
Insertion anomaly: susah menambah data (mis. tidak bisa tambah product kalau belum ada order).
Update anomaly: harus update data di banyak tempat (mis. ubah nama supplier, harus update di banyak baris).
Delete anomaly: hapus satu baris menyebabkan hilangnya data lain yang seharusnya tetap disimpan.
Penjelasan dan contoh anomalous behavior tersedia di banyak tutorial DBMS.
Microsoft Docs — Database normalization description. Microsoft Learn
Wikipedia — Database normalization (overview) dan halaman spesifik 1NF/2NF/3NF. Wikipedia+2Wikipedia+2
GeeksforGeeks — Normal Forms in DBMS (penjelasan praktis + contoh). GeeksforGeeks
DigitalOcean Community — Database Normalization: 1NF, 2NF, 3NF & BCNF Examples (bagus untuk langkah-langkah praktis). digitalocean.com
Guru99 / Study resources — contoh dan pembahasan anomaly + tutorial langkah demi langkah.
Entity-Relationship Diagram (ERD)
ERD adalah diagram yang menggambarkan struktur logis basis data dengan menampilkan entitas, atribut, dan relasi di antara entitas-entitas tersebut. ERD membantu merancang database sebelum implementasi, memastikan konsistensi dan kejelasan hubungan data.
Entitas: Objek nyata atau konseptual yang memiliki data, contohnya Siswa, Kelas, Produk.
Atribut: Properti atau informasi detail tentang entitas, misalnya entitas Siswa punya atribut NIS, Nama, Tanggal_Lahir.
Relasi: Hubungan antara dua (atau lebih) entitas, seperti satu Siswa “BERADA_DI” satu Kelas.
ERD memetakan model data sehingga memudahkan developer dan stakeholder memahami bagaimana data saling terhubung.
Komponen | Simbol / Notasi | Keterangan |
---|---|---|
Entitas | Persegi panjang | Menyatakan objek/data utama |
Atribut | Oval | Menyatakan detail/field dari entitas |
Primary Key | Atribut bergaris bawah | Atribut unik untuk tiap instansi entitas |
Relasi | Belah ketupat (♦) | Menyatakan jenis hubungan antar entitas |
Kardinalitas | Angka atau simbol (1, N, M) | Menunjukkan jumlah maksimum/minimum hubungan |
One-to-One (1–1)
Setiap baris entitas A berpasangan tepat satu baris entitas B.
One-to-Many (1–N)
Satu baris entitas A dapat berhubungan dengan banyak baris entitas B, tapi B hanya dengan satu A.
Many-to-Many (M–N)
Banyak baris entitas A bisa berhubungan dengan banyak baris entitas B (biasanya membutuhkan tabel penghubung).
Misalkan kita punya sistem Perpustakaan dengan tiga entitas: Buku, Anggota, dan Peminjaman.
[ BUKU ] [ ANGGOTA ]
| |
| 1 1 |
| |
+---< DIPINJAM >----+
N–M
[ PEMINJAMAN ]
Entitas Buku
PK: ISBN
Atribut: Judul, Pengarang, Tahun
Entitas Anggota
PK: ID_Anggota
Atribut: Nama, Alamat, No_Telp
Entitas Peminjaman
PK: (ISBN, ID_Anggota, Tgl_Pinjam)
Atribut: Tgl_Kembali, Denda
Relasi
Buku 1–N Peminjaman (satu buku bisa dipinjam berulang kali)
Anggota 1–N Peminjaman (satu anggota bisa meminjam banyak buku)
Definisi & Tujuan
ERD adalah alat visual untuk merancang struktur database.
Meminimalisir redundansi & inkonsistensi data.
Langkah Pembuatan
Identifikasi entitas utama.
Tentukan atribut tiap entitas & tetapkan PK.
Gambar relasi; tetapkan kardinalitas.
Tambahkan entitas penghubung (jika M–N).
Review dan validasi dengan stakeholder.
Manfaat
Komunikasi jelas antara developer dan non-tech.
Basis data terstruktur, mudah dikembangkan dan dipelihara.
Rumus :
Berikut “rumus” atau pola dasar relasi (kardinalitas) di ERD, lengkap dengan notasi dan cara implementasinya ke tabel–tabel database:
Tipe Relasi | Notasi Singkat | Notasi Min–Max | Penjelasan singkat |
---|---|---|---|
One-to-One | 1 : 1 | (1,1) – (1,1) | Tiap A hanya punya satu B, dan sebaliknya. |
One-to-Many | 1 : N | (1,1) – (0,N) | Satu A bisa punya banyak B; B hanya satu A. |
Many-to-Many | M : N atau N : M | (0,M) – (0,N) | Banyak A bisa ke banyak B, dan sebaliknya. |
Notasi Min–Max (min,max)
menunjukkan banyaknya relasi minimal dan maksimal.
Contoh (1,1)–(0,N)
artinya: setiap baris A wajib punya tepat 1 B; tiap baris B boleh 0 sampai N A.
ERD | Tabel Relasional | Keterangan |
---|---|---|
1 : 1 | Tambah foreign key di salah satu tabel, + UNIQUE | sql<br>CREATE TABLE KTP (no_ktp CHAR(16) PRIMARY KEY, nama VARCHAR(100));<br>CREATE TABLE Warga (id INT PRIMARY KEY, no_ktp CHAR(16) UNIQUE, FOREIGN KEY(no_ktp) REFERENCES KTP(no_ktp)); |
1 : N | Tambah foreign key di sisi N | sql<br>CREATE TABLE Kelas (id INT PRIMARY KEY, nama VARCHAR(50));<br>CREATE TABLE Siswa (id INT PRIMARY KEY, nama VARCHAR(100), id_kelas INT, FOREIGN KEY(id_kelas) REFERENCES Kelas(id)); |
M : N | Buat tabel penghubung (associative) | sql<br>CREATE TABLE Mahasiswa (id INT PRIMARY KEY, nama VARCHAR(100));<br>CREATE TABLE MataKuliah (kode CHAR(6) PRIMARY KEY, judul VARCHAR(100));<br>CREATE TABLE KRS (mhs_id INT, mk_kode CHAR(6), PRIMARY KEY(mhs_id,mk_kode), FOREIGN KEY(mhs_id) REFERENCES Mahasiswa(id), FOREIGN KEY(mk_kode) REFERENCES MataKuliah(kode)); |
One-to-One: FK + UNIQUE
memastikan tiap nilai hanya muncul sekali.
One-to-Many: FK di tabel “many” menunjuk PK tabel “one”.
Many-to-Many: Tabel ketiga (KRS
) membawa dua FK sebagai kombinasi PK.
1 : 1 → FK + UNIQUE
1 : N → FK di sisi “N” (tanpa UNIQUE
)
M : N → Tabel penghubung dengan dua FK (gabungan PK)
contoh :
definisi :
Relasi secara umum artinya hubungan antara dua hal atau lebih. Tapi dalam konteks basis data (database), relasi mengacu pada hubungan antara dua atau lebih tabel.
Contohnya:
Tabel Siswa menyimpan data siswa.
Tabel Kelas menyimpan data kelas.
Relasi antara Siswa dan Kelas: satu siswa berada di satu kelas, dan satu kelas bisa memiliki banyak siswa. Ini disebut relasi one-to-many.
One-to-One: satu baris di tabel A berhubungan dengan satu baris di tabel B.
One-to-Many: satu baris di tabel A bisa berhubungan dengan banyak baris di tabel B.
Many-to-Many: banyak baris di tabel A bisa berhubungan dengan banyak baris di tabel B (biasanya melalui tabel penghubung).