Anda di halaman 1dari 38

BAB I

APA ITU BASIS DATA

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.

1.1 Definisi Basis Data


Basis Data terdiri atas 2 kata, yaitu Basis dan Data. Basis kurang lebih dapat diartikan
sebagai markas atau gudang, tempat bersarang/berkumpul. Sedangkan Data adalah
Representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (Pegawai, siswa,
pembeli, pelanggan), barang, hewan, peristiwa, konsep, keadaan, dan sebagainya, yang
diwujutkan dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, atau kombinasinya

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).

1.2 Operasi Dasar Basis Data

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.

1.3 Objektif Basis Data


Tujuan awal dan utama dalam pengelolaan data dalam sebuah basis data adalah agar kita
dapat memperoleh menemukan kembali data (yang kita cari) dengan mudah dan cepat. Di
samping itu, pemanfaatan basis data untuk pengolahan data, juga memiliki tujuan-tujuan lain.
3
Secara lebih lengkap, pemanfaatan basis data dilakukan untuk memenuhi sejumlah tujuan
(objektif) seperti berikut ini:
1. Kecepatan dan kemudahan (Speed), pemanfaatan basis data memungkinkan kita untuk
dapat menyimpan data atau melakukan perubahan/manipulasi terhadap data atau
menampilkan kembali data tersebut dengan lebih cepat dan mudah, daripada jika kita
menyimpan data secara manual (non-elektronis) atau secara elektronis (tetapi tidak dalam
bentuk penerapan basis data, misalnya dalam bentuk spread sheet atau dokumen teks
biasa).
2. Efisiensi ruang penyimpanan (Space), karena keterkaitan yang erat antarkelompok data
dalam sebuah basis data, maka redundansi (pengulangan) data pasti akan selalu ada,
banyaknya redundansi ini tentu akan memperbesar ruang penyimpanan (baik di memori
utama maupun memori sekunder) yang harus disediakan. Dengan basis data, efisiensi
penggunaan ruang penyimpanan dapat dilakukan dengan penekanan jumlah redundansi
data, baik dengan menerapkan sejumlah pengkodean atau dengan membuat relasi-relasi
(dalam bentuk tabel) antarkelompok data yang saling berhubungan.
3. Keakuratan (Accuracy), pemanfaatan pengkodean atau pembentukan relasi antardata
bersama dengan penerapan aturan/batasan tipe data, domain data, keunikan data, dan
sebagainya, yang secara ketat dapat diterapkan dalam sebuah basis data, sangat berguna
untuk menekan ketidakakuratan penyimpanan data.
4. Ketersediaan (Availability), pertumbuhan data (baik dari sisi jumlah maupun jenisnya)
sejalan dengan waktu akan semakin membutuhkan ruang penyimpanan yang besar. Data
yang sudah jarang atau bahkan tidak pernah lagi kita gunakan, dapat kita atur untuk
dilepaskan dari sistem basis data yang sedang aktif (menjadi off-line) baik dengan cara
penghapusan atau dengan memindahkan ke media penyimpanan off-line.
5. Kelengkapan (Completeness), lengkap atau tidaknya data yang kita kelola dalam sebuah
basis data bersifat relative (baik terhadap kebutuhan pemakai maupun terhadap waktu).
Seorang pemakai mungkin sudah menganggap bahwa data yang dikelola sudah lengkap,
tetapi pemakai yang lain belum tentu berpendapat sama. Atau, yang sekarang dianggap
sudah lengkap, belum tentu di masa yang akan datang juga demikian. Untuk
mengakomodasi kebutuhan kelengkapan data yang semakin berkembang, maka kita tidak
hanya dapat menambah record-record data, tetapi juga dapat melakukan perubahan
struktur dalam basis data, baik dalam bentuk penambahan objek baru (tabel) atau dengan
penambahan field-field baru pada suatu tabel.

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).

1.4 Penerapan Basis Data


Hampir di semua aspek pemanfaatan perangkat komputer dalam sebuah organisasi/
perusahaan senantiasa berhubungan dengan basis data. Basis data merupakan salah satu
komponen utama dalam setiap sistem informasi. Tidak ada sistem informasi yang bisa dibuat
dan dijalankan tanpa adanya basis data.

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.

2.1 Komponen Sistem Basis Data


