Normalisasi
1. Pengantar Normalisasi
Salah satu topik yang
cuckup kompleks dalam dunia manajemen database adalah proses untuk
menormalisasi tabel-tabel dalam database relasional. Dengan normalisasi
digunakan dalam desain relasional yang terdiri dari tabel-tabel berikut :
a.
Berisi data yang
diperlukan.
b.
Memiliki sedikit
mungkin redundansi.
c.
Mengakomodasi
banyak nilai untuk tipe data yang diperlukan.
d.
Mengefisiensi
update.
e.
Menghindari
kemungkinan kehilangan data secara tidak disengaja/tidak diketahui.
Alasan utama dari
normalisasi database minimal sampai dengan bentuk normal ketuga adalah
menghilangkan kemungkinan adanya "Insertion anomalies", "deletion
anomalies". dan "update anomalies". Tipe-tipe kesalahan tersebut
sangat mungkin terjadi pada database yang tidak normal.
"Insertion
anomaly" adalah sebuah kesalahan dalam penempatan informasi entry data
baru ke seluruh tempat dalam database di mana informasi tersebut perlu
disimpan. Dalam databse yang telah dinormalisasi, proses pemasukan suatu
informasi baru hanya perlu dimasukkan ke dalam satu tempat.
"Deletion
anomaly" adalah sebuah kesalahan dalam penghapusan suatu informasi dalam
database yang harus dilakukan dengan penghapusan informasi tersebut dari
beberapa tempat dalam database. Dalam database yang telah dinormalisasi,
penghapusan suatu informasi hanya perlu dilakukan dalam satu tempat dalam
databse tersebut.
Sedangkan, dalam
melakukan update satu informasi, kesalahan juga dapat terjadi ketika kita harus
melakukan update ke seluruh tempat yang menyimpan infprmasi tersebut. Kesalahan
ini disebut dengan "Update anomaly".
Normalisasi merupakan
cara pendekatan dalam membangun desain logika basis data relasional yang tidak
secara langsung berkaitan dengan model data, tetapi dengan menerapkan sejumlah
aturan dan kriteria standar untuk menghasilkan struktur tabel yang normal. Pada
dasarnya, desain logika basis data relasional dapat menggunakan prinsip normalisasi
maupun transformasi dari model E-R ke bentuk fisik.
Beberapa kondisi yang diujikan pada proses
normalisasi yaitu :
a.
Menambah
data/insert.
b.
Mengedit/mengupdate.
c.
Menghapus/delete.
d.
Membaca/retrieve
2. Bentuk-Bentuk Normalisasi
a.
Bentuk tidak
normal
Bentuk ini merupakan
kumpulan data yang akan direkam, tidak ada keharusan mengikuti format tertentu,
dapat saja tidak lengkap dan terduplikasi. Data dikumpulkan apa adanya sesuai
keadaannya.
b.
Bentuk normal
tahap pertama (1 Normal Form)
Sebuah tabel disebut 1 NF jika :
1) Tidak ada baris
yang duplikat dalam tabel tersebut.
2) Masing-masing
cell bernilai tunggal.
Catatan : Permintaan yang menyatakan tidak ada baris
yang duplikat dalam sebuah tabel berarti tabel tersebut memiliki sebuah kunci,
meskipun kunci tersebut dibuat dari kombinasi lebih dari satu kolom atau bahkan
kunci tersebut merupakan kombinasi dari semua kolom.
Berikut ini akan
dicontohkan normalisasi dari tabel Kuliah yang memiliki atribut : kode_kul,
nama_kul, sks, semester, waktu, tempat, dan nama_dos.
Tabel kuliah tersebut
tidak memenuhi normlaisasi pertama, karena terdapat atribut waktu yang
tergolong ke dalam atribut bernilai banyak. Agar tabel tersebut dapat memenuhi
1 NF, maka solusinya adalah dengan mendekomposisi tabel Kuliah menjadi :
Tabel Kuliah (kode_kul, nama_kul, sks, semester,
nama_dos).
Tabel Jadwal (kode_kul, waktu, ruang).
c.
Bentuk Normal
tahap kedua (2 Normal Form)
Bentuk Normal Kedua
(2NF) terpenuhi jika pada sebuah tabel semua atribut yang tidak termasuk dalam
primary key memiliki ketergantungan fungsional pada primary key secara utuh.
Sebuah tabel dikatakan
tidak memenuhi 2 NF, jika ketergantungannya hanya bersifat parsial (hanya
tergantung pada sebagian dari primary key).
Bentuk normal kedua akan dicontohkan sebagai
berikut.
Misal tabel Nilai terdiri dari atribut kode_kul,
nim, dan nilai. Jika pada tabel Nilai, misalnya kita tambahkan sebuah atribut
yang bersifat redundan, yaitu nama_mhs, maka tabel Nilai ini dianggap melanggar
2NF.
Primary key pada taebl Nilai adalah [kode_kul, nim].
Penambahan atribut baru
(nama_mhs) akan menyebabkan adanya ketergantungan fungsional yang baru yaitu
nim -> nama_mhs. karena atribut nama_mhs ini hanya memiliki ketergantungan
parsial pada primary key secara utuh (hanya tergantung pada nim, padahal nim
hanya bagian dari primary key).
Bentuk nnormal kedua
ini dianggap belum memadai karena meninjau sifat ketergantungan atribut
terhadap primary key saja.
d.
Bentuk normal
tahap ketiga (3 Normal Form)
Sebuah tabel dikatakan
memenuhi bentuk normal ketiga (3NF), jika untuk setiap ketergantungan
fungsional dengan notasi X -> A, dimana A mewakili semua atribut tunggal di
dalam tabel yang tidak ada di dalam X, maka :
X haruslah superkey pada tabel tersebut.
Atau A merupakan bagian dari primary key
pada tabel tersebut.
Misalkan pada tabel Mahasiswa, atribut alamat_mhs
dipecah ke dalam alamat_jalan, alamat_kota dan kode_pos. Bentuk ini tidak
memenuhi 3NF, karena terdapat ketergantungan fungsional baru yang muncul pada
tabel tersebut, yaitu :
alamat_jalan, nama_kota -> kode_pos
Dalam hal ini
(alamat_jalan, nama_kota) bukan superkey
sementara kode_pos juga bukan bagian dari primary key pada tabel alamat
tersebut, yaitu :
alamat_jalan, nama_kota -> kode_pos
kode_pos -> nama_kota
Ketergantungan
fungsional yang pertama tidak melanggar 3NF, karena (alamat_jalan, nama_kota)
merupakan superkey (sekaligus sebagai primary key) dari tabel Alamat tersebut.
Demikian juga dengan ketergantunga fungsional yang kedua meskipun (kode_pos)
bukan merupakan superkey, tetapi nama_kota merupakan bagian dari primary key
dari tabel Alamat. Karena telah memenuhi 3NF, maka tabel tersebut tidak perlu
di dekomposisi lagi.
e.
Bentuk Normal
tahap keempat dan kelima
Penerapan aturan
normalisasi sampai bentuk normal ketiga sudah memadai untuk menghasilkan tabel
berkualitas baik. Namun demikian, terdapat pula bentuk normal keempat (4NF) dan
kelima (5NF). Bentuk Normal KEempat berkaitan dengan sifat ketergantungan
banyak nilai (multivalued dependency) pada suatu tabel yang merupakan
pengembangan dari ketergantungan fungsional. Adapun bentuk normal tahap kelima
merupakan nama lain dari Project Join Normal Form (PJNF).
f.
Boyce Code
Normal Form (BCNF)
1) Memenuhi 1NF.
2) Relasi harus
bergantung fungsi pada atribut superkey.
Komentar
Posting Komentar