Anda di halaman 1dari 70

Sesi 4

Normalisasi Tabel Basis Data


Bahan Kajian

Tabel basis data & normalisasi


-Perlunya normalisasi (anomaly)
-Proses normalisasi (Bentuk normal pertama 1NF,
Diagram dependency, Bentuk normal kedua 2NF)

2
Capaian
 Mahasiswa/i mampu melakukan normalisasi tabel basis data

3
Normalisasi
 Istilah Normalisasi berasal dari E. F.Codd, salah seorang
perintis teknologi basis data.
 Selain dipakai sebagai metodologi tersendiri untuk
menciptakan struktur tabel (relasi) dalam basis data (dengan
tujuan untuk mengurangi kemubaziran data), normalisasi
terkadang hanya diipakai sebagai perangkat verifikasi
terhadap tabel-tabel yang dihasilkan oleh metodologi lain
(misalnya E-R).
 Normalisasi memberikan panduan yang sangat membantu bagi
pengembang untuk mencegah penciptaan struktur tabel yang
kurang fleksibel atau mengurangi kefleksibelan.

4
 Kroenke mendefinisikan normalisasi sebagai proses untuk
mengubah suatu relasi yang memiliki masalah tertentu ke dalam
dua buah relasi atau lebih yang tidak memiliki masalah tersebut.

 Masalah yang dimaksud oleh kroenke ini sering disebut dengan


istilah anomali.

(Pada beberapa literatur, istilah relasi terkadang digantikan dengan


tabel).

5
 Tujuan normalisasi
o Untuk menghilangkan kerangkapan data
o Untuk mengurangi kompleksitas
o Untuk mempermudah pemodifikasian data

 Anomali
Anomali adalah proses pada basis data yang memberikan efek samping
yang tidak diharapkan (misalnya menyebabkan ketidakonsistenan data
atau membuat suatu data menjadi hilang ketika data dihapus)

Jenis Anomali terdiri dari :


 Anomali Peremajaan
 Anomali Penghapusan
 Anomali penyisipan
6
Review PK dan CK

EMPLOYEE (EmployeeNumber, FirstName,


LastName, Department, Email, Phone)

Apa saja candidate key relasi di atas?


7
Dalam bentuk functional dependency :

1. EmployeeNumber  (FirstName, LastName, Department, Email,


Phone)
2. Email  (EmployeeNumber, FirstName, LastName, Department,
Phone)
3. (FirstName, LastName, Department)  (EmployeeNumber, Email,
Phone)

Salah satunya bisa dipilih untuk menjadi primary key

8
Normalisasi Tabel

9
 Konsep functional dependency dan determinant dapat
digunakan untuk membantu dalam merancang
relation.

 Ingat konsep di awal perkuliahan bahwa sebuah tabel


atau relation sebaiknya hanya memiliki satu tema saja.

10
Definisi Normalisasi
Normalisasi adalah proses (atau langkah-langkah untuk)
memecah sebuah tabel atau relation yang memiliki lebih dari
satu tema menjadi sebuah kumpulan tabel yang masing-
masing memiliki hanya satu tema.

Normalisasi adalah sebuah proses untuk mengevaluasi dan


memperbaiki struktur tabel untuk mengurangi redundansi
data.

11
Tujuan
Normalisasi bertujuan untuk
menghindari terjadinya redundansi
data.

12
 Bentuk tidak normal (Unnormalized form)
 Normalisasi dilakukan melalui rangkaian tahapan yang

disebut bentuk normal (normal form).


 Tiga tahapan pertama digambarkan sebagai bentuk

normal pertama (1NF), bentuk normal kedua (2NF),


dan bentuk normal ketiga (3NF).
 Dari sisi struktur, 2NF lebih baik dari pada 1NF, dan

3NF lebih baik dari pada 2NF.

13
 Dalam kebanyakan rancangan database untuk bisnis,
3NF biasanya adalah tahapan tertinggi dalam proses
normalisasi.

14
 Kemungkinan terjadinya masalah integritas data
yang disebabkan oleh redundansi data harus
dipertimbangkan saat merancang sebuah database.

 Lingkungan database relational secara khusus


membantu para designer mengatasi masalah tersebut.

15
Prinsip Rancangan Relational
Prinsip rancangan yang disebut relasi berbentuk-baik
(well-formed relation) :

1. Agar sebuah relasi dapat dianggap well-formed, maka


semua determinant harus menjadi candidate key.
2. Setiap relasi yang masih belum well-formed harus
dipecah menjadi 2 atau lebih relasi yang well-
formed-formed.

16
Proses Normalisasi