2.1.1 Perangkat Keras (Hardware)
Perangkat keras yang biasanya terdapat dalam sebuah sistem basis data adalah :
1. Komputer (satu untuk sistem yang stand-alone atau lebih dari satu untuk sistem jaringan)
2. Memori sekunder yang on-line (Harddisk)
3. Memori sekunder yang off-line (Tape atau Removable Disk) untuk keperluan backup data
4. Media/perangkat komunikasi (untuk system jaringan)

2.1.2 Sistem operasi (Operating system)


Sistem operasi merupakan program yang mengaktifkan sistem komputer, mengendalikan
seluruh sumber daya dalam komputer dan melakukan operasi-operasi dasar komputer

6
(operasi I/O, pengelolaan file, dan lain-lain), sistem operasi yang banyak digunakan: MS-
DOS, MS-Windows, Linux, dll.

2.1.3 Basis data (Databese)


Sebuah sistem basis data dapat memiliki beberapa basis data. Setiap basis data dapat berisi
sejumlah objek basis data (seperti tabel, indeks, dll) selain itu basis data juga menyimpan
definisi struktur (baik untuk basis data maupun objek-objeknya secara rinci).

2.1.4 Sistem (aplikasi/perangkat lunak) pengelola basis data (DBMS)


Pengelolaan basis data secara fisik tidak dilakukan oleh pemakai secara langsung, tetapi
ditangani oleh sebuah perangkat lunak yang khusus. Perangkat lunak inilah yang disebut
DBMS/Database Management System, perangkat lunak yang termaksuk DBMS seperti
dbase, FoxBase, Rbase, Ms-Access, Borland-Paradox (untuk DBMS yang sederhana) atau
Borland-Interbase, MS-SQL Server, Oracle Database, IBM DB2, Informix, Sybase, MySQL,
PostgreSQL (untuk DBMS yang lebih kompleks dan lengkap).

2.1.5 Pemakai (user)


Ada beberapa jenis/tipe pemakai terhadap suatu sistem basis data yang dibedakan
berdasarkan cara mereka berinteraksi terhadap sistem:
1. Programmer Aplikasi
2. User Mahir (Casual User)
3. User Umum (End User/Naïve User)
4. User Khusus (Specialized User)

2.1.6 Aplikasi (Perangkat lunak) lain


Aplikasi lain ini bersifat optional. Artinya, ada atau tidaknya tergantung pada kebutuhan kita.
Program ini ada yang sudah disediakan bersama dengan DBMS-nya, ada juga yang harus
dibuat sendiri dengan menggunakan aplikasi lain yang khusus.

2.2 Abstraksi Data


Salah satu tujuan dari DBMS adalah untuk menyediakan antarmuka (Interface) dalam
mengelola data yang lebih ramah (User Friendly) kepada pemakai. Untuk itu, sistem tersebut
akan menyembunyikan detail tentang bagaimana data disimpan dan dikelola. Seringkali data
yang terlihat oleh seorang pemakai dapat berbeda dengan yang sesungguhnya tersimpan
7
secara fisik. Abstraksi data mengacu pada tingkat/level dalam bagaimana melihat data dalam
sebuah sistem basis data.

Ada 3 level abstraksi data:


1. Level Fisik (Physical Level)
Merupakan level terendah dalam abstraksi data, yang menunjukkan bagaimana sesungguhnya
suatu data disimpan. Pada level ini kita berurusan dengan data sebagai teks, sebagai angka,
atau bahkan melihatnya sebagai himpunan bit data.
2. Level Lojik/Konseptual (Conceptual Level)
Menggambarkan data secara fungsional yang disimpan dalam basis data serta hubungannya
dengan data yang lain, misalnya mengetahui bahwa data pegawai disimpan dalam beberapa
tabel, seperti tabel pribadi, tabel pendidikan, tabel pekerjaan, tabel keluarga, dan sebagainya.
3. Level Penampakan (View Level)
Merupakan tevel tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis
data. Banyaknya user dalam sistem basis data tidak akan terlibat dengan semua
data/informasi yang disimpan.

2.3 Bahasa Basis Data (Database Language)


DBMS merupakan perantara bagi pemakai dengan basis data dalam disk. Cara berinteraksi
antar pemakai dengan basis data tersebut diatur dalam suatu bahasa khusus yang disebut
Bahasa Basis Data yang terdiri sejumlah perintah (Statement) yang diformulasikan dan dapat
diberikan user dan dikenali/diproses oleh DBMS untuk melakukan suatu aksi tertentu.
Contoh bahasa basis data : SQL,dBase, 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.

