Normalisasi DBMS: Contoh Database 1NF, 2NF, 3NF
Apa itu Normalisasi Basis Data?
Normalisasi adalah teknik desain basis data yang mengurangi redundansi data dan menghilangkan karakteristik yang tidak diinginkan seperti Anomali Penyisipan, Pembaruan, dan Penghapusan. Aturan normalisasi membagi tabel yang lebih besar menjadi tabel yang lebih kecil dan menghubungkannya menggunakan hubungan. Tujuan Normalisasi pada SQL adalah untuk menghilangkan data yang berlebihan (berulang) dan memastikan data disimpan secara logis.
Penemu model relasional Edgar Codd mengajukan teori normalisasi data dengan diperkenalkannya Bentuk Normal Pertama, dan ia terus memperluas teorinya dengan Bentuk Normal Kedua dan Ketiga. Later dia bergabung dengan Raymond F. Boyce untuk mengembangkan teori Bentuk Normal Boyce-Codd.
Jenis-Jenis Bentuk Normal pada DBMS
Berikut adalah daftar Bentuk Normal di SQL:
- 1NF (Bentuk Normal Pertama): Memastikan bahwa tabel basis data terorganisasi sedemikian rupa sehingga setiap kolom berisi nilai-nilai atomik (tak terpisahkan), dan setiap rekaman bersifat unik. Hal ini menghilangkan pengulangan kelompok, sehingga menyusun data ke dalam tabel dan kolom.
- 2NF (Bentuk Normal Kedua): Dibangun di atas 1NF oleh Kita perlu menghapus data berlebihan dari tabel yang diterapkan ke beberapa baris. dan menempatkannya di tabel terpisah. Hal ini mengharuskan semua atribut non-kunci berfungsi penuh pada kunci utama.
- 3NF (Bentuk Normal Ketiga): Memperluas 2NF dengan memastikan bahwa semua atribut non-kunci tidak hanya berfungsi penuh pada kunci utama tetapi juga independen satu sama lain. Hal ini menghilangkan ketergantungan transitif.
- BCNF (Bentuk Normal Boyce-Codd): Penyempurnaan 3NF yang mengatasi anomali yang tidak ditangani oleh 3NF. Hal ini mengharuskan setiap determinan menjadi kunci kandidat, memastikan kepatuhan yang lebih ketat terhadap aturan normalisasi.
- 4NF (Bentuk Normal Keempat): Mengatasi ketergantungan multi-nilai. Hal ini memastikan bahwa tidak ada beberapa fakta multinilai yang independen tentang suatu entitas dalam suatu catatan.
- 5NF (Bentuk Normal Kelima): Juga dikenal sebagai “Bentuk Normal Proyeksi-Gabung” (PJNF), Ini berkaitan dengan rekonstruksi informasi dari potongan data yang lebih kecil dan tersusun berbeda.
- 6NF (Bentuk Normal Keenam): Teoritis dan tidak diterapkan secara luas. Ini berkaitan dengan data temporal (menangani perubahan seiring waktu) dengan menguraikan tabel lebih lanjut untuk menghilangkan semua redundansi non-temporal.
Teori Normalisasi Data pada MySQL server masih dikembangkan lebih lanjut. Misalnya, ada diskusi bahkan pada tanggal 6th Bentuk Biasa. Namun, dalam sebagian besar aplikasi praktis, normalisasi mencapai hasil terbaiknya pada 3rd Bentuk Biasa. Evolusi Normalisasi dalam teori SQL diilustrasikan di bawah ini-
Normalisasi Database Dengan Contoh
Basis Data Contoh Normalisasi dapat dengan mudah dipahami dengan bantuan studi kasus. Asumsikan, perpustakaan video menyimpan database film yang disewakan. Tanpa normalisasi apa pun dalam database, semua informasi disimpan dalam satu tabel seperti yang ditunjukkan di bawah ini. Mari kita pahami database Normalisasi dengan contoh normalisasi beserta solusinya:
Di sini Anda lihat Kolom Film Disewa memiliki beberapa nilai. Sekarang mari beralih ke Bentuk Normal ke-1:
Bentuk Normal Pertama (1NF)
- Setiap sel tabel harus berisi satu nilai.
- Setiap catatan harus unik.
Tabel di atas dalam 1NF-
Contoh 1NF
Sebelum kita melanjutkan, mari kita pahami beberapa hal —
Apa itu KUNCI dalam SQL
A KUNCI dalam SQL adalah nilai yang digunakan untuk mengidentifikasi record dalam tabel secara unik. SQL KEY adalah kolom tunggal atau kombinasi beberapa kolom yang digunakan untuk mengidentifikasi baris atau tupel secara unik dalam tabel. Kunci SQL digunakan untuk mengidentifikasi informasi duplikat, dan juga membantu membangun hubungan antara beberapa tabel dalam database.
Catatan: Kolom dalam tabel yang TIDAK digunakan untuk mengidentifikasi record secara unik disebut kolom bukan kunci.
Apa itu Kunci Utama?
Primer adalah nilai kolom tunggal yang digunakan untuk mengidentifikasi rekaman database secara unik.
Ini memiliki atribut berikut
- A kunci utama tidak boleh NULL
- Nilai kunci utama harus unik
- Nilai kunci primer jarang boleh diubah
- Kunci utama harus diberi nilai ketika record baru disisipkan.
Apa itu Kunci Komposit?
Kunci komposit adalah kunci utama yang terdiri dari beberapa kolom yang digunakan untuk mengidentifikasi catatan secara unik
Dalam database kami, kami memiliki dua orang dengan nama yang sama Robert Phil, tetapi mereka tinggal di tempat berbeda.
Oleh karena itu, kami memerlukan Nama Lengkap dan Alamat untuk mengidentifikasi catatan secara unik. Itu adalah kunci komposit.
Mari beralih ke bentuk normal kedua 2NF
Bentuk Normal Kedua (2NF)
- Aturan 1- Berada di 1NF
- Aturan 2- Kunci Utama Kolom Tunggal yang tidak bergantung secara fungsional pada subset relasi kunci kandidat mana pun
Jelas bahwa kami tidak dapat membuat database sederhana kami dalam 2 tahun ke depannd Bentuk normalisasinya kecuali kita mempartisi tabel diatas.
Kami telah membagi tabel 1NF kami menjadi dua tabel, yaitu Tabel 1 dan Tabel 2. Tabel 1 berisi informasi anggota. Tabel 2 berisi informasi tentang film yang disewa.
Kami telah memperkenalkan kolom baru bernama Membership_id yang merupakan kunci utama untuk tabel 1. Catatan dapat diidentifikasi secara unik di Tabel 1 menggunakan id keanggotaan
Basis Data – Kunci Asing
Pada Tabel 2, Membership_ID adalah Kunci Asing
Kunci Asing mereferensikan kunci utama dari Tabel lain! Ini membantu menghubungkan Tabel Anda
- Kunci asing dapat memiliki nama yang berbeda dari kunci utamanya
- Ini memastikan baris dalam satu tabel memiliki baris yang sesuai di tabel lainnya
- Berbeda dengan kunci Primer, kunci tersebut tidak harus unik. Seringkali tidak
- Kunci asing bisa bernilai null meskipun kunci primer tidak bisa
Mengapa Anda memerlukan kunci asing?
Misalkan, seorang pemula menyisipkan record pada Tabel B seperti
Anda hanya dapat memasukkan nilai ke dalam kunci asing Anda yang ada di kunci unik di tabel induk. Ini membantu dalam integritas referensial.
Permasalahan di atas dapat diatasi dengan mendeklarasikan id keanggotaan dari Tabel2 sebagai kunci asing dari id keanggotaan dari Tabel1
Sekarang, jika seseorang mencoba memasukkan nilai di bidang id keanggotaan yang tidak ada di tabel induk, kesalahan akan ditampilkan!
Apa itu ketergantungan fungsional transitif?
Sebuah transitif ketergantungan fungsional adalah ketika mengubah kolom bukan kunci, mungkin menyebabkan kolom bukan kunci lainnya berubah
Perhatikan tabel 1. Mengubah kolom bukan kunci Nama Lengkap dapat mengubah Salam.
Mari beralih ke 3NF
Bentuk Normal Ketiga (3NF)
- Aturan 1- Berada di 2NF
- Aturan 2- Tidak memiliki ketergantungan fungsional transitif
Untuk memindahkan tabel 2NF kita ke 3NF, kita perlu membagi lagi tabel kita.
Contoh 3NF
Di bawah ini adalah contoh 3NF dalam database SQL:
Kami kembali membagi tabel kami dan membuat tabel baru yang menyimpan Salam.
Tidak ada ketergantungan fungsional transitif, dan karenanya tabel kami dalam 3NF
Pada Tabel 3 Salutation ID merupakan primary key, dan pada Tabel 1 Salutation ID merupakan asing bagi primary key pada Tabel 3
Sekarang contoh kecil kita berada pada level yang tidak dapat diurai lebih lanjut untuk mencapai tipe normalisasi bentuk normal yang lebih tinggi dalam DBMS. Bahkan, contoh tersebut sudah berada dalam bentuk normalisasi yang lebih tinggi. Upaya terpisah untuk beralih ke level normalisasi data berikutnya biasanya diperlukan dalam basis data yang kompleks. Namun, kita akan membahas level normalisasi berikutnya dalam DBMS secara singkat di bawah ini.
Bentuk Normal Boyce-Codd (BCNF)
Bahkan ketika database ada di 3rd Bentuk Normal, tetap saja akan terjadi anomali jika jumlahnya lebih dari satu Calon Kunci.
Terkadang BCNF juga disebut sebagai 3.5 Bentuk Biasa.
Bentuk Normal Keempat (4NF)
Jika tidak ada contoh tabel database yang berisi dua atau lebih, data independen dan multinilai yang menggambarkan entitas yang relevan, maka contoh tersebut termasuk dalam 4th Bentuk Biasa.
Bentuk Normal Kelima (5NF)
Sebuah meja ada di 5th Bentuk Normal hanya jika dalam 4NF dan tidak dapat didekomposisi menjadi sejumlah tabel yang lebih kecil tanpa kehilangan data.
Bentuk Normal Keenam (6NF) Diusulkan
6th Bentuk Normal tidak distandarisasi, namun telah dibahas oleh para ahli database selama beberapa waktu. Mudah-mudahan, kita memiliki definisi yang jelas & terstandarisasi untuk 6th Bentuk Normal dalam waktu dekat…
Keuntungan Bentuk Normal
- Tingkatkan Konsistensi Data: Normalisasi memastikan bahwa setiap bagian data disimpan hanya di satu tempat, sehingga mengurangi kemungkinan data tidak konsisten. Ketika data diperbarui, data hanya perlu diperbarui di satu tempat, untuk memastikan konsistensi.
- Mengurangi Redundansi Data: Normalisasi membantu menghilangkan duplikat data dengan membaginya menjadi beberapa tabel terkait. Hal ini dapat menghemat ruang penyimpanan dan juga membuat database menjadi lebih efisien.
- Meningkatkan Kinerja Kueri: Basis data yang dinormalisasi seringkali lebih mudah untuk dikueri. Karena data diatur secara logis, kueri dapat dioptimalkan agar berjalan lebih cepat.
- Jadikan Data Lebih Berarti: Normalisasi melibatkan pengelompokan data dengan cara yang masuk akal dan intuitif. Hal ini dapat membuat database lebih mudah dipahami dan digunakan, terutama bagi orang yang tidak mendesain database.
- Kurangi Kemungkinan Anomali: Anomali adalah masalah yang dapat terjadi saat menambah, memperbarui, atau menghapus data. Normalisasi dapat mengurangi kemungkinan terjadinya anomali ini dengan memastikan bahwa data diatur secara logis.
Kekurangan Normalisasi
- Peningkatan Kompleksitas: Normalisasi dapat menghasilkan hubungan yang rumit. Banyaknya tabel dengan kunci asing dapat sulit dikelola, sehingga menimbulkan kebingungan.
- Fleksibilitas yang Berkurang: Karena aturan normalisasi yang ketat, fleksibilitas dalam menyimpan data mungkin berkurang jika tidak mematuhi aturan ini.
- Peningkatan Persyaratan Penyimpanan: Meskipun normalisasi mengurangi redundansi, mungkin perlu mengalokasikan lebih banyak ruang penyimpanan untuk mengakomodasi tabel dan indeks tambahan.
- Overhead Kinerja: Menggabungkan beberapa tabel bisa jadi mahal dalam hal kinerja. Semakin data dinormalisasi, semakin banyak gabungan yang diperlukan, sehingga dapat memperlambat waktu pengambilan data.
- Hilangnya Konteks Data: Normalisasi memecah data menjadi tabel terpisah, yang dapat menyebabkan hilangnya konteks bisnis. Memeriksa tabel terkait diperlukan untuk memahami konteks suatu data.
- Kebutuhan akan Pengetahuan Ahli: Menerapkan database yang dinormalisasi memerlukan pemahaman mendalam tentang data, hubungan antar data, dan aturan normalisasi. Hal ini membutuhkan pengetahuan ahli dan dapat memakan waktu.
Itu saja untuk Normalisasi SQL!!!
Kesimpulan
- Perancangan basis data sangat penting untuk keberhasilan implementasi sistem manajemen basis data yang memenuhi persyaratan data sistem perusahaan.
- Normalisasi pada DBMS merupakan proses yang membantu menghasilkan sistem database yang hemat biaya dan memiliki model keamanan yang lebih baik.
- Ketergantungan fungsional adalah komponen yang sangat penting dalam proses normalisasi data
- Kebanyakan sistem basis data adalah basis data yang dinormalisasi hingga bentuk normal ketiga dalam DBMS.
- Kunci utama yang diidentifikasi secara unik adalah catatan dalam Tabel dan tidak boleh nol
- Kunci asing membantu menghubungkan tabel dan mereferensikan kunci utama