Apa itu Normalisasi di DBMS Beserta Contohnya

apa-itu-normalisasi-pakardi

Apa itu Normalisasi?

Normalisasi adalah sebuah teknik desain database yang mengurangi redudansi data dan menghilangkan karakteristik yang tidak digunakan disebut dengan anomali. Aturan normalisasi membagi tabel yang besar menjadi beberapa tabel yang lebih kecil dan menghubungkannya dengan relasi. Tujuan dari normalisasi dalam SQL adalah untuk menghilangkan data yang berulang dan memastikan data disimpan secara logis.

Penemuan Model Relasional oleh Edgar Codd mengusulkan teori normalisasi data dengan diperkenalkannya bentuk Normal Pertama, dan ia terus memperluas teori dengan bentuk Normal Kedua dan Ketiga. Kemudian ia bergabung dengan Raymond F. Boyce untuk mengembangkan teori Boyce-Codd Normal Form (BCNF).

Database Normal Form

Berikut adalah daftar Normal Form di SQL:
  • 1NF (Bentuk Normal Pertama)
  • 2NF (Bentuk Normal Kedua)
  • 3NF (Bentuk Normal Ketiga)
  • BCNF (Normalisasi Boyce-Codd)
  • 4NF (Bentuk Normal Keempat)
  • 5NF (Bentuk Normal Kelima)
  • 6NF (Bentuk Normal Keenam)

Teori Normalisasi data di server MySQL masih dikembangkan lebih lanjut. Misalnya, ada diskusi bahkan sampai tahap ke enam dalam normalisasinya. Namun, dalam aplikasi yang paling sederhana, normalisasi hanya mencapai tahap tiga Form Normalisasinya. Evolusi Normalisasi dalam teori SQL dapat di ilustrasikan seperti di bawah ini - 

apa-itu-normalisasi-pakardi

Normalisasi Database dengan Contohnya

Contoh Normalisasi Database dapat dengan mudah kita pahami dengan bantuan studi kasus. Kita asumsikan, penyewaan kaset film menyimpan database film yang akan disewakan. Tanpa normalisasi dalam database, semua informasi disimpan dalam satu tabel seperti yang di tunjukan di bawah ini. Mari kita pahami database normalisasi dengan contoh normalisasi dengan solusinya:
normalisasi-tabel-1-pakardi
Disini kita bisa melihat kolom Penyewaat Kaset Film memiliki beberapa nilai. Sekarang mari kita pindah ke Bentuk Normal Pertama.

Aturan 1NF (Bentuk Normal Pertama)

  • Setiap sel tabel harus berisi nilai tunggal.
  • Setiap record harus unik.
Kita lihat tabel di atas dalam 1NF -
1nf-pakardi
Sebelum kita melanjutkan mari kita pahami beberapa hal -

Apa itu Key dalam SQL?

Key di SQL adalah nilai yang digunakan untuk mengidentifikasi record dalam tabel secara unik. SQL Key adalah satu kolom atau kombinasi dari beberapa kolom yang digunakan untuk mengidentifikasi baris atau tuple secara unik dalam tabel. SQL Key digunakan untuk mengidentifikasi informasi duplikat, dan juga membantu relasi antara beberapa tabel dalam database.

Catatan: Kolom dalam tabel yang TIDAK digunakan untuk mengidentifikasi record secara unik disebut kolom non-key.

Apa itu Primary Key?

Primary adalah nilai kolom tunggal yang digunakan untuk mengidentifikasi record database secara unik.

Primary Key memiliki atribut seperti berikut -

  • Sebuah Primary Key Tidak boleh NULL.
  • Nilai Primary Key harus unik.
  • Primary Key jarang diubah.
  • Primary Key harus diberi nilai ketika record baru disisipkan.

Apa itu Composite Key?

Composite key adalah Primary key yang terdiri dari beberapa kolom yang digunakan untuk mengidentifikasi record secara unik.

Dalam database ini, ada dua orang yang memiliki nama yang sama Robert Phil, tetapi mereka tinggal di tempat yang berbeda.

CompositeKey-pakardi
Oleh karena itu, kita memerlukan nama lengkap dan alamat untuk mengidentifikasi record secara unik ini yang disebut dengan Composite Key.

Setelah bentuk normal pertama kita 1NF sudah terselesaikan, maka selanjutnya pindah ke bentuk normal 2NF.

Aturan 2NF (Bentuk Normal Kedua)

Aturan-aturan yang harus dipenuhi ketika hendak menentukan bentuk normal kedua adalah sebagai berikut -
  • Harus sudah melewati Bentuk Normal Pertama 1NF
  • Dari tiap kolom memiliki Primary Key yang tidak secara fungsional bergantung pada subset hubungan Candidate Key.
Setelah itu kita harus membagi database yang cukup rumit menjadi bagian-bagian kecil dalam bentuk normalisasi kedua.
Tabel1

