Pengertian normalisasi:
Normalisasi adalah Teknik atau pendekatan yang digunakan dalam membangun disain database relasional melalui himpunan data dengan tingkat ketergantungan fungsional dan keterkaitan yang tinggi sehingga menghasilkan struktur tabel yang normal.
Tujuan normalisasi:
- Minimalisasi redundansi (pengulangan data)
- Memudahkan identifikasi entitas
- Mencegah terjadinya anomali
Beberapa bentuk normal:
- 1NF, 2NF, 3NF, BCNF
1NF Suatu relasi dikatakan bentuk normal pertama, jika dan hanya jika setiapatribut bernilai tunggal untuk setiap baris. Tiap field hanya satu pengertian, bukanmerupakan kumpulan kata yang mempunyai arti mendua, hanya satu arti saja dan juga bukanlah pecahan kata – kata sehingga artinya lain. Tidak ada set atribut yangberulang-ulang atau atribut bernilai ganda.
2NF Memenuhi bentuk 1 NF (normal pertama), Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama /primary key
3NF Memenuhi bentuk 2 NF (normal kedua), Atribut bukan kunci tidak memiliki dependensi transitif terhadap kunci utama / primarykey.
BCNF Memenuhi bentuk 3 NF (normal ketiga), Semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik) serta Setiap atribut harus bergantung fungsi pada atribut superkey.
- 4NF, 5NF
Contoh:
- First Normal Form (1NF)
- Suatu relasi disebut memenuhi bentuk normal pertama (1NF) jika dan hanya jika setiap atribut dari relasi tersebut hanya memiliki tunggal dan tidak ada pengulangan grup atribut dalam baris.
- Bentuk 1NF tidak boleh mengandung grup atribut yang berulang.
- Tujuan membentuk 1NF :
- Semantik tabel menjadi lebih eksplisit (say anything once).
- Semua operator aljabar relasional dapat diaplikasikan pada tabel.
Kasus yang Di Buat:
v Pekerjaan
v Sales
v Mahasiswa
- Berikut adalah contoh data-data yang belum ternormalisasi:
NIP Nama Jabatan Keahlian Lama 001 Man Analisis Acces 6 tahun Oracle 3 tahun 002 Rizal Analisis MySQL 2 tahun Oracle 4 tahun 003 Hanif Programer C 4 tahun VB 5 tahun Java 8 tahun Pada tabel di atas, contoh data belum ternormalisasi sehingga
dapat diubah ke dalam bentuk 1NF dengan cara membuat setiap baris
berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu
nilai.NIP Nama Jabatan Keahlian Lama 001 Man Analisis Acces 6 tahun 001 Man Analisis Oracle 3 tahun 002 Rizal Analisis MySQL 2 tahun 002 Rizal Analisis Oracle 4 tahun 003 Hanif Programer C 4 tahun 003 Hanif Programer VB 5 tahun 003 Hanif Programer Java 8 tahun Relasi Pekerjaan tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.
- Berikut adalah contoh data-data yang belum ternormalisasi:
Id_Sales Nama_Sales Telepon S001 Ria 3513214, 3541245 S002 Anti 6548143, 5825143, 7563249 S003 Ani 085337732666 S004 Maya 6836592 S005 Wulan 6823928, 081234321454 Pada data tabel di atas, contoh data belum ternormalisasi sehingga
dapat diubah ke dalam bentuk 1NF dengan cara membuat setiap baris
berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu
nilai.Id_Sales Nama_Sales Telepon S001 Ria 3513214 S001 Ria 3541245 S002 Anti 6548143 S002 Anti 5825143 S002 Anti 7563249 S003 Ani 085337732666 S004 Maya 6836592 S005 Wulan 6823928 S005 Wulan 081234321454 Relasi Sales tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.
- Berikut adalah contoh data-data yang belum ternormalisasi:
NIM Nama Kode_Matkul 201010241 Siti 001, 004, 008 201010242 Beti 002, 005 201010243 Eli 005, 008 201010244 Rosi 003, 006 201010245 Eci 001, 007, 009 Pada data tabel di atas, contoh data belum ternormalisasi sehingga
dapat diubah ke dalam bentuk 1NF dengan cara membuat setiap baris
berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu
nilai.NIM Nama Kode_Matkul 201010241 Siti 001 201010241 Siti 004 201010241 Siti 008 201010242 Beti 002 201010242 Beti 005 201010243 Eli 005 201010243 Eli 008 201010244 Rosi 003 201010244 Rosi 006 201010245 Eci 001 201010245 Eci 007 201010245 Eci 009 Relasi Mahasiswa tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.
- 2NF
- Memenuhi bentuk 1 NF (normal pertama).
- Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama atau primary key.
Contoh:
Diketahui tabel R=(A,B,C,D,E) ; A,B kunci utama (primary key)
dengan FD : A,B & C,D,E maka tabel R memenuhi 2NF sebab :
A,B & C,D,E berarti :
A,B & C,
A,B & D dan
A,B & E
Jadi semua atribut bukan kunci utama tergantung penuh pada (A,B).
Bagaimana bila R = (A,B,C,D,E) tetapi dengan FD :
(A,B) & (C,D) dan B & E. Apakah memenuhhi 2NF ?
Jelas bahwa R bukan 2NF karena ada atribut E yang bergantung
hanya pada atribut B saja dan bukan terhadap (A,B).
Dari FD : (A,B) à (C,D) juga mencerminkan bahwa hanya C dan D saja yang bergantung secara fungsional terhadap (A,B), tidak untuk E.
Jadi bukan 2NF.
Untuk mengubah menjadi 2NF, lakukan dekomposisi menjadi :
R1 = (A,B,C,D) dan R2 = (B,E). Tampak R1 dan R2 memenuhi 2NF.
- Untuk membentuk normal, kedua tiap tabel atau file haruslah ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Pekerjaan yang memenuhi normal pertama (1 NF) , terlihat bahwa NIP merupakan Primery Key (PK).
NIP Nama dan Jabatan: Artinya atribut Nama dan Jabatan bergantung pada NIP.
Tetapi NIP Keahlian dan Lama: Artinya bahwa atribut Lama tidak tergantungpada NIP.
Belum Normal
NIP Nama Jabatan Keahlian Lama 001 Man Analisis Acces 6 tahun Oracle 3 tahun 002 Rizal Analisis MySQL 2 tahun Oracle 4 tahun 003 Hanif Programer C 4 tahun VB 5 tahun Java 8 tahun Normal 1NF
NIP Nama Jabatan Keahlian Lama 001 Man Analisis Acces 6 tahun 001 Man Analisis Oracle 3 tahun 002 Rizal Analisis MySQL 2 tahun 002 Rizal Analisis Oracle 4 tahun 003 Hanif Programer C 4 tahun 003 Hanif Programer VB 5 tahun 003 Hanif Programer Java 8 tahun Normal 2NF
NIP Nama Jabatan 001 Man Analisis 002 Rizal Analisis 003 Hanif Programer NIP Keahlian Lama 001 Acces 6 tahun 001 Oracle 3 tahun 002 MySQL 2 tahun 002 Oracle 4 tahun 003 C 4 tahun 003 VB 5 tahun 003 Java 8 tahun - Untuk membentuk normal, kedua tiap tabel atau file haruslah ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Pekerjaan yang memenuhi normal pertama (1 NF) , terlihat bahwa Id_Sales merupakan Primery Key (PK).
Id_Sales Nama_Sales: Artinya atribut Nama_Sales bergantung pada Id_Sales.
Tetapi Id_Sales Telepon: Artinya bahwa atribut Telepon tidak tergantung pada Id_Sales.
Belum Normal
Id_Sales Nama_Sales Telepon S001 Ria 3513214, 3541245 S002 Anti 6548143, 5825143, 7563249 S003 Ani 085337732666 S004 Maya 6836592 S005 Wulan 6823928, 081234321454 Normal 1NF
Id_Sales Nama_Sales Telepon S001 Ria 3513214 S001 Ria 3541245 S002 Anti 6548143 S002 Anti 5825143 S002 Anti 7563249 S003 Ani 085337732666 S004 Maya 6836592 S005 Wulan 6823928 S005 Wulan 081234321454 Normal 2NF
Id_Sales Nama_Sales S001 Ria S002 Anti S003 Ani S004 Maya S005 Wulan Id_Sales Telepon S001 3513214 S001 3541245 S002 6548143 S002 5825143 S002 7563249 S003 085337732666 S004 6836592 S005 6823928 S005 081234321454 - Untuk membentuk normal, kedua tiap tabel atau file haruslah ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Pekerjaan yang memenuhi normal pertama (1 NF) , terlihat bahwa NIM merupakan Primery Key (PK).
NIM Nama: Artinya atribut Nama bergantung pada NIM.
MatkulTetapi NIM Kode_Matkul: Artinya bahwa atribut Kode_m tidak tergantung pada NIM.
Belum Normal
NIM Nama Kode_Matkul 201010241 Siti 001, 004, 008 201010242 Beti 002, 005 201010243 Eli 005, 008 201010244 Rosi 003, 006 201010245 Eci 001, 007, 009 Normal 1NF
NIM Nama Kode_Matkul 201010241 Siti 001 201010241 Siti 004 201010241 Siti 008 201010242 Beti 002 201010242 Beti 005 201010243 Eli 005 201010243 Eli 008 201010244 Rosi 003 201010244 Rosi 006 201010245 Eci 001 201010245 Eci 007 201010245 Eci 009 Normal 2NF
NIM Nama 201010241 Siti 201010242 Beti 201010243 Eli 201010244 Rosi 201010245 Eci NIM Kode_Matkul 201010241 001 201010241 004 201010241 008 201010242 002 201010242 005 201010243 005 201010243 008 201010244 003 201010244 006 201010245 001 201010245 007 201010245 009 - 3NF
Suatu relasi disebut memenuhi bentuk normal ketiga (3NF) jika dan hanya jika :
- Memenuhi 2NF
- Setiap atribut yang bukan kunci tidak tergantung secara fungsional terhadap atribut bukan kunci yang lain dalam relasi tsb (tidak terdapat ketergantungan transitif pada atribut bukan kunci).
- Jika dan hanya jika setiap FD nontrivial : X & A, dimana X dan A atribut (atau kompositnya), memenuhi salah satu kondisi :
- X adalah superkey
- A merupakan anggota candidate key (A disebut prime attribute)
Jika suatu relasi sudah memenuhi 2NF tapi tidak memenuhi 3 NF, maka untuk normalisasi ke bentuk 3NF, tabel 2NF didekomposisi menjadi beberapa tabel hingga masing-masing memenuhi 3NF.
Tujuan membentuk 3NF :
ü Semantik tabel 3NF menjadi lebih eksplisit (fully FD hanya pada primary key).
ü Menghindari update anomali yang masih mungkin terjadi pada 2NF.
Jika suatu relasi memenuhi 2NF dan hanya memiliki tepat satu atribut yang bukan kunci utama maka relasi tersebut memenuhi 3NF
Contoh :
Diketahui tabel R=(A,B,C,D,E) ; A,B kunci utama (primary key)
dengan FD : A,B & C,D,E dan C & D,E maka R bukan 3NF sebab :
Atribut D dan E (bukan kunci utama) bergantung secara fungsional
pada C (yang juga bukan kunci utama).
Melalui FD :
Diketahui A,B & C,D,E. Karena sifat refleksif maka A,B & A,B. Sehingga A,B & A,B,C,D,E (A,B) : Superkey.
Diketahui C & D,E. Karena sifat refleksif maka C & C. Sehingga C & C,D,E. Karena C> A,B,C,D,E maka C bukan superkey.
Tidak memenuhi definisi 3NF. Jadi R bukan 3NF. Agar R memenuhi 3NF maka didekomposisi menjadi :
R1=(A,B,C) dan R2=(C,D,E) sehingga R1 dan R2 memenuhi 3NF.
- Tabel Pekerjaan
Belum Normal:
NIP | Nama | Jabatan | Keahlian | Lama |
001 | Man | Analisis | Acces | 6 tahun |
Oracle | 3 tahun | |||
002 | Rizal | Analisis | MySQL | 2 tahun |
Oracle | 4 tahun | |||
003 | Hanif | Programer | C | 4 tahun |
VB | 5 tahun | |||
Java | 8 tahun |
Normal 2NF
NIP | Nama | Jabatan |
001 | Man | Analisis |
002 | Rizal | Analisis |
003 | Hanif | Programer |
NIP | Keahlian | Lama |
001 | Acces | 6 tahun |
001 | Oracle | 3 tahun |
002 | MySQL | 2 tahun |
002 | Oracle | 4 tahun |
003 | C | 4 tahun |
003 | VB | 5 tahun |
003 | Java | 8 tahun |
Normal 3NF
NIP | Nama | Jabatan |
001 | Man | Analisis |
001 | Man | Analisis |
002 | Rizal | Analisis |
002 | Rizal | Analisis |
003 | Hanif | Programer |
003 | Hanif | Programer |
003 | Hanif | Programer |
Jabatan | Lama |
Analisis | 6 tahun |
Analisis | 3 tahun |
Analisis | 2 tahun |
Analisis | 4 tahun |
Programer | 4 tahun |
Programer | 5 tahun |
Programer | 8 tahun |
NIP | Jabatan | Keahlian |
001 | Analisis | Acces |
001 | Analisis | Oracle |
002 | Analisis | MySQL |
002 | Analisis | Oracle |
003 | Programer | C |
003 | Programer | VB |
003 | Programer | Java |
- Tabel Sales
Belum Normal
Id_Sales | Nama_Sales | Telepon |
S001 | Ria | 3513214, 3541245 |
S002 | Anti | 6548143, 5825143, 7563249 |
S003 | Ani | 085337732666 |
S004 | Maya | 6836592 |
S005 | Wulan | 6823928, 081234321454 |
Normal 2NF
Id_Sales | Nama_Sales |
S001 | Ria |
S002 | Anti |
S003 | Ani |
S004 | Maya |
S005 | Wulan |
Id_Sales | Telepon |
S001 | 3513214 |
S001 | 3541245 |
S002 | 6548143 |
S002 | 5825143 |
S002 | 7563249 |
S003 | 085337732666 |
S004 | 6836592 |
S005 | 6823928 |
S005 | 081234321454 |
Normal 3NF
Id_Sales | Nama_Sales |
S001 | Ria |
S002 | Anti |
S003 | Ani |
S004 | Maya |
Nama_Sales | Telepon | |
S001 | 3513214 | |
S001 | 3541245 | |
S002 | 6548143 | |
S002 | 5825143 | |
S002 | 7563249 | |
S003 | 085337732666 | |
S004 | 6836592 | |
S005 | 6823928 | |
S005 | 081234321454 | |
Id_Sales | Nama_Sales | Telepon |
S001 | Ria | 3513214 |
S001 | Ria | 3541245 |
S002 | Anti | 6548143 |
S002 | Anti | 5825143 |
S002 | Anti | 7563249 |
S003 | Ani | 085337732666 |
S004 | Maya | 6836592 |
S005 | Wulan | 6823928 |
S005 | Wulan | 081234321454 |
- Tabel Mahasiswa
Belum Normal
NIM | Nama | Kode_Matkul |
201010241 | Siti | 001, 004, 008 |
201010242 | Beti | 002, 005 |
201010243 | Eli | 005, 008 |
201010244 | Rosi | 003, 006 |
201010245 | Eci | 001, 007, 009 |
Normal 2NF
NIM | Nama |
201010241 | Siti |
201010242 | Beti |
201010243 | Eli |
201010244 | Rosi |
201010245 | Eci |
NIM | Kode_Matkul |
201010241 | 001 |
201010241 | 004 |
201010241 | 008 |
201010242 | 002 |
201010242 | 005 |
201010243 | 005 |
201010243 | 008 |
201010244 | 003 |
201010244 | 006 |
201010245 | 001 |
201010245 | 007 |
201010245 | 009 |
3NF
NIM | Nama |
201010241 | Siti |
201010242 | Beti |
201010243 | Eli |
201010244 | Rosi |
201010245 | Eci |
Nama | Kode_Matkul |
Siti | 001 |
Siti | 004 |
Siti | 008 |
Beti | 002 |
Beti | 005 |
Eli | 005 |
Eli | 008 |
Rosi | 003 |
Rosi | 006 |
Eci | 001 |
Eci | 007 |
Eci | 009 |
NIM | Nama | Kode_Matkul |
201010241 | Siti | 001 |
201010241 | Siti | 004 |
201010241 | Siti | 008 |
201010242 | Beti | 002 |
201010242 | Beti | 005 |
201010243 | Eli | 005 |
201010243 | Eli | 008 |
201010244 | Rosi | 003 |
201010244 | Rosi | 006 |
201010245 | Eci | 001 |
201010245 | Eci | 007 |
201010245 | Eci | 009 |
- BCNF
- Suatu relasi disebut memenuhi BCNF jika dan hanya jika setiap determinan yang ada pada relasi tersebut adalah candidate key.
- Definisi yang lain : Suatu relasi disebut memenuhi BCNF jika untuk setiap FD nontrivial : X à A atribut X adalah superkey.
- Untuk normalisasi ke bentuk BCNF, maka tabel 3NF didekomposisi menjadi beberapa tabel yang masing-masing memenuhi BCNF.
- Tujuan membentuk BCNF : multiple candidate key menjadi lebih eksplisit (FD hanya pada candidate key). Menghindari update anomali yang masih mungkin terjadi pada 3NF.
Dari definisi 3NF dan BCNF, maka apabila suatu relasi memenuhi BCNF pasti memenuhi 3NF, tetapi belum tentu sebaliknya.
Contoh :
Diketahui tabel R=(A,B,C) dengan FD : A & B dan B & C maka R bukan BCNF, sebab :
v A Superkey ?
AàB (diketahui)
AàB dan B & C maka A & C (transitif)
AàA (refleksif)
Sehingga A & (A,B,C) atau A & R. Jadi A superkey.
v B Superkey ?
B & C (diketahui)
B & B (refleksif)
Tapi BA. Sehingga B & A,B,C atau B bukan superkey. Agar R memenuhi BCNF maka didekomposisi menjadi :
R1=(A,B) ; FD : A & B dan
R2=(B,C) ; FD : B & C. Sehingga R1 dan R2 masing-masing memenuhi BCNF. Sebab A dan B dua-duanya sekarang menjadi superkey.
- Tabel Pekerjaan
Belum Normal
NIP | Nama | Jabatan | Keahlian | Lama |
001 | Man | Analisis | Acces | 6 tahun |
Oracle | 3 tahun | |||
002 | Rizal | Analisis | MySQL | 2 tahun |
Oracle | 4 tahun | |||
003 | Hanif | Programer | C | 4 tahun |
VB | 5 tahun |
Normal BCNF
NIP | Nama | Jabatan | Keahlian |
001 | Man | Analisis | |
002 | Rizal | Analisis | |
003 | Hanif | Programer |
Nama | Lama |
Man | 6 tahun |
Man | 3 tahun |
Rizal | 2 tahun |
Rizal | 4 tahun |
Hanif | 4 tahun |
Hanif | 5 tahun |
Hanif | 8 tahun |
- Tabel Sales
Belum Normal
Id_Sales | Nama_Sales | Telepon |
S001 | Ria | 3513214, 3541245 |
S002 | Anti | 6548143, 5825143, 7563249 |
S003 | Ani | 085337732666 |
S004 | Maya | 6836592 |
S005 | Wulan | 6823928, 081234321454 |
Normal BCNF
Id_Sales | Nama_Sales |
S001 | Ria |
S002 | Anti |
S003 | Ani |
S004 | Maya |
S005 | Wulan |
Nama_Sales | Telepon |
S001 | 3513214 |
S001 | 3541245 |
S002 | 6548143 |
S002 | 5825143 |
S002 | 7563249 |
S003 | 085337732666 |
S004 | 6836592 |
S005 | 6823928 |
S005 | 081234321454 |
- Table Mahasiswa
Belum Normal
NIM | Nama | Kode_Matkul |
201010241 | Siti | 001, 004, 008 |
201010242 | Beti | 002, 005 |
201010243 | Eli | 005, 008 |
201010244 | Rosi | 003, 006 |
201010245 | Eci | 001, 007, 009 |
Normal BCNF
NIM | Nama |
201010241 | Siti |
201010242 | Beti |
201010243 | Eli |
201010244 | Rosi |
201010245 | Eci |
Nama | Kode_Matkul |
Siti | 001 |
Siti | 004 |
Siti | 008 |
Beti | 002 |
Beti | 005 |
Eli | 005 |
Eli | 008 |
Rosi | 003 |
Rosi | 006 |
Eci | 001 |
Eci | 007 |
Eci | 009 |
Beli T-Shirt, Raglan dan Kids T-Shirt Original Ocean Seven
- T-Shirt, Raglan dan Kids T-Shirt Anime, Manga, Gamers dan Cartoon World (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt Footbal Series (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt Music Series (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt OceanSeven – Custom dan Basic Tees (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt OceanSeven -Kids Collections (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt OceanSeven -Signature Serues (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt Social Media dan Photography (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt Sport, Automotive dan Adventure (OceanSeven)
- T-Shirt, Raglan dan Kids T-Shirt Superheroes dan Movies (OceanSeven)
Thanks Brother . . .
ok ok ok 🙂
lumayan dimengerti …
thanks
Ping balik: NORMALISASI | Teknik Informatika
Thanks, tutorial bagus, mudah dimengerti.
kayaknya ane mesti ngulang Matematika Himpunan nih…
thanks bro, tapi untuk 3nf kurang jelas penjelasaannya 🙂
normalisasi nya aneh..
di level BCNF masih redudansi segitu banyak..
no offense gan.