Anda di halaman 1dari 7

Normalisasi (normalize) merupakan salah satu cara pendekatan atau teknik yang digunakan

dalam membangun desain logic database relation dengan menerapakan sejumlah aturan dan
kriteria standard. Tujuan dari normalisasi adalah untuk menghasilakan struktur tabel yang
normal atau baik. Teknik normalisasi adalah upaya agar desain logik tabel-tabel berada dalam
bentuk normal(normal form) yang dapat didefinisikan dengan menggunakan ketergantungan
fungsi (functional dependency). Aturan-aturan normalisasi dinyatakan dalam istilah bentuk
normal.

Bentuk normal adalah suatu aturan yang dikenakan pada relasi-relasi atau tabel-tabel
dalam database dan harus dipenuhi oleh relasi atau tabel tersebut pada level-level
normalisasi. Suatu relasi dikatakan dalam bentuk normal tertentu jika memenuhi kondisi
tertentu juga.

Beberapa bentuk normalisasi diantaranya adalah bentuk tidak normal (unnormalize),


bentuk normal pertama (1NF), bentuk normal kedua (2NF), normal ketiga (3NF), dan normal
keempat (4NF) dan seterusnya.

Bentuk Normal Pertama (1NF)

Agar tabel berada di Formulir Normal Pertama, tabel harus mengikuti 4 aturan berikut:

 hanya memiliki atribut / kolom bernilai tunggal (atomik).


 Nilai yang disimpan dalam kolom harus dari domain yang sama
 Semua kolom dalam sebuah tabel harus memiliki nama unik
 Dan urutan penyimpanan data, tidak masalah.

Contoh

roll_no name subject

101 Akon OS, CN

103 Ckon Java

102 Bkon C, C++

Tabel sudah memenuhi 3 aturan dari 4 aturan, karena semua nama kolo adalah unik,
menyimpan data sesuai urutan inginkan dan kami belum berbagai jenis data dalam kolom.
Tetapi dari 3 nama yang berbeda dalam tabel, 2 memilih lebih dari 1 mata pelajaran. Dan
telah menyimpan nama subjek dalam satu kolom. Tetapi sesuai dengan bentuk Normal ke-1,
setiap kolom harus mengandung nilai atom.
Mengubah kolom menjadi bentuk normal pertama :
roll_no name subject

101 Akon OS

101 Akon CN

103 Ckon Java

102 Bkon C

102 Bkon C++

Normal Kedua (2 NF)


Agar tabel berada dalam Bentuk Normal Kedua, itu harus memenuhi dua syarat:

 Tabel tersebut harus dalam Bentuk Normal Pertama.


 tidak ada Partial Depedency
Apa itu pertial dependency ?
Untuk tabel sederhana seperti Siswa, satu kolom seperti student_id dapat secara unik
mengidentifikasi semua rekaman dalam tabel. Tapi ini tidak benar setiap saat. Jadi sekarang
mari kita memperluas contoh kita untuk melihat apakah lebih dari 1 kolom bersama-sama
dapat bertindak sebagai kunci utama.
Mari kita buat tabel lain untuk Subjek, yang akan memiliki bidang subject_id dan
subject_name dan subject_id akan menjadi kunci utama.

subject_id subject_name

1 Java

2 C++

3 Php

Sekarang kami memiliki tabel Siswa dengan informasi siswa dan meja lain Subjek untuk
menyimpan informasi subjek. Mari kita buat Skor di tabel lain, untuk menyimpan nilai yang
diperoleh siswa dalam mata pelajaran masing-masing. Dan akan menyimpan nama guru yang
mengajar mata pelajaran itu bersama dengan tanda.

score_id student_id subject_id marks teacher


1 10 1 70 Java Teacher

2 10 2 75 C++ Teacher

3 11 1 80 Java Teacher

Pada tabel skor, kita menyimpan student_id untuk mengetahui nilai siswa mana dan ini
subject_id untuk mengetahui untuk subjek apa nilai itu digunakan.
Bersama-sama, student_id + subject_id membentuk Kunci Kandidat (belajar tentang Kunci
Basis Data) untuk tabel ini, yang bisa menjadi kunci Utama.
Bingung, Bagaimana kombinasi ini bisa menjadi kunci utama?
Lihat, jika diminta untuk memberi nilai siswa dengan student_id 10, dapatkah Anda
mendapatkannya dari tabel ini? Tidak, karena Anda tidak tahu untuk subjek apa. Dan jika
saya memberi Anda subject_id, Anda tidak akan tahu untuk siswa yang mana. Karenanya kita
perlu student_id + subject_id untuk mengidentifikasi secara unik setiap baris.
Tapi di mana Ketergantungan Partial?
Sekarang jika Anda melihat tabel Skor nama guru kolom yang hanya bergantung
pada subjek, untuk Java itu adalah Java Teacher dan untuk C ++ itu C ++ Teacher &
sebagainya. Sekarang seperti yang baru saja kita bahas bahwa kunci utama untuk tabel ini
adalah komposisi dari dua kolom yaitu student_id & subject_id tetapi nama guru hanya
tergantung pada subjek, maka subject_id, dan tidak ada hubungannya dengan student_id Ini
adalah Partial Dependency, di mana atribut dalam tabel hanya bergantung pada sebagian dari
kunci utama dan bukan pada seluruh kunci.