Kemudahan dalam penerapan dan kemampuan dalam mengakomodasi berbagai kebutuhan


pengolahan basis data yang ada di dunia nyata (Real Word) merupakan alasan mengapa
model ini lebih popular untuk diterapkan. Kemudahan merupakan sesuatu yang sangat
penting, karena di samping aspek pemodelan yang harus digunakan, masih banyak aspek lain
dalam lingkungan pengolahan basis data yang juga menuntut perhatian serius dari siapa saja
yang berkecimpung dalam kegiatan itu

3.1 Definisi Basis Data Relasional


Pada Model Relasional, basis datta akan ‘disebar’ (dipilah-pilah) ke dalam berbagai tabel 2
dimensi. Setiap tabel selalu terdiri atas lajur mendatar yang disebut dengan Basis Data
(Row/Record) dan lajur vertikal yang biasa disebut dengan kolom (Colomn/Field). Di setiap
pertemuan Basis Data dan Kolom itulah, ítem-item data (satuan data terkecil) ditempatkan.
Dalam kehidupan kita sehari-hari, tabel merupakan bantuk natural (alamiah) dalam
menyatakan fakta/data yang sering kita gunakan. Itulah sebabnya, model ini lebih mudah kita
terapkan ketimbang model basis data yang lain.

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.

3.2 Basis Data Akademik


Untuk mengilustrasikan Model Data Relational secara lebih nyata, berikut kita abil sebuah
contoh basis data sederhana yang berkaitan dengan pendidikan perguruan tinggi. Sebut saja
basis data tersebut sebagagai Basis Data Akademik. Basis Data ini terdiri dari 3 (tiga) buah
tabel utama yaitu Mahasiswa, Dosen dan Kuliah.

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

1. Data Mahasiswa, dengan isi tabel sebagai berikut:

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

2. Tabel Dosen, dengan struktur

3. Tabel Kuliah, 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)

