Anda di halaman 1dari 28

Normalisasi Database Beserta Pengertian

dan Contohnya
Normalisasi database merupakan suatu pendekatan sistematis untuk

meminimalkan redundansi data pada suatu database agar database tersebut

dapat bekerja dengan optimal. Jika anda seorang database administrator ketika

terjadi sesuatu pada database seperti penurunan kinerja, mungkin anda akan

ditanya apakah database tersebut telah di normalisasi?

Tujuan Normalisasi Database

Tujuan normalisasi database adalah untuk menghilangkan dan mengurangi

redudansi data dan tujuan yang kedua adalah memastikan dependensi data

(Data berada pada tabel yang tepat).

Jika data dalam database tersebut belum di normalisasi maka akan terjadi 3

kemungkinan yang akan merugikan sistem secara keseluruhan.

1. INSERT Anomali : Situasi dimana tidak memungkinkan memasukkan

beberapa jenis data secara langsung di database.

2. DELETE Anomali: Penghapusan data yang tidak sesuai dengan yang

diharapkan, artinya data yang harusnya tidak terhapus mungkin ikut

terhapus.

3. UPDATE Anomali: Situasi dimana nilai yang diubah menyebabkan

inkonsistensi database, dalam artian data yang diubah tidak sesuai

dengan yang diperintahkan atau yang diinginkan.


Normalisasi Database
Normalisasi database terdiri dari banyak bentuk, dalam ilmu basis data ada

setidaknya 9 bentuk normalisasi yang ada

yaitu 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, dan 6NF. Namun dalam

prakteknya dalam dunia industri bentuk normalisasi ini yang paling sering

digunakan ada sekitar 5 bentuk.

Normal Form

Data yang direkam dan dimasukkan secara mentah dalam suatu tabel pada

bentuk ini sangat mungkin terjadi inkonsistensi dan anomali data

Contoh Normal Form

N
ormalisasi Database Form (Rudiawan16)

1. Normal Form (1NF)


Bentuk normal yang pertama atau 1NF mensyaratkan beberapa kondisi dalam

sebuah database, berikut adalah fungsi dari bentuk normal pertama ini.

 Menghilangkan duplikasi kolom dari tabel yang sama.

 Buat tabel terpisah untuk masing-masing kelompok data terkait dan

mengidentifikasi setiap baris dengan kolom yang unik (primary key).

Contoh Normalisasi Database 1NF

Ni
rmalisasi Database 1NF (Rudiawan16)

dari manual bon pembelian diatas kita dapat menjadi bentuk normal pertama

dengan memisah-misahkan data pada atribut-atribut yang tepat dan bernilai

atomik, juga seluruh record / baris harus lengkap adanya.

2. Normal form (2NF)

Syarat untuk menerapkan normalisasi bentuk kedua ini adalah data telah

dibentuk dalam 1NF, berikut adalah beberapa fungsi normalisasi 2NF.

 Menghapus beberapa subset data yang ada pada tabel dan

menempatkan mereka pada tabel terpisah.


 Menciptakan hubungan antara tabel baru dan tabel lama dengan

menciptakan foreign key.

 Tidak ada atribut dalam tabel yang secara fungsional bergantung pada

candidate key tabel tersebut.

Contoh normalisasi database bentuk 2NF

N
ormalisasi Database 2NF (Rudiawan16)

Bentuk normal kedua dengan melakukan dekomposisi tabel diatas menjadi

beberapa tabel dan mencari kunci primer dari tiap-tiap tabel tersebut dan

atribut kunci haruslah unik.

3. Normal Form (3NF)

Normalisasi database dalam bentuk 3NF bertujuan untuk menghilangkan

seluruh atribut atau field yang tidak berhubungan dengan primary key. Dengan

demikian tidak ada ketergantungan transitif pada setiap kandidat key. Syarat

dari bentuk normal ketiga atau 3NF adalah :


 Memenuhi semua persyaratan dari bentuk normal kedua.

 Menghapus kolom yang tidak tergantung pada primary key.

Contoh Normalisasi Database Bentuk 3NF

Bentuk normal ketiga mempunyai syarat, setiap relasi tidak mempunyai atribut

yang bergantung transitif, harus bergantung penuh pada kunci utama dan harus

memenuhi bentuk normal kedua (2 NF).

N
ormalisasi Database 3NF (Rudiawan16)

BCNF Boyce–Codd normal form

Merupakan sebuah teknik normalisasi database yang sering disebut 3.5NF,

memiliki hubungan yang sangat erat dengan bentuk 3NF. Pada dasarnya adalah

untuk menghandle anomali dan overlooping yang tidak dapat di handle dalam
bentuk 3NF. Normalisasi database bentuk ini tergantung dari kasus yang

disediakan, tidak semua tabel wajib di normalisasi dalam bentuk BCNF.

