Basis Data Praktikum 13 (Normalisasi): Membuatlah normalisasi dari laporan/kuitansi
Normalisasi data adalah proses penting dalam desain basis data yang bertujuan untuk menghilangkan redundansi dan ketidakkonsistenan data. Aturan dalam normalisasi data melibatkan pembagian tabel besar menjadi tabel yang lebih kecil dan menghubungkannya menggunakan relasi. Konsep normalisasi data pertama kali diperkenalkan oleh Edgar Codd, pencetus model relasional, yang mengajukan teori bentuk normal pertama (First Normal Form) dan kemudian berkembang menjadi bentuk normal kedua (Second Normal Form) dan bentuk normal ketiga (Third Normal Form). Edgar Codd mengajukan konsep normalisasi data sebagai cara untuk mengorganisir data secara efisien dalam basis data relasional.
Prinsip-prinsip normalisasi data ini memungkinkan kita untuk mengurangi duplikasi data, meminimalkan ketidakkonsistenan, dan mempermudah pemeliharaan basis data. Meskipun saat ini ada hingga bentuk normal keenam, namun pada prakteknya, kebanyakan basis data mengikuti hingga bentuk normal ketiga. Hal ini karena bentuk normal ketiga sudah mampu memenuhi sebagian besar kebutuhan desain basis data dengan efisien. Dengan menerapkan prinsip normalisasi data, kita dapat menciptakan struktur basis data yang lebih terorganisir, konsisten, dan efisien dalam mengelola dan menyimpan data.
Sebagai contoh dibawah ini ada sebuah laporan/kuitansi dan akan kita buat normalisasinya
Berikut adalah contoh dari tabel yang tidak normal dari laporan/kuitansi diatas:
Tabel tidak normal diatas adalah tabel yang belum memenuhi kriteria bentuk normal pertama, yaitu:
• Setiap kolom hanya berisi satu nilai atomik, tidak ada nilai yang berulang atau bergabung.
• Menentukan kunci utama untuk setiap tabel.
Tabel ini memiliki beberapa masalah, yaitu:
• Kolom Nama Obat berisi lebih dari satu nilai, yaitu nama obat dan dosis. Ini melanggar aturan bahwa setiap kolom hanya berisi satu nilai atomik.
• Kolom Tgl Periksa, Kode Dokter, Nama Dokter, Kode Sakit, Deskripsi Sakit, dan Kode Obat memiliki nilai yang berulang untuk setiap pasien. Ini melanggar aturan bahwa tidak ada nilai yang berulang dalam tabel.
• Tabel ini tidak memiliki kunci utama yang unik dan tidak berulang untuk setiap baris. Ini melanggar aturan bahwa setiap tabel harus memiliki kunci utama.
Untuk membuat tabel ini menjadi bentuk normal pertama, kita perlu melakukan beberapa langkah, yaitu:
• Memisahkan kolom Nama Obat menjadi dua kolom baru, yaitu Nama Obat dan Dosis.
• Menghapus nilai-nilai yang kosong atau duplikat pada kolom-kolom lain.
• Menentukan kunci utama untuk tabel ini, misalnya kombinasi dari kolom Tgl Pendaftaran, NOPEN, Tgl Periksa, Kode Dokter, Kode Sakit, dan Kode Obat.
Tahap Pertama (1NF)
Salah satu kriteria untuk membuat normalisasi tahap pertama pada tabel yang baik adalah memastikan bahwa tiap kolom tidak boleh menyimpan data lebih dari satu. Hal ini berguna untuk menghindari ambiguitas dan inkonsistensi data. Selain itu, tidak ada kolom yang duplikat atau ganda, karena hal ini akan membuang-buang ruang penyimpanan dan mempersulit proses pembaruan data. Demikian pula, tidak ada baris yang duplikat atau ganda, karena hal ini akan menimbulkan redundansi dan kesalahan data. Terakhir, tidak ada atribut turunan, yaitu atribut yang dapat dihitung dari atribut lain, karena hal ini akan mengurangi kinerja dan akurasi data. Dengan memenuhi kriteria-kriteria ini, tabel dapat menjadi lebih efisien dan mudah dimanipulasi.
Tabel normal pertama berikut adalah tabel yang sudah memenuhi kriteria bentuk normal pertama, yaitu:
• Setiap kolom hanya berisi satu nilai atomik, tidak ada nilai yang berulang atau bergabung.
• Menentukan kunci utama untuk setiap tabel.
Tabel ini memiliki beberapa karakteristik, yaitu:
• Kolom Nama Obat dan Dosis sudah dipisahkan menjadi dua kolom baru, sehingga setiap kolom hanya berisi satu nilai atomik.
• Tidak ada nilai yang kosong atau duplikat pada kolom-kolom lain, sehingga tidak ada nilai yang berulang dalam tabel.
• Kunci utama untuk tabel ini adalah kombinasi dari kolom No Pasien, Tgl Periksa, Kode Dokter, Kode Sakit, dan Kode Obat, karena nilai yang dihasilkan unik dan tidak berulang untuk setiap baris.
Masalahnya adalah tabel ini belum memenuhi kriteria bentuk normal kedua, yaitu:
• Setiap kolom hanya bergantung pada kunci utama secara penuh, tidak ada ketergantungan parsial.
• Memisahkan tabel yang memiliki ketergantungan parsial menjadi tabel baru.
Tabel ini memiliki beberapa masalah, yaitu:
• Kolom Nama Pasien, Alamat_Jalan, Alamat_Kelurahan, Alamat_Kecamatan, Alamat_Wilayah, Alamat_Kode Pos, Telepon, Nama Dokter, Deskripsi Sakit, dan Nama Obat hanya bergantung pada sebagian dari kunci utama, yaitu No Pasien, Kode Dokter, Kode Sakit, dan Kode Obat. Ini melanggar aturan bahwa setiap kolom hanya bergantung pada kunci utama secara penuh.
• Tabel ini memiliki data yang berlebihan atau redundan, karena informasi tentang identitas pasien, dokter, sakit, dan obat diulang untuk setiap pemeriksaan yang dilakukan.
Untuk membuat tabel ini menjadi bentuk normal kedua, kita perlu melakukan beberapa langkah, yaitu:
• Memisahkan tabel ini menjadi lima tabel baru, yaitu tabel No Pasien_Tgl Periksa_Kode Dokter, tabel No Pasien, tabel Kode Dokter, tabel Kode Sakit, dan tabel Kode Obat.
• Menghapus kolom-kolom yang memiliki ketergantungan parsial dari tabel No Pasien_Tgl Periksa_Kode Dokter dan memindahkannya ke tabel-tabel baru yang sesuai.
Tahap Kedua (2NF):
Untuk mencapai bentuk normal basis data ke 2, tabel harus sudah dalam bentuk normal basis data ke 1, serta setiap kolom hanya berisi satu nilai atomik dan tidak ada nilai yang berulang atau bergabung. Selanjutnya, buat tabel terpisah untuk nilai-nilai yang keluar berulang kali pada beberapa baris, misalnya jika ada kolom yang hanya bergantung pada sebagian dari kunci utama. Kemudian, tambahkan primary key pada tiap tabel, yaitu kolom yang dapat mengidentifikasi secara unik setiap baris. Terakhir, hubungkan tabel-tabel tersebut menggunakan foreign key, yaitu kolom yang mengacu pada primary key dari tabel lain. Dengan demikian, tabel dapat menghindari anomali pembaruan, penyisipan, dan penghapusan data.
Tabel normal kedua dari link tersebut adalah tabel yang sudah memenuhi kriteria bentuk normal kedua, yaitu:
• Berada pada bentuk normal pertama, yaitu setiap kolom hanya berisi satu nilai atomik, tidak ada nilai yang berulang atau bergabung, dan sudah ditentukan kunci utama untuk setiap tabel.
• Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci utama atau tidak mengandung dependensi parsial, yaitu tidak ada kolom yang hanya bergantung pada sebagian dari kunci utama.
Tabel ini memiliki beberapa karakteristik, yaitu:
• Tabel ini terdiri dari lima tabel baru yang dipisahkan dari tabel tidak normal berdasarkan ketergantungan parsial, yaitu tabel tb_periksa, tabel tb_pasien, tabel tb_dokter, tabel tb_sakit, dan tabel tb_obat.
• Tabel tb_periksa memiliki kunci utama yang merupakan kolom Kode Periksa. Kolom-kolom lainnya, yaitu No Pasien, Tgl Periksa, NOPEN, Kode Dokter, Kode Sakit, Kode Obat, dan Dosis memiliki dependensi sepenuhnya terhadap kunci utama.
• Tabel tb_pasien memiliki kunci utama yang merupakan kolom No Pasien. Kolom-kolom lainnya, yaitu Tgl Pendaftaran, Nama Pasien, Alamat_Jalan, Alamat_Kelurahan, Alamat_Kecamatan, Alamat_Wilayah, Alamat_Kode Pos, dan Telepon memiliki dependensi sepenuhnya terhadap kunci utama.
• Tabel tb_dokter memiliki kunci utama yang merupakan kolom Kode Dokter. Kolom lainnya, yaitu Nama Dokter memiliki dependensi sepenuhnya terhadap kunci utama.
• Tabel tb_sakit memiliki kunci utama yang merupakan kolom Kode Sakit. Kolom lainnya, yaitu Deskripsi Sakit memiliki dependensi sepenuhnya terhadap kunci utama.
• Tabel tb_obat memiliki kunci utama yang merupakan kolom Kode Obat. Kolom lainnya, yaitu Nama Obat memiliki dependensi sepenuhnya terhadap kunci utama.
Tahap Ketiga (3NF):
Berikut adalah paragraf yang saya buat berdasarkan poin-poin yang Anda berikan:
Salah satu konsep penting dalam normalisasi basis data adalah ketergantungan fungsionalitas. Ketergantungan fungsionalitas adalah hubungan antara dua atau lebih atribut dalam tabel, dimana nilai dari satu atribut dapat menentukan nilai dari atribut lain. Misalnya, jika dalam sebuah tabel terdapat atribut A dan B, dan setiap nilai A memiliki tepat satu nilai B yang berpasangan, maka kita bisa bilang A --> B, atau B bergantung fungsional pada A. Biasanya, atribut A adalah atribut kunci, yaitu atribut yang dapat mengidentifikasi secara unik setiap baris, dan atribut B adalah atribut yang bukan kunci. Untuk mencapai bentuk normal basis data ke 3, tabel harus sudah dalam bentuk normal basis data ke 2, yaitu setiap kolom hanya berisi satu nilai atomik, tidak ada nilai yang berulang atau bergabung, sudah ditentukan kunci utama untuk setiap tabel, dan semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci utama. Selanjutnya, kita harus teliti tabel yang sudah dalam bentuk normal ke 2, apakah ada atribut bukan kunci yang memiliki dependensi transitif terhadap kunci utama, yaitu bergantung pada atribut lain yang bukan kunci. Jika ada, maka kita harus memindahkan kolom-kolom tersebut menjadi tabel lain, karena jika tidak, akan menimbulkan anomali data jika terjadi perubahan pada kolom tersebut. Dengan demikian, tabel dapat menjadi lebih efisien dan mudah dimanipulasi.
Tabel normal ketiga dari link berikut adalah tabel yang sudah memenuhi kriteria bentuk normal ketiga, yaitu:
• Berada pada bentuk normal kedua, yaitu setiap kolom hanya berisi satu nilai atomik, tidak ada nilai yang berulang atau bergabung, sudah ditentukan kunci utama untuk setiap tabel, dan semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci utama.
• Tidak ada atribut bukan kunci yang memiliki dependensi transitif terhadap kunci utama atau tidak mengandung dependensi tidak langsung, yaitu tidak ada kolom yang bergantung pada kolom lain yang bukan kunci utama.
Tabel ini memiliki beberapa karakteristik, yaitu:
• Tabel ini terdiri dari tujuh tabel baru yang dipisahkan dari tabel normal kedua berdasarkan dependensi transitif, yaitu tabel tb_periksa, tabel tb_pendaftaran, tabel tb_pasien, tabel tb_dokter, tabel tb_sakit, tabel tb_obat, dan tabel tb_resep.
• Tabel tb_periksa memiliki kunci utama yang merupakan kolom Kode Periksa. Kolom-kolom lainnya, yaitu No Pasien, Tgl Periksa, Kode Dokter, Kode Sakit, Kode Obat, dan Kode Resep memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
• Tabel tb_pendaftaran memiliki kunci utama yang merupakan kolom No Pasien. Kolom lainnya, yaitu NOPEN memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
• Tabel tb_pasien memiliki kunci utama yang merupakan kolom No Pasien. Kolom-kolom lainnya, yaitu Tgl Pendaftaran, Nama Pasien, Alamat_Jalan, Alamat_Kelurahan, Alamat_Kecamatan, Alamat_Wilayah, Alamat_Kode Pos, dan Telepon memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
• Tabel tb_dokter memiliki kunci utama yang merupakan kolom Kode Dokter. Kolom lainnya, yaitu Nama Dokter memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
• Tabel tb_sakit memiliki kunci utama yang merupakan kolom Kode Sakit. Kolom lainnya, yaitu Deskripsi Sakit memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
• Tabel tb_obat memiliki kunci utama yang merupakan kolom Kode Obat. Kolom lainnya, yaitu Nama Obat memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
• Tabel tb_resep memiliki kunci utama yang merupakan kolom Kode Resep. Kolom lainnya, yaitu Dosis memiliki dependensi sepenuhnya terhadap kunci utama dan tidak memiliki dependensi transitif terhadap kolom lain.
Komentar
Posting Komentar