Kegiatan belajar 8: Pengantar Teknik Normalisasi Data.
a. Tujuan Pembelajaran.
Setelah mengikuti kegiatan belajar 1 ini diharapkan
peserta didik dapat:
ü Memahami konsepteknik
normalisasi data
ü Memahami tiga konsep
dasar yang dibutuhkan dalam normalisasi data
ü Memahami persyaratan
teknik normalisasi data.
ü Menguji tabel relasional
menggunakan dua kriteria yaitu: Lossless–Join
Decomposition dan Dependency Preservation
b. Uraian materi.
1)
Perancangan
Basis Data
Prancang basis data
merupakan suatu hal yang sangat penting. Kesulitan utama dalam merancang
database adalah bagaimana merancang sehingga database dapat memuaskan keperluan
saat ini dan masa mendatang.Tujuan perancanganadalah agar dapat memiliki basis
data yang kompak, efisien dalam penggunaan ruang penyimpanan, cepat dalam
pengaksesan dan mudah dalam memanipulasi data (operasitambah, ubah, hapus).
Perancangan model
konseptual perlu dilakukan di samping perancangan model phisik.Perancangan
konseptual akan menunjukkan entity dan relasinya berdasarkan proses yang
diinginkan oleh organisasi. Tugas pernacangan model konseptual basis data ini
merupakan tanggung jawab dari Database Administrator.Beberapa pengertian
berkaiatan dengan perancangan model konseptual, ialah :
·
Bukan merupakan pendekatan proses informasi untuk seorang
programmer aplikasi, tetapi merupakan kombinasi beberapa cara untuk memproses
data untuk beberapa aplikasi.
·
Tidak tergantung pada aplikasi individual.
· Tidak
tergantung pada DBMS yang digunakan.
· Tidak
tergantung pada hardware yang digunakan.
·
Tidak tergantung pada phisikal model.
·
Tidaklah perlu dipikirkan tentang terapan dan operasi yang akan
dilakukan pada database.
Pada perancangan model konseptual penekanan tinjauan
dilakukan pada struktur data dan
relasi antara file.Pendekatan yang dilakukan pada menggunakan model data relational.Dalam merancang
basis data dapat dilakukan melalui dua pendekatan yaitu:
1.
Model Entity–Relationship-diagram (telah dijelaskan dalam
uraian kegiatan 3, 4 dan 5)
2.
Menerapkan normalisasi terhadap struktur tabel yang telah
diketahui.
2)
Definisi
Normalisasi
Normalisasi diartikan sebagai suatu teknik yang menstrukturkan atau
mendekomposisi atau memecah data menggunakan cara–cara tertentu untuk mencegah
timbulnya permasalahan pengolahan data dalam basis data. Permasalahan yang
dimaksud adalah berkaitan dengan penyimpangan–penyimpangan (anomalies) yang terjadi akibat adanya
kerangkapan data dalam relasi dan inefisiensi pengolahan.Proses normalisasi
akan menghasilkan relasi yang optimal, yaitu :
1.
Memiliki
struktur record yang mudah untuk
dimengerti.
2.
Memiliki
struktur record yang sederhana dalam
pemeliharaan.
3.
Memiliki
struktur record yang mudah untuk
ditampilkan kembali untuk memenuhi kebutuhan pemakai.
4.
Minimalisasi
kerangkapan data guna meningkatkan kinerja sistem.
Dalam pendekatan normalisasi, perancangan basis data bertitik tolak dari
situasi nyata. Ia telah memiliki item–item data yang siap ditempatkan dalam
baris dan kolom pada tabel–tabel relasional. Demikian juga dengan sejumlah aturan
tentang keterhubungan antara item–item data tersebut. Sementara pendekatan
model data ER lebih tepat dilakukan jika yang diketahui baru prinsip sistem
secara keseluruhan.
Pada penerapannya dua pendekatan tersebut dilakukan secara bersama–sama
dan, berganti–ganti. Untuk kepentingan evaluasi dan dokumentasi, hasil
normalisasi diwujudkan dalam sebuah model data. Model data yang sudah jadi
tersebut bisa saja dimodifikasi dengan pertimbangan tertentu. Selanjutnya Hasil
modifikasinya diimplementasikan dalam bentuk sejumlah struktur tabel dalam
sebuah basis data. Struktur ini dapat diuji kembali dengan menerapkan
aturan–aturan normalisasi, hingga
akhirnya diperoleh sebuah struktur basis data yang benar–benar efektif dan
efisien. Begitulah kedua pendekatan dapat saling memperkuat satu sama lain.
3)
Domain
dan Tipe Data Konsep pendukung teknik normalisasi.
Beberapa
konsep yang harus dipahami sebelum mengimplementasikan teknik normalisasi data
antara lain ialah: 1) ketergantungan fungsional (sudah dibahas dalam kegiatan
belajar tujuh). 2) Domain dan tipe data. 3) Konsep key atribut (Field/atribute
kunci).
Penetapan tipe data pada setiap atribut (kolom) digunakan untuk
keperluan penentuan struktur setiap tabel. Penetapan tipe data ini akan
berimplikasi pada adanya batas–batas nilai yang mungkin disimpan atau diisikan
kesetiap atribut tersebut. Jika telah menetapkan bahwa tipe data untuk sebuah
atribut adalah integer, maka kita hanya mungkin untuk menyimpan data angka yang
bulat diantara –32.768 hingga 32.768. Pengguna tidak mungkin untuk memasukkan
data diluar batas nilai tersebut. untuk memasukkan data pecahan pengguna harus
menggunakan data nbertipe string atau text.
Domain memiliki banyak kesamaan pengertiannya dengan fungsi tipe data
tersebut. Akan tetapi, tipe data merujuk pada kemampuan penyimpanan data yang
mungkin bagi suatu atribut secara fisik, tanpa melihat layak tidaknya data
tersebut bila dilihat dari kenyataannya pemakaiannya. Sementara domain nilai
lebih ditetapkan pada batas–batas nilai yang diperbolehkan bagi suatu atribut,
dilihat dari kenyataanya yang ada.
Contoh : pada tabel kuliah, ditetapkan tipe data untuk atribut sks
adalah integer. Dengan begitu secara fisik kita dapat menyimpan nilai –1, 0
atau 100 untuk atribut sks. Tetapi kita mengetahui dengan pasti, bahwa
nilai–nilai tersebut tidak pantas (invalid)
untuk menjadi data pada atribut sks. Lalu nilai–nilai yang boleh (valid) untuk atribut sks adalah 1, 2, 3,
4 dan 6, maka dapat dikatakan, domain nilai untuk atribut sks adalah 1, 2, 3, 4
dan 6.
4)
Key
Attribute
Setiap file
atau tabel selalu mempunyai kunci (key) yaitu berupa satu field atau satu set
field yang dapat mewakili record. Misalnya nomor pegawai merupakan kunci dari
tabel pegawai suatu perusahaan. setiap pencarian cukup dengan menyebut nomor
pegawai tersebut maka dapat diketahui nama, alamat dan atribute lainnya
mengenai seorang pegawai tersebut.Key adalah satu
atau gabungan dari beberapa atribut yang dapat membedakan semua baris data
(row) dalam table secara unik.Macam-macam Filed/attribute kunci:
·
Candidate Key (Kunci Kandidat/Kunci Calon)
·
Primary Key (Kunci Primer)
·
Alternate Key (Kunci Alternatif)
·
Foreign Key (Kunci Tamu)
Candidate Key (Kunci Kandidat/Kunci calon)adalah satu atribute atau satu
set minimal atribute yang mengidentifikasikan secara unik suatu kejadian
spesific dari entity. Jika satu kunci kandidat berisi lebih dari satu atribute,
maka biasanya disebut sebagai composite
key (kunci campuran/ gabungan).
Misalnya
tabel Pegawai berisi attribute:No Induk Pegawai (NIP) , No KTP, Nama, Tempat Lahir, Tanggal
Lahir, Alamat, KotaKunci kandidat
disini antara lain ialah :
·
No Induk Pegawai (NIP), karena unik tidak
mungkin ganda.
·
No KTP, karena unik tidak mungkin ganda.
·
Nama, sering dipakai sebagai kunci pencarian
namun tidak dapat dikatakan kunci karena sering seseorang punya nama yang sama.
·
Nama + Tanggal lahir, mungkin dapat dipakai
sebagai kunci karena kemungkinan sangat kecil seseorang punya nama sama yang
lahir pada hari yang sama.
·
Nama + tempat lahir + tanggal lahir, dapat
dipakai sebagai kunci
·
Alamat, kota (bukan kunci).
Primary Key adalah satu atribute atau satu
set minimal atribute yang tidak hanya mengidentitikasi secara unik suatu
kejadian spesific, tapi juga dapat mewakili setiap kejadian dari suatu entity.
Setiap kunci kandidat
punya peluang menjadi primary key,
tetapi sebaiknya dipilih satu saja yang dapat mewakili secara menyeluruh
terhadap entity yang ada. Contoh:
·
No Induk (NIP), karena unik tidak mungkin
ganda dan mewakili secara menyeluruh terhadap entity Pegawai, dan setiap
pegawai selalu punya nomor induk
·
No KTP, ini hanya dipakai bila sampai dengan pembayaran gaji
pegawai ternyata nomor induk belum keluar.
NIP
|
Nama_Pegawai
|
Tgl_Lahir
|
Alamat
|
2001
|
Anton
|
12-12-76
|
Solo
|
2002
|
Budi
|
02-02-75
|
Yogya
|
2003
|
Anton
|
11-11-76
|
Semarang
|
Alternate Key
(Kunci alternatif)adalah
kunci kandidat yang tidak dipakai sebagai primary key. Kerap kali
kunci alternatif dipakai sebagai kunci pengurutan dalam laporan.Contoh: Kunci
Alternatif untuk pengurutan berdasarkan nama.
Foreign Key
(Kunci Tamu/Asing)Foreign
Key adalah satu
atribute (atau satu set atribute) yang melengkapi satu relationship (hubungan)
yang menunjukkan ke induknya. Kunci tamu
ditempatkan pada entity anak dan sama dengan kunci primary induk direlasikan.
Contoh:
Dalam hal
hubungan dua buah file yang punya relationship banyak lawan banyak maka
terdapat 2 buah kunci tamu pada file konektornya. Contoh:
Hubungan antara file tersebut adalah banyak lawan banyak
yaitu satu Pegawai mengerjakan lebih dari 1 proyek dan satu proyek dikerjakan
oleh beberapa pegawai maka untuk menunjukkan hubungan tersebut dipakai file
konektor yang berisi kunci tamu dari kedua file.
File Proyek_Pegawai berisi atribute :
Nomor Proyek, NIP, Jam Kerja (proyek tersebut dikerjakan oleh pegawai ter-tentu
selama sekian jam kerja)
Maka
pada file Proyek_Pegawai terdapat kunci tamu yaitu Nomor Proyek dan NIP.
Kedua atribute tersebut juga merupakan kunci primary.
5)
Persyaratan
teknik normalisasi data.
Dalam
perspektif normalisasi, sebuah basis data dapat dikatakan baik, jika setiap
tabel yang menjadi unsur pembentuk basis data tersebut juga telah berada dalam
keadaan baik atau normal. Selanjutnya, sebuah tabel dapat dikategorikan baik (efisien) atau normal, jika telah
memenuhi 3 (tiga) kriteria berikut :
1. Jika ada dekomposisi (penguraian) tabel, maka
dekomposisinya harus dijamin aman (Lossless–Join
Decomposition).
2. Terpeliharanya
ketergantungan fungsional pada saat perubahan data (DependencyPreservation).
3. Tidak melanggar Boyce–Code Normal Form (BCNF)
6)
Lossless–Join Decomposition
Dekomposisi memang merupakan upaya untuk mendapatkan tabel yang baik.
Tetapi jika tidak hati–hati, upaya ini justru dapat menghasilkan kesalahan.
Dekomposisi yang benar terjadi jika tabel–tabel hasil dekomposisi kita
gabungkan kembali dapat menghasilkan tabel awal sebelum didekomposisi.
Dekomposisi yang benar semacam ini disebut Lossless–Join
Decomposition atau Lossless Decomposition
(dekomposisi aman).
Di bawah ini contoh abstrak yang menghasilkan dekomposisi tidak aman (Lossy–Join Decomposition) :
Diasumsikan
tabel XYZ yang didefinisikan oleh dua
buah ketergantungan fungsional X à Y dan Y à Z. Kedua ketergantungan fungsional tersebut
diperoleh dari pengamatan terhadap data yang kurang memadai atau karena asumsi
yang kurang tepat. Katakan isi tabel XYZ tersebut adalah sebagai berikut:
X
|
Y
|
Z
|
|
row 1
|
x1
|
10
|
z1
|
row 2
|
x2
|
20
|
z2
|
row 3
|
x3
|
30
|
z3
|
row 4
|
x4
|
20
|
z4
|
Memang dengan isi seperti itu, pernyataan
ketergantungan fungsional yang kedua
Y à Z tidak
sepenuhnya tepat, karena pada row 2
dan row 4, dengan nilai untuk atribut
Z–nya berbeda. Tetapi yang ingin ditekankan di sini adalah adanya dua buah
ketergantunagn fungsional itu mendorong kita untuk mendekomposisi tabel XYZ
tersebut menjadi dua buah tabel yaitu tabel XY dan YZ sebagai berikut :
X
|
Y
|
Y
|
Z
|
|
x1
|
10
|
10
|
z1
|
|
x2
|
20
|
20
|
z2
|
|
x3
|
30
|
30
|
z3
|
|
x4
|
20
|
20
|
z4
|
Jika kedua tabel diatas kita gabungkan kembali, maka hasilnya adalah :
X
|
Y
|
Z
|
x1
|
10
|
z1
|
x2
|
20
|
z2
|
x2
|
20
|
z4
|
x3
|
30
|
z3
|
x4
|
20
|
z2
|
x4
|
20
|
z4
|
Maka ini
tentu saja berbeda dengan tabel awal (sebelum didekomposisi). Maka dekomposisi
semacam ini disebut Lossy–Join
Decomposition (dekomposisi tidak aman), yaitu sebuah dekomposisi yang
sedapat mungkin kita hindari.Akan tetapi jika data pada row 4 yang ada di tabel XYZ awal, kita ganti dengan data berikut :
x4
|
20
|
z2
|
Sehingga tabel XYZ menjadi :
X
|
Y
|
Z
|
|
Row 1
|
x1
|
10
|
z1
|
Row 2
|
x2
|
20
|
z2
|
Row 3
|
x3
|
30
|
z3
|
Row 4
|
x4
|
20
|
z2
|
Dengan data
ditabel XYZ demikian maka kedua ketergantungan fungsional dapat dibenarkan.
Tabel XYZ tersebut didekomposisikan menjadi tabel XY dan YZ sebagai berikut :
X
|
Y
|
Y
|
Z
|
|
x1
|
10
|
10
|
z1
|
|
x2
|
20
|
20
|
z2
|
|
x3
|
30
|
30
|
z3
|
|
x4
|
20
|
Kalau kedua
tabel diatas digabungkan kembali maka, tabel awal XYZnya akan diperoleh kembali
sehingga dekomposisi tersebut aman. Karena itulah ketergantungan fungsional
pada suatu tabel harus kita tetapkan berdasarkan pengamatan yang teliti dan asumsi
yang dapat dipertanggung jawabkan agar kelak hasil dekomposisi dapat
dibenarkan.
7) Dependency
Preservation
Dependency Preservation (pemeliharaan ketergantungan) merupakan
kriteria kedua yang harus dapat dicapai untuk mendapatkan tabel dan basis data yang
baik. Ketika kita melakukan perubahan data, maka harus bisa dijamin agar
perubahan tersebut tidak menghasilkan inkonsistensi
data yang mengakibatkan ketergantungan fungsional yang sudah benar menjadi
tidak terpenuhi. Akan tetapi, dalam upaya untuk memelihara ketergantungan
fungsional yang ada untuk tetap terpenuhi tersebut, prosesnya harus dapat
dilakukan dengan efisien.
Contoh :
Tabel
mahasiswa : (nim, nama_mhs, alamat_mhs, tgl_lahir) dengan ketergantungan
fungsional–nya yaitu :
nim à
nama_mhs, alamat_mhs, tgl_lahir
Tabel nilai
: (nama_kul, nim, nama_mhs, indeks_nilai) dengan ketergantungan fungsional–nya
yaitu :
nama_kul,
nim à
indeks_nilai dan
nim à nama_mhs
Jika ada perubahan nama_mhs di tabel mahasiswa maka perubahan tersebut
harus juga dilakukan di tabel nilai dan juga berlaku sebaliknya yaitu jika ada
perubahan nama_mhs di tabel nilai maka perubahan tersebut harus juga dilakukan
di tabel mahasiswa.
Jika hal tersebut tidak dilakukan maka data menjadi tidak konsiste dan
ketergantunan fungsional menjadi tidak terpenuhi. Misalnya nilai yang nim–nya
sama tetapi nama_mhs berbeda. Jika begitu, maka perubahan harus dilakukan
diseluruh basis data, tetapi masalahnya perubahan itu tidak efisien dan
seharusnya dihindari.Karena itu sebaiknya agar kriteria dependency preservation dapat terpenuhi dengan
meniadakan/melepaskan atribut nama_mhs dari tabel nilai (sehingga tabel nilai
berisi 3 atribut, yaitu nama-kul, nim dan indeks_nilai).
8)
Boyce Code Normal Form (BCNF)
Kriteria berikutnya untuk mendapatkan tabel yang baik adalah dengan
menerapkan BCNF. Sebuah tabel dikatakan memenuhi BCNF jika untuk semua
ketergantungan fungsional dengan notasi X à Y, maka X harus merupakan candidate key pada tabel tersebut. Jika
tidak demikian, maka tabel tersebut harus didekomposisi berdasarkan
ketergantungan fungsional yang ada, sedemikian hingga X menjadi candidat key dari tabel–tabel hasil
dekomposisi.
Contoh tabel yang tidak memenuhi BCNF :
Ditentukan
tabel A = (E, F, G, H, I) dan berlaku ketergantungan fungsional,
yaitu :
E, F à G, H, I
F, G à H, I
Disini tabel
A tidak memenuhi BCNF karena ada X yang bukan candiday key, yaitu F, G sehingga F, G à H, I.
Sedangkan E,
F adalah candidat key karena E, F à G, H, I
Karena
terdapat 2 ketergantungan fungsional maka agar tabel A tidak memenuhi BCNF maka
tabel tersebut harus didekomposisikan menjadi :
A1
= (E, F, G) dengan ketergantungan fungsional E, F à G
A2
= (F, G, H, I) dengan ketergantungan fungsional F, G à H, I
c. Rangkuman
Perancangan basis data merupakan suatu hal yang sangat penting. Tujuan
perancangan adalah agar dapat memiliki basis data yang kompak, efisien dalam
penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam
memanipulasi. Perancangan basis data meliputi perancangan model konseptual dan model phisik. Dalam merancang basis data
dapat dilakukan melalui dua pendekatan yaitu: 1) Model
Entity–Relationship-diagram dan 2) Menerapkan normalisasi terhadap struktur
tabel yang telah diketahui.
Normalisasi diartikan sebagai suatu teknik
yang menstrukturkan atau mendekomposisi atau memecah data menggunakan cara–cara
tertentu untuk mencegah timbulnya permasalahan pengolahan data dalam basis
data. Beberapa konsep dasar yang berkaiatan dengan normalisasi data: 1)
ketergantungan fungsional (sudah dibahas dalam kegiatan belajar tujuh). 2)
Domain dan tipe data. 3) Konsep key atribut (Field/atribute kunci).
Domain memiliki kesamaan arti dengan fungsi tipe data. Tipe data merujuk
pada kemampuan penyimpanan data yang mungkin bagi suatu atribut secara fisik, tanpa
melihat layak atau tidaknya data bila
dilihat dari kenyataannya pemakaiannya. Domain nilai lebih ditetapkan pada
batas–batas nilai yang diperbolehkan bagi suatu atribut, dilihat dari
kenyataanya yang ada. Key atribut adalah satu atau gabungan dari beberapa atribut
yang dapat membedakan semua baris data (row) dalam table secara unik. Ragam
attribute kunci antara lain :Candidate Key (Kunci Kandidat/Kunci Calon),
Primary Key
(Kunci Primer), Alternate Key (Kunci Alternatif), Foreign
Key (Kunci Tamu)
Dalam perspektif normalisasi, sebuah tabel dapat dikategorikan baik (efisien) atau normal, jika telah
memenuhi 3 (tiga) kriteria yaitu: 1) Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin
aman (Lossless–Join Decomposition).
2) Terpeliharanya ketergantungan fungsional pada saat perubahan data (DependencyPreservation). 3) Tidak
melanggar Boyce–Code Normal Form
(BCNF).
Komentar
Posting Komentar