Membuat database Pembelian

create database pembelian

use pembelian

Membuat table

create table kendaraan (

no_polisi char(10),

warna char(20),

merek char(30),

tahun char(5),

primary key (no_polisi)

sp_help kendaraan

create table mekanik (


mekanik_id char(5),

nama_mekanik varchar(50),

primary key (mekanik_id)

sp_help mekanik

create table parts (

kode_parts char(20),

nama_parts varchar(50),

harga int,

primary key (kode_parts)

sp_help parts

create table bon_pembelian (

no_faktur char(10),

tanggal datetime,

no_polisi char(10),

mekanik_id char(5),

potongan int,
primary key (no_faktur),

constraint FK_nopolisi foreign key (no_polisi) references


kendaraan(no_polisi),

constraint FK_mekanik foreign key (mekanik_id) references


mekanik(mekanik_id)

sp_help bon_pembelian

create table transaksi_parts (

no_faktur char(10),

kode_parts char(20),

qty int,

harga int,

discount int,

primary key (no_faktur,kode_parts),

constraint FK_nofaktur foreign key (no_faktur) references


bon_pembelian(no_faktur),

constraint FK_kodeparts foreign key (kode_parts) references


parts(kode_parts)

sp_help transaksi_parts

Mengisi data pada table


/*jawaban no.3 */

/** Isi data table kendaraan **/

INSERT INTO kendaraan VALUES('B3117LB','Biru','Supra X','2005')

INSERT INTO kendaraan VALUES('B2121AA','Merah','Supra X','2005')

/** isi data table mekanik **/

INSERT INTO mekanik VALUES('DDE','Djoko Dewanto')

/** isi data table parts **/

INSERT INTO parts VALUES('20W501000CC','Oli Top 1 000cc',27000)

INSERT INTO parts VALUES('SERV001','Engine Tune Up',25000)

/** isi data table bon_pembelian **/

INSERT INTO bon_pembelian


VALUES('05103214',GETDATE(),'B3117LB','DDE',2000)

INSERT INTO bon_pembelian


VALUES('05103215',GETDATE(),'B2121AA','DDE',0)

/** isi data table transkasi_parts **/

INSERT INTO transaksi_parts


(no_faktur,kode_parts,qty,harga,discount)

select '05103214','20W501000CC',2,harga,1000 FROM parts where


kode_parts='20W501000CC'

INSERT INTO transaksi_parts


(no_faktur,kode_parts,qty,harga,discount)

select '05103214','SERV001',1,harga,2000 FROM parts where


kode_parts='SERV001'
INSERT INTO transaksi_parts
(no_faktur,kode_parts,qty,harga,discount)

select '05103215','SERV001',1,harga,2000 FROM parts where


kode_parts='SERV001'

Menampilkan data dari table yang telah kita isi

/*jawaban no.3 */

select * from kendaraan

select * from mekanik

select * from parts

select * from bon_pembelian

select * from transaksi_parts

/** Relasi antar table hingga terbentuk 1NF **/

select a.no_faktur,
a.tanggal,a.no_polisi,e.warna,e.merek,e.tahun,a.mekanik_id,d.nama_me
kanik,

b.kode_parts,c.nama_parts,b.qty,b.harga,b.discount,(b.qty*b.harga)-
(b.qty*b.discount) as jumlah,a.potongan,

(select sum((qty*harga)-(qty*discount))-a.potongan from


transaksi_parts where no_faktur=a.no_faktur) as total

from bon_pembelian as a

join transaksi_parts as b ON a.no_faktur=b.no_faktur

join parts as c ON b.kode_parts=c.kode_parts


join mekanik as d ON a.mekanik_id=d.mekanik_id

join kendaraan as e ON a.no_polisi=e.no_polisi

Contoh Normalisasi
0

Nama : Rahmat Susanto

NPM : 09.57.201.000525

Tugas : Contoh Normalisasi

Contoh studi kasus normalisasi

Diberikan tabel Mahasiswa di bawah ini, akan dilakukan normalisasi sampai bentuk normal ke

tiga :

Perhatikan bahwa tabel di atas sudah dalam bentuk normal ke Satu(1NF)

Bentuk Normal ke dua(2NF) :


Belum memenuhi kriteria 3NF, Karena atribut non-key Nilai dan bobot masih memiliki ketergantungan fungsional.

Bentuk Normal ke tiga(3NF) :

Query :
Normal Pertama (1 NF)
Dalam relational database tidak diperkenankan adanya repeating

group karena dapat berdampak terjadinya anomali.

Oleh karena itu tahap unnormal akan menghasilkan bentuk

normal tahap pertama (1 NF) yang dapat di definisikan sebagai

berikut:

Normal pertama (1 NF), suatu relasi atau tabel memenuhi normal

pertama jika dan hanya jika setiap setiap atribut dari relasi

tersebut hanya memiliki nilai tunggal dalam satu baris (record).

Tiap field hanya satu pengertian, bukan merupakan kumpulan

kata yang mempunyai arti ganda dan tidak ada set atribut yang

berulang-ulang atau atribut bernilai ganda.


Pada data tabel sebelumnya data belum normal sehingga harus

diubah kedalam bentuk normal pertama dengan cara membuat

baris berisi kolom jumlah yang sama dan setiap kolom hanya

mengandung satu nilai.

Berikut perubahannya:

Bentuk normalisasi pertama (1 NF) ini mempunyai ciri yaitu setiap

data dibentuk file datar atau rata (flat file), data dibentuk dalam

satu record demi satu record dan nilai-nilai dari field-field berupa

nilai yang tidak dapat dibagi-bagi lagi.

3. Normal Kedua (2 NF)


Dalam perancangan database relational tidak diperkenankan

adalah partial functional dependency kepada primary key, karena

dapat berdampak terjadinya anomali.


Oleh karena itu tahap normalisasi pertama akan menghasilkan

bentuk normal kedua (2 NF) yang dapat didefinisikan sebagai

berikut:

Normalisasi kedua (2 NF), suatu relasi memenuhi relasi kedua jika

dan hanya jika relasi tersebut memenuhi normal pertama dan

setiap atribut yang bukan kunci (non key) bergantung secara

fungsional terhadap kunci utama (Primary key).

Berikut perubahannya:

Bentuk normal kedua ini mempunyai syarat yaitu bentuk data

yang telah memenuhi kriteria bentuk normal pertama.


Atribut bukan kunci haruslah bergantung secara fungsional pada

kunci utama (primary key), sehingga untuk membentuk normal

kedua haruslah sudah ditentukan kunci-kunci field.

Normal Ketiga (3 NF)


Dalam perancangan database relational tidak diperkenankan

adanya transitive dependency karena dapat berdampak

terjadinya anomali.

Oleh karena itu harus dilakukan normalisasi tahap ketiga (3 NF)

yang dapat didefinisikan sebagai berikut:

Normalisasi ketiga (3 NF), suatu relasi memenuhi normal ketiga

jika dan hanya jika relasi tersebut memenuhi normal kedua dan

setiap atribut bukan kunci (non key) tidak mempunyai transitive

functional dependency kepada kunci utama (primary key).

Berikut perubahannya:
Bentuk normal ketiga (3 NF) ini relasi haruslah dalam bentuk

normal kedua dan semua atribut bukan kunci utama tidak punya

hubungan transitif.

Artinya setiap atribut bukan kunci harus bergantung hanya pada

primary key secara keseluruhan, dan bentuk normalisasi ketiga

sudah didapat tabel yang optimal.

1. PENERAPAN BENTUK NORMALISASI

Pada proses perancangan database dapat dimulai dari dokumen dasar yang dipakai

dalam sistem sesuai dengan lingkup sistem yang akan dibuat rancangan databasenya. Berikut ini

adalah contoh dokumen mengenai faktur pembelian barang pada PT. Revanda Jaya.
Sehubungan dengan dokumen dasar tersebut, tahapan yang harus dilakukan untuk

melakukan normalisasi data adalah sebagai berikut:

1. Bentuk Unnormalisasi
Langkah pertama dalam melakukan normalisasi data adalah dengan membentuk contoh data
tersebut didtas dengan membentuk unnormalisasi data, dengan cara mencantumkan semua
atribut data yang ada apa adanya seperti terlihat berikut ini :

Gambar 7.2. Relasi faktur unnormalisasiPada relasi diatas adalah dengan menuliskan semua data
yang ada yang akan direkam,
data yang double tidak perlu ditulis. Terlihat baris / record yang tidak lengkap. Sulit dibayangkan
bagaimana bentuk baris yang harus dibentuk untuk merekam data itu.2. Bentuk Normal Pertama (1
NF)
Bentuklah menjadi bentuk normal pertama dengan memisah-misahkan data pada atributatribut
yang tepat dan bernilai atomik, juga seluruh record / baris harus lengkap adanya. Bentuk
relasi adalah flat file. Dengan normal pertama kita dapat membuat satu tabel yang terdiri dari 11
Atribut yaitu _
(No_Faktur, Kode_Supplier, Nama_Supplier, Kode_Barang, Nama_Barang, Tanggal,
Jatuh_Tempo, Qty, Harga, Jumlah, Total ).
Sehingga hasil daripada pembentukan normal pertama (1 NF) adalah sebagai berikut ini :

Gambar 7.3. Relasi memenuhi 1 NF

Pada normal pertama tersebut masih terjadi banyak kelemahan, terutama pada proses
ANOMALI insert, update dan delete berikut ini:
a). Inserting / Penyisipan
Kita tidak dapat memasukkan kode dan nama supplier saja tanpa adanya transaksi
pembelian, sehingga supplier baru bisa dimasukkan kalau ada transaksi pembelian.
b). Deleting / Penghapusan
Bila satu record / baris di atas dihapus, misal nomor faktur 779, maka berakibat pada
penghapusan data supplier S02 (Hitachi) padahal data tersebut masih diperlukan.
c). Updating / Pengubahan
Kode dan nama supplier terlihat ditulis berkali-kali, bila nama supplier berubah, maka di
setiap baris yang ada harus dirubah, bila tidak menjadi tidak konsisten.
Atribut jumlah (merupakan atribut turunan) seharusnya tidak perlu, karena setiap harga
dikali kuantitas akan menghasilkan jumlah, sehingga hasilnya akan menjadi lebih konsisten.

3. Bentuk Normal Kedua (2 NF)


Bentuk normal kedua dengan melakukan dekomposisi relasi diatas menjadi beberapa
relasi dan mencari kunci primer dari tiap-tiap relasi tersebut dan atribut kunci haruslah unik.
Melihat permasalahan faktur di atas, maka dapat diambil beberapa kunci kandidat : ( No_Faktur,
Kode_Supplier, dan Kode_Barang ). Kunci kandidat tersebut nantinya bisa menjadi kunci primer
pada relasi hasil dekomposisi.
Dengan melihat normal pertama, kita dapat mendekomposisi menjadi tiga relasi berserta
kunci primer yang ada yaitu : relasi Supplier (Kode_Supplier), relasi Barang (Kode_Barang), dan
Relasi Faktur (No_Faktur). Dengan melihat ketergantungan fungsional atribut-atribut lain terhadap
atribut kunci, maka didapatkan 3 (tiga) relasi sebagai berikut :
Relasi Supplier

Relasi Barang

Relasi Faktur

Gambar 7.4. Relasi memenuhi 2 NF

Kamus Data dari masing-masing relasi tersebut diatas adalah sebagai berikut:
Supllier = { Kode_Supplier, Nama_Supplier }
Barang = { Kode_Barang, Nama_Barang, Harga }
Faktur = { No Faktur, Kode Barang Kode_Supplier, Tanggal, Jatuh_Tempo, Qty }

Dengan pemecahan relasi di atas, maka untuk pengujian bentuk normal kesatu (1 NF)
yaitu insert, update, dan delete akan terjawab. Kode dan nama supplier baru dapat masuk
kapanpun tanpa adanya transaksi pada tabel faktur. Demikian pula untuk proses update dan
delete untuk tabel Supplier dan Barang.
Pada bentuk normal kedua tersebut masih terjadi permasalahan yaitu pada relasi Faktur,
yaitu :
1). Atribut Quantitas pada relasi Faktur, tidak tergantung pada kunci utama, atribut tersebut
bergantung fungsi pada Kode Barang + no_faktur, hal ini dinamakan ketergatungan transitif
dan haruslah dipilah menjadi dua relasi.
2). Masih terdapat pengulangan, yaitu setiap kali satu faktur yang terdiri dari 5 macam barang
maka 5 kali juga dituliskan no_faktur, tanggal, dan jatuh_tempo. Hal ini harus dipisahkan bila
terjadi penggandaan tulisan berulang-ulang.

