BAB
I
PENDAHULUAN
1.1 Latar Belakang
Normalisasi
adalah suatu proses memperbaiki/membangun data dengan model data relasional dan
secara umum lebih tepat di koneksikan dengan data model logikal
Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka, sehingga terwujud satu bentuk basis data yang mudah untuk di modifikasi
Normalisasi adalah suatu proses untuk mengidentifikasi tabel kelompok atribut yang memiliki ketergantungan sangat tinggi antara satu atribut dengan aribut lainnya.
Normalisasi bisa di sebut juga sebagai proses pengolompokan atribut-atribut dari suatu relasi sehingga membentuk “Well Stuructured Relation”.
Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka, sehingga terwujud satu bentuk basis data yang mudah untuk di modifikasi
Normalisasi adalah suatu proses untuk mengidentifikasi tabel kelompok atribut yang memiliki ketergantungan sangat tinggi antara satu atribut dengan aribut lainnya.
Normalisasi bisa di sebut juga sebagai proses pengolompokan atribut-atribut dari suatu relasi sehingga membentuk “Well Stuructured Relation”.
Well Stuructured Relation adalah sebuah relasi yang
kerangkapan datanya sedikit (Minimum Amount Of Redudancy), serta memberikan
kemungkinan bagi pemakai untuk melakukan insert, Delete, Modify terhadap
baris-baris data pada relasi tersebu,yang tidak berakibat terjadinya error atau
inconsistency data yang disebabkan oleh operasi-operasiyang di berikan oleh
pemakai.
1.2 Rumusan Masalah
1. Tujuan
Normalisasi
2. Efek
Normalisasi
3. Domain
dan Tipe data
4. Bentuk-bentuk
Normalisasi
5. Contoh
penerapan Normalisasi
1.3 Tujuan dan Manfaat
1.
Untuk Mengetahui Tujuan Normalisasi
2.
Untuk Mengetahi Efek Normalisasi
3.
Untuk Mengetahui Domain dan Tipe data
4.
Untuk Mengetahui Bentuk-bentuk
Normalisasi
5.
Untuk Mengetahui Contoh Penerapan
Normalisasi
BAB
II
PEMBAHASAN
2.1 Tujuan Nomalisasi
·
Mengatur data dalam kelompok-kelompok
sehingga mempermudah dalam penanganan data.
·
Menjamin perawatan data
·
Untuk menghilangkan kerangkapan data
·
Untuk mengurangi kompleksitas
·
Untuk mempermudah pemodifikasian data dll.
2.2 Efek Normalisasi
Sebagaimana terjadi pada hampir semua
usaha pemecahan permasalahan, efek samping yang negative muncul. Pada
kenyataannya, penerapan normalisasi juga mengakibatkan efek samping yang tidak
diharapkan, yaitu:
1.Proses dekomposisi relasi mengakibatkan
munculnya duplikasi rinci data pada atribut kunci penghubung.
2. Dekomposisi relasi membuka kemungkinan
tidak terpenuhinya integritas referensial
dalam basis data.
3. Dekomposisi relasi menghasilkan semakin
banyak jumlah relasi baru sehingga mengakibatkan inefisiensi proses menampilkan
kembali data-data dari dalam basis data.
4. Adanya batasan penerapan pada beberapa
DBMS untuk ukuran komputer pribadi/PC, terutama berkaitan dengan batas maksimal
relasi yang dapat dibuka secara bersamaan
Efek duplikasi rinci data pada atribut
kunci penghubung salah satunya dapat diatasi dengan pemanfaatan field berupa
memo.
2.3 Domain dan Tipe data
Domain adalah himpunan nilai
yang diijinkan pada suatu atribut. Aetiap atribut di basis datarelasional
didefinisikan pada suatu domain. Domain-domain dapat berbeda untuk
measing-masing atribut. Dua atribut atau lebih dapat mempunyai domain yang
sama. Domain tidak hanyasekedar tipe data, tetapi domain adalah tipe data yang
memiliki batasan-batasan nilai tertentu.Contoh : domain umur tidak sama dengan
domain harga meskipun keduanya memiliki tipe bilangan bulat.
Tipe
data
|
Domain
|
Character
|
Alpha Numeric (A-Z, 0-9, specialcharacter)
|
Number :
Integer
Real float
|
-32.768
s/d 32.767Pecahan
|
Boolean
|
True/false
|
Date
|
Tanggal
|
Memo
|
Text
|
Ole Object
|
Object (Image, File, Resource)
|
Contoh Tipe data dapat
ditulisakan sebagai berikut :
Atribut
|
Tipe
|
Lebar
|
NIM
|
Character
|
10
|
NAMA MHS
|
Character
|
20
|
ALAMAT
|
Character
|
30
|
TGL LAHIR
|
Date
|
-
|
Penentuan lebar
berdasarkan pada perkiraan jumlah minimal karakter yang diperlukan padaatribut tersebut. Pada contoh di atas, atribut NAMA_MHS mempunyai tipe Character danmempunyai
lebar 20, dengan alasan karena nama orang kurang dari 20 karakter.
Penggunaanlebar yang kurang tepat akan berakibat pada pemborosan dan
mengakibatkan file database akanmembesar dengan cepat.Pada beberapa tipe data,
seperti Date dan Boolean lebar tidak perlu dicantumkankarena sudah diatur oleh
DBMS.
2.4 Bentuk-bentuk Normalisasi
1.
Bentuk tidak normal
adalah
kumpulan data yang tidak disimpan tidak mempunyai format tertentu, data
disimpan apa adanya sesuai masukan yang diperoleh dalam bentuk ini data mungkin
saja tidak lengkap tidak konsisten / terduplikasi.
2.
Bentuk normalisasi pertama (1NF)
NIP
|
Nama
|
Jabatan
|
Keahlian
|
Lama Kerja
|
107
|
Ilham
|
Analis Senior
|
Cobol
|
6
|
|
|
|
Oracle
|
1
|
109
|
Ryan
|
Analis Junior
|
Cobol
|
2
|
|
|
|
C++
|
2
|
120
|
Fika
|
Programmer
|
Dbase
|
3
|
|
|
|
Sybase
|
1
|
|
|
|
Cobol
|
1
|
Dikenakan
pada tabel yang sama sekali belum ternomalisasi. Tabel yang belum ternomalisasi
adalah tabel yang mempunyai atribut berulang. Contoh : terdapat suatu data
sebagai berikut :
Pada contoh di atas, keahlian mempunyai atribut yang berulang. Untuk itu
akan dibentuk ke normal 1NF. Syarat Normal 1NF adalah suatu relasi dikatakan
dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai tunggal
dalam satu baris.
NIP
|
Nama
|
Jabatan
|
Keahlian
|
Lama Kerja
|
107
|
Ilham
|
Analis Senior
|
Cobol
|
6
|
107
|
Ilham
|
Analis Senior
|
Oracle
|
1
|
109
|
Ryan
|
Analis Junior
|
Cobol
|
2
|
109
|
Ryan
|
Analis Junior
|
C++
|
2
|
120
|
Fika
|
Programmer
|
Dbase
|
3
|
120
|
Fika
|
Programmer
|
Sybase
|
1
|
120
|
Fika
|
Programmer
|
Cobol
|
1
|
3.
Bentuk Normal 2NF
Bentuk
ini didefinisikan berdasarkan dependensi fungsional dengan syarat adalah :
·
Berada pada bentuk normal pertama
·
Semua atribut bukan kunci memiliki
dependensi sepenuhnya terhadap kunci primer
Contoh
:
·
Nama
dan jabatan mempunyai dependensi fungsional terhadap NIP
·
Lama mempunyai dependensi fungsional
terhadap NIP dan keahlian
·
Bentuk tabelnya adalah : NNJ (NIP, Nama,
Jabatan) dan NKL (NIP, Keahlian, Lama Kerja)
NIP
|
Nama
|
Jabatan
|
107
|
Ilham
|
Analis Senior
|
109
|
Ryan
|
Analis Junior
|
120
|
Fika
|
Programmer
|
NIP
|
Keahlian
|
Lama Kerja
|
107
|
Cobol
|
6
|
107
|
Oracle
|
1
|
109
|
Cobol
|
2
|
109
|
C++
|
2
|
120
|
Dbase
|
3
|
120
|
Sybase
|
1
|
120
|
Cobol
|
1
|
4.
Bentuk Normal 3NF
·
Berada dalam bentuk normal 2 NF
·
Setiap atribut bukan kunci tidak memiliki
dependensi transitif terhadap kunci primer
Contoh
di atas sudah memenuhi normal 3NF karena : Tidak memiliki dependensi transitif,
yaitu
NIP {Nama, Jabatan}
{NIP,
Keahlian} Lama Kerja
Bentuk
Normal boyce-codd (BCNF)
Bentuk
ini dilakukan jika dan hanya jika semua penentu (determinan) adalah kunci
kandidat (atribut yang bersifat unik). BCNF merupakan perbaikan dari 3NF.
Relasi yang memenuhi BCNF pasti memenuhi 3NF tetapi tidak sebaliknya. Contoh :
Tabel SKT
Siswa
|
Kursus
|
Tutor
|
Anwar
|
Bhs. Perancis
|
Pierre
|
Anwar
|
Bhs. Inggris
|
Richard
|
Budi
|
Bhs. Perancis
|
Pierre
|
Cecep
|
Bhs. Inggris
|
Suzanne
|
Tabel
di atas adalah suatu relasi yang memenuhi 3NF tetapi tidak memenuhi BCNF.
Relasi diatas didasarkan oleh fakta :
·
Seorang siswa dapat mengambil sejumlah
kursus
·
Setiap tutor hanya mengajar satu kursus
bahasa
·
Setiap siswa dalam satu kursus diajar oleh
satu tutor
·
Suatu kursus bis dipegang oleh beberapa
tutor
Pada
keadaan tersebut di atas dapat digambarkan sebagai berikut : Siswa &
Kursus dan Siswa & Tutor.
Memenuhi
bentuk 3NF karena tidak ada dependensi transitif pada relasi tersebut. Tetapi
tidak memenuhi BCNF karena adanya determinan Tutor yang berdiri sebagai kunci
kandidat. Realsi SKT menyebabkan anomali karena baris Cecep dihapus maka Suzane
sebagai tutor jug akan terhapus. Cara konversi dari 3NF ke BCNF adalah :
·
Carilah semua penentu
·
Bila terdapat penentu yang bukan kunci
kandidat, maka :
·
Pisahkan relasi tersebut
·
Buat penentu sebagai kunci primer
·
Dekomposisi berupa : ST (Siswa, Tutor) dan
TK (Tutor, Kursus)
Siswa
|
Tutor
|
Anwar
|
Pierre
|
Anwar
|
Richard
|
Budi
|
Pierre
|
Cece
|
Suzanne
|
Tutor
|
Kursus
|
Pierre
|
Bhs.Perancis
|
Richard
|
Bhs.
Inggris
|
Suzanne
|
Bhs.
Inggris
|
2.5 Contoh Penerapan Normalisasi
Penerapan Normalisasi dan Implementasi ke
Database SQL Server
tahap-tahap
penerapan normalisasi hingga menjadi sebuah ERD pada SQL server.
BON PEMBELIAN.
1. Bentuk
Normal Pertama (1NF)
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. Bentuk Normal Kedua (2NF).
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. Bentuk Normal
Ketiga (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).
Implementasi ERD
(entity relationship diagram) pada contoh diatas, bisa dituangkan kedalam
database MS SQL Server 2005, seperti terlihat pada gambar beikut ini :
Implementasi ERD
(entity relationship diagram) pada contoh diatas, bisa dituangkan kedalam
database MS SQL Server 2005, seperti terlihat pada gambar beikut ini :
Record Fisik database
pemakaian script sql
server dalam membuat tabel-tabel diatas dan relasi yang terbentuk.
1
|
create database pembelian
|
Membuat database Pembelian
2
|
|
use pembelian
|
|
|
|
Membuat table
01
|
create table kendaraan (
|
02
|
no_polisi char(10),
|
03
|
warna char(20),
|
04
|
merek char(30),
|
05
|
tahun char(5),
|
06
|
primary key (no_polisi)
|
07
|
)
|
08
|
sp_help kendaraan
|
09
|
|
10
|
create table mekanik (
|
11
|
mekanik_id char(5),
|
12
|
nama_mekanik varchar(50),
|
13
|
primary key (mekanik_id)
|
14
|
)
|
15
|
sp_help mekanik
|
16
|
|
17
|
create table parts (
|
18
|
kode_parts char(20),
|
19
|
nama_parts varchar(50),
|
20
|
harga int,
|
21
|
primary key (kode_parts)
|
22
|
)
|
23
|
sp_help parts
|
24
|
|
25
|
create table bon_pembelian (
|
26
|
no_faktur char(10),
|
27
|
tanggal datetime,
|
28
|
no_polisi char(10),
|
29
|
mekanik_id char(5),
|
30
|
potongan int,
|
31
|
primary key (no_faktur),
|
32
|
constraint FK_nopolisi foreign key (no_polisi) references
kendaraan(no_polisi),
|
33
|
constraint FK_mekanik foreign key (mekanik_id) references
mekanik(mekanik_id)
|
34
|
)
|
35
|
sp_help bon_pembelian
|
36
|
|
37
|
create table transaksi_parts (
|
38
|
no_faktur char(10),
|
39
|
kode_parts char(20),
|
40
|
qty int,
|
41
|
harga int,
|
42
|
discount int,
|
43
|
primary key (no_faktur,kode_parts),
|
44
|
constraint FK_nofaktur foreign key (no_faktur) references
bon_pembelian(no_faktur),
|
45
|
constraint FK_kodeparts foreign key (kode_parts)
references parts(kode_parts)
|
46
|
)
|
47
|
sp_help transaksi_parts
|
Mengisi data pada table
|
|
01
|
/*jawaban no.3 */
|
02
|
/** Isi data table kendaraan **/
|
03
|
INSERT INTO kendaraan VALUES('B3117LB','Biru','Supra
X','2005')
|
04
|
INSERT INTO kendaraan VALUES('B2121AA','Merah','Supra
X','2005')
|
05
|
/** isi data table mekanik **/
|
06
|
INSERT INTO mekanik VALUES('DDE','Djoko Dewanto')
|
07
|
/** isi data table parts **/
|
08
|
INSERT INTO parts VALUES('20W501000CC','Oli Top 1
000cc',27000)
|
09
|
INSERT INTO parts VALUES('SERV001','Engine Tune Up',25000)
|
10
|
/** isi data table bon_pembelian **/
|
11
|
INSERT INTO bon_pembelian
VALUES('05103214',GETDATE(),'B3117LB','DDE',2000)
|
12
|
INSERT INTO bon_pembelian
VALUES('05103215',GETDATE(),'B2121AA','DDE',0)
|
13
|
/** isi data table transkasi_parts **/
|
14
|
INSERT INTO transaksi_parts (no_faktur,kode_parts,qty,harga,discount)
|
15
|
select '05103214','20W501000CC',2,harga,1000 FROM
parts where kode_parts='20W501000CC'
|
16
|
INSERT INTO transaksi_parts
(no_faktur,kode_parts,qty,harga,discount)
|
17
|
select '05103214','SERV001',1,harga,2000 FROM parts
where kode_parts='SERV001'
|
18
|
INSERT INTO transaksi_parts
(no_faktur,kode_parts,qty,harga,discount)
|
19
|
select '05103215','SERV001',1,harga,2000 FROM parts
where kode_parts='SERV001'
|
Menampilkan
data dari table yang telah kita isi
01
|
/*jawaban no.3 */
|
02
|
select * from kendaraan
|
03
|
select * from mekanik
|
04
|
select * from parts
|
05
|
select * from bon_pembelian
|
06
|
select * from transaksi_parts
|
07
|
|
08
|
/** Relasi antar table hingga terbentuk 1NF **/
|
09
|
select a.no_faktur, a.tanggal,a.no_polisi,e.warna,e.merek,e.tahun,a.mekanik_id,d.nama_mekanik,
|
10
|
b.kode_parts,c.nama_parts,b.qty,b.harga,b.discount,(b.qty*b.harga)-(b.qty*b.discount)
as jumlah,a.potongan,
|
11
|
(select sum((qty*harga)-(qty*discount))-a.potongan from transaksi_parts
where no_faktur=a.no_faktur) as total
|
12
|
from bon_pembelian as a
|
13
|
join transaksi_parts as b ON a.no_faktur=b.no_faktur
|
14
|
join parts as c ON b.kode_parts=c.kode_parts
|
15
|
join mekanik as d ON a.mekanik_id=d.mekanik_id
|
16
|
join kendaraan as e ON a.no_polisi=e.no_polisi
|
BAB III
PENUTUP
3.1
Kesimpulan
Normalisasi adalah suatu proses memperbaiki/membangun data
dengan model data relasional dan secara umum lebih tepat di koneksikan dengan
data model logikal
Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka, sehingga terwujud satu bentuk basis data yang mudah untuk di modifikasi
Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka, sehingga terwujud satu bentuk basis data yang mudah untuk di modifikasi
BAB
IV
DAFTAR
PUSTAKA
·
Dedy Rusdiansyah. “Penerapan Normalisasi
dan Implementasi’.26 oktober 2015.
·
Apipfuddin.”Normalisasi Database”.25
oktober 2015.
·
Dewi Rahmawati. “Normalisasi”. 25 oktober
2015.
0 komentar:
Posting Komentar