Dalam pengembangan aplikasi berbasis data seperti Shopee, salah satu aspek terpenting adalah perancangan database yang efektif dan efisien. Artikel ini membahas langkah-langkah merancang database dengan metode normalisasi dan Entity-Relationship Diagram (ERD) menggunakan studi kasus nota pesanan.
Studi Kasus:
Berikut ini adalah nota pesanan yang akan dijadikan studi kasus:
Dari nota pesanan tersebut akan dibuatkan sebuah basis data dengan 2 metode, yaitu normalisasi dan ERD ( Entity relationship diagram )
1. Normalisasi
Normalisasi adalah proses mengorganisasi data dalam database untuk mengurangi redundansi dan memastikan integritas data. Berikut adalah tahapannya:
1. Membuat Tabel Universal dan 1 NF Karna Tabel Sudah Memenuhi Syarat  1NF
Apa Itu Tabel Universal? Tabel Universal adalah tabel awal yang belum dinormalisasi. Semua informasi dari data atau nota disatukan dalam satu tabel tanpa pengorganisasian lebih lanjut.
Berikut adalah ciri-ciri tabel universal berdasarkan data di atas:
1. RedundansiData:
* Informasi yang sama, seperti nama pembeli, nomor HP, alamat, dan nama penjual, diulang pada setiap baris untuk setiap produk. 2. TidakTerstruktur:
* Semua data, baik pembeli, penjual, dan produk, dicampur dalam satu tabel tanpa ada pemisahan entitas yang jelas.
3. RepetisiGrupData:
* Jika ada lebih dari satu produk dalam satu pesanan, setiap produk dicatat dalam baris yang berbeda, meskipun pesanan dan pembeli     tetap sama.
 4. RentanterhadapAnomali:
 * Anomali Insert: Tidak bisa menambahkan data penjual atau pembeli baru tanpa ada pesanan.
 * Anomali Update: Jika nomor HP pembeli berubah, maka harus diperbarui di semua baris yang terkait dengan pembeli tersebut.
 * Anomali Delete: Jika sebuah pesanan dihapus, informasi pembeli atau penjual juga bisa hilang, meskipun masih relevan untuk   pesanan lain.
Berikut adalah tabel universal dan 1NF dari nota diatas:
2. Normalisasi 2NF
Second Normal Form (2NF) adalah tahap kedua dalam normalisasi, yang memiliki kriteria berikut:
1. SudahMemenuhi1NF:TabelharusterlebihdahulumemenuhikriteriaFirstNormalForm(1NF).
2. TidakAdaKetergantunganParsial:Setiapatributnon-prime(atributyangbukanbagiandari primary key) harus bergantung sepenuhnya pada primary key, bukan hanya sebagian dari
primary key (ketergantungan parsial).
Masalah di Tabel 1NF yang Harus Diperbaiki untuk 2NF: Dalam tabel 1NF, terdapat masalah ketergantungan parsial.
Contohnya:
1. Â o nama_pembeli, no_hp, dan alamat bergantung pada id_pesanan, bukan pada keseluruhan kombinasi primary key (id_pesanan + nama_produk).
2. o nama_penjual hanya bergantung pada id_pesanan, bukan pada keseluruhan kombinasi
primary key.
Solusi untuk Menjadi 2NF:
1. PisahkanDatakedalamTabelTerpisahBerdasarkanEntitas:
2. Buat tabel Pembeli dengan atribut yang hanya bergantung pada id_pembeli. o Buat tabel Penjual dengan atribut yang hanya bergantung pada id_penjual.
3. Buat tabel Pesanan dengan atribut yang hanya bergantung pada id_pesanan. o Buat tabel Detail Pesanan untuk mencatat informasi produk terkait pesanan.
4. HilangkanKetergantunganParsial:
5. Pastikan setiap atribut hanya bergantung pada primary key di tabelnya masing-masing.
3. Normalisasi 3Nf
Third Normal Form (3NF) adalah tahap ketiga dalam normalisasi, dengan kriteria sebagai berikut:
1. SudahMemenuhi2NF: TabelharusterlebihdahulumemenuhiSecondNormalForm(2NF).
2. TidakAdaKetergantunganTransitif:Setiapatributnon-prime(atributyangbukanbagiandari primary key) harus hanya bergantung pada primary key, bukan pada atribut non-prime lainnya.
Masalah di Tabel 2NF yang Harus Diperbaiki untuk 3NF
Pada tabel 2NF, mungkin terdapat ketergantungan transitif, yaitu atribut non-prime bergantung pada atribut non-prime lainnya.
Contoh ketergantungan transitif: Dalam tabel Pesanan, kolom seperti jasa_kirim dan metode_pembayaran mungkin
dianggap tidak langsung bergantung pada primary key id_pesanan tetapi pada entitas lain yang lebih spesifik, seperti jasa pengiriman atau metode pembayaran.
Solusi untuk Menjadi 3NF
1. Pisahkan Atribut yang Tidak Langsung Bergantung pada Primary Key ke Tabel Baru:
- Buat tabel Metode Pembayaran untuk menyimpan data tentang metode pembayaran.
- Buat tabel Jasa Pengiriman untuk menyimpan data tentang jasa pengiriman.
2. HubungkanTabelBarudenganForeignKey:
- Hubungkan tabel Pesanan dengan tabel Metode Pembayaran dan Jasa Pengiriman menggunakan foreign key. Apakah Perlu Normalisasi ke 4NF?Â
Berdasarkan data yang ada dan bagaimana struktur tabel-tabelnya sudah terpisah dengan baik, tidak ada indikasi multi-valued dependency yang membutuhkan normalisasi lebih lanjut ke 4NF.
Kesimpulan:
 * Tidak perlu lanjut ke 4NF, karena tidak ada multi-valued dependency yang terlihat di tabel yang sudah di-normalisasi.
 * 3NF sudah cukup, karena kita sudah mengatasi redundansi dan ketergantungan transitif.
2. ERD ( Entity Relationship Diagram )
Berikut penjelasan elemen-elemen dalam ERD tersebut:
Entitas dan Atribut:
1. Penjual:
Atribut: id_penjual (PK), nama_penjual.
Pembeli:
Atribut: id_pembeli (PK), nama_pembeli, no_hp, alamat.
2. Produk:
Atribut: id_produk (PK), nama_produk, harga, variasi.
Hubungan (Relationship):Â
1. Memesan: Menghubungkan entitas penjual dengan pembeli. Relasi ini menunjukkan bahwa pembeli memesan dari penjual.
2. Menjual: Menghubungkan entitas penjual dengan produk. Relasi ini menunjukkan bahwa penjual menjual produk.
3. Memilih: Menghubungkan entitas pembeli dengan produk. Relasi ini menunjukkan bahwa pembeli memilih produk tertentu.
Kardinalitas:
1. Hubungan memesan menunjukkan bahwa satu pembeli dapat memesan dari beberapa penjual, dan satu penjual dapat menerima pesanan dari beberapa pembeli.
Hubungan menjual menunjukkan bahwa satu penjual dapat menjual beberapa produk, tetapi satu produk hanya dijual oleh satu penjual.
2. Hubungan memilih menunjukkan bahwa satu pembeli dapat memilih beberapa produk, dan satu produk dapat dipilih oleh beberapa pembeli.
Kesimpulan:
Normalisasi hingga 3NF mengurangi redundansi, mencegah anomali, dan meningkatkan efisiensi database. ERD mempermudah pemahaman hubungan antar entitas, menjadikan database lebih optimal untuk aplikasi berbasis data seperti Shopee.
Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H