17
1. Identifikasi seluruh candidate key pada relasi tersebut.
2. Identifikasi seluruh functional dependency pada relasi.
3. Periksa determinant pada functional dependency. Bila ada
determinant yang bukan candidate key, maka relasi tidak
well-formed. Lakukan hal-hal berikut:
a) Tempatkan kolom dari functional dependency pada
relasi baru sendiri yang terpisah.
b) Buat determinant dari functional dependency sebagai
primary key pada relasi yang baru.
c) Tempatkan copy dari determinant sebagai foreign key
pada relasi awal.
d) Buat referential integrity constraint antara relasi awal
dengan relasi yang baru.
4. Ulangi langkah 3 sebanyak yang diperlukan hingga semua
determinant dari setiap relasi adalah candidate key.
18
Langkah-Langkah Normalisasi
Perhatikan relasi berikut ini:

PRESCRIPTION (PrescriptionNumber, Date, Drug, Dosage,


CustomerName, CustomerPhone, CustomerEmail)

Contoh data (instans) seperti terlihat pada daftar di


bawah ini:

19
1# Identifikasi candidate key

Gunakan asumsi untuk mengidentifikasi segala


kemungkinan:

◦ PrescriptionNumber menentukan Date, Drug, and Dosage.


◦ Date, Drug, and Dosage tidak menentukan
PrescriptionNumber.
◦ CustomerEmail mungkin akan menentukan data prescription.

Hasil akhirnya: satu-satunya candidate key dari relasi


PRESCRIPTION adalah PrescriptionNumber

20
2# Identifikasi functional dependency
◦ PrescriptionNumber  (Date, Drug, Dosage, CustomerName,
CustomerPhone, CustomerEmail)
◦ Beberapa drug memiliki beberapa dosages sehingga Drug
bukan determinant.
◦ Dosage bukan determinant karena dosage yang sama dapat
diberikan kepada beberapa drug yang berbeda
◦ CustomerEmail  (CustomerName, CustomerPhone)?

Bila perlu tanyakan kepada user, misalnya apakah


dimungkinkan bahwa beberapa customer berbagi
email yang sama

21
3# Pisahkan Relation

CustomerEmail adalah determinant dan bukan


candidate key. Sehingga PRESCRIPTION memiliki
masalah normalisasi yang dipecahkan sebagai
berikut:

a) CUSTOMER (CustomerName, CustomerPhone,


CustomerEmail)
b) PRESCRIPTION (PrescriptionNumber, Date, Drug, Dosage,
CustomerEmail)
c) CustomerEmail pada PRESCRIPTION harus ada dalam
CustomerEmail pada CUSTOMER

22
Bentuk Normal 1nf

23
 Bentuk tidak normal / Unnormalized Form (UNF)
adalah sebuah tabel yang berisi satu atau lebih
kelompok yang berulang.

 Bentuk normal pertama atau First Normal Form


(1NF) adalah sebuah relasi dimana perpotongan
setiap baris dan kolom berisi satu dan hanya satu nilai
saja.

24
BENTUK TIDAK NORMAL/UNNORMALIZED

25
BENTUK NORMAL 1NF

26
Bentuk Normal 2nf

28
 Bentuk normal kedua / Second Normal Form (2NF)
adalah sebuah relasi yang berbentuk normal 1nf (First
Normal Form) dimana setiap attribute yang bukan
primary key secara penuh bergantung (functionally
dependent) pada primary key.

 Konversi ke bentuk 2NF hanya dilakukan bila bentuk


1NF memiliki primary key yang composite. Bila
bentuk 1NF memiliki primary key kolom tunggal,
maka tabel secara otomatis sudah berbentuk 2NF

29
Bentuk normal 2nf

30
Bentuk Normal 3nf

31
 Bentuk normal ketiga / Third Normal Form (3NF)
adalah sebuah relasi yang berbentuk normal 1nf dan
2nf dimana tidak ada attribute yang bukan primary

 key secara transitive bergantung pada primary key.

32
Bentuk normal 3nf
(tambahan dari bentuk normal 2nf sebelumnya)

33
 Partial dependency terjadi saat ada functional
dependency dimana determinant menjadi bagian dari
primary key (dengan asumsi hanya ada satu candidate
key). Misal, (A, B)→(C,D), B→C, dimana composite
(A, B) adalah primary key, maka functional
dependency B→C adalah partial dependency karena
hanya bagian dari primary key (B) yang dibutuhkan
untuk menentukan nilai C.
 Partial dependency lebih mudah diidentifikasi.

34
 Transitive dependency terjadi saat ada functional
