Basis data (Database) dapat dibayangkan sebagai sebuah lemari arsip. Jika kita memiliki
sebuah lemari arsip dan bertugas untuk mengelolanya, maka kemungkinan besar kita akan
melakukan hal-hal: memberi map pada kumpulan arsip yang akan disimpan, menentukan
kelompok arsip, memberi penomoran dengan pola tertentu yang nilainya unik pada setip map,
menempatkan arsip-arsip tersebut dengan urutan tertentu di dalam lemari. Kalaupun hal-hal
tersebut tidak seluruhnya dilakukan, paling tidak, semua lemari arsip menerapkan suatu
aturan tertentu tentang bagaimana keseluruhan arsip-arsip tadi disusun. Yang paling
sederhana, tentu, menyusun arsip sesuai dengan kedatangannya (kronologisnya) dan tanpa
pengelompokan. Hamper tidak akan pernah kita jumpai adanya lemari arsip yang tidak
memiliki aturan dalam penyusunan arsip-arsip di dalamnya.
Bahkan untuk sebuah lemari buku atau baju pun, secara alamiah, kita seringkali menerapkan
suatu aturan tertentu dalam menyusun buku-buku atau baju-baju itu di dalam sebuah lemari.
Upaya penyusunan ini memang baru kita lakukan jika kita rasakan, bahwa buku atau baju
tersebut sudah ‘cukup banyak’.
Mengapa kita lakukan? Jawabannya sederhana: kita berharap agar pada suatu saat nanti,
sewaktu kita bermaksud untuk mencari dan mengambil kembali arsip atau buku atau baju
dari lemari masing-masing kita dapat melakukannya dengan mudah dan cepat.
Sebagai satu kesatuan istilah, Basis Data (Database) sendiri dapat didefinisikan dalam
sejumlah sudut pandang seperti:
1
1. Himpunan kelompok data (arsip) yang saling berhubungan yang diorganisir sedemikin
rupa agar kelak dapat dimanfaatkan kembali dengan cepat dan mudah
2. Kumpulan data yang saling berhubungan yang disimpan secara bersama sedemikian rupa
dan tanpa pengulangan (redundansi) yang tidak perlu untuk memenuhi berbagai
kebutuhan.
3. Kumpulan file/tabel/arsip yang saling berhubungan yang disimpan dalam media
penyimpanan elektronik.
Basis Data dan lemari arsip memiliki prinsip kerja dan tujuan yang sama. Prinsip Utama
adalah pengaturan data/arsip. Dan tujuan utama adalah kemudahan dan kecepatan dalam
pengambilan kembali data/arsip. Perbedaannya hanya terletak pada media penyimpanan yang
digunakan. Jika lemari arsip menggunakan lemari besi atau kayu sebagai media
penyimpanan, maka basis data menggunakan media penyimpanan elektronis seperti cakram
magnetis (magnetic disk atau disingkat sebagai disk saja). Hal ini merupakan konsekuansi
yang logis, karena lemari arsip langsung dikelola oleh manusia, sementara basis data dikelola
melalui perantaraan mesin pintar elektronis (yang kita kenal sebagai komputer).
Didalam sebuah disk , Basis data dapat diciptakan dan dapat pula ditiadakan. Di dalam
sebuah disk, kita dapat pula menempatkan beberapa (lebih dari satu) basis data. Sementara
dalam sebuah basis data, kita dapat menempatkan satu atau lebih tabel. Pada tabel inilah
sesungguhnya data disimpan dan ditempatkan. Setiap basis data umumnya dibuat untuk
2
mewakili sebuah semesta data yang spesifik, misalnya basis data kepegawaian, akademik,
inventori (pergudangan), dan sebagainya. Sementara dalam basis data akademik, misalnya,
kita dapat menempatkan tabel mahasiswa, tabel mata kuliah, tabel dosen, tabel jadwal, tabel
kehadiran, tabel nilai dan lain-lain.
Karena itu, operasi-operasi dasar yang dapat dilakukan berkenaan dengan basis data dapat
meliputi :
1. Pembuatan basis data baru (create Database), yang identik dengan pembuatan lemari arsip
yang baru
2. Penghapusan basis data (drop database), yang identik dengan perusakan lemari arsip
(sekaligus beserta isinya, jika ada)
3. Pembuatan tabel baru ke suatu basis data (create table), yang identik dengan penambahan
map arsip baru ke sebuah lemari arsip yang telah ada
4. Penghapusan tabel dari suatu basis data (drop table), yang identik dengan perusakan map
arsip lama yang ada di sebuah lemari arsip
5. Penambahan/pengisian data baru ke sebuah tabel disebuah basis data (insert), yang identik
dengan penambahan lembaran arsip ke sebuah map arsip
6. Pengambilan data dari sebuah tabel (query), yang identik dengan pencarian lembaran arsip
dari sebuah map arsip
7. Pengubahan data dari sebuah tabel (update), yang identik dengan perbaikan isi lembaran
arsip yang ada di sebuah map arsip
8. Penghapusan data dari sebuah tabel (delete), yang identik dengan penghapusan sebuah
lembaran arsip yang ada di sebuah map arsip
Operasi yang berkenaan dengan pembuatan objek (basis data dan tabel) merupakan operasi
awal yang hanya dilakukan sekali dan berlaku seterusnya. Sedangkan operasi-operasi yang
berkaitan dengan isi tabel (data) merupakan operasi rutin yang akan berlangsung berulang-
ulang dan karena itu operasi-operasi inilah yang lebih tepat mewakili aktivitsa pengelolaan
(management) dan pengolahan (processing) data dalam basis data.
4
6. Keamanan (Security), untuk sistem yang besar dan serius, aspek keamanan juga dapat
diterapkan dengan ketat. Dengan begitu, kita dapat menentukan siapa pemakai yang boleh
menggunakan basis data beserta objek-objek di dalamnya dan menentukan jenis-jenis
operasi apa saja yang boleh dilakukannya.
7. Kebersamaan pemakaian (Sharability), pemakai basis data seringkali tidak terbatas pada
satu pemakai saja, atau di satu lokasi saja atau oleh satu sistem aplikasi saja. Data pegawai
dalam basis data kepegawaian, misalnya, dapat digunakan oleh banyak pemakai, dari
sejumlah departemen dalam perusahaan atau oleh banyak system ( sistem penggajian,
sistem akuntansi, sistem inventori, dan sebagainya).
Secara lebih nyata, bidang-bidang fungsional yang umum menggunakan basis data demi
efisiensi, akurasi dan kecepatan operasi antara lain adalah :
1. Kepegawaian : untuk berbagai perusahaan yang memiliki banyak pegawai
2. Pergudangan (Inventory) : untuk perusahaan manufaktur (pabrikan), grosir, apotik, dll
3. Akuntansi : untuk berbagai perusahaan
4. Reservasi : untuk hotel, pesawat, kereta api, dan lain-lain
5. Layanan pelanggan (Customer care) : untuk perusahaan yang berhubungan dengan banyak
pelanggan (bank, konsultan, dll)
Sedangkan bentuk-bentuk perusahaan yang memanfaatkan basis data (sebagai komponen
manajemen sistem informasi) dapat berupa:
1. Perbankan : pengelolaan data nasabah, data tabungan, data pinjaman, pembuatan laporan-
laporan akuntasi, pelayanan informasi nasabah/calon nasabah
2. Asuransi : pengelolaan data nasabah, data pembayaran premi, pengajuan klaim asuransi
3. Rumah sakit : pengelolaan histori penyakit, pengobatan pasien, pembayaran perawatan
4. Produsen barang : pengelolaan data keluar masuk barang
5. Industri manufaktur : pengelolaan pesanan barang
6. Pendidikan/sekolah : data siswa, penjadualan, kegiatan perkuliahan
7. Telekomunikasi : administrasi kabel, data pelanggan, gangguan
5
BAB II
SISTEM BASIS DATA
Sistem adalah Sebuah tatanan (keterpaduan) yang terdiri atas sejumlah komponen fungsional
(dengan satuan fungsi dan tugas khusus) yang saling berhubungan dan secara bersama-sama
bertujuan untuk memenuhi suatu proses tertentu. Sebuah kendaraan dapat mewakili sebuah
sistem yang terdiri atas komponen pemantik/starter (untuk memulai pengapian), komponen
pengapian (untuk membakar BBM yang membuat torak berkerja), komponen
penggerak/torak (untuk menggerakkan roda), komponen pengereman (untuk memperlambat
dan menghentikan gerakan torak dan roda), komponen perlistrikan (untuk mengaktifkan
speedometer, lampu dll) yang secara bersama-sama melaksanakan fungsi kendaraan secara
umum, yaknik sebagai sarana transportasi.
Basis data hanyalah sebuah objek yang pasif. Ia ada karena ada pembuatnya, dan ia tak akan
pernah berguna jika tidak ada pengelola dan penggeraknya. Yang menjadi pengelola dan
penggeraknya secara langsung adalah program/aplikasi (Software). Gabungan keduanya
(basis data dan pengelolanya) menghasilkan sebuah Sistem. Karena itu, secara umum sebuah
Sistem Basis Data merupakan sistem yang terdiri atas kumpulan tabel data yang saling
berhubungan (dalam sebuah basis data di sebuah sistem komputer) dan sekumpulan program
(yang biasa disebut DBMS/ Data base management sistem) yang memungkinkan beberapa
pemakai dan/atau program lain untuk mengakses dan memanipulasi tabel-tabel data tersebut.
6
(operasi I/O, pengelolaan file, dan lain-lain), sistem operasi yang banyak digunakan: MS-
DOS, MS-Windows, Linux, dll.
Sebuah Bahasa basis data biasanya dapat dipilah ke dalam 2 bentuk yaitu:
2.3.1 Data Definition Language (DDL)
Struktur basis data yang menggambarkan skema basis data secara keseluruhan dan didesain
dengan bahasa khusus. Dengan bahasa inilah kita datap membuat tabel baru, membuat
indeks, mengubah tabel, menentukan struktur penyimpanan tabel, dll. Hasil dari kompilasi
perintah DDL adalah kumpulan tabel yang disimpan dalam file khusus yang disebut Kamus
Data (Data Dictionary).
2.3.2 Data Manipulation Language (DML)
Merupakan bentuk Bahasa Basis Data yang berguna untuk melakukan manipulasi dan
pengambilan data pada suatu basis data, manipulasi data dapat berupa :
8
1. Penambahan data baru ke suatu basis data
2. Penghapusan data dari suatu basis data
3. Pengubahan data di suatu basis data
Data Manipulation Language (DML) merupakan bahasa yang bertujuan memudahkan
pemakai untuk mengakses data sebagaimana direpresentasikan oleh Model Data. Ada 2 jenis
DML :
1. Prosedural : yang mensyaratkan agar pemakai menentukan, data apa yang diinginkan
serta bagaimana cara mendapatkannya
2. Non Prosedural : yang membuat pemakai dapat menentukan data apa yang diinginkan
tanpa menyebutkan bagaimana cara mendapatkannya.
9
BAB III
BASIS DATA RELASIONAL
Model basis data relasional sering pula disebut sebagai Model Relasional atau Basis Data
Relasional. Model basis data ini diperkenalkan pertama kali oleh E.F. Codd. Model basis
data menunjukkan suatu mekanisme yang digunakan untuk mengorganisasi data secara fisik
dalam disk yang akan berdampak pula pada bagaimana kita mengelompokkan data
membentuk keseluruhan data yang terkait dalam sistem yang sedang dituju.
Hingga saat ini, model basis data yang paling banyak diterapkan adalah Model Basis Data
Relational. Tentu saja ada model-model basis data yang lain, seperti Model Basis Data
Hirarki dan Model Basis Data Jaringan (Network), yang tidak akan dijelaskan lebih jauh
mengingat kekurangan implementasinya dalam dunia nyata.
Untuk menerapkan sebuah basis data maka kita membutuhkan sebuah perangkat lunak
(software) yang memang dikhususkan untuk itu. Perangkat lunak ini umum disebut Sistem
Pengelola Basis Data (DBMS). Prinsip pemakaian DBMS tersebut hampir sama.
10
Perbedaannya terletak apa teknik pemakaian dan kelengkapan fungsi (feature) yang dimiliki
masing-masing perangkat lunak.
Sebelum implementasi basis data dapat kita lakukan, maka lebih dahulu kita harus memiliki
contoh data yang akan digunakan. Contoh data ini harus dianalisis untuk mengetahui
karakteristik masing-masing tabel data. Pengetahuan tentang karakteristik ini penting, karena
hal itu akan dijadikan dasar untuk penerapan struktur masing-masing tabel. Di dalam
penerapan basis data, penetapan struktur tersebut harus dilakukan sebelum penyimpanan
datanya dapat dilakukan. Berikut adalah contoh yang akan digunakan
Dengan data di atas dapat kita ketahui beberapa karakteristik tabel, seperti berikut ini
1. Data Mahasiswa Memiliki 4 buah kolom data
2. Kolom pertama berisi data angka tetapi tidak menunjukkan suatu jumlah (disebut alfa
numeric) dengan lebar (banyaknya karakter tetap, yaitu 6 karakter (dijit)
3. Kolom kedua berisi data karakter (String atau teks) dengan lebar maksimum 30
karakter
4. Kolom ketiga berisi data karakter (string atau teks) dengan lebar maksimum 60 karakter
5. Kolom keempat berisi data penggalan
2. Data Dosen, dengan isi sebagai berikut:
11
Dengan data di atas dapat kita ketahui beberapa karakteristik tabel, seperti berikut ini
1. Data Dosen Memiliki 2 buah kolom data
2. Kolom pertama berisi data karakter (string atau teks) dengan lebar maksimum 35
karakter
3. Kolom kedua berisi data karakter (string atau teks) dengan lebar maksimum 60
karakter
3. Data Kuliah, dengan isi sebagai berikut:
Dengan data di atas dapat kita ketahui beberapa karakteristik tabel, seperti berikut ini
1. Data Kuliah Memiliki 4 buah kolom data
2. Kolom pertama berisi data karakter (String atau teks) dengan lebar tetap, yaitu 6
karakter (termasuk tanda minus)
3. Kolom kedua berisi data karakter (String atau teks) dengan lebar maksimum 30
karakter
4. Kolom ketiga berisi data angka yang menunjukkan jumlah yang jenis bilangan bulat
(Bukan pecahan)
5. Kolom keempat berisi data angka yang menunjukkan jumlah yang jenis bilangan
bulat (Bukan pecahan)
Berangkat dari karakter masing-masing kelompok data di atas, maka kita dapat menetapkan
struktur masing-masing tabel. Secara minimal, yang harus ditentukan dalam struktur tabel
adalah:
1. Nama kolom (field)
2. Tipe data
3. Lebar (banyaknya karakter/dijit maksimum yang dapat di tampung)
Untuk nama kolom (field) biasanya disesuikan dengan nama kolom dari contoh data, tetapi
penamaan itu harus diubah karena panjang nama kolom dalam DBMS biasanya dibatasi
(pembatasan ini berbeda antar masing-masing DBMS) dan harus dinyatakan dalam 1 (satu)
kata (tidak boleh menggunakan spasi atau tanda minus, tetapi masih boleh menggunakan
tanda underscore (‘_’))
12
Berangkat dari karakteristik yang dapat kita simpulkan dari fakta yang ada pada masing-
masing data, struktur dari ketiga tabel dalam Basis Data Akademik yang dapat kita tentukan
adalah sebagai berikut:
1. Tabel Mahasiswa, dengan struktur
Berikut adalah contoh penerapan struktur tersebut (hanya tabel Mahasiswa dan Kuliah)
dengan menggunakan beberapa perangkat lunak:
Menggunakan Perintah-perintah SQL untuk pembentukan Tabel di MySQL
mysql > create table mahasiswa (
-> nim varchar (6) primary key,
-> nama_mhs varchar (30) not null,
-> alamat_mhs varchar (60) not null,
-> tgl_lahir date not null
-> );
Query ok, 0 rows affected (0,01 sec)
13
Menggunakan Ms-Access
Tabel Mahasiswa
Tabel Kuliah
Dari beberapa gambar dan contoh di atas dapat kita lihat adanya sedikit perbedaan, baik dari
sisi tampilan, cara pemakaian maupun kelengkapan karakteristik (property) yang ada pada
masing-masing DBMS. Pada MySQL misalnya, kita dapat mendefinisikan seluruh
karakteristik struktur tabel secara manual, melalui perintah SQL. Sedangkan pada MS-Access
property itu disediakan sebagai default, yang dapat kita ubah-ubah secara interaktif.
14
Pengisian data menggunakan MS-Access
Tabel Mahasiswa
Tabel Kuliah
Query di atas menunjukan upaya pencarian data dengan kriteria semester =1, maka MS-
Access akan menampilkan baris-baris data kuliah untuk semester 1, sebagai berikut
15
2. Pengubahan data (update/edit)
Contoh Menggunakan Ms-Access
16
3. Penghapusan data (delete)
Contoh Menggunakan Ms-Access
17
a. Data Nilai, dengan data sebagai berikut
18
a. Tabel Nilai, dengan struktur:
19
BAB IV
NORMALISASI DATA
Perancangan basis data diperlukan, agar kita bisa memiliki basis data yang kompak dan
efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam
pemanipulasian (tambah, ubah, hapus) data. Dalam merancang basis data, kita dapat
melakukannya dengan:
1. Menerapkan Normalisasi terhadap struktur tabel yang telah diketahui, atau dengan
2. Langsung membuat model Entity-Relationship
20
Tabel Mahasiswa memiliki 4 buah atribut, yaitu nim, nama_mhs, alamat_mhs dan Tgl_Lahir
2. Tabel Dosen
3. Tabel Kuliah
Tabel Kuliah memiliki 4 buah atribut, kode_kul, nama_kul, sks dan semester
4. Tabel Nilai
Tabel Nilai memiliki 4 buah atribut, nama_kul, nim, nama_mhs dan indeks_nilai
5. Tabel Jadwal
Tabel Jadwal memiliki 4 buah atribut, nama_kul, tempat, waktu, dan nama_dos
Di samping penamaan yang unik berdasarkan fugsinya di setiap tabel, atribut-atribut itu dapat
dibedakan berdasarkan sejumlah pengelompokan. Ada atribut yang dijadikan sebagai Key
dan yang lainnya disebut atribut deskriptif. Ada pula atribut yang tergolongkan atribut
sederhana ataupun atribut komposit, dan sebagainya.
21
4.1.1 Key dan Atribut Deskriptif
Pada dasarnya, Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan
semua basis data (Row) dalam tabel secara unik. Artinya, jika suatu atribut dijadikan sebagai
Key, maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama untuk atribut
tersebut.
Ada 3 (Tiga) macam Key yang diterapkan pada suatu tabel, yaitu:
1. SuperKey
2. Candidate-Key
3. Key Primer (Primary-Key)
SuperKey merupakan satu atau lebih atribut (Kumpulan Atribut) yang dapat membedakan
setiap baris data dalam tabel secara unik. Bisa terjadi ada labih dari 1 kumpulan atribut yang
bersifat seperti itu pada sebuah tabel. Di tabel Mahasiswa, misalnya, yang dapat menjadi
superkay adalah:
1. Nim, nama_mhs, alamat_mhs, tgl_lahir
2. Nim, nama_mhs, alamat_mhs
3. Nim, nama_mhs
4. Nama_mhs
5. Nim
Candidate-Key : kumpulan atribut minimal yang dapat membedakan setiap baris data dalam
sebuah tabel secara unik. Sebuah Candidate-Key tidak boleh berisi atribut atau kumpulan
atribut yang telah menjadi SuperKey yang lain. Jadi, sebuah Candidate-Key pastilah
SuperKey tapi belum tentu sebaliknya. Pada tabel Mahasiswa, yang dapat menjadi
Candidate-key adalah:
1. Nim
2. Nama, jika kita bisa menjamin tidak ada nilai yang sama untuk kolom ini
Pada sebuah tabel dimungkinkan adanya lebih dari satu Candidate-Key seperti contoh di atas.
Salah satu dari Candidate-Key ini (jika memang ada lebih dari satu) dapat dijadikan sebagai
Key Primer (Primary Key). Pemilihan Key Primer dari sejumlah Candidate-Key tersebut
umunya didasari oleh:
1. Key tersebut lebih natural untuk dijadikan acuan
22
2. Key tersebut lebih sederhana
3. Key tersebut cukup unik
Atribut Deskriptif adalah atribut-atribut yang tidak menjadi atau merupakan anggota dari
Key Primer, jadi atribut-atribut Nama_Mhs, Alamat_mhs dan Tgl_Mhs digolongkan sebagai
Atribut Deskriptif
4.1.3 Atribut Bernilai Tunggal (Single-Valued Attribute) dan Atribut Bernilai Banyak
(Multivalued Attribute)
Atribut Bernilai Tunggal (Single Valued Attribute) ditujukan pada atribut-atribut yang
memiliki paling banyak satu nilai untuk setiap baris data. Pada data Mahasiswa, semua
atribut bernilai tunggal (nim, nama, alamat, tgl_lahir) , karena atribut tersebut hanya berisi 1
23
(satu) nilai. Jika ada seorang Mhs yang memiliki 2 (dua) tempat tinggal, maka salah satu saja
yang boleh diisikan ke dalam atribut alamat.
24
tabel yang nilainya boleh dikosongkan (Non Mandatory Attribute). Nilai (Konstanta) Null
digunakan untuk menyatakan atribut-atribut demikian yang nilainya memang belum siap atau
tidak ada.
25
untuk menyimpan data angka yang bulat di antara -32, 768 hingga 32,767. Kita tidak
mungkin untuk memasukkan data di luar batas nilai tersebut, data pecahan apalagi data yang
berupa String (kumpulan huruf).
Secara umum, istilah Domain memiliki banyak kesamaan dengan fungsi tipe data tersebut.
Akan tetapi, Tipe data lebih merujuk pada kemampuan menyimpan data yang mungkin bagi
suatu atribut secara fisik, tanpa melihat layak/tidaknya data tersebut bila dilihat dari
kenyataan pemakaiannya. Sementara Domain nilai lebih ditekankan pada batas-batas nilai
yang dibolehkan bagi suatu atribut, dilihat dari kenyataan yang ada. Pada tabel kuliah
menetapkan tipe data Sks adalah integer, secara fisik dapat saja menyimpan nilai -1, 0 atau
100, tetapi nilai tersebut tidak dibenarkan nilai yang layak untuk sks adalah 1, 2, 3, atau 4,
maka dapat dikatakan Domain untuk atribut sks adalah 1, 2, 3, dan 4.
Coba perhatikan tabel Nilai, tabel ini memiliki empat buah atribut, yaitu Nama_Kul, Nim,
Nama_Mhs dan Indeks_Nilai. Berikut adalah data yang terdapat pada tabel nilai tersebut
Dengan melihat data di atas (dengan asumsi bahwa data tersebut memadai) dan dengan
pertimbangan intuisi kita, maka KF yang dapat kita ajukan adalah:
1. Nim Nama_Mhs
Yang berarti Atribut Nama_Mhs hanya tergantung pada atribut Nim. Hal ini dibuktikan
dengan fakta setiap Nim yang sama, maka pasti nilai Nama_Mhs-nya juga sama
26
2. Nama_Kul Nim Indeks_Nilai
Yang berarti bahwa atribut Indeks_Nilai tergantung pada atribut Nama_Kul dan Nim
secara bersama-sama, memang kita dapat menunjukan fakta, bahwa setiap nilai Nama_Kul
dan Nim yang sama, maka nilai Indeks_nilai-nya juga sama, karena (Nama_Kul, Nim)
merupakan Key (sehingga bersifat unik) untuk tabel tersebut. Akan tetapi, KF tersebut
sesuai dengan pengertian bahwa setiap indeks nilai diperuntukan pada mahasiswa tertentu
untuk mata kuliah tertentu yang diambilnya.
Tanpa memperhatikan pengertian ketergantungan secara alamiah terhadap tabel tersebut, kita
juga dapat mengajukan sejumlah ketergantungan (non KF) dengan hanya melihat fakta yang
ada, yaitu:
1. Nama_Kul Nim
Yang artinya Atribut Nim tidak tergantung pada atribut Nama_Kul. Buktinya terlihat pada
Row 1 dan Row 2 dengan nilai Nama_Kul yang sama, tapi nilai Nim-nya berbeda
2. Nim Indeks_Nilai
Yang atrinya Atribut Indeks_Nilai tidak tergantung pada atribut Nim. Buktinya terlihat
pada Row 1 dan Row 3 dengan nilai nim yang sama, tapi nilai Indeks_Nilai-nya berbeda.
3. Dan seterusnya
27
kriteria di atas merupakan kriteria minimal untuk mendapatkan prediksi efisien/normal bagi
sebuah tabel. Akan tetapi, kita juga dapat menerapkan kriteria-kriteria lain yang juga tercakup
dalam kerangka Normalisasi, walaupun bukan merupakan kriteria utama.
1. Bentuk Normal tahap Pertama (1st Normal Form/1NF)
2. Bentuk Normal tahap Kedua (2nd Normal Form/2NF)
3. Bentuk Normal tahap Keempat (4th Normal Form/4NF)
4. Bentuk Normal tahap Kelima (5th Normal Form/5NF)
Sebuah tabel yang merangkum semua kelompok data yang saling berhubungan biasa disebut
sebagai tabel Universal, berikut ini adalah contoh sebuah tabel Universal yang merupakan
hasil rekonstruksi dari kelima buah tabel dalam Basis Data Akademik.
Berikut kita ambil sebuah contoh abstrak yang menghasilkan Dekomposisi Tidak Aman
(Lossy-Join Decomposition). Kita asumsikan ada tabel ABC yang didefinisikan dengan dua
buah KF yaitu: A B dan B C, kedua KF tersebut kita peroleh dari pengamatan terhadap
data yang kurang memadai atau karena asumsi yang kurang tepat.
28
Katakanlah isi tabel ABC tersebut adalah sebagai berikut:
Memang dengan isi seperti itu, pernyataan KF yang kedua: B C tidak sepenuhnya tepat,
karena pada Row 2 dan Row 4, dengan nilai untuk atribut B yang sama, nilai untuk atribut C-
nya berbeda. Akan tetapi yang ingin ditekankan di sini adalah, adanya dua buah KF itu
mendorong kita untuk mendekomposisi tabel ABC tersebut menjadi dua buah tabel, yaitu:
tabel AB dan tabel BC sebagai berikut:
Jika kedua tabel ini kita gabungkan kembali, maka hasilnya adalah:
Hasil ini tentu saja berbeda dengan tabel awal (sebelum dekomposisi), maka dekomposis ini
disebut dengan Dekomposisi Tidak Aman (Lossy-Join Decomposition), sebuah
dekomposisi yang sedapat mungkin kita hindari.
Akan tetapi jika data pada Row 4 yang ada di tabel ABC awal, kita ganti dengan data berikut:
29
Sehingga isi tabel ABC menjadi:
Dengan data di tabel ABC demikian, maka kedua KF dapat dibenarkan. Tabel ABC tersebut
didekomposisikan menjadi tabel AB dan BC sebagai berikut
Kalau kedua tabel di atas digabungkan kembali, maka tabel awal ABC-nya akan diperoleh
kembali. Kita bisa katakana, bahwa pemilihan tersebut merupakan Dekomposisi Aman.
Karena itulah, KF pada suatu tabel harus kita tetapkan berdasarkan pengamatan yang teliti
dan asumsi yang dapat dipertanggungjawabkan, agar kelak hasil dekomposisinya dapat
dibenarkan.
Tabel universal yang telah digambarkan sebelumnya, sudah jelas sangat rapuh di dalam
memenuhi Kriteria Dependency Preservation. Kalaupun ingin dipaksakan, maka upaya
pemeliharaan KF itu akan berlangsung tidak efisien. Katakanlah, ada perubahan data Alamat
untuk Mahasiswa dengan Nim = ‘100001’, maka perubahan ini harus dilakukan pada atribut
Alamat_Mhs di semua Row yang nilai atribut Nim-nya bernilai ‘100001’.
30
Kita ambil contoh lain. Katakanlah, tabel Mahasiswa dan tabel Nilai merupakan tabel-tabel
hasil dekomposisi. Atribut-atribut yang ada di tabel nilai adalah Nama_Kul, Nim,
Nama_Mhs, Indeks_Nilai dengan dua buah KF yaitu : Nama_Kul Nim Indeks_Nilai dan
Nim Nama_Mhs. Jika Tabel Mahasiswa terjadi perubahan data pada atribut Alamat atau
Tgl_Lahir, maka perbahan ini tidak perlu dijalarkan pada tabel nilai, karena atribut alamat
pada tabel nilai tidak dilibatkan. Tetapi jika perubahan terjadi pada atribut Nama_Mhs pada
tabel Mahasiswa, maka perubahan ini harus dijalarkan ke tabel nilai, karena atribut ini juga
digunakan di tabel Nilai. Jika penjalaran perubahan hanya dilakukan pada satu baris data
pertama pada tabel nilai dengan nilai Nim yang sama dengan nilai Nim di tabel Mahasiswa
yang Nama_Mhs-nya diubah tersebut, maka KF Nim Nama_Mhs menjadi tidak terpenuhi
lagi. Hal ini karena peristiwa itu mengakibatkan adanya 2 baris di tabel nilai yang Nim-nya
sama tapi Nama_Mhs berbeda. Jika begitu, maka penajalaran perubahan harus dilakukan
pada seluruh baris dengan nilai Nim yang sesuai, tetapi masalahnya, penjalaran perubahan ini
tidak efisien dan seharusnya dihindari.
Karena itu, Solusi terbaik agar kriteria ini dapat terpenuhi adalah dengan
meniadakan/melepaskan atribut Nama_Mhs dari tabel nilai (sehingga tabel nilai hanya berisi
3 buah atribut yaitu, Nama_Kul, Nim, dan Indeks_Nilai).
Jika kita tinjau tabel universal, tabel tersebut tidak memenuhi BCNF, kita ambil salah satu
KF, yaitu Nim Nama_Mhs Alamat Tgl_Lahir, maka seharusnya Nim merupakan
superkey, tapi pada kenyataannya tidak demikian, karena pada tabel tersebut nim tidak unik,
karena itu, tabel universal itu harus dikomposisikan.
Dekomposisi Aman yang dapat kita lakukan adalah dengan memilah berdasarkan KF
minimum yang ada. Sebagaimana yang telah disebutkan pada penjelasan awal tentang tabel
Universal, ada 4 buah KF minimum pada tabel tersebut, yakni:
31
1. Nim Nama_Mhs Alamat_Mhs Tgl_Lahir
2. Kode_Kul Nama_Kul SKS Semester Waktu Tempat Nama_Dos
3. Nama_Dos Alamat
4. Nim Kode_Kul Indeks_Nilai
Dengan berbekal ke-4 KF, maka tabel Universal itu di komposisikan menjadi 4 buah tabel,
yaitu :
1. Tabel Mahasiswa dengan atribut Nim, Nama_Mhs, Alamat_Mhs dan Tgl_Lahir
2. Tabel Kuliah dengan atribut Kode_Kul, Nama_Kul, SKS, Semester, Waktu, Tempat, dan
Nama_Dos
3. Tabel Dosen dengan atribut Nama_Dos dan Alamat_Dos
4. Tabel Nilai dengan atribut Nim, Kode_Kul dan Indeks_Nilai
KF pada tabel ini adalah :Nim Nama_Mhs Alamat_Mhs Tgl_Lahir. Dengan demikin tabel
ini telah memenuhi BCNF, karena menurut BCNF sisi kiri (x) dalam KF harus Superkey
dalam tabel. Dan memang demikian Nim merupakan superkey dan dapat menjadi Primary-
key dari tabel Mahasiswa.
32
KF pada tabel ini adalah: Kode_Kul Nama_Kul SKS Semester Waktu Tempat Nama_Dos.
Dengan demikian tabel ini memenuhi BCNF, karena Kode_Kul merupakan Superkey dan
dapat menjadi Primary key dari tabel Kuliah tersebut.
KF pada tebl ini adalah: Nama_Dos Alamat_Dos. Tabel ini telah memenuhi BCNF,
karena Nama_Dos merupakan Superkey dari tabel Dosen tersebut.
KF pada tabel ini adalah: Nim Kode_Kul Indeks_Nilai. Tabel ini telah memenuhi BCNF,
karena Nim, Kode_Kul merupakan Superkey dari tabel Nilai tersebut.
Jika karena suatu kebutuhan, atribut Alamat_Mhs (yang tergolong atribut komposit) pada
tabel Mahasiswa, kita dipilah menjadi 3 atribut yaitu, Alamat_Jalan(yang berisi nama jalan
dan nomor rumah), Nama_Kota dan Kode_Pos, maka tabel Mahasiswa tersebut tidak
memenuhi BCNF, kondisi demikian terjadi, karena pemilahan tersebut akan ada KF yang
baru :
Alamat_Jalan Nama_Kota Kode_Pos
Yang menunjukkan bahwa nilai Kode_Pos dapat kita tentukan dengan mengetahui nilai
Alamat_jalan dan Nama_Kota, seara formal berarti, atribut Kode_Pos memiliki KF pada
atribut Alamat_Jalan dan Nama_Kota. KF yang baru melanggar BCNF, karena
Alamat_Jalan, Nama_Kota bukanlah salah satu superkey pada tabel Mahasiswa, pada tabel
33
mahasiswa, sangat memungkinkan adanya lebih dari satu Mahasiswa yang memiliki
Alamat_Jalan dan Nama_Kota yang sama
Untuk itu, tabel Mahasiswa tersebut harus didekomposisikan menjadi 2 tabel sebagai berikut:
Contoh data berikut akan dapat memperjelas hal di atas. Tabel Mahasiswa hasil Dekomposisi
dari tabel Universal sebelumnya telah berisi data sebagai berikut:
Nilai Alamat untuk Row 1 dan Row 5, lalu Row 2 dan Row 6 dibuat sama. Jika atribut alamat
dipilah menjadi 3 atribut dan dikomposisikan menjadi 2 tabel, yakni tabel Mahasiswa dan
tabel Alamat, maka hasilnya sebagai berikut
Tabel Mahasiswa
34
Tabel Alamat
Setelah dikomposisi, jumlah row pada tabel Mahasiswa tetap 7 row, tetapi di tabel Alamat
berkurang menjadi 5 row, karena adanya 2 Mahasiswa yang beralamat sama dengan
Mahasiswa sebelumnya.
Tabel Mahasiswa merupakan Dekomposisi Aman, karena tabel tersebut memiliki KF sebagai
berikut : Nim Nama_Mhs Alamat_Jalan Nama_Kota Tgl_Lahir. Karena Nim merupakan
Superkey yang ada pada tabel tersebut, maka dapat kita katakan tabel Mahasiswa yang baru
telah memenuhi BCNF.
Bagaimana Dengan Tabel Alamat ? memang benar bahwa nilai Kode_Pos dapat diketahui
dengan nilai Alamat dan Nama_Kota
Tetapi kita juga tahu, bahwa dari nilai Kode_Pos juga dapat mengetahui nilai Nama_Kota.
Dengan begitu, maka tabel Alamat tersebut akan memiliki 2 buah KF, yaitu :
Alamat_Jalan Nama_Kota Kode_Pos
dan
Kode_Pos Nama_Kota
Gabungan atribut Alamat_Jalan, Nama_Kota merupakan superkey pada tabel tersebut, tapi
Kode_Pos bukan merupakan superkey, karena ada nilai yang sama yaitu row 3 dan row 5
yang menunjukkan data tersebut tidak unik. Dengan demikian, maka tabel alamat tidak
memenuhi BCNF. Karena itu tabel alamat harus didekomposisikan lagi.
35
Tabel Alamat merupakan BCNF, karena Alamat_Jalan di tabel Alamat 1 maupun Kode_Pos
di tabel Alamat 2 bersifat unik dan dapat menjadi superkey dari masing-masing tabel
Contoh Normalisasi
36
4.5.1 Bentuk Unnormalisasi
Langkah pertama dalam melakukan normalisasi data adalah dengan cara mencantumkan
semua atribut data yang ada apa adanya seperti terlihat berikut ini
Pada relasi diatas adalah dengan menuliskan semua data yang ada yang akan direkam, data
yang double tidak perlu ditulis. Terlihat baris / record yang tidak lengkap.
37
Pada bentuk normal kedua tersebut masih terjadi permasalahan yaitu pada relasi Faktur:
1. Atribut Quantitas pada relasi Faktur, tidak tergantung pada kunci utama, atribut tersebut
bergantung fungsi pada Kode Barang + no_faktur, hal ini dinamakan ketergatungan
transitif dan haruslah dipilah menjadi dua relasi.
2. Masih terdapat pengulangan, yaitu setiap kali satu faktur yang terdiri dari 5 macam barang
maka 5 kali juga dituliskan no_faktur, tanggal, dan jatuh_tempo. Hal ini harus dipisahkan
bila terjadi penggandaan tulisan berulang-ulang.
38