Tabel2
Kita telah membagi tabel 1NF menjadi dua tabel. Yaitu Tabel 1 dan Tabel 2. Tabel 1 berisi informasi tentang Membership. dan Tabel 2 berisi informasi tentang film yang disewa.

Kita telah melihat kolom baru yang disebut Membership_ID yang merupakan Primary key untuk tabel 1. Record dapat diidentifikasi secara unik di Tabel 1 menggunakan Membership ID.

Peran Foreign Key

Dalam Tabel 2, Membership_ID memiliki peran sebagai Foreign Key.
foreignkey
Kegunaan Foreign Key digunakan sebagai Primary Key untuk Tabel lain, ini membantu kita saling menghubungkan antar tabel.
  • Foreign key dapat memiliki nama yang berbeda dari Primary Key.
  • Ini dapat memastikan bahwa dalam satu tabel memiliki baris yang sesuai di tabel lain.
  • Tidak seperti Primary Key, mereka tidak harus unik.
  • Foreign key bisa batal meskipun Primary key tidak bisa.
foreignkeyrelasidenganprimary

Mengapa kita membutuhkan foreign key?

Misalnya, seorang awam menyisipkan record ke dalam Tabel 2 seperti di bawah ini
kenapaforeignkeypenting
Kita hanya akan dapat menyisipkan record ke dalam Tabel 2 jika kunci unik ada di Tabel 1. Ini membantu dalam integritas referensial.

Masalah di atas dapat diatasi dengan menyisipkan terlebih dahulu Membership ID sebagai Primary key Tabel 1 dan kemudian menyisipkan kembali record yang sebelumnya ke dalam Tabel 2.

Sekarang, jika seseorang mencoba menyisipkan record di field Membership ID yang tidak ada di tabel induk, pesan Error akan muncul.

Apa itu dependensi fungsional transitif?

Dependensi fungsional transitif adalah ketika kita mengubah kolom non-key, dapat menyebabkan salah satu kolom non-key lainnya berubah.

Contoh pada Tabel 1. Mengubah kolom non-key Full Names dapat mengubah kolom Salutation.

depedensi-fungsional-transitif
Selanjutnya kita pindah ke bentuk normal ketiga 3NF

Aturan 3NF (Bentuk Normal Ketiga)

Setelah kita melewati bentuk normal kedua 2NF, maka selanjutnya kita pindak ke bentuk normal ketiga 3NF yang memiliki aturan sebagai berikut:
  • Sudah melewati tahap 2NF
  • Tidak memiliki dependensi fungsional transitif
Untuk memindahkan tabel 2NF kita ke 3NF, kita sekali lagi perlu membagi tabel kita menjadi lebih kecil lagi.

Contoh 3NF

Di bawah ini adalah contoh 3NF dalam database:
3NFtabel1

3NFtabel2

3NFtabel3
Kita telah membuat Tabel 3 yaitu Salutation setelah kita membaginya lagi.

Sudah tidak ada lagi dependensi fungsional transitif, dan karenanya tabel kita berada di bentuk normal ketiga 3NF.

Dalam Tabel 3 Salutation ID adalah Primary Key, dan dalam Tabel 1 Salutation ID adalah foreign key untuk primary key Tabel 3.

Contoh sederhana di atas sudah berada pada tingkat yang tidak dapat diuraikan lebih lanjut untuk mencapai jenis normalisasi bentuk normal yang lebih tinggi dalam DBMS. Bahkan, sudah dalam bentuk normalisasi yang lebih tinggi. Upaya terpisah untuk pindah ke tingkat berikutnya dari normalisasi data biasanya diperlukan dalam database yang lebih kompleks. Namun, kita akan membahas tingkat normalisasi berikutnya dalam DBMS secara singkat.

BCNF (Boyce-Codd Normal Form)

Bahkan ketika database berada dalam bentuk 3NF, kita masih akan menemukan anomali yang dihasilkan jika memiliki lebih dari satu Candidate Key.

Terkadang BCNF juga disebut sebagai Bentuk Normal 3,5.

Aturan 4NF (Bentuk Normal Keempat)

Jika tidak ada contoh tabel database yang berisi dua atau lebih data independen dan multivalued yang menggambarkan entitas yang relevan, maka itu ada dalam Bentuk Normal Keempat 4NF.

Aturan 5NF (Bentuk Normal Kelima)

Tabel dalam 5NF hanya jika berada di 4NF dan tidak dapat diuraikan menjadi sejumlah tabel yang lebih kecil tanpa kehilangan data.

Aturan 6NF (Bentuk Normal Keenam)

6NF sebenernya belum memiliki standar aturan, namun saat ini sedang dibahas oleh para ahli database dalam beberapa waktu. Mudah-mudahan, kita dapat mendefinisikan dengan jelas dari Aturan 6NF ini dalam waktu dekat.

Semua itu hanyalah untuk Normalisasi dalam SQL.

Posting Komentar untuk "Apa itu Normalisasi di DBMS Beserta Contohnya"