PERANCANGAN BASIS DATA - ANOMALI & NORMALISASI
Assalamualaikum Wr. Wb. para pengunjung blog. Kali ini saya akan merangkum 2 materi, yaitu Anomali & Redundansi (materi 9) dan Normalisasi (materi 10). Kita bahas materi pertama dahulu.
ANOMALI
Anomali merupakan perubahan yang timbul pada tabel saat akan dimanipulasi, karena :
- Data yang tidak konsisten
- Penghilangan data ketika data lain dihapus
“Tabel-tabel yang
normal dalam sebuah database hanya dapat dibentuk jika tabel-tabel tersebut
bebas dari anomali.” (ocw.ui.ac.id).
Dari sini diharapkan proses normalisasi akan menghilangkan anomali pada
tabel-tabel tersebut.
Ada tiga jenis kondisi
anomali :
1. Anomali penambahan (insertion
anomaly)
Kondisi yang terjadi
ketika ada data baru namun tidak semua elemen data baru itu lengkap. Contoh:
Dosen |
matakuliah |
X |
abc |
Y |
def |
Jika ada data baru
misalnya ‘matakuliah = ghi’, maka
data ini tidak bisa dimasukkan dalam tabel karena elemen nya tidak lengkap,
dalam hal ini data ‘dosen’ belum ada. Maka data baru yang diperbolehkan adalah
‘matakuliah = jkl, dosen = Z’.
2. Anomali pengubahan (update anomaly)
Kondisi yang terjadi
ketika ada elemen pada data yang di update/berubah namun tidak di terapkan pada
seluruh data yang bersangkutan.
Contoh :
Data Log-in
time |
name |
username |
07:30:33 |
Q |
indomi_telur |
07:30:40 |
W |
4eversimp |
07:50:31 |
E |
ahoyyy_ |
08:00:55 |
W |
amber_s_tier |
Anomali terjadi pada
data W yang memiliki 2 data elemen
username yang berbeda, menghasilkan inkonsistensi data karena data lama tidak
di-update sesuai dengan data baru.
3. Anomali penghapusan (deletion
anomaly)
Kondisi ketika
menghapus salah satu elemen data pada sebuah baris data, maka elemen lain pada
baris data tersebut akan ikut terhapus.
Contoh :
Kode_daftar |
nama |
email |
SWE |
toto |
hmm@hotmail.com |
CTR |
yuyu |
bruh@gmail.com |
FGG |
uri |
uwu@student.untan.ac.id |
Ketika kita menghapus
data CTR pada ‘kode_daftar’, maka
data yuyu dan bruh@gmail.com akan ikut terhapus.
REDUNDANSI
Merupakan perulangan
data pada database yang seringkali tidak dapat dihindari. Contohnya data umur
yang mengalami redundansi (duplikasi) :
pembeli |
umur |
Jumlah |
FFR |
22 |
4 |
FFR |
22 |
3 |
FFR |
22 |
4 |
Data ‘umur’ dapat
diabaikan (dihilangkan) untuk mengoptimalkan penyimpanan.
NORMALISASI
Ketika kita akan
merancang sebuah database untuk sistem database relasional maka tujuan utama
dalam mengembangkan model data logikalnya adalah untuk menciptakan representasi
data yang tepat bagi hubungan maupun batasannya (constraints). Untuk mencapai hal
tersebut kita harus mengidentifikasi sekumpulan relasi yang tepat. Teknik yang
digunakan untuk membantu mengidentifikasi relasi tersebut disebut dengan
normalisasi (ocw.ui.ac.id).
Normalisasi adalah
suatu teknik untuk menghasilkan sekumpulan relasi/tabel yang memiliki
karakteristik tertentu, untuk memenuhi kebutuhan organisasi (ocw.ui.ac.id).
Normalisasi bertujuan
untuk menghasilkan tabel yang normal, dalam artian meminimalisir anomali &
redundansi data, lalu mengurangi kompleksitas data serta mempermudah
pengelolaan jika nanti terdapat modifikasi data.
Ada beberapa tahap
normalisasi data :
- Bentuk Tidak Normal – UNF / NF
- Bentuk Normal Pertama – 1NF
- Bentuk Normal Kedua – 2NF
- Bentuk Normal Ketiga – 3NF
- Bentuk Normal Boyce-Codd – BCNF
- Bentuk Normal Keempat – 4NF
- Bentuk Normal Kelima – 5NF
Catatan : umumnya database
bisnis sudah cukup baik pada 3NF atau BCNF
Database yang baik
memperhatikan faktor-faktor berikut :
1.
Pada data terdekomposisi, gunakan teknik
Lossless Join Decomposition, yaitu
cara agar tabel terdekomposisi memiliki makna yang sama persis terhadap tabel
awal (UNF).
2.
Gunakan juga Dependency Preservation, yaitu semua ketergantungan fungsional pada
data tetap terjaga dalam tabel terdekomposisi.
3.
Tidak melanggar Bentuk Normal Boyce-Codd
– BCNF
Jika ketiga faktor di
atas tidak ada, paling tidak database sudah sesuai dengan Bentuk Normal Ketiga
– 3NF.
Functional
Dependency
Ketergantungan
fungsional (functional dependency) adalah suatu kondisi dimana satu atribut
atau beberapa atribut dari suatu relasi yang keberadaannya bergantung pada
atribut lain. Contoh nya :
KTP |
Nama |
Tgl_lahir |
Kecamatan |
pekerjaaan |
80801 |
Nyu |
10-10-1990 |
Matan Hilir Utara |
Desainer Grafis |
Data KTP mempengaruhi data
nama, tanggal lahir, kecamatan asal, dan pekerjaan.
Bentuk
Tidak Normal – UNF / NF
Merupakan bentuk awal
tabel yang boros data (mengalami redundansi data) dan belum efisien dalam
normalisasi data.
id |
nama |
mapel |
1 |
Jean |
MTK Fisika |
2 |
Sam |
B.indo |
3 |
Kim |
Fisika B.indo |
Bentuk
Normal Pertama – 1NF
Definisi pertama dari
1NF dijelaskan oleh Edgar Codd (1972) yang menyebutkan bahwa suatu relasi
berada dalam bentuk normal pertama jika dan hanya jika domain dari setiap
atribut hanya berisi nilai atom (tak dapat dibagi), dan nilai setiap atribut
hanya berisi satu nilai dari domain itu.
·
Tak ada atribut multivalue, komposit,
atau kombinasinya
·
Mencantumkan atribut kunci
·
Tiap atribut bernilai atomic (tidak
dapat dibagi lagi)
Tabel awal
1NF
Bentuk
Normal Kedua – 2NF
·
Memenuhi 1NF
·
Functional dependency dari tiap atribut
kunci ke atribut kunci
·
Jika terdapat ketergantungan parsial
pada atribut harus membuat tabel baru
·
Perlu foreign key / tabel penghubung
bagi atribut yang dipisah tadi
Tabel awal
2NF
Bentuk
Normal Ketiga – 3NF
·
Memenuhi 2NF
·
Tak ada transitive dependency (ketergantungan
sesama atribut non key)
Tabel
awal
3NF
Bentuk
Normal Boyce-Codd – BCNF
·
tiap functional dependency pada atribut
/ gabungan atribut diawali superkey
·
tiap tabel BCNF sudah tentu 3NF, tetapi
tidak sebaliknya.
Tabel
awal (sesuai 3NF)
BCNF
Bentuk
Normal Keempat – 4NF
·
Memenuhi BCNF
·
Hanya ada 1 Atribut multivalue pada
tabel
·
Tiap multivalued dependencies (MVD)
harus functional dependencies
Tabel
awal
4NF
Bentuk
Normal Kelima – 5NF
·
Dibentuk berdasarkan Join dependence =
tabel terdekomposisi bisa digabungkan (join) untuk tabel semula
Tabel
awal
5NF
Terdapat bentuk normal
lain selain bentuk diatas, seperti :
·
Domain-key normal form – DKNF (1981)
·
Elementary key normal form – EKNF (1982)
·
Sixth normal form / Bentuk Normal Keenam
– 6NF (2003)
·
Essential tuple normal form – ETNF
(2012)
Tingkatan normalisasi
data menurut Malay Bhattacharyya (2020) – tabel oleh wikipedia :
Referensi
:
Konsep Normalisasi dan
Anomali Tabel. https://ocw.ui.ac.id/mod/resource/view.php?id=516
Tuteja,
Sonal. Lossless Join and Dependency
Preserving Decomposition. https://www.geeksforgeeks.org/lossless-join-and-dependency-preserving-decomposition/
Watt,
Adrienne (October 2014). Database Design
– 2nd Edition. https://opentextbc.ca/dbdesign01/chapter/chapter-11-functional-dependencies.
Database normalization.
https://en.wikipedia.org/wiki/Database_normalization.
Bhattacharyya,
Malay (February 2020). Database
Management Systems, Database Normalization. https://www.isical.ac.in/~malaybhattacharyya/Courses/DBMS/Spring2020/Class%20V.pdf.
Sumber
tabel :
·
https://en.wikipedia.org/wiki/First_normal_form
·
https://en.wikipedia.org/wiki/Second_normal_form
·
https://en.wikipedia.org/wiki/Third_normal_form
·
https://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form
·
https://en.wikipedia.org/wiki/Fourth_normal_form
·
https://en.wikipedia.org/wiki/Fifth_normal_form
Komentar
Posting Komentar