Modul Basisdata
Modul Basisdata
MASA
1960-an
1970-an
1980-an
1990-an
Data value
Data atau nformasi aktual yang tersimpan pada tiap data,elemen, atau atribut. Atribut nama
pegawai menunjukkan tempat dimana informasi nama karyawan disimpan, nilai datanya misal
nya Melli, Ani, Arif, Fitra yang nerupakan isi data nama pegawai tersebut.
File/Tabel
Kumpulan record sejenis yang mempunyai panjang elemen yang sama, atribut yang sama,
namun berbeda nilai datanya
Record
Kumpulan elemen-elemen yang saling berkaitan menginformasikan tentang suatu entitas secara
lengkap. Satu record mewakili satu data atau informasi.
Contoh :
NIM
Nama
Alamat
G1A008001
Melli Suryanty
Buluran No 12
G1A008002
Sulwanah
BLK No1
G1A008003
Rahmad
JPM No 10
Dari relasi/tabel diatas:
G1A008001
Adalah satu record
Melli Suryanty
Buluran No 12
f.
Inherit
Inherit merupakan suatu kondisi dimana suatu objek adalah spesialisasi objek yang lain, maka
objek spesialisasi itu inherit (mewarisi) semua atribut dan objek relasi yang dispesialisasikan
d.
e.
f.
g.
h.
aplikasinya. Sebagai contoh data, data mengenai gaji pegawai harus boleh dibuka oleh bagaian
keuangan dan personalia, sedangkan bagian gudang tiak diperbolehkan untuk membukanya.
Data Integrity
Suatu sistem basis data berisikan banyak file database yang saling berhubungan. Integritas data
yang dimaksud menyangkut bagaimana mengatur kaitan antara file pada semua bagian sistem
tersebut agar dapat melakukan transaksi-transaksi dalam pengendalian yang penuh dan secara
efisien.
Data Access
Pada suatu sistem basis data perlu dibuat suatu manajemen pengelolaan untuk mengakses
data yang dikenal sbagai DBMS (Database Manajemen System). Hal ini dilakukan supaya data
dalam basis data harus siap diakses oleh siapa saja yang membutuhkan dan mempunyai hak
untuk mengaksesnya.
Data Indepedence
Sebuah program dalam sistem basis data, harus dipisahkan dengan database yang ada. Ini
artinya perintah DBMS bebas terhadap database karena apapun perubahan terhadap database,
semua perintah akan stabil tanpa ada yang perlu diubah. Hal itu berbeda dengan pemrograman
terstruktur seperti menggunakan basa C atau pascal. Jika aplikasi yang dibuat pada pascal
misalnya, maka penyimpanan record dilakukan berhubungan dengan program. Ini berarti bahwa
program tersebut tidak bebas terhadap perubahan database yang ada. Selanjutnya data
independence dapat dibadi menjadi dua bagian yakni :
- phisycal data independence
merupakan kebolehan untuk mengubah pola fisik database untuk peningkatan efisiensi
tanpa mengakibatkan suatu program aplikasi ditulis kembali
- logical data independence
modifikasi ini dilakukan saat struktur logika database berubah, ditambah atau dikurangi. Ini
artinya pemakai boleh mengubah pola konseptual tanpa mengakibatkan suatu aplikasi
program ditulis kembali.
Isolasi Data
disebabkan oleh pemakaian beberapa file basis data. Program aplikasi yang digunakan tidak
dapat mengakses file tertentu dalam sistem basis data tersebut kecuali bila program aplikasi
dirubah/ditambah sehingga seolah-olah ada file yang terpisah/terisolasi terhadap file yang lain.
Multi-User Support
Suatu sistem basis data harus mempu memberikan dukungan kepada pemakaian program
untuk banyak pengguna. Hal ini bisa di pahami karena salah satu alasan basis data dibangun
adalah bahwa nantinya data tersebut digunakan oleh banyak orang, baik dalam waktu berbeda
maupun dalam waktu bersamaan sehingga kebutuhan akan basis data yang handal untuk multiuser perlu dipertimbangkan.
View 2
View 3
Level Konseptual
Level Fisik
7. Pengubahan data dari sebuah tabel/file (update); identik dengan perbaikan isi lembaran
arsip yang ada disebuah map arsip.
8. Penghapusan data dari sebuah file/tabel (delete); identik dengan penghapusan sebuah
lembaran arsip yang ada disebuah map arsip.
1.11 Objektif Basis Data
Tujuan pemanfaatan basis data :
1. Kecepatan dan kemudahan; memungkinkan user untuk menyimpan atau melakukan
perubahan/ manipulasi terhadap data atau menampilkan kembali data tersebut dengan
lebih cepat dibandingkan dengan cara manual.
2. Efisiensi ruang penyimpanan; terjadinya efisiensi dan optimalisasi penggunaan ruang
penyimpanan dengan cara melakukan penekanan terhadap jumlah redudansi data, baik
dengan menerapkan sejumlah pengkodean ataupun dengan membuat relasi-relasi
(dalam bentuk file) antar kelompok data yang saling berhubungan.
3. Keakuratan; dapat dilakukan dengan memanfaatan pengkodean atau pembentukan relasi
antar data bersama dengan penerapan aturan/batasan (constraint) tipe data, domain
data, keunikan data dan sebagainya secara ketat.
4. Ketersediaan; tersedianya data bagi user yang menginginkan data berdasarkan
kebutuhannya masing-masing.
5. Kelengkapan; mampu melakukan penambahan data ataupun perubahan struktur data,
mendefinisikan objek-objek dalam basis data serta detail dari tiap objek.
6. Keamanan; menjaga data dari operasi-operasi yang dilakukan oleh user yang tidak
berkepentingan.
7. Kebersamaan pemakaian; data dapat dipakai secara bersama-sama (multiuser) dari
berbagai lokasi dan aplikasi.
1.12 Penerapan Basis data
Secara teknis/nyata, bidang-bidang fungsional yang telah umum memanfaatkan basis data
demiefisiensi, 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 dll.
5. Layanan pelanggan, untuk perusahaan yang berhubungan dengan banyak pelanggan (bank,
konsultant, dll)
Sedangkan bentuk-bentuk organisasi/perusahaan yang telah memanfaatkan basis data (sebagai
komponen sistem informasi dalam organisasi/perusahaan dapat berupa :
1. Perbankan; dapat melakukan pengelolaan data nasabah/data tabungan/data pinjaman,
pembuatan laporan-laporan akuntansi, pelayanan informasi pada nasabah/calon
nasabah, dll.
2. Asuransi; dalam melakukan pengelolaan data nasabah/data pembayaran premi,
pemrosesan pengajuan klaim asuransi, dll.
3. Rumah Sakit; dalam melakukan pengelolaan history penyakit/pengobatan pasien,
menangani pembayaran perawatan, dll.
4. Produsen Barang; dalam melakukan pengelolaan data keluar masuk barang (inventory),
dll.
5. Industri Manufaktur; dalam membantu pengelolaan pemesanan barang, mengelola data
karyawan, dll.
6. Pendidikan/Sekolah; dalam melakukan pengelolaan data siswa, penjadwalan kegiatan
perkuliahan, dll.
DATABASE MANAGEMENT
SYSTEM (DBMS)
Suatu Database Management System (DBMS) berisi satu koleksi data yang saling berelasi dan satu
set program untuk mengakses data tersebut. Jadi DBMS terdiri dari Database dan Set Program
pengelola untuk menambah, menghapus, mengambil dan membaca data.
Database adalah kumpulan file-file yang saling berelasi, relasi tersebut ditunjukkan dengan kunci
dari tiap file yang ada. Satu database menunjukkan satu kumpulan data yang dipakai dalam satu
lingkup perusahaan/instansi.
Dalam satu file terdapat record-record sejenis, sama besar dan sama bentuk yang merupakan satu
kumpulan entity yang seragam. Satu record terdiri dari field-field yang saling berhubungan untuk
menunjukkan bahwa field tersebut dalam satu pengertian yang lengkap dan direkam dalam satu
record.
Untuk menyebut isi dari field maka digunakan atribut atau merupakan judul dari suatu kelompok
entity tertentu, misalnya atribut alamat menunjukkan entity alamat dari siswa. Entity adalah suatu
objek yang nyata dan dapat direkam.
2.1 Definisi Entity, Record/Tuple, File, Database, DBMS
1. Entity adalah orang, tempat, kejadian atau konsep yang informasinya direkam.
2. Record/Tuple adalah kumpulan elemen yang saling berkaitan menginformasikan tentang suatu
entity secara lengkap, dimana satu record mewakili satu data atau informasi tentang suatu
entity.
3. File adalah kumpulan record sejenis yang mempunyai panjang elemen data dan atribut yang
sama namun berbeda data value.
4. Database adalah kumpulan file yang tidak mempunyai kaitan antara satu file dengan file lainnya
sehingga membentuk satu bangunan data untuk menginformasikan suatu organisasi, instansi,
perusahan dan lainnya dalam batasan tertentu.
5. Database Management System (DBMS) adalah kumpulan file yang saling berkaitan bersama
dengan program untuk pengelolaannya
10
Record/Tuple
Record/Tuple
Suami
Rino
Ryan
Entity Obat
Penicilin
Vitamin A
Tetracilin
Deparmin
Aspirin
Istri
Reny
Rani
Entity Dokter
Nama
Roni
Romi
Spesialis
Jantung
Kandungan
Relasi
Database Universitas
Siswa
- Program Aplikasi
- Query Language
- Menu-menu
No Induk
2288066
2100556
Data Entry
Nama
Reno
Rita
Retrieve
Mata Kuliah
Kode
MT01
FS01
PS01
PS02
11
File 1
File 1
File 1
Level 1
anak disebut daun. Adapun hubungan antara anak dan orang tua disebut cabang. Gambar
dibawah ini memperlihatkan contoh model hirarkis tersebut.
A
Level 2
Level 3
Level 4
Contoh yang lebih kongkret terlihat pada gambar dibawah ini. Gambar ini memperlihatkan
hubungan dosen dan kelas yang diampu, serta mahasiswa yang mengikuti kelas masingmasing.
Fauzan Azima
Faza
Fany
Faris Ramadan
Pemrograman I
Fira
Sistem Berkas
Fina
Feri
Ferdi
13
Gambar dibawah ini merupakan model jaringan yang didasarkan oleh model hirarkis pada
gambar model jaringan diatas.
Faris Ramadan
Fauzan Azima
Faza
Fany
Pemrograman I
Fira
Feri
Sistem Berkas
Fina
Ferdi
14
15
Berikut ini adalah skema yang menunjukkan keterhubungan antara komponen/modul dalam DBMS
dan juga hubungannya dengan para pemakai basis datanya sendiri.
Naive
User
Program
Aplikasi
Object Code
Program Aplikasi
Programmer
Aplikasi
Casual
User
Database
Administrator
System
Call
Query
Skema
Database
DML
Precompiler
Query
Processor
DDL
Compiler
Database
Manager
DBMS
File
Manager
Data
Files
Data
Dictionary
Disk Storage
16
17
2.
3.
4.
5.
6.
18
dalam basis data akan digunakan oleh beberapa pihak yang berbeda yang berkepentingan
terhadap data tersebut.
7. Relatabilitas Data (Data Relatability)
Yang dimaksud dengan relatabilitas data adalah kemampuan untuk menetapkan hubungan logik
antara tipe-tipe record yang berbeda (yang biasanya berbeda) dalam file-file yang berbeda.
Relatabilitas data merupakan hal yang penting karena sebagian besar informasi yang diperlukan
akan disusun dari berbagai macam file dalam sistem basis data yang masing-masing file
mempunyai tipe record yang berbeda-beda.
8. Standarisasi Data (Data Standardization)
Standarisasi data menunjukkan definisi-definisi rinci data dalam batas presisi yang digunakan
pada definisi nama rinci data dan format penyimpanan dalam basis data. Sebagian besar sistem
manajemen basis data memeberikan fasilitas kamus data (data dictionary) untuk mendefinisikan
nama-nama rinci data dan format dalam penyimpanannya.
9. Produktivitas Personal (Personnel Productivity)
Produktivitas personal menunjukkan bahwa sistem manajemen basis data diharapkan mampu
meningkatkan produktifitas kerja setiap personal dalam beberapa hal. Kebutuhan data yang
sederhana dapat segera dipenuhi dengan menggunakan suatu bahasa query yang dapat
dioperasikan secara interaktif. Dalam beberapa kasus, pemakai dapat memenuhi sendiri
kebutuhan datanya dengan menggunakan fasilitas query yang disediakan bagi mereka. Bahkan
jika diperlukan maka laporan-laporan yang lebih akurat pun dapat diprogram dengan
menggunakan suatu report generator. Hal ini akan mengakibatkan penggunaan waktu yang jauh
lebih sedikit daripada pembuatan laporan dengan menggunakan suatu bahasa konvensional.
Atau pemakai juga akan mampu membuat sendiri laporan yang diperlukannya. Seandainya
aplikasi-aplikasi baru ditambahkan pada sistem, data yang dibutuhkan aplikasi-aplikasi itu telah
tersedia dalam basis data, sehingga dapat dipenuhi dengan cepat.
3.2.2 Langkah-langkah Pengembangan Sistem Basis data
Proyek pengembangan basis data bukan hanya sekadar menyusun file-file yang diperlukan untuk
disimpan sebagai basis data, tetapi termasuk juga didalamnya mengatur bagaimana agar basis data
tersebut dapat dimanfaatkan secara optimal oleh pemakai untuk memenuhi kebutuhan datanya.
Jadi, proyek pengembangan sistem basis data meliputi pengembangan file basis data, perangkat
lunak (software), perangkat keras (hardware) dan menyimpan personal-personal yang akan terlibat
dalam penggunaan sistem basis data agar dapat memanfaatkannya dengan baik dan benar.
Adapun tahapan-tahapan utama dalam proyek pengembangan sistem basis data terdiri dari empat
tahap, yaitu : spesifikasi kebutuhan, evaluasi alternatif, desain dan implementasi.
Keempat tahapan utama tersebut akan dibahas secara lebih terperinci dalam uraian-uraian
selanjutnya. Tahapan-tahapan utama dalam suatu proyek pengembangan sistem basis data
ditunjukkan pada gambar 3.1.
19
1. Spesifikasi Kebutuhan
a. Definisi masalah dan studi kelayakan
b. Rinci spesifikasi
2. Evaluasi Alternatif
a. Indikasi alternatif
b. Seleksi alternatif
3. Desain
a. Spesifikasi dan pengorderan perangkat keras
b. Desain logik program
c. Desain struktur data (skema dan subskema)
d. Desain prosedur untuk pemakai dan operator
e. Definisi struktur organisasi pemakai
4. Implementasi
a. Install dan tes perangkat keras
b. Koding dan tes unit-unit program
c. Konversi data
d. Pembuatan dokumen prosedur
e. Pelatihan pemakai
f. Tes menyeluruh
Gambar 3.1 Tahapan-tahapan utama proyek pengembangan sistem basis data
Tahap pertama proyek pengembangan sistem basis data adalah menentukan spesifikasi kebutuhan
pemakai. Proses yang terjadi meliputi definisi masalah, studi kelayakan penggunaan komputer
sebagai dasar pemecahan masalah dan memberikan definisi secara rinci terhadap spesifikasi
kebutuhan pemakai. Jadi inti dari tahapan spesifikasi kebutuhan adalah menentukan keinginan
pemakai tentang apa yang akan dan harus dilakukan oleh sistem yang akan dikembangkan.
Pada tahap kedua, alternatif-alternatif pemecahan kebutuhan pemakai ditentukan, satu persatu
dievaluasi dan sekaligus diseleksi untuk menemukan alternatif pemecahan yang terbaik.
Setelah solusi alternatif dievaluasi, proyek dilanjutkan dengan tahap desain. Dalam tahap ini
ditentukan spesifikasi-spesifikasi perangkat keras yang diperlukan dan kemudian dilakukan
pengorderan, program-program didesain (atau diorder dari vendor), serta merancang dan
mengembangkan struktur basis data. Prosedur-prosedur untuk operasi dan personel pemakai juga
didesain. Tahapan ketiga ini diakhiri dengan mendefinisikan struktur organisasi pemakai dan
fungsik-fungsi kerja sehubungan dengan keperluan pengembangan sistem baru. Tahap desain ini
akan melibatkan komponen-komponen sebagaimana terlihat pada gambar dibawah ini :
20
Entitas
Atribut
Kunci Kandidat
Kunci Primer
Hubungan
Integritas Referensial
Kunci Asing
Kunci Alternatif
Nama
Kekangan
Penambahan
Tipe
Peremajaan
Format
Domain
Penghapusan
Panjang
Nilai
21
Hal yang cukup penting dalam proyek pengembangan sistem basis data adalah bahwa personalpersonal yang tergabung dalam tim pengembangan tersebut harus terbebas dari solusi masalah
yang bias. Masing-msing harus mengerti akan tugas-tugasnya secara jelas. Oleh karenanya
diperlukan suatu sistem yang terbaik yang dijumpai dalam tahapan evaluasi alternatif sesuai dengan
kebutuhan pemakai yang telah didefinisikan pada tahap awal proyek pengembangan sistem basis
data.
3.3 Beberapa alat bantu dan metode dalam pengembangan sistem basis data
Agar usaha pengembangan sistem basis data dapat berhasil dengan baik, maka diperlukan
beberapa alat bantu dan metode. Yang dimaksud dengan alat bantu disini adalah berupa teknik
yang dapat digunakan untuk mempermudah atau mendukung kelancaran pelaksanaan kegiatan
proyek tersebut.
Pada tahap awal proyek diperlukan suatau statement yang dapat meyakinkan manajemen
organisasi bahwa proyek pengembangan sistem basis data tersebut layak untuk dilakukan. Studi
kelayakan perlu dilakukan untuk kepentingan ini, dana dapat dilakukan setelah mengetahui
spesifikasi kebutuhannya. Dalam laporan hasil studi kelayakan tersebut juga dicantumkan beberapa
analisis yang meliputi :
1.
Analisis Ekonomi
Proyek pengembangan basis data perlu dianalisis kelayakannya dari segi ekonomi, karena
manajemen akan menolak jika proyek tersebut tidak menghasilkan keuntungan secara
ekonomi, sekalipun keuntungan tersebut baru akan dirasakan setelah jangka waktu yang
lama.
2.
Analisis Hukum
Dari segi hukum masalah yang biasanya timbul antara lain misalnya; mungkin sistem yang
baru memerlukan peralatan yang yang harus didatangkan dari luar negri, atau peralatan
khusus atau aturan-aturan yang menyangkut kepentingan umum, sehingga perlu dinyatakan
bahwa pengembangan sistem basis data tersebut layak dari segi hukum.
3.
Analisis Teknik
Analisis teknik berguna untuk menjelaskan ketersediaan berbagai komponen teknis yang
diperlukan selama proyek pengembangan sistem basis data serta statement penegasan
tentang kelayakan proyek pengembangan basis data itu sendiri.
4.
Analisis Operasional
Analisis ini dimaksudkan untuk menjelaskan bahawa sistem yang baru adalah layak
dioperasikan pada kondisi lingkungan organisasi yang ada saat ini, atau perlu usaha-usaha
lain untuk mengubah desain sistem atau kondisi lingkungan organisasi, sehingga sistem basis
data yang dibangun layak dioperasikan (operational feasibility)
5.
Analisis jadwal
Analisis ini diperlukan untuk menjelaskan kelayakan jadwal pelaksaan proyek. Ini berarti
bahwa desain sistem harus dapat dioperasikan dalam batasan-batasan waktu yang tersedia
atau yang ditentukan. Jika tidak, maka desain sistem atau batasan waktu yang tersedia harus
diubah.
Selain itu terdapat pula analisis biaya manfaat yang dapat digunakan untuk membandingkan antara
besarnya manfaat yang diperoleh dengan biaya yang dikeluarkan sehingga akan diperoleh suatu
nilai yang disebut sebagai rasio manfaat tahap biaya (Benefit to Cost Ratio atau BCR) dari setiap
alternatif pemecahan. Dengan demikain akan dapat digunakan untuk menentukan alternatif
pemecahan masalah yang paling menguntungkan.
22
LATIHAN :
1. Jelaskan tahap-tahap perancangan Basis data
2. Apa yang dimasksud dengan integritas refferensial? Jelaskan tujuannya!
3. Jelaskan maksud dari istilah-istilah dibawah ini :
a. Entitas
b. Hubungan
c. Atribut
4. Apakah perbedaan antara Primary Key dan Alternate Key?
5. Diketahui suatu Tabel Hasil Ujian adalah sebagai berikut :
NIM
111213
111314
111223
111233
111323
Nama_Mahasiswa
Saiful
Samsul
Sarah
Samson
Santi
Mata_Ujian
Alpro
Basis data
Basis data
Alpro
Kalkulus
NIP
202020
303030
303030
202020
404040
Dosen
Indra
Intan
Intan
Indra
Imran
Nilai
A
B
C
C
A
a. Jika dibasisdatakan, tabel apa saja yang diperlukan, sebutkan pula nama-nama atribut
untuk masing-masing tabel !
b. Sebutkan kunci primer dari masing-masing tabel!
23
RELATIONAL DATABASE
MANAGEMENT SYSTEM (RDBMS)
Model data relasional menjelaskan tentang hubungan lojik antar data dalam basis data dengan cara
memvisualisasikannya dalam bentuk tabel-tabel 2 dimensi yang terdiri dari sejumlah baris dan kolom
yang menunjukkan atribut-atribut.
4.1 Karakteristik Dalam Relasi
Relasi dalam model basis data relasional mempunyai beberapa karakteristik sebagai berikut :
1. Semua entity/elemen data pada suatu baris dan kolom tertentu harus mempunyai nilai
tunggal (single value) atau suatu nilai yang tidak dapat dibagi lagi (atomic value), bukan
merupakan suatu larik atau grup pengulangan.
2. Semua entity/elemen data pada suatu kolom tertentu dalam relasi yang sama harus
mempunyai jenis yang sama.
3. Masing-masing kolom dalam suatu relasi mempunyai suatu nama yang unik.
4. Pada suatu relasi/hubungan yang sama tidak ada dua baris yang identik.
4.2 Terminologi Model Basis Data Relasional
Model basis data relasional mempunyai terminologi tersendiri dalam penggunaan istilah-istilah,
antara lain adalah seperti dibawah ini (adapun beberapa istilah telah dijelaskan pada bab-bab
sebelumnya) :
- Cardinality; banyaknya tuple atau record dalam sebuah hubungan.
- Derajat/degree; adalah banyaknya atribut/kolom dalam sebuah hubungan.
- Unary relation; adalah suatu relasi yang hanya mempunyai 1 atribut/kolom.
- Binary relation; adalah suatu relasi yang mempunyai 2 atribut/kolom.
- Ternary relation; adalah suatu relasi yang mempunyai 3 atribut/kolom.
Untuk lebih jelasnya, contoh model basis data relasional dapat dilihat dari tabel dibawah ini :
NIM
1012
2011
2205
2117
NAMA_MHS
Dian
Didi
Doni
Dani
TGL_LAHIR
16-04-1980
15-05-1982
05-06-0985
01-01-1981
Dalam relasi basis data Biodata diatas, record adalah suatu baris basis data dalam relasi/tabel,
misalnya record pertama dalam tabel tersebut adalah terdiri dari data-data sebagai berikut :
1012 | Dian | Jl. Mangga | SMUN 1 | 16-04-1980
Relasi dalam file Biodata mempunyai atribut NIM, No_Mhs, Alamat, Asal_SLTA dan Tgl_Lahir.
Relasi tersebut dapat dituliskan sebagai berikut :
Biodata : {NIM, Nama_MHS, Alamat, Asal_SLTA, Tgl_Lahir}
24
Sedangkan Domain, memberikan batasan nilai dan tipe dari atribut-atribut yang ada dalam suatu
relasi. Untuk contoh diatas dapat dituliskan sebagai berikut :
Domain_Biodata : char [8], char [20], char [30], char [20], date
Tipe dan batasan nilai dari masing-masing atribut yang diberikan diatas tidak mutlak, artinya dapat
diubah-ubah sesuai dengan kebutuhan perancang.
Untuk contoh relasi file Biodata diatas, semua atribut dapat menjadi candidate key, karena nilai
setiap atribut pada setiap record tidak sama. Jika salah satu atribut dipilih sebagai primary key,
atribut NIM misalnya, maka atribut-atribut yang lain disebut alternate key.
Contoh pembuatan tabel yang lebih rinci dapat dilihat pada tabel-tabel dibawah ini :
a. Data Mahasiswa, dengan isi sebagai berikut :
NIM
0702003
0702007
0702008
0702009
TGL_LAHIR
02/02/1980
03/03/1982
04/04/1980
07/07/1980
25
Berangkat dari karakteristik yang dapat disimpulkan bahwa dari fakta yang ada pada masing-masing
data, struktur dari tabel mahasiswa tersebut adalah :
NAMA FIELD
Nim
nama_mhs
alamat_mhs
tgl_lhr
SEMESTER
3
2
2
4
26
Dalam gambar diatas ditentukan bahwa primary key-nya adalah Kode_MK sehingga
dapat dipahami bahwa relasi Mata_Kuliah telah memenuhi integritas entity, karena tidak
ada nilai null pada atribut Kode_MK untuk setiap record yang ada dalam relasi.
2. Integritas Referensial; yaitu hubungan yang terjadi antara 2 atau lebih tabel/relasi dalam
suatu sistem basis data yang menggunakan primary key yang sama. Jika tabel-tabel
tersebut direlasikan maka primary key harus menjamin bahwa untuk setiap nilai primary
key tertentu dalam tabel yang satu harus ada pula record yang sama pada tabel yang
lain. Tabel dibawah ini akan menunjukkan integritas referensial yang diabaikan melalui
tabel Tugas dan Poyek.
Tabel 4.5 Tugas
NIP
NO_PROYEK
1022
1010
1022
1020
1023
1030
1024
1010
1024
1020
Tabel 4.6 Proyek
NO_PROYEK NAMA_PROYEK
MANAJER BIAYA_PROYEK
1010
Kantor Pemasaran Baru Doni
100.000.00
1020
Saluran Distribusi
DIAN
60.000.00
PERKIRAAN_BIAYA
120.000.00
65.000.00
27
28
NIP
1021
1022
1023
1024
NAMA
Rina
Reny
Rita
Rian
GOLONGAN_UPAH
2
1
2
1
BIAYA_PROYEK
100.000.00
60.000.00
45.000.00
PERKIRAAN_BIAYA
120.000.00
50.000.00
40.000.00
Dari beberapa tinjauan tentang kerelasian antar entity pada bagian ini dapat disimpulkan bahwa hal
terpenting yang harus diperhatikan adalah bagaimana agar relasi-relasi yang ada dalam suatu
sistem basis data dapat dihubungkan satu sama lain. Hal ini diperlukan agar selalu tersedia
data/informasi yang diperlukan oleh pemakai atau para pengambil keputusan. Suatu primary key
harus ditentukan dari atribut-atribut yang ada dalam suatu relasi, sehingga record-record yang ada
dapat saling berhubungan secara lojik membentuk suatu basis data.
4.6 Manipulasi Data
Manipulasi data merupakan suatu cara untuk menyediakan data-data bagi para pemakai atau
informasi-informasi untuk para pembuat keputusan (manajer). Terdapat dua tipe manipulasi data,
yaitu relational algebra dan relational calculus.
Perbedaan mendasar pada kedua tipe tersebut adalah bahwa dalam relational algebra harus
dipikirkan tentang bagaimana relasi dikonstruksikan untuk memenuhi kebutuhan data, sedangkan
relational calculus hanya memikirkan tentang data apa yang diperlukan pemakai.
Kedua tipe manipulasi data tersebut akan dibahas secara lebih terperinci dalam uraian berikut ini :
1. Relational Algebra
Relational Algebra menyediakan sejumlah operator untuk memanipulasi data pada seluruh
relasi, yang antara lain adalah seperti dibawah ini :
a. Proyeksi (projection); digunakan untuk menciptakan suatu relasi baru dengan menyeleksi
atribut-atribut dari suatu relasi
NIP
1021
1022
1023
1024
29
30
Konsultan Senior
Konsultan Senior
Konsultan Senior
1024
Analis Riset
Keterangan :
a. Tabel Jabatan dan Pengalaman_Kerja Asli
b. Tabel Jabatan dan Pengalaman Kerja digabung menjadi relasi
Pengalaman_Kerja
d. Interseksi (Intersection); digunakan untuk menciptakan suatu relasi baru, yang memuat
record-record yang ada dalam kedua tabel
NIP
1021
1022
1023
1024
NIP
1021
1025
31
e. Differensi (Difference); digunakan untuk menciptakan suatu relasi baru, yang memuat
record-record yang ada dalam suatu tabel tetapi tidak ada dalam tabel yang lain.
Tabel 4.28 Karyawan (a)
NIP
NAMA
DEPARTEMEN
1021
Rina
Akuntansi
1022
Reny
Pemasaran
1023
Rita
Pemasaran
1024
Rian
Akuntansi
NIP
1021
1025
NIP
1023
NIP
1021
1022
1024
1025
Keterangan :
a. Tabel-tabel asli
b. Tabel-tabel hasil operasi Differensi antara Tabel Karyawan dan tabel
karyawan baru.
f.
Divisi (Division); digunakan untuk menciptakan suatu relasi baru dengan menyeleksi recordrecord dari suatu relasi yang didasarkan pada nilai-nilai atribut yang sama dalam
memisahkan relasi.
Tabel 4. 32 Kepakaran (a)
NIP
JABATAN
1021
Investasi
1021
Perpajakan
1022
Stok Pasar
1023
Manajemen
1023
Stok Pasar
1024
Perpajakan
1024
Investasi
Tabel 4.33 Keahlian (b)
AREA
Investasi
Perpajakan
32
NIP
1021
1022
1023
1024
NAMA
Rina
Reny
Rita
Rian
DEPARTEMEN
Pemasaran
HANYA_DEPT
Pemasaran
Pemasaran
Pemasaran
Pemasaran
Keterangan :
a. Tabel-tabel asli
b. Hasil Operasi penyertaan tabel Karyawan dan tabel Supervisor yang
diberi nama tabel Data_Seluruhnya.
2. Relational Calculus
Relational Calculus merupakan tipe manipulasi data yang tidak menyediakan suatau set
operator dan memberikan fleksibilitas yang sangat baik dalam relasi-relasi. Relational calculus
merupakan tipe manipulasi data non prosedural karena pemakai hanya menspesifikasikan datadata apa yng diinginkannya bukan bagaimana memperolehnya. Adapun operasi-operasi yang
termasuk dala relational calculus hampir sama dengan yang terdapat pada relational algebra,
yaitu :
a. Proyeksi
Pada saat operasi proyeksi diperlukan, hasil yang diinginkan adalah suatu relasi yang
memuat (pada umumnya lebih sedikit) atribut-atribut yang disusun secara spesifik. Proyeksi
dispesifikasikan dengan mendeskripsikan atribut-atribut yang masih ditahan dalam hasil
33
operasi, sesuai dengan keperluannya. Berikut ini merupakan suatu contoh manipulasi data
yang menggunakan operasi proyeksi dalam relational calculus, yang secara formal dapat
ditulis sebagai berikut :
R [A,B] = { r:r R --- r [A,C]
Keterangan :
R
r
r [A,C]
34
operasinya merupakan relasi yang terdiri dari atas record-record untuk proyek nomor 1020
dan 1030.
c. Penyertaan
Operasi penyertaan dapat didefinisikan dengan definisi-definisi yang digunakan diatas
(dalam operasi proyeksi dan seleksi), yaitu R sebagi suatu relasi yang meliputi atribut A,B
dan C, r untuk record dalam R dan sebagai batasan yang harus ditentukan untuk
menyeleksi record. Sebagai tambahan, simbol S didefinisikan sebagai suatu relasi yang
memuat record yang direpresentasikan dengan definisi s pada domain yang sama pada R,
dan dilambangkan dengan yang mendefinisikan ketergabungan dua record, maka r
s mengkonstruksikan suatu record yang meliputi semua atribut pada r dan diikuti dengan
seluruh atribut pada s. Operasi penyertaan dalam relational calculus didefinisikan sebagai
berikut :
R [A B] S = {(r s) : r R s S (r [A] s [B])}
Dengan kalimat lain, penyertaan R dan S melalui atribut A dan B didefinisikan dengan
penggabungan record r dan s sedemikain rupa sehingga r berada didalam R, s berada
didalam S dan nilai A dalam r dan B dalam s menentukan batasan yang ditentukan dengan
. Operasi penyertaan diilustrasikan dalam tabel 4.37, dan dapat dijelaskan dengan
mensubstitusikan Karyawan untuk R, Supervisor untuk S, Departemen pada karyawan
sebagai A, Departemen pada Supervisor untuk B, dan = untuk .
Sebagaimana contoh diatas, simbol dapat berupa banyak operator kondisi yang lain,
yang menspesifikasikan batasan-batasan.
LATIHAN :
1. Perhatikan atribut dari tabel dibawah ini!
Pasien : {Kode_Pasien, Nama_Pasien, Penyakit, Kode_Dokter, Nama_Dokter,
Kode_Ruang, Nama_Ruang, Tanggal_mulai_rawat }
Tentukan :
a. Tipe data dan batasan nilai yang sesuai untuk format tabel Pasien diatas agar dapat
menampung record-recordnya.
b. Isi 5 record untuk tabel tersebut.
c. Petakan tabel tersebut dalam tipe relasi jenis Jaringan Kompleks.
2. Buatlah contoh tabel dengan menggunakan semua operasi pada Relational Algebra,
masing-masing satu buah!
35
NORMALISASI
Definisi Normalisasi
Beberapa Definisi Normalisasi
1. Normalisasi adalah suatu teknik yang menstrukturkan data dalam cara-cara tertentu untuk
membantu mengurangi atau mencegah timbulnya masalah yang berhubungan dengan
pengolahan data dalam basis data.
2. Normalisasi adalah suatu proses memperbaiki/membangun dengan model data relational, dan
secara umum lebih tepat dikoneksikan dengan model data logika
3. Normalisasi adalah proses mengelompokkan data kedalam bentuk tabel atau relasi atau file
untuk menyatakan entitas dan hubungan mereka sehingga terwujud satu bentuk database yang
mudah untuk dimodifikasi.
Proses normalisasi ini menghasilkan struktur record yang konsisten secara lojik, yang mudah untuk
dimengerti dan sederhana dalam pemeliharaannya. Beberapa level normalisasi dapat dijelaskan,
dan kriteria yang mendefinisikan level-level pada normalisasi adalah bentuk normal (norm form).
5.2 Tujuan Normalisasi
Ada banyak kemungkinan desain untuk struktur data yang digunakan dalam sistem basis data.
Dalam perjalanan panjangnya, beberapa desain membuktikan kelebihannya dari yang lain. Suatu
desain struktur data yang paling baik adalah jika membuat kerelasian-kerelasian dalam basis data
menjadi mudah untuk dimengerti, lebih sederhana pemeliharaannya dan lebih mudah dalam
memprosesnya untuk kebutuhan baru. Kapan saja ketika rinci data telah dikelompokkan menjadi
record-record (atau atribut menjadi relasi-relasi), maka salah satu atau lebih dari ketiga sifat diatas
harus dipenuhi. Jika antar rinci data tidak dihubungkan secara lojik maka pemakai akan menjadi
kacau dan pemeliharaannya pun akan menjadai sulit. Jadi, pada akhirnya kebutuhan data baru akan
memerlukan substansi kerja untuk menentukan rinci data yang harus disediakan jika diperlukan,
juga untuk membuat (jika dimungkinkan secara lojik) pengelompokan (grouping).
5.3 Penyimpangan-penyimpangan (Anomalies) Dalam Modifikasi
Beberapa akibat desain basis data yang tidak baik akan dibahas pada bagian ini. Permasalahan itu
biasanya terjadi selama proses delete, insert atau modifikasi data dalam basis data, yang disebut
sebagai penyimpangan-penyimpangan atau biasa dikenal dengan anomalies. Terdapat 3 macam
anomali yang pembahasannya terdapat pada uraian dibawah ini :
a. Delete anomaly; yaitu suatu proses penghapusan suatu entity lojik yang mengakibatkan
hilangnya informasi tentang entity yang tidak direlasikan secara lojik. Suatu anomali pada
umumnya merupakan penyimpangan yang tidak diperkirakan. Contoh yang memperjelas
masalah penyimpangan akibat proses delete dapat dilihat pada tabel dibawah ini :
Tabel 5.1 Travel_Club
NO_ANG NAMA_ANGGOTA ALAMAT
TUJUAN
BIAYA
TGL_BRKT
1234
Adi
Sipin
Padang
1.000.000 10-05-2007
2345
Ali
Telanai
Medan
2.000.000 11-06-2007
3456
Ani
The Hok
Medan
2.000.000 12-06-2007
4567
Ari
Sipin
Palembang
500.000 05-08-2007
36
Tabel Travel_Club diatas merupakan suatu contoh relasi yang memuat data tentang rencana
untuk anggota sebuah club. Organisasi ini memberikan beberapa fasilitas untuk melakukan
perjalanan wisata. Yang perlu diperhatikan adalah jika seorang anggota, Ari misalnya,
memutuskan untuk membatalkan perjalanan ke Palembang, dan record yang bersangkutan
dihapus, maka seluruh data dalam record tersebut akan terhapus. Hal ini akan mengakibatkan
hilangya semua data pada biaya perjalanan ke Palembang
b. Insert anomaly, yaitu suatu proses insert atau menggeser data entity lojik yang memerlukan
pergeseran data entity lojik yang lain. Dengan menggunakan tabel 5.1 diatas, desain struktur
tersebut akan diubah karena ada anggota klub yang merencanakan untuk berlibur ketempat lain
sehingga diperlukan data biaya yang baru, dan perlu pula ditambahakan kedalam struktur. Pada
kasus ini penambahan data biaya baru akan mengakibatkan pergeseran pada data lain, yaitu
pada data tujuan. Konsekuensinya, menambah data perjalanan wisata kesuatu tujuan yang lain
menjadi tidak mungkin dilakukan karena hal ini jika dilakukan akan mengakibatkan terjadinya
penyimpangan pada tabel tersebut.
c. Update anomaly; yaitu suatu proses mengupdate data pada enttity lojik yang mengakibatkan
perubahan data lebih dari satu tempat dalam suatu tabel. Dengan menggunakan contoh pada
tabel Travel_Club, jika biaya perjalanan ke Medan dirubah, maka perubahan tersebut harus
dilakukan pada lebih dari satu tempat saja. Pengubahan data biaya juga dilakukan pada tabeltabel lain yang memuat data tersebut.
5.4 Dependensi (ketergantungan)
Dependensi merupakan konsep yang mendasari normalisasi, dimana ia menjelaskan tentang
hubungan antar atribut atau secara lebih khusus menjelaskan nilai atribut yang menentukan nilai
atribut lainnya. Dependensi ini kelak akan menjadi acuan bagi pendekomposisian data kedalam
bentuk yang paling efisien.
Macam-macam dependensi :
a. Dependensi Fungsional (Functional Dependence), adalah dependensi dimana jika suatu atribut
Y mempunyai dependensi fungsional terhadap atribut X jika hanya jika setiap nilai X
berhubungan dengan sebuah nilai Y.
Definisi diatas dapat ditulis dalam bentuk notasi sebagai berikut : X Y
(dibaca X secara fungsional menentukan Y atau Y secara fungsional tergantung pada X)
Sebagai contoh misalnya terdapat tabel Pesanan_Jual yang dinotasikan dengan :
Pesanan_Jual (Pembeli, Kota, Barang, Jumlah)
yang artinya bahwa tabel Pesanan_Jual mengandung atribut Pembeli, Kota, Barang dan
Jumlah. Sampel data pada tabel ini diperlihatkan pada tabel dibawah ini :
Tabel 5.2 Pesanan_Jual
PEMBELI KOTA BARANG
P01
Yogya
B1
P01
Yogya
B3
P02
Jakarta B1
P02
Jakarta B2
P02
Jakarta B3
JUMLAH
10
15
7
10
8
Pada contoh ini, Pembeli secara fungsional menentukan Kota, sebab terlihat bahwa untuk
Pembeli yang sama, Kotanya juga sama. Dengan demikian notasinya dapat dituliskan sebagai
berikut :
37
Pembeli Kota
atau contoh yang lain :
{Pembeli, Barang} Jumlah
{Pembeli, Barang} Kota
{Pembeli, Barang} {Jumlah, Kota}
catatan :
-
Bagian yang terletak disebelah kiri panah biasa disebut penentu (determinan) dan
bagian yang terletak disebelah kanan panah disebut yang tergantung (dependen)
Tanda { } biasa digunakan kalau ada lebih dari satu atribut, baik pada penentu
maupun yang tergantung.
38
d. Dependensi Transitif, dimana atribut Z yang mempunyai dependensi transitif terhadap X bila:
- Y memiliki dependensi fungsional terhadap X
- Z memiliki dependensi fungsional terhadap Y
Sebagai contoh, terdapat tabel sebagaimana terlihat dibawah ini :
Tabel 5.4 Jadwal_Kuliah
MATA_KULIAH
RUANG
TEMPAT
Jaringan Komputer R. 31
Gedung A
Matematika I
R. 42
Gedung B
Sistem Pakar
R. 11
Gedung B
Fisika I
R 12
Gedung C
WAKTU
Senin, 08:00 09:45
Selasa, 09:45 11:00
Rabu, 13:00 14:30
Selasa, 08:00 09:45
Tempat
Mata_Kuliah
Waktu
Gambar 5.1 Diagram FD
5.6 Dekomposisi (Pemecahan Tak Hilang)
Pada proses normalisasi seringkali terjadi pemecahan sebuah relasi menjadi dua relasi atau lebih.
Proses pemecahan seperti ini disebut dengan istilah dekomposisi. Secara lebih khusus, macam
dekomposisi yang dilakukan adalah dekomposisi tak hilang, yang artinya bahwa tak ada informasi
yang hilang ketika relasi dipecah menjadi relasi-relasi lain. Tabel dibawah ini menunjukkan sebuah
relasi dengan dua macam dekomposisi.
Tabel 5.5 Bentuk relasi asli
NIM
NAMA PROGRAM_STUDI
2007101 Didi
Teknik Informatika
2007201 Dian
Sistem Komputer
2007301 Didi
Sistem Informasi
39
Bentuk normal pertama hingga ketiga (dibuat oleh E.F. Codd) merupakan bentuk normal yang umum
dipakai. Artinya bahwa pada kebanyakan relasi, bila ketiga bentuk normal tersebut telah dipenuhi,
maka persoalan anomali tidak akan muncul lagi. Bentuk normal BCNF merupakan revisi terhadap
bentuk normal ketiga. Bentuk normal keempat dan kelima (dikemukakan oleh Fagin) hanya dipakai
pada kasus-kasus khusus, yakni pada relasi yang mengandung dependensi nilai banyak.
Bentuk-bentuk normal sering digambarakan sebagaimana terlihat pada gambar dibawah ini :
Relasi Utama
1NF
2NF
3NF
BCNF
4NF
5NF
41
NIP
108
NAMA
Ari
110
Azmi
111
Andi
Pada contoh diatas, Keahlian menyatakan atribut yang berulang (misalnya Ari memiliki 3 keahlian,
dan Azmi memiliki 2 kehalian). Bentuk diatas perlu dirubah menjadi bentuk normal pertama. Adapun
definisi dari bentuk normal pertama adalah sebagai berikut :
Suatu relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai
tunggal untuk setiap baris
Data yang tak ternormalisasi pada tabel Lama_Kerja dapat diubah kedalam bentuk normal pertama
dengan cara membuat setiap baris berisi kolom dengan jumlah yang sama dan setiap kolom hanya
mengandung satu nilai. Data pada tabel Lama_Kerja tersebut perlu diubah menjadi relasi
sebagaimana terlihat pada tabel dibawah ini :
NIP
108
108
108
110
110
111
111
Dari definisi dan contoh diatas terlihat bahwa syarat untuk membentuk normal kesatu :
a. setiap data dibentuk dalam flat file, data dibentuk dalam satu record nilai dari field berupa
atomic value
b. tidak ada set atribut ynag berulang atau bernilai ganda
c. telah ditentukan primary key untuk tabel/relasi tersebut
d. tiapa atribut hanya memiliki satu pengertian
Contoh lain yang menggambarkan tabel yang belum ternormalisasi dapat dilihat pada tabel Pesanan
dibawah ini :
Tabel 5.12 Pesanan_1
NO_PSN
20002
20012
20013
TGL_PSN
12/05/2007
12/05/2007
17/06/2007
ITEM_1
ITEM_2
ITEM_3
ITEM_4
P1
P3
P1
P2
P5
P2
P3
P6
P4
TOTAL
(RUPIAH)
45.000
32.000
12.000
42
Bentuk semacam ini banyak dipakai oleh pengembang yang tidak mengenal konsep normalisasi.
Sejumlah item ditulis berdiri sebagai kolom tersendiri. Tentu saja rancangan ini tidak praktis. Berapa
jumlah kolom yang disediakan untuk menyediakan macam item yang dipesan oleh seseorang?
Bagaimana pula jika pesanan lebih banyak, misalnya 20 item? Tentu saja akan memboroskan
penggunaan kolom. Sehingga untuk efisiennya, tabel tersebut perlu diubah dalam bentuk normal
pertama, seperti diperlihatkan pada tabel dibawah ini :
NO_PSN
20002
20002
20002
20002
20012
20012
20012
20013
20013
Relasi yang memenuhi bentuk normal pertama umumnya memiliki berbagai masalah. Masalah yang
timbul secara umum adalah disebabkan oleh adanya kemubaziran. Kemubaziran (perhatikan barisbaris dengan No_Psn sama dengan 20002 pada tabel 5.13, Tgl_Psn dan Total merupakan
kemubaziran) yang dapat mengakibatkan ketidakkonsistenan, yakni bila ada perubahan data yang
tidak lengkap terhadap data yang mubazir (misalnya Tgl_Psn pada tabel Pesanan_2). Selain itu,
sekalipun ketidakkonsistenan misalnya tidak terjadi, namun terjadi ketidakefisienan sewaktu
mengubah data.
Berbagai persoalan yang menyangkut anomali (baik anomali peremajaan, maupun anomali
penyisipan dan anomali penghapusan) biasanya juga muncul pada relasi yang hanya memenuhi
bentuk normal pertama.
5.7.2 Bentuk Normal Kedua (2NF)
Bentuk normal kedua didefinisikan berdasarkan dependensi fungsional.
Suatu relasi berada dalam bentuk normal kedua jika dan hanya jika :
Berada pada bentuk normal pertama
Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci
primer (dimana atribut kunci adalah atribut yang tidak merupakan bagian
kunci primer)
Dalam ungkapan yang lebih praktis, bentuk normal kedua mensyaratkan setiap atribut bergantung
kepada kunci primer. Relasi pada tabel Lama_Kerja tidak tergolong sebagai bentuk normal kedua,
meskipun memenuhi persyaratan bentuk normal pertama. Perhatikan bahwa Nama dan Jabatan
mempunyai dependensi sepenuhnya terhadap NIP (sebab untuk NIP yang sama, Nama dan
Jabatannya juga sama). Namun tidak demikian halnya dengan Keahlian dan Pengalaman.
Untuk mengubah suatu relasi yang tergolong sebagai bentuk normal pertama kebentuk normal
kedua perlu dilakukan dekomposisi terhadap relasi tersebut. Proses dekomposisi dapat dilakukan
43
dengan menggambarkan diagram dependensi fungsional terlebih dahulu. Berdasarkan diagram ini,
relasi dalam bentuk normal pertama dipecah kedalam sejumlah relasi.
Sebagai contoh, salah satu relasi yang dibahas didepan ditulis ulang pada bagian berikut ini.
NIP
108
108
108
110
110
111
111
NAMA
Ari
Ari
Ari
Azmi
Azmi
Andi
Andi
Tabel 5. 11 Lama_Kerja
JABATAN
KEAHLIAN
Programer
Delphi
Programer
Visual Basic
Programer
PHP
Analis Yunior PHP
Analis Yunior Oracle
Analis Senior Visual Basic
Analis Senior PHP
LAMA (TAHUN)
4
3
3
5
3
5
2
Diagram dependensi fungsional untuk relasi diatas diperlihatkan pada gambar 5.3 dibawah ini :
Nama
NIP
Jabatan
Lama
Keahlian
44
NIP
108
108
108
110
110
111
111
Kedua tabel diatas menggambarkan proses dekomposisi relasi yang tergolong dalam bentuk normal
pertama kebentuk normal kedua seperti berikut ini :
Jika terdapat relasi R :
R (A, B, C, D)
Kunci Primer (A, B)
AD
R dapat digantikan dengan dua proyeksi R1 dan R2
R1 (A, D)
Kunci Primer (A)
R2 (A, B, C)
Kunci Primer (A, B)
Kunci Tamu (A) Referensi R1
Bila rumusan diatas dikenakan pada relasi berikut :
Tabel 5.14 Pesanan
NO_PSN
20002
20002
20002
20002
20012
20012
20012
20013
20013
TGL_PSN
12/05/2007
12/05/2007
12/05/2007
12/05/2007
12/05/2007
12/05/2007
12/05/2007
17/06/2007
17/06/2007
ITEM
P1
P2
P3
P4
P3
P5
P6
P1
P2
TOTAL
(RUPIAH)
45.000
45.000
45.000
45.000
32.000
32.000
32.000
12.000
12.000
45
NAMA_ITEM
Pensil
Buku Tulis
Penggaris
Penghapus
Penggaris
Pulpen
Spidol
Pensil
Buku Tulis
46
Pada contoh diatas, kunci primer relasi berupa gabungan No_Psn dan No_Urut. Baik Kode_Item
maupun Nama_Item mempunyai dependensi fungsional terhadap kunci primer tersebut. Namun
perlu diperhatikan bahwa jika Kode_Item bernilai sama, Nama_Item juga bernilai sama. Hal ini
menunjukkan adanya suatu dependensi diantara kedua atribut tersebut. Lalu manakah yang menjadi
penentu? Apakah Kode_Item bergantung pada Nama_Item ataukah sebaliknya? Suatu item bisa
saja memiliki nama sama, tetapi mempunyai karakteristik yang berbeda. Sebagi contoh, dua buah
mobil bisa saja diberi nama sama, tetapi masing-masing mempunyai warna tersendiri. Pada
keadaan seperti ini tidaklah bisa dikatakan bahwa Nama_Item yang menentukan Kode_Item. Lebih
tepat kalau Kode_Item yang menjadi penentu. Jadi Nama_Item mempunyai dependensi fungsional
terhadap Kode_Item. Adanya dependensi Nama_Item terhadap Kode_Item pada relasi ini
menunjukkan bahwa Nama_Item tidak memiliki dependensi secara langsung terhadap kunci primer
(gabungan No_Psn dan No_Urut). Dengan kata lain, Nama_Item memiliki dependensi transitif
terhadap kunci primer. Agar relasi pada pada tabel Item_Pesanan diatas memenuhi bentuk normal
ketiga maka diperlukan langkah normalisasi dengan mengikuti pendekatan berikut :
Bila terdapat relasi R sebagai berikut :
R (A, B, C)
Kunci Primer (A)
BC
Maka relasi R dapat digantikan dengan dua proyeksi R1 dan R2, dengan bentuk sebagai berikut :
R1 (B, C)
Kunci Primer (B)
R2 (A, B)
Kunci Primer (A)
Kunci Tamu (B) Referensi R1
Dengan menggunakan pendekatan diatas, maka relasi pada tabel Item_Pesanan dapat
didekomposisi menjadi dua relasi sebagimana diperlihatkan pada tabel dibawah ini :
Tabel 5.18 PUI
NO_PSN NO_URUT
20002
001
20002
002
20002
003
20002
004
20012
001
20012
002
20012
003
20013
001
20013
002
KODE_ITEM
P1
P2
P3
P4
P3
P5
P6
P1
P2
Tabel 5.17 KI
KODE_ITEM NAMA_ITEM
P1
Pensil
P2
Buku Tulis
P3
Penggaris
P4
Penghapus
P5
Pulpen
P6
Spidol
47
TUTOR
Santo
Susan
Santo
Sandra
Tutor
Kursus
Siswa
Gambar 5.4 Diagram dependensi fungsional pada relasi SKT
Relasi SKT masih menimbulkan anomali. Sebagai contoh, bila baris yang berisi siswa bernama Azmi
dihapus maka informasi yang menyatakan bahwa Suzane adalah tutor Bahasa Inggris akan ikut
hilang.
48
Cara mengkonversi relasi yang telah memenuhi bentuk normal ketiga ke BCNF adalah :
- Carilah semua penentu.
- Bila terdapat penentu yang bukan merupakan kunci kandidat, maka pisahkan relasi
tersebut dan buat penentu tersebut menjadi kunci primer.
Sehingga, agar memenuhi bentuk BCNF, maka relasi SKT perlu didekomposisi menjadi :
- ST (Siswa, Tutor)
- TK (Tutor, Kursus)
Komposisi data kedua relasi diatas diperlihatkan pada tabel relasi ST dan TK dibawah ini :
Tabel 5. 19 Relasi ST
Tabel 5. 20 Relasi TK
SISWA
TUTOR
TUTOR
KURSUS
Arif
Santo
Santo
Bahasa Perancis
Arif
Susan
Susan
Bahasa Inggris
Ardi
Santo
Santo
Bahasa Perancis
Azmi
Sandra
Sandra
Bahasa Inggris
5.7.5 Dependensi Nilai Banyak dan Bentuk Normal Keempat (4NF)
Dependensi nilai banyak merupakan terjemahan dari multivalued dependency (MVD). Dependensi
ini dipakai untuk menyatakan hubungan satu kebanyak.
Contoh hubungan satu kebanyak dapat dilihat pada gambar dibawah ini :
Ahmad
Teknisi
Perenang
Penembak
Gambar 5.5 Hubungan satu kebanyak
Untuk memahami konsep dependensi nilai banyak, dapat dilihat pada tabel dibawah ini :
Tabel 5.21 Mata_Kuliah_1
MATA_KULIAH
DOSEN
ISI
Pengetahuan Komputer Budi
Dasar Komputer
Bani
Pengenalan Pengolah Kata
Pengenalan Lembar Kerja
Matematika
Budi
Diferensial
Integral
Tabel diatas mengungkapkan tentang dosen yang mengajar mata kuliah dan isi mata kuliah yang
bersangkutan. Sebagai contoh, ada dua dosen yang mengajar Pengetahuan Komputer, yaitu Budi
dan Bani. Adapun isi mata kuliah Pengetahuan Komputer berupa : Dasar Komputer, Pengenalan
Pengolah Kata dan Pengenalan Lembar Kerja.
Tabel Mata_Kuliah_2 memperlihatkan relasi yang telah dinormalisasi yang didasarkan pada tabel
pada tabel Mata_Kuliah_1.
49
50
KENDARAAN
Truck Nissan
Toyota Kijang
Truck Dyna
Sedan Nissan
51
Relasi diatas memenuhi dependensi gabungan *(Dealer-Distributor, Distributor-Kendaraan, DealerKendaraan). Oleh karena itu, relasi DDK dapat didekomposisi menjadi tiga relasi :
- Dealer_Distributor
- Distributor_Kendaraan
- Dealer_Kendaraan
Gabungan ketiga relasi diatas akan membentuk relasi DDK, tetapi gabungan dari dua proyeksi
tersebut bisa saja menghasilkan relasi antara yang mengandung baris yang salah. Namun,
gabungan ketiga proyeksi akan menghasilkan relasi yang sesuai dengan aslinya.
Bentuk nomral kelima (5NF), yang terkadang disebut PJ/NF (Projection-Join, Normal Form),
menggunakan acuan dependensi gabungan. Suatu relasi berada dalam 5NF jika dan hanya jika
setiap dependensi gabungan dalam R tersirat oleh kunci kandidat relasi R. Secara praktis dapat
dikatakan bahwa suatu relasi R berada dalam 5NF jika data yang ada padanya tidak dapat lagi
didekomposisi menjadi relasi-relasi yang lebih kecil dengan kunci kandidat relasi-relasi yang lebih
kecil ini tidak sama dengan kunci kandidat relasi. Relasi seperti Dealer_Distributor,
Distributor_Kendaraan dan Dealer_Kendaraan memenuhi 5NF, sedangkan relasi DDK tidak
memenuhi bentuk normal kelima.
Tabel 5.26 Relasi Dealer_Distributor
DEALER
DISTRIBUTOR
PT. Sumber Jaya Nissan
PT. Sumber Jaya Toyota
PT. Asterindo
Nissan
Tabel 5.27 Relasi Distributor_Kendaraan
DISTRIBUTOR KENDARAAN
Nissan
Truck Nissan
Nissan
Sedan Nissan
Toyota
Toyota Kijang
Toyota
Truck Dyna
Tabel 5.28 Gabungan Dealer_Distributor dan Distributor_Kendaraan
DEALER
DISTRIBUTOR KENDARAAN
PT. Sumber Jaya Nissan
Truck Nissan
PT. Sumber Jaya Nisan
Sedan Nisan
PT. Sumber Jaya Toyota
Toyota Kijang
PT. Sumber Jaya Toyota
Truck Dyna
PT. Asterindo
Nissan
Truck Nissan
PT. Asterindo
Nissan
Sedan Nissan
Tabel 5.29 Gabungan Dealer_Distributor dan Dintributor_Kendaraan tanpa baris yang salah
DEALER
KENDARAAN
PT. Sumber Jaya Truck Nissan
PT. Sumber Jaya Sedan Nisan
PT. Sumber Jaya Toyota Kijang
PT. Sumber Jaya Truck Dyna
PT. Asterindo
Sedan Nissan
52
Untuk memahami pengertian tersirat pada kukunci kandidat, dapat dilihat pada relasi dibawah ini:
NIM
115
123
124
KOTA
Jambi
Palembang
Riau
Relasi Mahasiswa diatas memenuhi dependensi gabungan *((NIM, Nama_Mhs), (NIM, Alamat,
Kota)). Dengan kata lain, relasi Mahasiswa akan sama dengan gabungan kedua proyeksinya, (NIM,
Nama_Mahasiswa) dan (NIM, Alamat, Kota). Pada konteks ini, dependensi gabungan tersirat oleh
kunci kandidat NIM yang sama baiknya pada relasi Mahasiswa maupun kedua proyeksinya. Relasi
Mahasiswa yang mempunyai sifat seperti itu dikatakan memenuhi bentuk normal kelima.
5.8 Overnormalisasi
Tabel-tabel yang memenuhi 5NF terkadang didekomposisi lagi. Prosesnya dikenal dengan dengan
sebutan overnormalisasi. Tujuannya adalah untuk meningkatkan kinerja. Caranya adalah dengan
memperhatikan permintaan terhadap data yang sering dilakukan. Kolom-kolom data yang sering
diperlukan diletakkan pada tabel tersendiri, terpisah dengan kolom-kolom data yang jarang
diperlukan. Alasan yang lain, tabel yang terlalu banyak memiliki kolom dapat menimbulkan
persoalan yang disebut deadlock (saling mengunci) pada pengaksesan yang serentak (sejumlah
pengguna mengakses baris yang sama).
Namun perlu juga diperhatikan bahwa tidak selamanya pendekomposisian terhadap tabel yang telah
memenuhi 5NF dapat meningkatkan kinerja. Pada kenyataannya, tabel yang terlalu pendek (sedikit
memiliki kolom) juga menimbulkan persoalan peningkatan waktu CPU dan juga memerlukan banyak
I/O disk ketika terjaai penggabungan data (misalnya untuk penyajian laporan).
LATIHAN :
1. Apakah yang dimaksud dengan normalisasi? Jelaskan!
2. Jelaskan pengertian anomali dan sebutkan macam anomali!
3. Apa perbedaan antara Dependensi Fungsional dan Dependensi Total? Jelaskan!
4. Terdapat relasi Proyek sebagai berikut :
Kode_Proyek Nama_Pegawai
Bagian
A203
Widya
EDP
A203
Wahyu
HRD
A203
Wanti
HRD
A204
Widya
EDP
A204
Warni
Accounting
A205
Widya
EDP
A205
Wanti
HRD
A205
Warni
Accounting
Dari tabel diatas, tentukan atribut-atribut yang mempunyai nilai Dependensi Fungsional,
Dependensi Total dan Dependensi Transitif (jika ada)!
5. Berdasarkan tabel Proyek diatas :
a. Apakah Proyek memenuhi bentuk Normal Pertama? Jelaskan!
b. Apakah Proyek memenuhi bentuk Normal Kedua? Jelaskan!
53
Studi kasus I
Berikut terdapat tabel Nama_Mahasiswa dibawah ini. Lakukan normalisasi dari bentuk tidak normal
(unnormalized) hingga kedalam betuk normal kedua (2-NF)
Nama_Mahasiswa
Alimin
Diana
Tony
Paula
NIM
61521
61522
61523
61524
Kd_Mkul
MAT231, ECO220, HST211
HST211
ENG202, MAT231
MAT231, ENG202
NIM
61521
61521
61521
61522
61523
61523
61524
61524
Tgl_Lahir
12/05/77
12/05/77
12/05/77
14/08/78
11/01/76
11/01/76
14/06/77
14/06/77
Kuliah
Kalkulus
Ekonomi-1
History
History
Bhs. Inggris
Kalkulus
Kalkulus
Bhs. Inggris
Kd_Mkul
MAT231
ECO220
HST211
HST211
ENG202
MAT231
MAT231
ENG202
SKS
3
3
2
2
3
3
3
2
Nilai
B
A
B
A
C
B
B
C
Bobot
3
4
3
4
2
3
3
2
54
MODEL DATA
Model data dapat didefinisikan sebagai kumpulan perangkat konseptual untuk menggambarkan
data, hubungan data, makna data dan batasan data. Oleh karena yang ingin ditunjukkan adalah
makna dari data dan keterhubungannya dengan data lain, maka model data ini lebih tepat jika
disebut sebagai model data logik. Penyingkatannya menjadi model data dilakukan demi
penyederhanaan penulisan.
Terdapat sejumlah cara dalam merepresentasikan model data dalam perancangan basis data, yang
secara umum dapat dibagi dalam 2 kelompok, yaitu :
1. Model Logik Data berdasarkan Objek (Object-Based Logical Models), yang terdiri dari :
- Model Keterhubungan Entitas (Entity Relationship Models)
- Model Berorientasi Objek (Object Oriented Models)
- Model Data Semantik (Semantic Data Models)
- Model Data Fungsional (Functional Data Models)
2. Model Logik Data berdasarkan Record (Record-Based Logical Models)
- Model Relational (Relational Models)
- Model Hirarkis (Hierarchiral Models)
- Model Jaringan (Network Models)
Namun demikian, dari beberapa representasi model data diatas hanya Model Keterhubungan Antar
Entitas yang akan dibahas secara mendalam, karena merupakan model basis data yang paling
populer digunakan dalam perancangan basis data. Sementara itu Model Data berdasarkan record
(Model Relational, Hirarkies dan Jaringan) sebagai pembanding telah dikemukakan terlebih dahulu
pada Bab II.
6.1 Model Entity-Relationship (Model Ketergantungan Entitas)
Pada Model Entity-Relationship, semesta data yang ada dalam dunia nyata
diterjemahkan/ditransformasikan dengan memanfaatkan sejumlah perangkat konseptual menjadi
sebuah diagram data yang umum disebut dengan Entity-Relationship Diagram (ERD/Diagram E-R).
Sebelum membahas lebih jauh tentang bagaimana menggambarkan ERD, yang harus diketahui
terlebih dahulu adalah komponen-komponen pembentuk Model E-R tersebut. Terdapat 2 komponen
utama pembentuk Model E-R yaitu Entitas (Entity) dan Relasi (Relation). Kedua komponen ini
dideskripsikan lebih jauh melalui sejumlah atribut/properti.
6.1.1 Entitas dan Himpunan Entitas
Entitas merupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan
dari sesuatu yang lain. Misalnya kursi yang diduduki, seseorang yang menjadi pegawai disebuah
perusahaan dan sebuah mobil yang melaju dijalan raya. Sekelompok entitas sejenis dan berada
dalam ruang lingkup yang sama membentuk sebuah Himpunan Entitas (Entity Set), dengan kata
lain, entitas menunjuk pada individu suatu objek sedangkan himpunan entitas menunjuk pada
rumpun (family) dari individu tersebut. Seseorang dapat menjadi sebuah entitas tapi dapat berada
dalam sebuah himpunan entitas yang berbeda dengan individu yang lain. Seorang pasien, misalnya,
akan dimasukkan dalam himpunan entitas pasien, sedang seorang dokter dimasukkan dalam
himpunan entitas dokter. Tetapi dalam penggunaan istilah entitas sehari-hari biasa digunakan untuk
menyatakan suatu himpunan entitas.
55
PRODI
Teknik Informatika
Manajemen Informasi
Sistem Informasi
Teknik Informatika
56
Alternate Key
Setiap atribut dari candidate key yang tidak dipilih menjadi primary key, maka atribut-atribut
tersebut dinamakan aternate key.
Foreign key
Foreign key merupakan sembarang atribut yang menunjukkan kepada primary key pada
table yang lain. Foreign key akan terjadi pada suatu relasi yang memiliki kardinalitas one-tomany atau many-to-many. Foreign key biasanya selalu diletakkan pada table/relasi yang
mengarah ke banayak.
Contoh : terdapat dua relasi,yaitu relasi dosen dan jadwal, Kardinalitas relasi tersebut
adalah satu orang dosen dapat mengajar lebih dari satu mata kuliah. Relasi dosen memiliki
kardinalitas relasi one-to-many terhadap relasi jadwal.
Relasi jadwal
KD-MK
Mata Kuliah
SKS
KD-Dosen
MI-01
Basis Data
3
DT-01
MI-02
Pemroraman WEB
4
DT-02
MI-03
Sistem Informasi
3
DT-02
MI-04
Jaringan Komputer
3
DT-01
MI-05
Rekayasa PL
4
DT-03
Primary Key : KD-MK
Foreign key :KD-Dosen
Relasi dosen
KD-Dosen
DT-01
DT-02
DT-03
Primary Key : KD-Dosen
Nama_Dosen
Rusdi
Aan
Arie
External key
External key merupakan suatu lexical attribute (atau himpunan lexical attribute) yang nilainilainya seslau mengindentifikasikan suatu objek instance.
Atribut deskriptif merupakan atribut-atribut yang tidak menjadi atau merupakan anggota dari
primary key. Jadi atribut-atribut nama_mhs, alamat_mhs dan prodi digolongkan sebagai
atribut deskriptif.
57
NIM
Jalan
Jl. Raya No. 1
Jl. Motong No. 2
Jl. Tol No.3
Jl. Jalan No.4
Kota
Jambi
Surabaya
Jakarta
Jakarta
PRODI
Kode_Pos
36127
60182
20119
34214
3. Atribut Bernilai Tunggal (Singe-Valued Attribute) dan Atribut Bernilai Banyak (Multivalued
Attribute)
Atribut Bernilai Tunggal ditujukan pada atribut-atribut yang memiliki paling banyak satu nilai
untuk setiap baris data. Pada data mahasiswa, semua atributnya merupakan atribut bernilai
tunggal, karena atribut-atribut tersebut hanya berisi 1 nilai. Jika ada seorang mahasiswa
yang memiliki 2 buah alamat, maka hanya satu saja yang diisikan dalam atribut
alamat_mhs.
Sedangkan, Atribut Bernilai Banyak ditujukan pada atribut yang dapat berisi lebih dari 1 nilai,
tetapi jenisnya sama. Misalnya terdapat tabel jadwal_kuliah, maka atribut bernilai banyak
terletak pada atribut waktu.
Tabel 6.3 Jadwal_Kuliah
NAMA_MATA_KULIAH
WAKTU
RUANG
Struktur Data
Senin, 08.00 - 09.30
Kalkulus I
Senin, 09.30 11.00
NAMA_DOSEN
58
NAMA_MHS
ANGKATAN
2006
2006
2007
2007
IP
3.02
2.89
2.75
3.50
Pada contoh diatas, nilai-nilai pada atribut angkatan dapat diketahui dari atribut nim, dimana
dua karakter pertama dari nim menyatakan dua digit bilangan tahun masuknya mahasiswa
yang bersangkutan. Sedangkan pada atribut ip, nilai-nilainya diperoleh dari pengolahan
yang lebih rumit, yakni dengan menerapkan formula tertentu yang melibatkan atribut
indeks_nilai yang ada dalam tabel Nilai dan atribut sks yang ada dalam tabel Mata_Kuliah.
6.1.3 Relasi (Relationship) dan Himpunan Relasi (Relationship Sets)
Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas
yang berbeda. Misalnya, entitas seorang mahasiswa dengan nim = 0602011 dan nama_mhs =
Zahara (dari tabel Mahasiswa) mempunyai relasi dengan entitas sebuah mata kuliah dengan
kode_mk = IF-110 dan nama_mk = Struktur Data. Relasi diantara kedua entitas tadi mengandung
arti bahwa mahasiswa tersebut mengambil/mempelajari mata kuliah tersebut. Kumpulan semua
relasi diantara entitas-entitas yang terdapat pada himpunan entitas tersebut membentuk Himpunan
Relasi (Relationship Sets). Disamping himpunan entitas Mahasiswa yang telah ditunjukkan diatas,
terdapat pula himpunan entitas Mata_Kuliah dengan struktur data dan contoh data yang dibahas
sebelumnya :
KODE_MK
IF-110
IF-310
KU-234
MA-115
Himpunan entitas Mata Kuliah ini memiliki relasi dengan himpunan entitas Mahasiswa yang dapat
digambarkan sebagai berikut :
59
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Dari gambar diatas terlihat adanya relasi antara entitas Zahara dengan entitas Basis Data. Relasi
ini mengandung makna bahwa mahasiswa bernama Zahara mengambil/mempelajari mata kuliah
Basis Data. Lalu entitas Zamzami mempunyai 2 relasi yaitu dengan entitas Struktur Data dan
entitas Kalkulus I, yang berarti bahwa entitas Zamzami tersebut mengambil/mempelajari 2
matakuliah, yaitu Struktur Data dan Kalkulus I. Selain itu terlihat bahwa entitas Zainab berelasi
dengan entitas Bahasa Inggris, yang berarti bahwa Zainab hanya mengambil/mempelajari
matakulaih Bahasa Inggris. Sedangkan entitas Zailangkung terlihat tidak berelasi dengan entitas
manapun dari tabel mata_kuliah.
6.1.4
Kardinalitas/Derajat Relasi
Kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan
entitas pada himpunan entitas yang lain. Pada contoh sebelumnya, dapat dilihat bahwa entitasentitas pada himpunan entitas Mahasiswa dapat berelasi dengan satu entitas, banyak entitas atau
bahkan tidak satupun entitas dari himpunan entitas Mata_Kuliah. Begitu juga sebaliknya, entitasentitas pada himpunan entitas Mata_Kuliah ada yang berelasi dengan beberapa entitas pada
himpunan entitas Mahasiswa dan ada pula yang berelasi dengan satu entitas pada himpunan entitas
Mahasiswa.
Dari sejumlah kemungkinan banyaknya hubungan antar entitas tersebut, kardinalitas relasi
merujuk pada hubungan maksimum yang terjadi dari himpunan entitas yang satu kehimpunan
entitas yang lain dan begitu juga sebaliknya. Pada contoh diatas, maka hubungan maksimum dari
himpunan entitas Mahasiswa ke himpunan entitas Mata_Kuliah adalah Banyak (lebih dari satu) dan
demikian pula hubungan maksimum dari himpunan entitas Mata_Kuliah ke himpunan entitas
Mahasiswa adalah Banyak (lebih dari satu). Dengan demikian kardinalitas relasi antara kedua
himpunan entitas adalah Banyak ke Banyak.
60
Kardinalitas relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dapat berupa :
- Satu ke Satu (One to One)
Yang berarti setiap entitas pada himpunan entitas A berhubungan dengan paling banyak dengan
satu entitas pada entitas himpunan B, demikian juga sebaliknya.
A
Entitas 1
Entitas 1
Entitas 2
Entitas 2
Entitas 3
Entitas 3
Entitas 1
Entitas 1
Entitas 2
Entitas 2
Entitas 3
Entitas 3
Entitas 1
Entitas 1
Entitas 2
Entitas 2
Entitas 3
Entitas 3
61
Entitas 1
Entitas 1
Entitas 2
Entitas 2
Entitas 3
Entitas 3
Lingkaran/ Ellips, menyatakan atribut (atribut yang berfungsi sebagai primary key
digarisbawahi)
A
Garis, sebagai penghubung antara himpunan relasi dengan himpunan entitas dan himpunan
entitas dengan atributnya
Gambar 6.8 Notasi Penghubung
62
Kardinalitas relasi dapat dinyatakan dengan banyaknya garis cabang atau dengan
pemakaian angka (1 dan 1 untuk relasi satu ke satu, 1 dan N untuk relasi satu ke banyak
serta M dan N untuk relasi banyak ke banyak).
Berikut adalah contoh penggambaran relasi antar himpunan entitas lengkap dengan kardinalitas
relasi dan atribut-atributnya :
1. Relasi satu ke satu (one to one)
Contoh :
Terdapat relasi antara himpunan entitas Dosen dengan himpunan entitas Program_Studi.
Himpunan relasinya diberi nama Mengepalai. Pada relasi ini, setiap dosen paling banyak
mengepalai satu program studi. Dan setiap program studi pasti dikepalai oleh paling banyak
satu orang dosen. Maka penggambarannya adalah :
NIP
NAMA_DOSEN
NIP
KODE_PS
1
DOSEN
KODE_PS
NAMA_PS
1
MENGEPALAI
PROGRAM_STUDI
NAMA_DOSEN
NIP
KODE_MK
1
DOSEN
KODE_MK
NAMA_MK
N
MENGAJAR
WAKTU
TEMPAT
MATA_KULIAH
SKS
SEMESTER
63
kedua atribut tersebut terdapat pula 2 atribut tambahan yang tidak berasal dari salah satu
himpunan entitas yang dihubungkannya. Hal ini memang dimungkinkan dan bahkan bisa saja
terjadi. Dengan adanya 4 atribut tersebut pada relasi Mengajar, maka dapat diketahui jadwal
pelaksanaan setiap mata kuliah beserta dosen yang mengajarkannya.
3. Relasi banyak ke banyak (many to many)
Terdapat relasi antara himpunan entitas Mahasiswa dengan himpunan entitas Mata_Kuliah.
Himpunan relasinya diberi nama Mempelajari. Pada relasi ini, setiap mahasiswa dapat
mempelajari lebih dari satu mata kuliah. Demikian juga sebaliknya, setiap mata kuliah dapat
dipelajari oleh lebih dari satu orang mahasiswa. Maka penggambarannya adalah sebagai berikut
:
NIM
NAMA_MHS
NIM
KODE_MK
N
MAHASISWA
TGL_LHR
KODE_MK
N
MEMPELAJARI
ALAMAT
NAMA_MK
NILAI
MATA_KULIAH
SKS
SEMESTER
64
kemandiriannya. Kemadirian itukana terlihat dari kejaelasan atribut yang menjadi key dan
perbedaannya dengan key yang ada di entitas yang lain.
3. Mengidentifikasi dan menetapkan seluruh himpunan relasi diantara himpunan entitas
himpunan entitas yang ada beserta foreign key-nya.
Langkah ini merupakan langkah yang terpnting dalam pembentukkan Diagram E-R. Ketepatan
kita dalam menentukan kardinalitas dari relasi-relasi yang terjadi diantara entitas akan sangat
menentukan kualitas rancangan basis data yang kita bangun. Kardinalitas relasi yang kita
tetapkan harus dapat mengakomodasi semua fakta yang ada, dan menjamin semua kebutuhan
penyajian data, tetapi di sisi lain juga harus dibuat seoptimal mungkin agar memakan ruang
penyimpanan yang lebih besar, dan tidak menyulitkan operasi pengelolaan data. Untuk itulah
relasi-relasi yang sifatnya tidak langsung harus ditiadakan.
4. Menentukan derajat/kardinalitas relasi untuk setiap himpunan relasi.
Berangkat dari fakta yang ada, atribut-atribut deskriftif yang adapt kita sertakan paa masingmasing entitas ke relasi. Keberadaan atribut deskriptif ini merupakan refleksi pengakomodasian
terhadap fakta-fakta yang memang ada, dan kebutuhan penyajian data disaat yang lain. Atribut
deskriftif ini juga tidak banyak berperan dalam membentuk pemahaman kita dalam membaca
sebuah Diagram E-R, bahkan cenderung menggangu, karean biasanya jumlah atribut demikian
cukup banyak. Karena itu, khususnya pada sebuah sistem yang besar dan kompleks, langkah
terakhir ini seringkali tidak dilakukan, sehingga Diagram E-R sampai pada langkah ketiga atau
kedua saja.
6.2.2 Diagram ER dengan Kamus Data (Data Dictionary)
Objektif utama dari pembuatan ERD adalah untuk menunjukkan objek-objek (himpunan entitas) apa
saja yang ingin dilibatkan dalam sebuah basis data, dan bagaimana hubungan yang terjadi diantara
objek-objek tersebut. Pada sebuah sistem yang ruang lingkupnya besar dan kompleks,
penggambaran atribut-atribut dalam sebuah ERD seringkali malah menganggu objektif yang ingin
dicapai tersebut. Sehingga dalam penggambarannya dapat dipisah antara pendeklarasian atributatribut ini dari ERD, dan menyatakannya dalam sebuah kamus data berisi daftar atribut yang diapit
kurung kurawal ({ dan }). Atribut yang berfungsi sebagai key juga dibedakan dengan yang bukan
key dengan menggarisbawahi atribut tersebut.
Karena itu, diperbolehkan untuk menggambarkan ERD dengan tambahan kamus Data seperti
berikut ini:
N
MAHASISWA
N
MEMPELAJARI
MATA_KULIAH
MENGAJAR
DOSEN
65
LATIHAN :
Perhatikan abstraksi dibawah ini :
Sebuah Poliklinik yang sedang berkembang ingin meningkatkan pelayanan terhadap para
pasiennya dengan cara membangun sistem pelayanan pasien yang dibantu oleh komputer. Sistem
yang akan dibuat dibatasi hanya untuk medical record dan administrasi pembayaran.
Ketika pasien mendaftar, maka akan dilakukan pengecekan terhadap data yang telah
disimpan untuk mencari apakah pasien tersebut pernah terdaftar atau belum. Bila belum terdaftar
maka data lengkap pasien akan dimasukkan.
Sebagai salah satu bahan masukan bagi dokter dalam melakukan diagnosa adalah catatan
kesehatan pasien.
Setelah selesai pemeriksaan, dokter memberikan data tentang diagnose tehadap pasien
tersebut, serta menuliskan resep. Dokter juga harus melaporkan tentang injeksi apa saja yang telah
diberikan.
Dari resep yang dibuat dokter, dikeluarkan biaya tentang obat yang harus dibayar.
Selanjutnya petugas Poliklinik akan menyerahkan obat beserta rincian biaya tersebut (biaya obat
dan pemeriksaan). Data tentang diagnosa dan obat yang diberikan dicatat oleh petugas rumah sakit
sebagai catatan kesehatan pasien.
Direktur Poliklinik berharap agar sistem yang akan dibuat dapat memberikan laporan
keuangan dan laporan pemakaian obat.
Dari Abstraksi diatas buatlah Entity Rrelationship Diagram-nya!
66
67
jika user ingin melakukan penyimpanan data baru, maka penyimpanan itu juga selalu diawali dengan
pencarian (lokasi data) didalam disk.
Sebagai sebuah standar, sejalan dengan perkembangan teknologi basis data dan teknologi
komputer pada umumnya, SQL sendiri mengalami beberapa perubahan (penyempurnaan). SQL
mula-mula dibuat pada tahun 1970 dengan Sequel. Standarisasi yang pertama dibuat pada tahun
1986 oleh ANSI (American National Standards Institute) dan ISO (International Standard
Organization), yang disebut sebagai SQL-86. SQL-86 ini diperbaharui pada tahun 1989 menjadi
SQL-89. Standar terakhir yang dibuat dan digunakan hingga saat ini adalah SQL-92 yang
dikeluarkan pada tahun1992.
Kendati SQL sendiri merujuk pada Query Language, tidak berarti perintah-perintah yang menjadi
standard hanyalah perintah-perintah yang berhubungan dengan query data. Selain mencakup DML,
SQL juga telah dilengkapi dengan berbagai perintah yang tergolong DDL dab perintah kontrol
transaksi (transaction control).
7.2 Query Dasar
Data Definition Language (DDL) berkaitan dengan perintah-perintah untuk pendefinisian objek-objek
basis data. Salah satu objek terpenting adalah tabel. Berikut ini adalah sintaks SQL untuk
melakukan pembuatan tabel baru didalam basis data :
create tabel t (A1 D1, A2 D2, , An Dn)
dimana :
- T adalah nama tabel yang akan dibuat
- A1, A2,..., An adalah nama-nama atribut yang akan terdapat didalam tabel t
- D1, D2, ..., Dn adalah domain nilai masing-masing atribut tersebut yang ditentukan
berdasarkan tipe datanya
Sebelum perintah tersebut dapat digunakan, maka kita terlebih dahulu harus mengetahui tipe data
apa saja yang dapat kita gunakan. Dalam SQL-92, tipe data yang menjadi standar adalah :
- Char(n), untuk atribut yang bernilai string dengan panjang tetap sebesar n karakter (jika
banyaknya karakter yang diisikan ke atribut dengan tipe ini kurang dari n, maka sisanya akan
diisi dengan spasi.
- Varchar(n), untuk atribut yang bernilai string dengan panjang fleksibel, tapi maksimal
sebanyak n kharakter.
- Int atau integer, untuk atibut yang bernilai integer 2 byte.
- Smallint, untuk atribut yang bernilai integer 1 byte.
- Numeric(p,d), untuk atribut yang bernilai pecahan fixed-point dengan panjang p digit
(termasuk tanda) dan d digit untuk bilangan pecahan.
- Real, double precision, untuk atribut yang bernilai floating point.
- Float(n), untuk atribut yang bernilai pecahan floatingpoint dengan presisi n digit.
Date, untuk atribut yang bernilai penanggalan (trdiri atas 4 digit tahun, bulan dan tanggal).
Time, untuk atribut yang bernilai waktu (terdiri atas jam, menit dan detik).
Berikut ini adalah contoh perintah SQL untuk membuat tabel Mahasiswa :
create table Mahasiswa
(NIM char(6),
Nama_Mhs varchar (30),Alamat_Mhs varchar (60),Tgl_lahir date)
68
Tabel yang telah dibuat juga dapat dibatalkan keberadaannya (penghapusan tabel) dengan
menggunakan perintah SQL dengan sintaks berikut ini :
drop tabel t
Jika terhadap tabel yang dibuat, ingin disertakan pula adanya indeks primer berdasarkan atribut
tertentu didalam tabel, maka dapat digunakan klausa primary key. Berikut ini adalah contoh ekspresi
SQL untuk pembuatan tabel Mahasiswa sekaligus dengan pendefinisian indeks primer berdasarkan
NIM :
create tabel Mahasiswa
(NIM char(6),
Nama_Mhs varchar (30),
Alamat_Mhs varchar (60),
Tgl_lahir date,
primary key (NIM))
Jika jumlah atribut yang membentuk Indeks Primer ada lebih dari satu, seperti yang ada pada tabel
Nilai, contoh ekspresi SQL-nya adalah sebagai berikut :
create tabel Nilai
(NIM char(6),
Kode_Kul char(6),
Indeks_Nilai char(1),
primary key (NIM, Kode_Kul))
Alter Tabel
Jika perintah update untuk memutakhirkan data dalam tabel, maka alter tabel digunakan untuk
memutakhirkan atribut/kolom di dalam tabel. Bentuk umum dari alter tabel sbb :
Alter table <nama tabel>
Change <nama kolom>
<update kolom>
Contoh untuk perintah alter tabel sebagai berikut :
Alter table pengguna
Change ID_pengguna ID_pengguna INT(10) NOT NULL
Update kolom dituliskan secara lengkap seperti saat membuat tabel pertama kali. Meskipun
sebenarnya kita hanya mengubah tipe data dari varchar menjadi integer.
Insertion :
Pengisian data ke dalam tabel dapat ditempuh dengan perintah insert into. Pengisian satu per satu
bisa ditempuh dengan
insert into kurir values ("dewi", "3", "20060910","08.00.00", "9908")
69
perintah di atas berfungsi untuk mengisikan data ke dalam tabel secara urut dari kolom paling kiri
hingga paling akhir. Values yang diberikan harus sama jumlahnya dengan kolom yang tersedia di
dalam tabel. Apabila ada data kolom yang kosong maka bisa digantikan dengan
insert into kurir values ("dewi", "3", "20060910","", "9908")
yang menandakan bahwa pada kolom jam pengiriman berisi data null. Data null juga disesuaikan
dengan tipe data kolom tersebut. Jika kolom bertipe data non angka maka nilai null ditandai dengan
tanda petik 2x. Jika kolom bertipe data angka (integer atau float) data null cukup dengan ditandai
dengan tanda spasi. Cara pengisian sekaligus menggunakan perintah
insert into kurir values ("dewi", "3", "20060910", "08.00.00", "9908"),
("Tono", "4", "20060908","10.00.00", "4459");
Cara pengisian yang lain menggunakan perintah
insert into pelanggan(ID_pelanggan, nama_pelanggan) values ("140","Gugun");
untuk mengisikan data pada kolom tertentu. Pengisian seperti ini tidak menghiraukan apakah kolom
yang seharusnya NOT NULL terisi atau tidak. Cara ini digunakan seperlunya, sebab bisa
menimbulkan error seperti kolom primary key tidak terisi.
Berikut ini adalah contoh perintah SQL untuk melakukan penambahan record baru ke tabel
Mahasiswa :
insert into Mahasiswa (NIM, Nama_Mhs, Alamat_Mhs, Tgl_Lahir)
values (2007001, Faza Raihana, Jl Arun No 10a, Jambi,
23/09/2005)
Atau
insert into Mahasiswa
values (2007001, Faza Raihana, Jl Arun No 10a, Jambi,
23/09/2005)
Maka atribut Tgl_Lahir yang tidak disebutkan dalam perintah insert tersebut akan diisi dengan nilai
null.
Delete :
Delete yang dilakukan hanya bisa diberikan pada record, bukan pada data kolom tertentu. Untuk
menghapus data pada kolom tertentu menggunakan perintah update. Sintaks delete secara umum
berbentuk
Delete form <tabel>
Where <kondisi>
70
71
Ada cara lain untuk lebih menyingkat perintah update, namun perintah ini hanya berlaku pada tabel
yang memiliki primary key. Misalnya :
Update transaksi SET Nama_kantor= 'FAT' WHERE ID_transaksi='10345'
Perintah yang lain untuk mengubah 2 data kolom sekaligus, sebagai berikut :
Update transaksi SET Nama_kantor= 'HER', kode_pos = "88970"
WHERE ID_transaksi='10345'
Perintah update juga bisa digunakan untuk menghapus data sebuah kolom pada tabel.
Misalnya :
Update pelanggan SET Nama_pelanggan= WHERE ID_pelanggan =137
Hasilnya data nama_pelanggan yang berID 137 akan dihilangkan/diset NULL. Perintah update yang
lain adalah
update harga
set biaya = case
when biaya > 30000 then 15000
when biaya > 50000 then 40000
else 50000
end;
Update dilakukan pada tabel harga kolom biaya di mana terdapat beberapa kondisi dengan perilaku
yang berbeda. Pada contoh terdapat tiga kondisi biaya, dimana tiap kondisi memiliki statement yang
berbeda.
Berikut ini adalah perintah SQL untuk mengubah nilai atribut SKS untuk mata kuliah tertentu :
update Kuliah
set SKS = 4
where Kode_Kul = IF-310
Perintah update juga dapat digunakan untuk melakukan perubahan dengan mengacu pada nilai
atribut yang lama (sebelum perubahan), misalnya untuk penambahan gelar didepan nama dosen
tertentu berikut ini :
update Dosen
set Nama_Dosen = Prof. + Nama_Dosen
where Kode_Dos = 2
Perintah update tanpa klausa where berikut ini dilakukan untuk semua record :
update Nilai
set Indeks_Nilai = null
Yang mengakibatkan terisinya nilai null (pengosongan nilai untuk atribut Indeks_Nilai) pada semua
record ditabel Nilai.
72
dimana :
- A1, A2,, An merupakan daftar atribut.
- t1, t2,, tm merupakan daftar tabel.
- P merupakan predikat query.
- [ ] merupakan tanda opsional (boleh digunakan atau tidak).
7.2.1 Klausa Select
Jika kita ingin menampilkan NIM dan Nama Mahasiswa yang ada ditabel Mahasiswa, maka kita
dapat menggunakan perintah SQL sebagai berikut :
select NIM, Nama_Mhs
from Mahasiswa
akan menampilkan semua data mahasiswa yang ada. Jika (misalnya) didalam tabel terdapat dua
mahasiswa dengan nama yang sama (tapi NIM-nya berbeda), maka nama tersebut juga akan tampil
dua kali. Jika ingin agar nilai atribut yang tampil bersifat unik (sehingga dalam kasus tersebut,
walaupun ada banyak mahasiswa dengan nama yang sama, maka hanya salah satu nama yang
tampil), perintahnya :
select distinct Nama_Mhs
from Mahasiswa
Perlu diperhatikan, bahwa keunikan diatas hanya untuk nilai atribut yang disebutkan dalam klausa
select, bukan pada keseluruhan atribut yang ada didalam tabel yang disebutkan dalam klausa from.
Pada tampilan hasil query yang disusun berbentuk tabular, atribut yang disebutkan pada klausa
select akan dijadikan sebagai header (kepala tampilan tabular tersebut). User dapat mengganti
tampilan header, tanpa mengganggu proses dan hasil query-nya dengan menambahkan klausa
sebagai berikut :
select NIM, Nama_Mhs as nama,
alamat_Mhs as alamat
from Mahasiswa
73
Jika ingin melakukan query terhadap semua atribut yang ada pada tabel yang disebutkan pada
klausa from, kita dapat menuliskan kesemua atribut tersebut atau dengan menggunakan notasi yang
lebih singkat :
select *
from Mahasiswa
Perhatikan nilai 2005001 diapit dengan tanda kutip tunggal. Penggunaan tanda kutip ini digunakan
terhadap nilai yang bertipe string (yang harus disesuaikan dengan tipe dari atribut NIM). Dapat juga
diterapkan predikat dengan operator relasi lainnya (<,>,<=,>=,<>) dan mengkombinasikannya
dengan operator logika (and, or dan not). Misalnya, ingin menampilkan semua matakuliah yang
diselenggarakan di semester 3 tetapi yang jumlah sks-nya lebih besar dari 2, ekspresi SQL-nya
adalah :
select *.*
from Kuliah
where semester = 3 and sks > 2
Perhatikan kembali, nilai 3 dan 2 tidak diapit tanda kutip tunggal, karena nilai tersebut bertipe
numerik sesuai dengan tipe untuk atribut semester dan atribut sks ditabel Kuliah.
Kita juga dapat melakukan query dengan kriteria yang berbentuk range nilai tertentu dengan
menggunakan tambahan klausa between, misalnya untuk menampilkan record-record kuliah yang
diselenggarakan antara semester 3 hingga semester 5 :
select *.*
from Kuliah
where semester between 3 and 5
Khusus untuk atribut yang bertipe string, kita dapat melakukan pencarian dengan pola tertentu,
dengan memanfaatkan karakter % (percent) atau tanda _ (underscore) dan tambahan klausa
like pada klausa where :
- tanda % berarti cocok untuk semua substring.
- tanda _ berarti cocok untuk semua karakter pada posisi yang sesuai.
Berikut ini adalah perintah untuk menampilkan record-record mahasiswa yang namanya diawali
dengan huruf A :
select *
from Mahasiswa
where Nama_Mhs like A%
Sedangkan ekspresi SQL berikut ini untuk menampilkan mahasiswa yang huruf/karakter kedua dari
namanya adalah a :
74
select *
from Mahasiswa
where Nama_Mhs like _a%
Dengan memanfaatkan karakter % dalam klausa where, kita dapat menampilkan mahasiswamahasiswa angkatan 1198 dengan perintah berikut :
select *
from Mahasiswa
where NIM like 98%
Perlu diperhatikan, melakukan query terhadap dua tabel atau lebih tidak bisa dilakukan secara
sembarangan. Tabel-tabel yang menjadi sumber query harus memiliki keterhubungan (relasi). Pada
perintah diatas, keterhubungan itu diwakili oleh kesamaan nilai pada atribut Kode_Dos dan kita tahu
bahwa atribut ini dimiliki oleh kedua tabel. Ekspresi Kuliah.Kode_Dos menunjukkan nilai Kode_Dos
yang berasal dari tabel Kuliah dan Dosen.Kode_Dos menunjukkan nilai Kode_Dos yang berasal
dari tabel Dosen.
Kita juga dapat menggunakan nama alias untuk tabel-tabel pada klausa from untuk
menyederhanakan penulisan. Ekspresi query diatas, dengan hasil yang sama dapat pula dinyatakan
dengan ekspresi sebagi berikut :
select *
from Kuliah k, Dosen d
where k.Kode_Dos = d.Kode_Dos
Terhadap sumber data (tabel query) yang banyak, tanda * (asterik) pada klausa select akan
mengacu pada semua atribut yng ada disemua tabel yang disebutkan pada klausa from. Jika kita
hanya ingin menampilkan atribut-atribut tertentu saja, maka nama tabel ataupun aliasnya dapat kita
gunakan untuk memperjelas atribut yang kita tampilkan tersebut, misalnya :
select k.Kode_Kul, k.Nama_Kul, d.Nama_Dos
from Kuliah k, Dosen d
where k.Kode_Dos = d.Kode_Dos
75
Ekspresi diatas dapat dikembangkan lagi, misalnya dengan mengganti header dari tampilan query
dan menampilkan hasil query hanya untuk mata kuliah yang diselenggarakan disemester 3 :
select k.Kode_Kul as Kode, k.Nama_Kul as Kuliah, d.Nama_Dos as Dosen
from Kuliah k, Dosen d
where k.Kode_Dos = d.Kode_Dos
and k.Semester = 3
Jika memang dibutuhkan, jumlah tabel yang harus dilibatkan dalam query boleh lebih dari 2 tabel. Di
tabel Nilai, misalnya, kita hanya memiliki data NIM, kode kuliah dan indeks nilai. Jika ingin
menampilkan data NIM, nama mahasiswa, nama mata kuliah dan indeks nilai-nya, maka kita harus
melibatkan 3 buah tabel sekaligus dengan ekspresi SQL sebagi berikut :
select n.NIM, m.Nama_Mhs, k.Nama_Kul, n.Indeks_Nilai
from Nilai n, Mahasiswa m, Kuliah k
where n.NIM = m.NIM
and n.Kode_Kul = k.Kode_Kul
Urutan berdasarkan nama tersebut disusun secara menaik (dari abjad nama terkecil hingga
terbesar). Jika misalnya, kita ingin menampilkan berdasarkan tanggal lahir tapi secara menurun (dari
mahasiswa termuda hingga tertua), maka pada klausa order by kita sertakan pula klausa desc :
select *
from Mahasiswa
order by Tgl_Lahir desc
76
5. Menampilkan indeks nilai terbesar yang diperoleh mahasiswa untuk mata kuliah dengan
kode kuliah IF-110 :
select max (indeks_nilai)
from Nilai
where Kode_Kul = IF-110
Fungsi agregasi ini dapat pula dikombinasikan dengan klausa group by yang menyatakan adanya
pengelompokan record-record hasil query. Jika kita ingin menampilkan banyaknya record dan total
77
sks untuk mata kuliah yang dikelompokkan berdasarkan nilai semesternya, maka ekspresi SQL ini
dapat kita gunakan :
select Semester, count (*), sum (sks)
from kuliah
group by Semester
order by Semester
Penggunaan klausa order by diatas hanya untuk tujuan agar hasil query-nya diurutkan berdasarkan
nilai atribut semesternya.
Perlu juga diperhatikan, bahwa fungsi agregasi harus selalu diikuti dengan tanda kurung tersebut.
Karena fungsi count lebih berorientasi pada banyaknya record hasil query, maka kita boleh untuk
tidak menuliskan nama atribut spesifik diantara tanda kurung setelah fungsi ini (dan menggantinya
denagn tanda asterik).
7.4 Penggunaan Operator
Permintaan data melalui select juga dapat menggunakan berbagai operator yang dikenakan pada
klausa where. Operator-operator yang tersedia adalah And, Or, Not, Beween-And, In dan
Like. Sebagai contoh, query dibawah ini akan mendapatkan daftar Nama Mahasiswa yang berasal
dari prodi Teknik Informatika dan Sistem Informasi. Dalam hal ini, dapat digunakan operator And
pada klausa where, sebagaimana terlihat pada perintah SQL dibawah ini :
Select Nama_Mhs, Prodi
From Mahasiswa
Where Prodi = Teknik Informatika And Sistem Informasi
Operator Or dapat digunakan untuk menyatakan keadaan atau. Sebagai contoh, diperoleh nama
dan angkatan dari mahasiswa yang mendaftar pada tahun 2006 atau 2007 dengan cara seperti
dibawah ini :
Select Nama_Mhs, Angkatan
From Mahasiswa
Where Angkatan = 2006 Or Angkatan =
2007
Not merupakan operator yang menyatakan keadaan tidak. Misalnya, Prodi <> Teknik Informatika,
bisa ditulis juga dengan Not Prodi = Teknik Informatika, atau lebih lengkapnya :
Select Nama_Mhs, Prodi
From Mahasiswa
Where Not Prodi = Teknik Informatika
Operator In digunakan untuk menyatakan salah satu diantara. Misalnya, pernyataan dibawah ini
digunakan untuk memperoleh Nama Mahasiswa angkatan 2005, 2005 dan 2006 :
Select Nama_Mhs
From Mahasiswa
78
Operator Like digunakan untuk pencocokan, sebagai contoh, dapat diperoleh semua Mahasiswa,
yang namanya diawali dengan huruf Z dengan menggunakan perintah :
Select Nama_Mhs
From Mahasiswa
Where Nama_Mhs Like A%
Berikut ini adalah perintah SQL untuk menghitung banyaknya mata kuliah dalam tabel Nilai yang
atribut Indeks_Nilai-nya telah terisi data (bukan null) :
select count (*)
from Nilai
where Indeks_Nilai is not null
Fungsi count sendiri sebenarnya memiliki keistimewaan, yaitu jika asterik pada fungsi tersebut
diganti dengan nama atribut tertentu, maka yang dihitung hanyalah banyaknya record yang nilai
untuk atribut tertentu tersebut bukan null. Jadi perintah SQL diatas, dapat juga dinyatakan dalam
bentuk yang lebih singkat seperti dibawah ini :
Select count (Indeks_Nilai)
From Nilai
Pada perintah terakhir ini, walaupun klausa where tidak digunakan seperti perintah SQL
sebelumnya, tapi hasilnya akan sama saja dengan perintah SQL sebelumnya tersebut.
7.6 Manipulasi data
SQL juga dilengkapi dengan sejumlah perintah untuk melakukan manipulasi data seperti
penambahan reord baru, pengubahan nilai atribut an penghapusan record dalam suatu tabel.
7.6.1 Penambahan Record
Sintaks SQL untuk penambahan record baru kesebuah tabel adalah :
insert to t [(A1, A2,, An)]
79
dimana :
o t adalah nama tabel yang akan mengalami penambahan record
o A1, A2,, An adalah nama-nama atribut yang akan diisi nilai
o v1, v2,vn adalah nilai-nilai yang akan mengisi atribut-atribut tersebut
Nama-nama atribut sesudah nama tabel dapat diabaikan (tidak dituliskan) jika kita ingin mengisikan
nilai kesemua atribut dengan urutan atribut sesuai dengan pendefinisian struktur yang telah
dilakukan pada saat pembuatan tabel. Tapi jika urutan atribut berbeda atau atribut yang ingin kita isi
nilai-nilainya tidak terjadi pada semua atribut yang ada ditabel tersebut, maka nama-nama atribut
tersebut harus dituliskan. Jika perintah SQL ini digunakan dalam aplikasi basis data, maka
sebaiknya sebaiknya user tidak mengambil resiko dengan meniadakan nama-nama atribut untuk
mangantisipasi adanya perubahan struktur tabel (khususnya dengan penambahan atribut ke tabel
tersebut).
7.6.2 Pengubahan Record
Sintaks SQL untuk pengubahan nilai atribut pada suatu record dari sebuah tabel adalah :
update t
set assigment
[where P]
dimana :
-
dimana :
- t adalah nama tabel yang akan mengalami pengjhapusan record
- P merupakan predikat atau kriteria untuk menentukan record mana yang akan dikenai
penghapusan, jika klausa where ini tidak digunakan, maka penghapusan akan dilakukan
pada semua record didalam tabel t tersebut.
Berikut ini adalah perintah SQL untuk menghapus record kuliah tertentu :
delete from kuliah
where Kode_Kul = IF-310
Berikut ini adalah perintah SQL untuk menghapus beberapa ditabel Kuliah :
delete from Kuliah
where Kode_Kul like MA%
80
Sedangkan perintah SQL berikut ini adalah untuk menghapus semua record dari tabel Kuliah
(sehingga tabel Kuliah menjadi kosong).
delete from Kuliah
atau
roolback [work]
Jika perintah commit digunakan, maka semua operasi manipulasi basis data akan direkam kedalam
disk dan transaksi dinyatakan selesai. Sedang jika perintah rollback yang digunakan, maka semua
operasi manipulasi basis data yang belum di-commit, akan dibatalkan (tidak jadi disimpan kedalam
disk). Klausa work sifatnya opsional dan tidak berpengaruh terhadap pengertian kedua perintah
tersebut.
LATIHAN :
1. Diketahui isi dari tabel Pengarang adalah sebagai berikut :
Kd_Pengarang
101
102
103
104
105
106
107
108
109
110
Nama
Habib
Hamid
Hana
Haydar
Hani
Hadi
Huda
Humairah
Husna
Hanif
Alamat
Jl. Beo, No 1
Jl. Cendrawasih, No 2
Jl. Kakak Tua, No 3
Jl. Nuri, No 4
Jl. Kepodang, No 5
Jl. Merpati, No 6
Jl. Kutilang, No 7
Jl. Merak, No 8
Jl. Gelatik, No 9
Jl. Kasuari No 10
Kota
Padang
Palangkaraya
Palembang
Palangkaraya
Papua
Papua
Palembang
Palembang
Padang
Padang
JK
L
L
P
L
P
L
L
P
P
L
81
DAFTAR PUSTAKA
[FAT02]
[KAD00]
Kadir, Abdul. Konsep & Tuntunan Praktis Basis Data. Yogyakarta : Penerbit Andi,
2000.
[KRI00]
[POH97]
[SUR96]
[SUS95]
[SUT96]
Sutanta, Edhy. Sistem Basis Data : Konsep Dan Peranannya Dalam Sistem Informasi
Manajemen. YogyakartaPenerbit Andi Yogyakarta, 1996.
82