subject_id subject_name teacher

1 Java Java Teacher

2 C++ C++ Teacher

3 Php Php Teacher

score_id student_id subject_id marks

1 10 1 70
2 10 2 75

3 11 1 80

Bentuk Normal ketiga ( 3NF )


Persyaratan untuk Bentuk Normal Ketiga
Agar tabel berada dalam bentuk normal ketiga,

 Itu harus dalam bentuk Normal Kedua.


 Dan tidak memiliki transitive dependency.

score_id student_id subject_id marks exam_name total_marks

Dengan exam_name dan total_marks ditambahkan ke tabel Skor kami, itu menyimpan
lebih banyak data sekarang. Kunci utama untuk tabel Skor kami adalah kunci komposit, yang
berarti terdiri dari dua atribut atau kolom → student_id + subject_id.
Exam_name tergantung pada siswa dan subjek. Sebagai contoh, seorang siswa teknik
mesin akan memiliki ujian Lokakarya tetapi seorang siswa ilmu komputer tidak akan. Dan
untuk beberapa mata pelajaran Anda memiliki ujian Prctical dan beberapa lainnya tidak. Jadi
kita dapat mengatakan bahwa exam_name tergantung pada student_id dan subject_id.
total_marks kolom tergantung pada exam_name karena dengan jenis ujian total skor
berubah. Misalnya, nilai praktik lebih sedikit sedangkan ujian teori lebih banyak nilai.
Tapi, exam_name hanyalah kolom lain di tabel skor. Ini bukan kunci utama atau
bahkan bagian dari kunci utama, dan total_marks tergantung padanya.
Ini Ketergantungan Transitif. Ketika atribut non-prima tergantung pada atribut non-
prima lainnya daripada tergantung pada atribut prima atau kunci primer.
Bagaimana cara menghapus Ketergantungan Transitif?
Sekali lagi solusinya sangat sederhana. Keluarkan kolom exam_name dan total_marks
dari tabel Skor dan letakkan di tabel Ujian dan gunakan exam_id di mana pun diperlukan.

core Table: In 3rd Normal Form


score_id student_id subject_id marks exam_id
The new Exam table
exam_id exam_name total_marks

1 Workshop 200

2 Mains 70

3 Practicals 30

Boyce-Codd Normal Form (BCNF).


Aturan untuk BCNF
Agar tabel memenuhi Formulir Normal Boyce-Codd, harus memenuhi dua syarat berikut:

 Itu harus dalam Bentuk Normal Ketiga.


 Dan, untuk setiap ketergantungan A → B, A harus menjadi super key.

student_id subject professor

101 Java P.Java

101 C++ P.Cpp

102 Java P.Java2

103 C# P.Chash

104 Java P.Java

Mengapa tabel ini tidak ada dalam BCNF?


Dalam tabel di atas, student_id, subjek membentuk kunci utama, yang berarti kolom subjek
adalah atribut utama.
Tapi, ada satu lagi ketergantungan, profesor → subjek.
Dan sementara subjek adalah primary key, profesor adalah atribut non-primary key, yang
tidak diizinkan oleh BCNF.
Bagaimana cara mengubahnya menjadi BCNF?
Untuk membuat hubungan ini (tabel) menjadi bentuk BCNF, uraikan tabel ini menjadi dua
tabel, tabel siswa dan tabel profesor.

student_id p_id

101 1

101 2

And, Professor Table

p_id professor subject

1 P.Java Java

2 P.Cpp C++

Bentuk Normal keempat ( 4NF )


Aturan untuk Bentuk Normal Ke-4
Agar tabel memenuhi Formulir Normal Keempat, itu harus memenuhi dua kondisi berikut:

 Itu harus dalam Bentuk Normal Boyce-Codd.


 Dan, tabel tidak boleh memiliki multivalue dependency.

Apa itu Multi-valued Dependency?


Sebuah tabel dikatakan memiliki ketergantungan multi-nilai, jika kondisi berikut ini benar,

 Untuk ketergantungan A → B, jika untuk nilai tunggal A, memiliki beberapa nilai B,


maka tabel tersebut mungkin memiliki multi-value dependemcy
 Juga, sebuah tabel harus memiliki setidaknya 3 kolom agar memiliki ketergantungan
multi-nilai.
 Dan, untuk relasi R (A, B, C), jika ada ketergantungan multi-nilai antara, A dan B,
maka B dan C harus independen satu sama lain.
Jika semua kondisi ini benar untuk setiap relasi (tabel), dikatakan memiliki multi-value
dependency

s_id course hobby


1 Science Cricket

1 Maths Hockey

2 C# Cricket

2 Php Hockey

Seperti yang dapat Anda lihat pada tabel di atas, siswa dengan s_id 1 telah memilih dua mata
pelajaran, Sains dan Matematika, dan memiliki dua hobi, Cricket dan Hockey.

cara memenuhi Formulir Normal Ke-4?


Untuk membuat relasi di atas memenuhi bentuk normal ke-4, kita bisa mendekomposisi tabel
menjadi 2 tabel.

s_id course

1 Science

1 Maths

2 C#

2 Php

And, Hobbies Table,

s_id hobby

1 Cricket

1 Hockey

2 Cricket

2 Hockey