Saturday, July 15, 2017

BAGAIMANA MENGERJAKAN NORMALISASI DI DATABASE?

BAGAIMANA MENGERJAKAN NORMALISASI DI DATABASE? - Untuk mengerti tentang normalisasi, sebelumnya kita harus paham dulu mengenai Super key, Candidate key, dan Primary key.

Langkah kedua adalah kita harus memahami apa itu Functional Dependencies, Partial Functional Dependencies, dan Transitive Functional Dependencies.
Setelah paham dengan konsep-konsep diatas itu semua, barulah kita akan lebih mudah untuk memahami Normalisasi.

Nah yuk kita coba bahas satu persatu. Semua konsep diatas, berdasarkan pemahaman TechSigntic nih, jadi kalau ada yang mau membenarkan jika TechSigntic salah, sangat dinanti, buat kebaikan bersama hehe...

PERTAMA…


Kita gunakan tabel pada gambar diatas sebagai tabel yang akan kita gunakan untuk pemahaman konsep kali ini.


APA SAJA KEY YANG ADA DATABASE?

SUPER KEY, yaitu satu atau lebih atribut yang bisa membedakan data yang satu dengan data lainnya.
Super Key dari tabel diatas adalah:
(NIM, Kd_Jur)
(NIM, Kode_MK)
(NIM, Kd_Jur, Kode_MK)

CANDIDATE KEY, Candidate key dipilih dari Super Key yang paling pendek. Jadi, dari semua Super Key kita pilih Key yang paling pendek. Candidate Key bisa lebih dari satu.
Candidate Key dari tabel diatas adalah:

(NIM, KD_Jur) dan (NIM, Kode_MK)

PRIMARY KEY, yaitu satu atribut paling umum dan yang paling bisa membedakan data yang satu dengan data lainnya.


LALU, APA ITU FUNCTIONAL DEPENDENCIES?

FUNCTIONAL DEPENDENCIES (FD) jika kita artikan perkata berarti kebergantungan fungsional tiap-tiap atribut yang ada pada tabel.

Contohnya A    B (dibaca A mempengaruhi B) 
berarti
A menentukan B
atau
B secara fungsional bergantung kepada A

Dimana A dan B adalah salah satu dari atribut yang ada pada Tabel T
Namun B tidak mempegaruhi A, jadi bisa disimpulkan, A adalah atribut yang merupakan Candidate Key atau atribut yang bisa menjadi Primary Key.

atribut yang mempengaruhi disini artinya, atribut tersebut bisa menjadi pembeda atau primary key.

Pada Tabel kita yang ada dibawah  ini,


Salah satu Functional Dependencies adalah NIM mempengaruhi Nama_Mhs, Kd_jur, dan Nama_Jur

Untuk lebih mudahnya:

FD1 = (NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur)
FD2 = (Kd_Jur)    (Nama_Jur)
FD3 = (Kode_MK)    (Nama_MK, sks)
FD4 = (NIM, Kode_MK)    (nilai)

Selain Functional Dependencies, ada juga yang namanya Partial Functional Dependencies.

APA ITU PARTIAL FUNCTIONAL DEPENDENCIES?

Partial Functional Dependencies adalah kebergantungan secara parsial (hanya pada salah satu atribut pada Candidate Key).

(A, C)    D
Dimana A dan C adalah Candidate Key

Lalu A    D (A mempengaruhi D)

Sehingga D bergantung secara parsial terhadap (A, C)
Atau (A, C) mempengaruhi D secara parsial.

Pada tabel kita ini,

Salah satu Candidate key adalah (NIM, Kode_MK)
FD1 = (NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur)
FD2 = (Kd_Jur)    (Nama_Jur)
FD3 = (Kode_MK)    (Nama_MK, sks)
FD4 = (NIM, Kode_MK)    (nilai)

Kesimpulan :
(Nama_Mhs, Kd_Jur, Nama_Jur) bergantung secara parsial pada (NIM, Kode_MK).
(NIM, Kode_MK) mempengaruhi (Nama_Mhs, Kd_Jur, Nama_Jur) secara parsial.

Karena (NIM, Kode_MK) adalah Candidate Key. Berlaku:
(NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur) =  (A    D)
(NIM, Kode_MK)     (Nama_Mhs, Kd_Jur, Nama_Jur) = (A, C)    D


LALU, APA ITU TRANSITIVE FUNCTIONAL DEPENDENCIES?

Jika A    B
B    C
maka
A    C

Dengan kata lain, jika A mempengaruhi B, dan B mempengaruhi C, maka A mempengaruhi C.
C bergantung secara transitif terhadap A melalui B.