mysql > create table kuliah (


-> kode_kul varchar (6) primary key,
-> nama_kul varchar (30) not null unique,
->sks int not null,
->semester int 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.

Langkah berikutnya adalah melakukan pengisian data ke masing-masing tabel yang


strukturnya telah disiapkan/dibuat. Berikut adalah upanya hasil pengisian data yang telah
dilakukan untuk masing-masing tabel:

Pengisian data menggunakan SQL


Tabel Mahasiswa
Insert Into Mahasiswa (Nim, nama_mhs, alamat_mhs, tgl_lahir) values (‘100001’,’ali
akbar’,’Jl.Dago Pojok 91, Bandung 40135’,’’1992-01-02’);
Insert Into Mahasiswa (Nim, nama_mhs, alamat_mhs, tgl_lahir) values (‘100002’,’Budi
Haryanto’,’Jl.Pesantren 25D’,’’1991-10-06’);
Tabel Kuliah
Insert Into Kuliah (kode_kul, nama_kul, sks, semester) values (‘IF-110’,’Struktur Data’,3,1);
Insert Into Kuliah (kode_kul, nama_kul, sks, semester) values (‘IF-310’,’Basis Data’,4,3);

14
Pengisian data menggunakan MS-Access
Tabel Mahasiswa

Tabel Kuliah

3.3 Operasi dan Bahasa Basis Data


Di samping melakukan operasi pengisian/penambahan data ke masing-masing tabel yang
strukturnya telah disiapkan, operasi-operasi lain yang dapat dilakukan adalah:
1. Menampilkan data (query)
Contoh Menggunakan Ms-Access

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

Contoh Menggunakan bahasa SQL dalam MySQL

15
2. Pengubahan data (update/edit)
Contoh Menggunakan Ms-Access

Contoh Menggunakan bahasa SQL dalam MySQL

16
3. Penghapusan data (delete)
Contoh Menggunakan Ms-Access

Contoh Menggunakan bahasa SQL dalam MySQL

3.4 Relasi Antartabel


Definisi basis data terdiri dari tabel-tabel yang saling berhubungan. Secara intuitif data
Dosen, Mahasiswa, dan Kuliah memang terasa berhubungan, tetapi dari struktur dan data
yang terdapat pada ketiga tersebut, keterhubungan (relasi) tidak terlihat secara nyata dan
belum mencukupi untuk dinyatakan sebagai sebuah basis data.
Dengan demikian, untuk membentuk sebuah basis data, kita harus melengkapi ketiga tabel
tersebut dengan tabel lain yang merepresentasikan keterhubungan (relasi) antar ketiganya.
Berikut adalah data tambahan yang dibutuhkan untuk menunjukan adanya keterhubungan
(relasi) antar tabel-tabel akademik tersebut :

17
a. Data Nilai, dengan data sebagai berikut

Yang dapat disimpulkan dari data nilai tersebut adalah:


1. Data Nilai merepresentasikan adanya relasi antara Data Mahasiswa dengan Data Kuliah,
untuk menunjukkan mata kuliah yang diikuti mahasiswa dan indeks nilai yang diperoleh
mahasiswa untuk mata kuliah yang diikutinya
2. Seorang Mahasiswa dapat mengikuti beberapa matakuliah atau tidak mengikuti kuliah
apapun (misalnya: mahasiswa bernama ‘ali akbar’ mengikuti 3 mata kuliah dan mahasiswa
bernama ‘ Indah Susanti’ yang tidak terlihat, yang menunjukkan ia tidak mengikuti kuliah
apa pun)
3. Satu mata kuliah dapat diikuti oleh beberapa Mahasiswa (misalnya: mata kuliah ‘Struktur
Data’ diikuti 2 mahasiswa, ‘Basis Data’ diikuti 3 mahasiswa, dan seterusnya)
4. 3 mata kuliah sudah mempunyai data indeks nilai dan ada 1 mata kuliah (‘Basis Data’)
belum mempunyai data indeks nilai (datanya masih kosong)

b. Data Jadwal, dengan data sebagai beikut

Yang dapat disimpulkan dari data nilai tersebut adalah:


1. Data Jadwal merepresentasikan adanya relasi antara Data Kuliah dan Data Dosen, untuk
menunjukkan nama dosen yang mengajar setiap mata kuliah ditambah data waktu dan
tempat pelaksanaan perkuliahannya
2. Setiap matakuliah hanya dapat diajarkan oleh seorang dosen , namun seorang dosen boleh
mengajar lebih dari 1 matakuliah (Dr.Umar Hakim mengajar 2 matakuliah, pada waktu
yang berbeda)
Struktur dari kedua tabel tambahan tersebut dapat kita tetapkan sebagai berikut:

18
a. Tabel Nilai, dengan struktur:

b. Tabel Jadwal, 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

Perancangan basis data seringkali diasosiasikan dengan pembuatan Entity –Relationship


(Model E-R) di mana kelompok – kelompok data dan relasi antarkelompok data tersebut
diwujutkan dalam bentuk diagram. Hal itu tidak salah, karena model memang merupakan
representasi nyata dari sebuah perancangan. Normalisasi sendiri merupakan cara pendakatan
lain dalam membangun desain lojik 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.

4.1 Atribut Tabel (Table Attribute)


Normalisasi, seperti yang telah dikemukakan sebelumnya, lebih difokuskan pada tinjauan
komprehensif terhadap setiap kelompok dan (tabel) secara individual. Lebih jauh lagi,
tinjauan tersebut dititik beratkan pada data di masing-masing kolom pembentukan tabel. Kita
menggunakan istilah baru yaitu Atribut yang sebenarnya identik dengan pemakaian istilah
kolom data. Istilah Atribut ini lebih umum digunakan dalam perancangan basis data, karena
istilah itu lebih impresif menunjukkan fungsinya sebagai pembentukan karakteristik (sifat-
sifat) yang melekat pada sebuah tabel. Apabila, penerapan aturan-aturan normalisasi terhadap
atribut-atribut pada sebuah tabel bisa berdampak pada penghilangan kolom tertentu,
penambahan kolom baru, atau bahkan penambahan tabel baru.
Contoh Basis Data Akademik,
1. Tabel Mahasiswa

20
Tabel Mahasiswa memiliki 4 buah atribut, yaitu nim, nama_mhs, alamat_mhs dan Tgl_Lahir

2. Tabel Dosen

Tabel Dosen memiliki 2 buah atribut, yaitu nama_dos dan alamat_dos

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

Dengan pertimbangan-pertimbangan tersebut, dari kedua Candidate-Key yang ada di tabel


Mahasiswa, yaitu (Nim) dan (Nama_mhs), maka yang lebih cocok dipilih sebagai Key Primer
(Primary-Key) adalah (Nim)

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.2 Atribut Sederhana (Simple Attribute) dan Atribut Komposit (Composite


Attribute)
Atribut Sederhana (Simple Attribute) adalah atribut atomik yang tidak dapat dipilah lagi.
Sementara, Atribut Komposit (Composite Attribute) merupakan atribut yang masih dapat
diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna. Contoh Pada
tabel Mahasiswa atribut nama_mhs merupakan Atribut Sederhana, sedangkan atribut
alamat_mhs dapat dikategorikan Atribut Komposist, karena dapat diuraikan menjadi
beberapa subatribut seperti alamat, nama_kota dan kode_pos, yang masing-masing
memiliki makna

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.

Sedangkan Atribut Bernilai Banyak (Multivalued Attribute) ditujukan pada atribut-atribut


yang dapat diisi dengan lebih dari 1 (satu) nilai, tetapi jenisnya sama. Kita dapat
menambhakan atribut Hobbi pada data Mahasiswa tersebut. Seorang Mhs ada yang
mempunyai 1 Hobbi saja, ada juga yang mempunyai banyak hobi dan bahkan ada Mhs yang
tidak memiliki Hobbi. Atribut semacam ini tergolongkan Atribut Bernilai Banyak. Atribut
Waktu pada tabel Jadwal digolongkan sebagai atribut bernilai banyak, karena ada
matakuliah yang hanya memiliki sebuah nilai waktu dan ada pula yang lebih dari satu nilai
waktu

4.1.4 Atribut Harus Bernilai (Mandatory Attribute) dan Nilai Null


Ada sejumlah atribut pada sebuah tabel yang kita tetapkan harus berisi data. Jika nilainya
tidak boleh kosong. Atribut semacam ini disebut Mandatory Attribute. Pada tabel Mahasiswa,
misalnya atribut nim dan nama_mhs dapat kita golongkan sebagai Mandatory Attribute,
karena setiap mahasiswa yang datanya disimpan ke tabel tersebut, paling tidak harus
diketahui dengan pasti nim dan namanya. Sebaliknya, adapula atribut-atribut lain pada suatu

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.

4.1.5 Atribut Turunan (Derived Attribute)


Atribut Turunan (Derived Attribute) adalah atribut yang nilai-nilainya diperoleh dari
pengolahan atau dapat diturunkan dari atribut atau tabel lain yang berhubungan. Atribut
demikian sebetulnya dapat ditiadakan dari sebuah tabel, karena nilai-nilainya bergantung
pada nilai yang ada di atribut lainya Contoh tabel mahasiswa, tambahkan atribut angkatan,
nilai pada atribut angkatan dapat diketahui dari atribut nim, di mana dua karakter pertama
dalam nim menyatakan dua dijit bilangan tahun masuknya Mahasiswa yang bersangkutan.

4.2 Domain dan Tipe Data


Kita telah menetapkan Tipe Data pada setiap atribut (kolom) untuk keperluan penentuan
struktur setiap tabel. Penetapan Tipe Data ini akan berimplikasi pada adanya batas-batas nilai
yang mungkin disimpan/diisikan ke setiap atribut (kolom) tersebut. Jika kita menetapkan
bahwa Tipe Data untuk sebuah atribut (kolom) adalah Integer, maka kita hanya mungkin

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.

4.3 Ketergantungan Fungsional (Function Dependency)


Diberikan sebuah tabel T berisi paling sedikit 2 buah atribut, yaitu A dan B, dapat dinyatakan
notasi beikut ini A B
Yang berarti A secara fungsional menentukan B atau B secara fungsional tergantung pada A.
jika dan hanya jika untuk setiap kumpulan baris data (Row) yang ada ditabel T, pasti ada 2
baris data ditabel T dengan nilai untuk A yang sama, maka nilai untuk B pasti juga sama.

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

4.4 Normalisasi dengan Ketergantungan Fungsional


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 (Dependency
Preservation)
3. Tidak melanggar Boyce-Code Normal Form (BCNF).
Jika criteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak harus diupayakan
agar tabel tersebut tidak melanggar bentuk normal tahap ketiga (3rd Normal Form/3NF)

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.

4.4.1 Dekomposisi Aman (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 depat menghasilkan tabel
awal sebelum dikomposisikan. Dekomposisi yang benar semacam ini disebut Lossless-Join
Decomposition atau Lossless Decomposition (Dekomposisi Aman)

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.

4.4.2 Pemeliharaan Ketergantungan (Dependency Preservation)


Dependency Preservation merupakan kriteri kedua yang harus 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
KF yang sudah benar menjadi tidak terpenuhi. Akan tetapi, dalam upaya untuk memelihara
KF yang ada untuk tetap terpenuhi tersebut, prosesnya harus dapat dilakukan dengan efisien.

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).

4.4.3 Boyce-Codd Normal Form (BCNF)


Kriteria berikutnya untuk mendapatkan tabel yang baik adalah dengan menerapkan Boyce-
Code Normal Form (BCNF). Sebuah tabel dikatakan berada dalam BCNF jika semua KF
dengan notasi x  y, maka x harus superkey pada tabel tersebut. Jika tidak semikian, maka
tabel tersebut harus di-dekomposisi berdasarkan KF yang ada, sedemikian hingga x menjadi
Superkey dari tabel-tabel hasil dekomposisi.

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

Penempatan data masing-masing tabel tersebut harus mempertimbangkan keunikan baris


datanya. Jadi jika ada beberapa baris data yang isi keseluruhan datanya sama, cukup
dinyatakan dalam satu baris data saja. Dengan demikian, isi dari setiap tabel dekomposisi
tersebut adalah:
1. Tabel Mahasiswa, dengan isi sebaga berikut :

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.

2. Tabel Kuliah, dengan isi sebagai berikut:

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.

3. Tabel Dosen, dengan isi sebagai berikut:

KF pada tebl ini adalah: Nama_Dos  Alamat_Dos. Tabel ini telah memenuhi BCNF,
karena Nama_Dos merupakan Superkey dari tabel Dosen tersebut.

4. Tabel Nilai, dengan isi sebagai berikut:

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.

Hasil dekomposisi tabel alamat adalah:

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

4.4.4 Bentuk Normal Tahap Ketiga (3rd Normal Form)


Bentuk Normal ketiga (3NF) merupakan criteria alternative, jika Kriteria BCNF yang ketat
tidak dapat terpenuhi. Sebuah tabel dikatakan berada dalam Bentuk Normal Tahap Ketiga
(3NF), jika untuk setiap KF dengan notasi X  A, di mana mewakili semua atribut tunggal
di dalam tabel yang tidak ada di dalam x, maka:
1. X harus SuperKey pada tabel tersebut
2. Atau, A merupakan bagian dari Key primer pada tabel tersebut.

4.5 Bentuk-Bentuk Normal (Normal Form) yang Lain


Selain BCNF dan 3NF masih ada sejumlah bentuk normal (Normal Form) yang lainya.
Bentuk Normal yang lain ini memang bukan bagian utama dalam penerapan Normalisasi,
tetapi tetap dapat dimanfaatkan untuk memperoleh tabel dan basis data yang lebih baik lagi.

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.

4.5.2 Bentuk Normal Tahap Pertama ( 1st Normal Form)


Bentuk Normal tahap pertama (1NF) terpenuhi jika sebuah tabel tidak memiliki atribut
bernilai banyak atau lebih dari satu atribut dengan domain nilai yang sama

4.5.3 Bentuk Normal Tahap Kedua ( 2nd Normal Form)


Melakukan dekomposisis relasi menjadi beberapa relasi dan mencari kunci primer dari tiap-
tiap relasi tersebut dan atributnya haruslah unik. Bentuk normal tahap kedua (2NF) terpenuhi jika
pada sebuah tabel, semua atributnya yang tidak termasuk dalam key primer memiliki ketergantungan
fungsional (KF) pada key primer secara utuh

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.

4.5.4 Bentuk Normal Tahap KeTiga ( 3rd Normal Form)


Bentuk normal ketiga mempunyai syarat, setiap relasi tidak mempunyai atribut yang
bergantung transitif , harus bergantung penuh pada kunci utama dan harus memenuhi bentuk
normal kedua (2NF)

38

Anda mungkin juga menyukai