Tampilan
Pertemuan 13: Bentuk Normal 2
Tujuan pembelajaran
Setelah pertemuan ini, Anda mampu:
- menyebutkan aturan 2NF;
- menemukan data yang berulang pada tabel 1NF;
- memecah tabel menjadi beberapa tabel yang terhubung foreign key.
Peta materi
1. Aturan Bentuk Normal Kedua (2NF)
2NF
- Tabel sudah dalam bentuk 1NF.
- Buat tabel terpisah untuk nilai yang muncul berulang pada beberapa baris.
- Tambahkan primary key pada setiap tabel.
- Hubungkan tabel dengan foreign key.
2. Mulai dari tabel 1NF
Ingat hasil dari Pertemuan 12:
| kode_order | tanggal | pembeli | alamat_pengiriman | penjual | sku | nama_produk | harga | jumlah | berat |
|---|---|---|---|---|---|---|---|---|---|
| O001 | 2024-01-10 | Joko | Jl. Mawar 1 | Galeri Olahraga | BRG001 | Sepatu Lari | 350000 | 1 | 800 |
| O001 | 2024-01-10 | Joko | Jl. Mawar 1 | Galeri Olahraga | BRG002 | Kaos | 90000 | 2 | 200 |
| O002 | 2024-01-12 | Sari | Jl. Melati 5 | Galeri Olahraga | BRG001 | Sepatu Lari | 350000 | 1 | 800 |
Dua jenis pengulangan muncul:
- Data produk (nama, harga, berat) tertulis ulang setiap kali produk dipesan. "Sepatu Lari" muncul dua kali.
- Data order, pembeli, dan penjual tertulis ulang pada setiap baris produk di order yang sama. "Joko" dan "Galeri Olahraga" muncul berulang.
3. Memecah tabel
Pisahkan setiap kelompok data yang berulang menjadi tabel sendiri.
Tabel produk
| sku PK | nama_produk | harga | berat |
|---|---|---|---|
| BRG001 | Sepatu Lari | 350000 | 800 |
| BRG002 | Kaos | 90000 | 200 |
Tabel order
| kode_order PK | tanggal | pembeli | alamat_pengiriman | penjual |
|---|---|---|---|---|
| O001 | 2024-01-10 | Joko | Jl. Mawar 1 | Galeri Olahraga |
| O002 | 2024-01-12 | Sari | Jl. Melati 5 | Galeri Olahraga |
Tabel detail_order (tabel relasi)
| kode_order FK | sku FK | jumlah |
|---|---|---|
| O001 | BRG001 | 1 |
| O001 | BRG002 | 2 |
| O002 | BRG001 | 1 |
Primary key detail_order adalah gabungan (kode_order, sku). Tabel ini adalah implementasi hubungan many to many antara order dan produk, persis seperti yang Anda pelajari di Pertemuan 7.
4. Apa yang kita peroleh?
| Sebelum | Sesudah |
|---|---|
| "Sepatu Lari" ditulis di setiap baris yang memesannya | Ditulis sekali di tabel produk |
| Harga naik: harus ubah semua baris order | Cukup ubah satu baris di produk |
| Data order ditulis ulang untuk setiap produk | Data order ditulis sekali per order |
Tabel order belum sempurna
Perhatikan kolom pembeli, alamat_pengiriman, dan penjual. Joko dan Galeri Olahraga masih bisa berulang pada order-order lain. Ini yang diselesaikan oleh 3NF.
Catatan pendalaman untuk dosen
Dalam definisi formal, 2NF berarti tidak ada atribut non-key yang bergantung pada sebagian dari composite key. Pada contoh ini nama_produk hanya bergantung pada sku (sebagian dari key gabungan kode_order + sku), dan tanggal hanya bergantung pada kode_order. Cara "pecah nilai yang berulang" yang dipakai di materi ini adalah versi praktis dari aturan formal itu dan menghasilkan tabel yang sama.
Latihan
Lanjutkan tabel Nota Kantin dari Pertemuan 12. Pecah menjadi tabel menu, nota, dan detail_nota. Tentukan primary key dan foreign key setiap tabel, lalu gambar ERD-nya.
Contoh jawaban
menu(kode_menu PK, nama_menu, harga)nota(no_nota PK, tanggal, kasir)detail_nota(no_nota FK, kode_menu FK, jumlah). Primary key: gabungan no_nota dan kode_menu.
Kolom harga pindah ke menu karena hanya bergantung pada menu.
Kuis cepat
1. Syarat pertama agar sebuah tabel masuk 2NF adalah...
2. Pada tabel 1NF kita, data yang berulang paling jelas adalah...
3. Tabel yang menghubungkan order dengan produk (many to many) pada hasil 2NF adalah...
4. Manfaat utama memecah tabel pada 2NF adalah...
Terjawab 0 dari 4 soal
Rangkuman
Yang harus diingat
- 2NF = sudah 1NF + data berulang dipisah ke tabel sendiri + primary key + foreign key.
- Hasilnya:
produk,order, dan tabel relasidetail_order. - Manfaat: setiap fakta tersimpan sekali, perubahan cukup di satu tempat.
Tugas mandiri
Normalisasikan tabel 1NF dari tugas Pertemuan 12 yang Anda buat sendiri hingga 2NF. Sertakan tabel sebelum dan sesudah, serta ERD hasil akhir.
Progres tersimpan di browser Anda dan tampil di halaman beranda.