dependency seperti X→Y, Y→Z, dimana X adalah
primary key. Dalam kasus ini, X→Z adalah sebuah
transitive dependency karena X menentukan nilai Z
melalui Y.

 Transitive dependency lebih sulit diidentifikasi dalam


kumpulan data.

35
STUDI KASUS 2

36
Ex…
 Ada perusahaan konstruksi yang
mengelola beberapa proyek
bangunan.
 Setiap proyek memiliki nomor, nama,

karyawan yang ditugaskan dll.


 Setiap karyawan memiliki nomor
karyawan, nama, dan tugas, seperti
teknisi dll.
 Perusahaan menagih customer
berdasarkan waktu kerja. Honor
waktu kerja tergantung pada tugas
karyawan.
Lakukan normalisasi hingga bentuk 3NF!
Konversi ke Bentuk Normal 1NF
Langkah 1: Hilangkan repeating groups
Mulai dengan membuat data dalam format
tabular, dimana setiap cell memiliki nilai
tunggal dan tidak ada lagi repeating group.
Untuk menghilangkan repeating group,
hilangkan null dengan memastikan bahwa
setiap attribute pada repeating group
berisi nilai.
Langkah 2:
Identifikasi candidate untuk primary
key

PROJ_NUM bukan primary key karena


tidak unique untuk semua attribute
lainnya.
Perlu ada kombinasi attribute untuk
menjadi primary key, yaitu composite
dari PROJ_NUM dan EMP_NUM.
Langkah 3:
Identifikasi semua dependency

Identifikasi PK pada Langkah 2 akan menghasilkan


dependency berikut ini:
 (PROJ_NUM, EMP_NUM)  PROJ_NAME, EMP_NAME,

JOB_CLASS, CHG_HOUR, HOURS


Lalu tentukan dependency lainnya yang ada
Ada dependency yang terjadi antara 2 attribute non PK: ini
adalah tanda adanya transitive dependency:
 JOB_CLASS  CHG_HOUR

Ada juga dependency yang terjadi dari determinant pada PK:


ini adalah tanda adanya partial dependency:
 PROJ_NUM  PROJ_NAME
 EMP_NUM  EMP_NAME, JOB_CLASS, CHG_HOUR
 Dependency yang ditemukan pada tabel dapat dibuatkan
diagramnya yang disebut sebagai diagram dependency.

 Diagram dependency membantu memperlihatkan seluruh


relationship antar attribute tabel sehingga memudahkan
untuk melihat dependency yang penting.
Relational schemanya:
PROJECT_ASSIGNMENT (PROJ_NUM, PROJ_NAME,
EMP_NUM, EMP_NAME, JOB_CLASS, CHG_HOUR, HOURS)
Istilah bentuk normal pertama (1NF) menjelaskan format
tabular yang:
1) Seluruh attribute key telah jelas.
2) Tidak ada repeating groups dalam tabel. Dengan kata
lain, setiap perpotongan baris/kolom berisi satu dan hanya
satu nilai saja, bukan kumpulan nilai.
3) Semua attribute tergantung pada primary key.
Konversi ke Bentuk 2NF
Mengubah ke bentuk 2NF dilakukan hanya saat
bentuk 1NF memiliki composite primary key. Bila
bentuk 1NF memiliki single-attribute primary key,
maka tabel secara otomatis sudah berbentuk 2NF.
Langkah 1: tentukan candidate untuk primary key
dan buat tabel yang baru untuk menghilangkan
partial dependency
 PROJ_NUM
 EMP_NUM
 PROJ_NUM EMP_NUM
Langkah 2: mengatur ulang attribute dependent yang
berhubungan
 Gunakan dependency diagram untuk menentukan attribute

yang dependent pada partial dependency.


 Attribute yang dependent dalam partial dependency

dihilangkan dari tabel asal dan tempatkan pada tabel yang


baru bersama dengan determinantnya.
 Attribute yang tidak dependent pada partial dependency akan

tetap berada di tabel asal.


Beri nama tabel yang layak untuk 3 tabel baru (PROJECT, EMPLOYEE,
dan ASSIGNMENT) dan serta tuliskan relational schemanya:
 PROJECT (PROJ_NUM, PROJ_NAME)
 EMPLOYEE (EMP_NUM, EMP_NAME, JOB_CLASS,

CHG_HOUR)
 ASSIGNMENT (PROJ_NUM, EMP_NUM, ASSIGN_HOURS)

Referential integrity contraintnya:


 PROJ_NUM pada ASSIGNMENT harus ada dalam PROJ_NUM

pada PROJECT
 EMP_NUM pada ASSIGNMENT harus ada dalam EMP_NUM