4. Bentuk Normal Ketiga (3 NF)


Bentuk normal ketiga mempunyai syarat, setiap relasi tidak mempunyai atribut yang
bergantung transitif, harus bergantung penuh pada kunci utama dan harus memenuhi bentuk
normal kedua (2 NF).
Untuk emmenuhi bentuk normal ketiga (3 NF), maka pada relasi faktur harus
didekomposisi (dipecah) lagi menjadi dua relasi yaitu relasi faktur dan relasi transaksi barang,
sehingga hasilnya adalah sebagai berikut ini:

Gambar 7.5. Relasi memenuhi 3 NF

Hasil Praktikum di Lab

Soal
Langlah pertama Unnormalization
Langkah kedua 1NF

Langkah ketiga 2NF

Langkah keempat 3NF


Hasil Tugas Rumah

Soal

Langkah pertama Unnormalization

Langkah kedua 1NF

Langkah ketiga 2NF


Langkah keempat 3NF

Berikut adalah dokumen dasar berupa kwitansi dari Rumah Sakit yang akan saya coba
normalisasi:
TAHAPAN NORMALISASI UNTUK KWITANSI RS:

1. UNNORMALISASI (TIDAK NORMALISASI/UNNORMALIZE)

2. NORMALISASI PERTAMA (1 NF)

3. NORMALISASI KEDUA (2NF)


4. NORMALISASI KETIGA (3 NF)

Anda mungkin juga menyukai