Contoh pada tabel dibawah ini

FD1 = (NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur)
FD2 = (Kd_Jur)    (Nama_Jur)

(Nama_Jur) bergantung secara transitif terhadap (NIM) melalui (Kd_Jur).

Lalu masuklah kita pada yang namanya NORMALISASI. Bentuk Normal adalah sekumpulan kriteria dari tabel-tabel di database harus dipenuhi untuk mencapai tingkat atau level bentuk normal tertentu.

Parameter yang biasanya digunakan untuk menentukan kriteria bentuk normal adalah Functional Dependencies dan Ketiga Keys yang sebelum ini telah kita bahas.

Makin tinggi bentuk normal yang dicapai, maka kualitas desain tabel tersebut akan semakin baik. Dan semakin kecil pula peluang terjadinya anomali dan redudansi data.

Beberapa bentuk normal yang sering dipelajari adalah:
1NF (Bentuk Normal Pertama / First Normal Form), 2NF, 3NF, dan BC Normal Form. Untuk Kali ini kita akan membahas mengenai 1NF, 2NF, dan 3NF terlebih dahulu.

SYARAT 1NF:

1.    Tidak boleh ada atribut (kolom) yang memiliki data  pada kolom tersebut lebih dari satu (multi-value)
2.    Tidak boleh ada atribut pada tabel yang memiliki domain (nama kolom) yang sama.



Tabel yang sudah kita gunakan dari awal tadi tidak memiliki domain yang sama maupun kolom dengan multi-value, maka Tabel 1NF nya sama dengan tabel awal.


SYARAT 2NF:

1.    Memenuhi 1NF
2.    Tidak ada Partial Functional Dependencies.

Oleh karenanya, saat melakukan normalisasi, maka sangat penting untuk terlebih dahulu menentukan Candidate Key dan Functional Dependencies.

Coba kita lihat lagi Functional Dependencies dari tabel yang kita gunakan.

FD1 = (NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur)
FD2 = (Kd_Jur)    (Nama_Jur)
FD3 = (Kode_MK)    (Nama_MK, sks)
FD4 = (NIM, Kode_MK)    (nilai)

Candidate Key =  (NIM, Kode_MK)

Berarti terjadi Partial Functional Dependencies pada:
FD1 = (NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur)
FD3 = (Kode_MK)    (Nama_MK, sks)

Karena seperti yang kita bahas diatas sebelumnya,
(NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur) 
Maka,
(NIM, Kode_MK)    (Nama_Mhs, Kd_Jur, Nama_Jur) secara parsial


(Kode_MK)    (Nama_MK, sks)
Maka
(NIM, Kode_MK)    (Nama_MK, sks) secara parsial

Solusinya pecah tabel tadi menjadi 3 tabel yang terpisah yaitu tabel berdasar FD1, tabel berdasar FD3 dan tabel berdasar FD4.

Tabel FD1 dan FD3 menghilangkan partial functional dependencies. Karena NIM dan Kode_MK terpisah menjadi 2 tabel yang berbeda. 

(Nama_Mhs, Kd_Jur, Nama_Jur) tidak lagi dipengaruhi  oleh (NIM, Kode_MK) secara parsial, karena sudah tidak ada kolom Kode_MK lagi pada tabel mereka.




SYARAT 3NF

1.    Memenuhi 2NF
2.    Tidak ada Transitive Functional Dependencies

Jika kita cermati, FD1 adalah salah satu Transitive Functional Dependencies.
FD1 = (NIM)    (Nama_Mhs, Kd_Jur, Nama_Jur)
FD2 = (Kd_Jur)    (Nama_Jur)

Karena (Kd_Jur) mempengaruhi (Nama_Jur)
Dan (NIM) mempengaruhi (Kd_Jur)
Jadi (NIM) mempengaruhi (Nama_Jur) melalui (Kd_Jur).

Maka tabel ini harus dipisah.
Sehingga kita pecah lagi tabelnya menjadi 2.

Tabel pertama adalah (NIM)    (Nama_Mhs, Kd_Jur)
Tabel kedua adalah (Kd_Jur)    (Nama_Jur)



Sehingga total ada 5 tabel.

Itulah tadi cara melakukan Normalisasi.  Adapun tujuan untuk melakukan Normalisasi seperti yang telah disebutkan diatas adalah untuk menghindari redudansi data (pengulangan data) dan anomali data.
Apa saja anomali data tersebut?
1.    Update Anomaly
2.    Insertion Anomaly
3.    Deletion Anomaly
yang nanti akan kita bahas di bagian tersendiri.

Semangat Memahami ^^

This Is The Newest Post


EmoticonEmoticon