pada EMPLOYEE
Sebuah tabel disebut dalam bentuk normal kedua
(2NF) bila:
• Tabel adalah sebuah 1NF.
• Tidak mengandung partial dependency sehingga, tidak
ada attribute yang dependent pada hanya sebagian dari
primary key.
Catatan masih ada kemungkinan tabel 2NF untuk
mengandung transitive dependency
Konversi ke Bentuk 3NF
Langkah 1: tentukan candidate untuk primary key dan
buat tabel baru untuk menghilangkan transitive
dependency
Untuk setiap transitive dependency, tulislah sebuah
copy determinantnya sebagai primary key pada tabel
yang baru. Determinant adalah attribute yang nilainya
menentukan nilai-nilai lain dalam sebuah baris.
Tuliskan determinant dari transitive dependency
sebagai primary key:
 JOB_CLASS
Langkah 2: Mengatur ulang attribute dependent yang
berhubungan
Identifikasi attribute yang dependent pada setiap
determinant yang teridentifikasi di Langkah 1.
Tempatkan attribute dependent dalam tabel baru
dengan determinantnya dan hapus mereka dari tabel
asal.
 EMP_NUM  (EMP_NAME, JOB_CLASS)
Sebuah tabel disebut dalam bentuk normal ketiga
(3NF) bila:
• Tabel adalah sebuah 2NF.
• Tidak mengandung transitive dependency.
Tahap Normalisasi dimulai dari tahap paling ringan
(1NF) hingga paling ketat (5NF). Biasanya hanya
sampai pada tingkat 3NF atau BCNF karena sudah
cukup memadai untuk menghasilkan tabel-tabel yang
berkualitas baik. Jika kriteria ketiga (BCNF) tidak
dapat terpenuhi, maka paling tidak tabel tersebut tidak
melanggar Bentuk Normal tahap ketiga (3rd Normal
Form / 3NF).

57
 Secara rinci tahapan Normalisasi terdiri dari :
1. Unnormalization Form
 Merupakan bentuk tidak normal berdasarkan data yang
diperoleh dan mengandung repeating group. Menghilangkan
atribut bernilai ganda/multi value.
2. First Normal Form (1NF)
 Entitas yang atributnya memiliki tidak lebih dari satu nilai
untuk contoh tunggal entitas tersebut. Menghilangkan
ketergantungan sebagian/parsial.
3. Second Normal Form (2NF)
 Entitas yang atribut non-primary key-nya hanya tergantung
pada full primary key. Menghilangkan ketergantungan
transitif.

58
4. Third Normal Form (3NF)
 Entitas yang atribut non-primary key-nya tidak tergantung
pada primary key yang lain secara fungsional depedensi.
Menghilangkan anomali-anomali hasil dari ketergantungan
fungsional.

5. Boyce Code Normal Form (BCNF)


 Dilakukan remove multivalued dependent. BCNF terjadi
jika masih terdapat anomaly pada bentuk 3NF dikarenakan
relasi memiliki lebih dari satu candidate. Menghilangkan
Ketergantungan Multivalue atau yang penentunya bukan
kunci kandidat.

59
6. Fourt Normal Form (4NF)
 Dilakukan jika masih terdapat adanya anomaly pada
BCNF. Menghilangkan anomali-anomali yang tersisa, atau
menghilangkan lebih dari satu depedensi bernilai ganda.

7. Firth Normal Form (5NF)


 Tahapan ini dilakukan untuk mengatasi terjadinya join
dependent pemecah relasi menjadi dua sehingga relasi
tersebut tidak dapat digabungkan kembali menjadi satu.
Jadi 5NF dibentuk berdasarkan konsep join dependence.
Yakni apabila sebuah tabel telah didekomposisi menjadi
tabel-tabel lebih kecil, harus bisa digabungkan lagi (join)
untuk membentuk tabel semula.

60
BENTUK NORMALISASI

Bentuk normalisasi pertama (1NF)


Dikenakan pada tabel yang sama sekali belum ternomalisasi.
Tabel yang belum ternomalisasi adalah tabel yang mempunyai
atribut berulang. Contoh : terdapat suatu data sebagai berikut :
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
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
 Tabel di atas sudah memenuhi bentuk normal 1NF

 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

63
 Ex :

 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)

64
2 NF
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
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

66
Siswa Kursus Tutor
Anwar Bhs. Perancis Pierre
Anwar Bhs. Inggris Suzanne
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 bisa 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.

68
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)

69
Diskusi & tanya jawab
Terima Kasih
Salam DUNIA SATU KELUARGA

Anda mungkin juga menyukai