Bentuk-Bentuk Normal dan Proses Normalisasi

16.4.3 Bentuk-Bentuk Normal dan Proses Normalisasi

Ada beberapa bentuk normal yang dikenal dalam basis data yaitu bentuk normal pertama (1NF) sampai dengan bentuk normal ke 5 (5NF), dan bentuk normal Boyce-Codd (BCNF). Sebuah table disebut baik atau normal untuk operasi-operasi basis data biasanya telah memenuhi bentuk normal ke tiga (3NF) atau dalam bentuk normal Boyce-Codd (BCNF). Pada buku ini kita hanya akan membahas sampai dengan bentuk normal ke tiga. Pembahasan BCNF membutuhkan dasar pengetahuan tentang Aljabar Relasional, sehingga tidak akan dibahas.

Bentuk normal pertama (1NF)

Sebuah table disebut memenuhi bentuk normal pertama (1NF) jika syarat- syarat berikut terpenuhi :

o Setiap nilai dalam setiap kolom/field/atribut harus bernilai tunggal (tidak boleh bernilai banyak). o Semua baris/row/record harus dapat diidentifikasi dengan primary key – nya.

o Semua kolom yang bukan primary key harus tergantung secara fungsional pada primary key, baik langsung atau tidak langsung.

Untuk membuat table dalam bentuk normal pertama, kita akan menggunakan contoh table pada Gambar 16.21. Tabel pada gambar ini sering disebut sebagai Tabel Universal, karena sebenarnya isinya merupakan gabungan dari beberapa table. Table dalam bentuk seperti inilah yang biasanya kita buat untuk mengorganisasi data.

Gambar 16.21. Table Guru dengan salah satu kolom bernilai banyak.

Langkah awal untuk membentuk table bentuk normal pertama adalah memeriksa apakah ada atribut bernilai banyak. Pada Gambar 16.21, terlihat bahwa kolom keahlian termasuk kategori atribut bernilai banyak. Kita harus merubah table tersebut menjadi seperti Gambar 16.22. Syarat pertama bentuk normal pertama sudah dapat kita penuhi, karena pada Gambar 16.22, tidak kita jumpai lagi atribut yang bernilai banyak.

Gambar 16.22. Table Guru dengan semua kolom sudah bernilai tunggal.

Langkah berikutnya adalah menentukan primary key dari table. Kita tidak dapat memilih Kode Guru, Nama Guru atau Kode PS sebagai primary key, karena kolom-kolom tersebut memiliki nilai yang tidak unik. Sebagai contoh, pada kolom Kode Guru, nilai I04001 berulang dua kali, bahkan I04004 berulang kali. Demikian juga pada kolom lainnya. Kalau kita telusuri maka sebenarnya primary key pada table Guru adalah gabungan dari Kode Guru, Kode PS, dan Keahlian. Dengan menggunakan primary key ini maka setiap baris dapat kita bedakan dengan baris yang lain. Syarat ke dua telah dapat kita penuhi pula.

Langkah ketiga adalah memeriksa apakah atribut yang tidak termasuk kunci, tergantung secara fungsional pada primary key baik langsung maupun tidak langsung. Atribut yang tidak termasuk primary key adalah Nama Guru dan PS. Kita dapat menguji notasi Functional Dependency (FD) berikut ini:

(Kode Guru, Kode PS, Keahlian)  (Nama Guru) (Kode Guru, Kode PS, Keahlian)  (PS)

Dengan melihat nilai-nilai pada Gambar 16.22, kita bisa katakan bahwa kedua FD di atas terpenuhi (lihat kembali pengertian FD pada sub bab sebelumnya). Dengan demikian seluruh syarat bentuk normal pertama telah terpenuhi dan kita bisa mengatakan bahwa Tabel Guru berada dalam bentuk normal pertama (1NF).

Bentuk normal kedua (2NF)

Sebuah table disebut memenuhi bentuk normal kedua (2NF) jika syarat- syarat berikut terpenuhi :

o Tabel sudah berada dalam bentuk normal pertama (1NF).

o Sudah tidak ada ketergantungan fungsional secara parsial, yaitu seluruh kolom yang bukan primary key hanya tergantung pada

sebagian dari primary key. Langkah pertama adalah memeriksa apakah table sudah memenuhi

syarat bentuk normal pertama. Pada Gambar 16.22, kita sudah memeriksa dan menyatakan table sudah dalam kondisi normal pertama. Sehingga syarat pertama bentuk normal kedua (2NF) sudah terpenuhi.

Langkah kedua adalah memeriksa apakah ada ketergantungan, jika ada maka table harus diuraikan (dekomposisi). Seperti telah disebutkan, primary key pada Gambar 16.22 adalah (Kode Guru, Kode PS, Keahlian) dan ada dua atribut yang tidak termasuk primary key yaitu Nama Guru dan PS. Kalau diperhatikan lebih seksama, Nama Guru tidak tergantung sepenuhnya pada (Kode Guru, Kode PS, Keahlian) namun hanya tergantung pada Kode Guru. Inilah yang disebut sebagai ketergantungan fungsional secara parsial. Hal yang sama juga terjadi pada atribut PS. Atribut ini hanya tergantung pada Kode PS. Selain itu atribut keahlian sebenarnya juga tergantung secara fungsional hanya pada atribut Kode Guru. Tabel Guru di atas harus didekomposisi dengan memperhatikan ketergantungan fungsional ini. Hasil dekomposisi dapat dilihat pada Gambar 16.23.

Gambar 16.23. Hasil dekomposisi tabel.

Hasil dekomposisi pada Gambar 16.23 menghasilkan lima buah table sebagai berikut:

Tabel 16.2. Tabel-tabel hasil dekomposisi.

Nama Tabel Atribut (Kolom)

Primary Key

Functional Dependency

Guru o Kode Guru,

(Kode Guru)(Nama Guru) o Nama Guru

(Kode Guru)

PS o Kode PS,

(Kode PS)(PS) o PS

(Kode PS)

Keahlian o Kode Keahlian, (Kode Keahlian) (Kode Keahlian)(Keahlian) o Keahlian

Guru-PS o Kode Guru, (Kode Guru, Kode (Kode Guru, Kode PS)(Kode o Kode PS

Guru, Kode PS) Guru-Keahlian o Kode Guru,

PS)

(Kode Guru, Kode (Kode Guru, Kode Keahlian) o Kode Keahlian

Keahlian)

(Kode Guru, Kode Keahlian)

Tabel-tabel hasil dekomposisi seperti terlihat pada Tabel 16.2 sudah tidak mengandung ketergantungan fungsional parsial. Sehingga kita bisa menyatakan bahwa semua table sudah dalam bentuk normal kedua (2NF).

Bentuk normal ketiga (3NF)

Sebuah table disebut memenuhi bentuk normal ketiga (3NF) jika syarat- syarat berikut terpenuhi :

o Tabel sudah berada dalam bentuk normal kedua (2NF). o Tidak ada ketergantungan transitif (dimana atribut yang bukan

primary key tergantung pada atribut lain yang juga bukan primary key).

Seperti telah disebutkan, semua table pada Tabel 16.2, telah berada dalam bentuk normal kedua (2NF), sehingga syarat pertama telah dipenuhi. Pada semua table juga tidak dijumpai adanya ketergantungan transitif. Dengan dipenuhinya kedua syarat ini, kita dapat menyatakan semua table dalam bentuk normal ketiga (3NF).