Anda di halaman 1dari 95

KATA PENGANTAR

Basis data menjadi hal yang penting dewasa ini karena teknologi
informasi yang kian berkembang pesat. Dengan teknologi informasi yang
maju maka berbagai bidang terkomputerisasi dan dengan kondisi seperti ini
dibutuhkan basis data untuk mengelola semua data yang ada.

Saat organisasi semakin berkembang kebutuhan akan pengelolaan


data dalam volume besar juga semakin meningkat sehingga dibutuhkan
DBMS. Perancangan basis data yang baik akan meningkatkan kualitas sistem
yang digunakan agar dapat menghasilkan informasi yang tepat untuk para
pengguna dan pengambil keputusan. Maka penting sekali untuk mempelajari
basis data dengan seksama.

Buku ini akan membantu pembaca untuk memahami lebih jauh


tentang basis data. Dimulai dengan pengenalan basis data, lingkungan basis
data, model data, relational model, ketergantungan fungsional, normalisasi,
aljabar relasional, SQL, QUEL, QBE, concurrency control, recovery, data
integrity, dan database security.

Penulis menyadari buku ini masih jauh dari sempurna namun kami
berharap pembaca akan mendapatkan manfaat dari buku ini. Pada akhirnya
kami mengucapkan terimakasih untuk semua yang telah berperan serta
dalam pembuatan buku ini.

Jakarta, Februari 2013

Penulis
BAB 1
PENGANTAR BASIS DATA

1.1 Pengertian Basis Data


Berikut beberapa definisi tentang basis data/database :
Menurut Gordon C. Everest
Database adalah koleksi atau kumpulan data yang mekanis, terbagi /
shared, terdefinisi formal dan dikontrol terpusat pada organisasi.
Menurut C.J. Date
Database adalah koleksi data operasional yang tersimpan dan
dipakai oleh sistem aplikasi dari suatu organisasi.
Menurut Toni Fabbri
Database adalah sebuah sistem file-file yang terintegrasi yang
mempunyai minimal primary key untuk pengulangan data.
Menurut S. Attre
Database adalah koleksi data-data yang saling berhubungan mengenai
suatu organisasi /enterprise dengan macam-macam pemakaiannya.

Jadi, Basis Data adalah suatu susunan/kumpulan data operasional


lengkap dari suatu organisasi/perusahaan yang diorganisir/dikelola dan
disimpan secara terintegrasi dengan metode tertentu menggunakan
computer sehingga mampu menyediakan informasi optimal yang diperlukan
pemakainya. Sedangkan Sistem Basis Data adalah suatu system yang
menyusun dan mengelola record-record menggunakan computer untuk
menyimpan atau merekam serta memelihara data operasional lengkap
sebuah organisasi/perusahaan sehingga mampu menyediakan informasi
yang optimal yang diperlukan pemakai untuk proses mengambil keputusan.
(linda marlinda 1:2004)
1.2 Komponen Dasar Sistem Basis Data :
Data
Data adalah representasi fakta dunia nyata yang mewakili suatu objek
seperti manusia (pegawai, mahasiswa, pembeli), barang, hewan,
peristiwa, konsep, keadaan, dan sebagainya yang direkam dalam
bentu angka, huruf, simbol, teks, gambar, bunyi atau kombinasinya.
Data di dalam sebuah basis data dapat disimpan secara terintegrasi
(integrated) dan data dapat dipakai secara bersama-sama (shared).
integrated
basis data merupakan kumpulan dari berbagai macam file dari
aplikasi yang berbeda yang disusun dengan cara
menghilangkan bagian-bagian yang rangkap (redundant).
shared
masing-masing bagian dari basis data dapat diakses oleh
pemakai dalam waktu bersamaan untuk aplikasi yang berbeda.
Jenis-jenis data :
Data Operasional, data dari suatu organisasi berupa data yang
disimpan di dalam basis data.
Data Masukan (Input Data), data dari luar system yang
dimasukkan melalui peralatan input (mis : keyboard) yang dapat
mengubah data operasional.
Data Keluaran (Output Data), data berupa laporan melalui
peralatan output (mis : screen, printer, dll) sebagai hasil proses
dari dalam suatu system yang mengakses data operasional.
Perangkat keras
Berupa komputer dan bagian-bagian didalamnya, seperti prosesor,
memori & harddisk. Komponen inilah yang melakukan pemrosesan dan
juga untuk menyimpan basis data.
Perangkat lunak
Perangkat lunak ini terdiri dari sistem operasi dan perangkat
lunak/program pengelola basisdata. Perangkat lunak inilah yang akan
menentukan bagaimana data diorganisasi,disimpan, diubah dan
diambil kembali. Ia juga menerapkan mekanisme pengamanan data,
pemakaian data secara bersama, pemaksaan keakuratan/konsistensi
data, dsb. Perangkat lunak basis data yang termasuk dalam DBMS
yaitu : Microsoft SQL Server, Oracle, Sybase, Interbase, XBase, Firebird,
MySQL, PostgreSQL, Microsoft Access, dBase III, Paradox, FoxPro, Visual
FoxPro, Arago, Force, Recital, dbFast, dbXL, quicksilver, Clipper,
FlagShip, Harbour, Visual dBase, Lotus Smart Suite Approach, db2,
Btrieve, Tsunami Record Manager
Pengguna/user
Pengguna dapat digolongkan menjadi 3 :
Pengguna akhir / end user.
Orang yang mengakses basis data melalui terminal dengan
menggunakan query language atau program aplikasi yang dibuat
oleh programmer.
Dapat dibagi menjadi 2 :
- Nave end-user adalah pemakai yang berinteraksi dengan
system tanpa menulis program, hanya menjalankan satu
menu dan memilih proses yang telah ada atau telah dibuat
sebelumnya oleh programmer.
- Casual end-user adalah pemakai yang berinteraksi dengan
system tanpa menulis program tetapi menggunakan
bahasa query.
Pemrogram aplikasi
Pemrogram aplikasi adalah orang yang membuat program aplikasi
yang menggunakan basisdata, misalnya untuk perbankan,
administrasi, akuntansi, dan lain-lain.
Administrator database / DBA (database administrator)
adalah orang yang bertanggung jawab terhadap pengelolaan
basisdata. Beberapa tugas DBA yaitu :
- Mendefinisikan basisdata
- Menentukan isi basisdata
- Menentukan sekuritas basisdata
Program Utilitas yang digunakan oleh DBA :
- Loading Routines, membangun versi utama dari basis data
- Reorganization Routines, mengatur / mengorganisasikan
kembali basis data
- Journaling Routines, mencatat semua operasi pemakaian
basis data
- Recovery Routines, menempatkan kembali data, sebelum
terjadinya kerusakan
- Statistical Analysis Routines, membantu memonitor
keandalan sistem
Jika digambarkan secara lengkap komponen basis data seperti yang
terlihat dari gambar di bawah ini :

pemakai

Aplikasi pengguna basis


Perangkat

data
DBMS

Sistem Operasi
lunak

Perangkat keras

Basis
data
Gambar 1. Komponen sistem
basis data
1.3 Prinsip & Tujuan Sistem Basis Data
Basis data dan lemari arsip sesungguhnya memiliki prinsip kerja dan
tujuan yang sama. Prinsip utamanya adalah pengaturan data/arsip. Dan
tujuan utamanya adalah kemudahan dan kecepatan dalam pengambilan
kembali data/ arsip. Perbedaannya hanya terletak pada media penyimpanan
yang digunakan . Jika lemari arsip menggunakan lemari sebagai media
penyimpanannya, maka basis data menggunakan media penyimpanan
elektronis seperti disk.
Yang perlu diingat adalah bahwa tidak semua bentuk penyimpanan data
secara elektronis bisa disebut basis data. Yang sangat ditonjolkan dalam
basis data adalah pengaturan/pemilahan/pengelompokkan/pengorganisasian
data yang akan kita simpan sesuai fungsi/jenisnya. Pemilahan/
pengelompokan ini dapat berbentuk sejumlah file/ tabel terpisah atau dalam
bentuk pendefinisian kolom-kolom/field-field data dalam setiap file/tabel.
Tujuan dibangunnya basis data secara singkat yaitu untuk mengatur data
sehingga diperoleh kemudahan, ketepatan dan kecepatan dalam
pengambilan kembali. Selain itu dengan adanya basis data membuat user
mudah mendapatkan data, menyediakan tempat penyimpanan data yang
relevan, menghapus data yang berlebihan, melindungi data dari kerusakan
fisik, memungkinkan perkembangan lebih lanjut di dalam sistem database.
Perhatikan penjelasan yang lebih rinci di bawah ini.
Tujuan dibangunnya basis data adalah sebagai berikut :
Kecepatan & kemudahan (speed)
Dengan memanfaatkan basis data, memungkinkan kita untuk dapat
menyimpan data atau melakukan perubahan/ manipulasi terhadap
data atau menampilkan kembali data tersebut secara lebih cepat &
mudah.
Efisiensi ruang penyimpanan (space)
Karena keterkaitan yang erat antara kelompok data dalam sebuah
basis data,maka redundansi (pengulangan) pasti akan selalu ada,
sehingga akan memperbesar ruang penyimpanan. Dengan basis data,
efisiensi ruang penyimpanan dapat dilakukan dengan menerapkan
sejumlah pengkodean, atau dengan membuat relasi-relasi antar
kelompok data yang saling berhubungan.
Keakuratan (accuracy)
Pengkodean atau pembentukan relasi antar data bersama dengan
penerapan aturan/batasan (constraint), domain data, keunikan data,
dsb, yang secara ketat dapat diterapkan dalam sebuah basis data,
sangat berguna untuk menekan ketidak akuratan penyimpanan data.
Ketersediaan (availability)
Dengan pemanfaatan jaringan komputer, maka data yang berada di
suatu lokasi/cabang dapat juga diakses (tersedia/available) bagi
lokasi/cabang lain.
Kelengkapan (completeness)
Kelengkapan data yang disimpan dalam sebuah database bersifat
relatif, bisa jadi saat ini dianggap sudah lengkap, tetapi belum tentu
pada suatu saat dianggap lengkap.
Keamanan (security)
aspek keamanan dapat diterapkan dengan ketat, dengan begitu kita
dapat menentukan pemakai basis data serta obyek-obyek didalamnya
serta jenis-jenis operasi apa saja yang boleh dilakukannya.
Kebersamaan pemakaian (sharability)
Basis data yang dikelola dengan aplikasi multi user dapat memenuhi
kebutuhan ini.

1.4 Keuntungan dan kerugian basis data


Sebelumnya, sistem yang digunakan untuk mengatasi semua
permasalahan bisnis, menggunakan pengelolaan data secara tradisional
dengan cara menyimpan record-record pada file-file yang terpisah, yang
disebut juga sistem pemrosesan file. Dimana masing-masing file
diperuntukkan hanya untuk satu program aplikasi saja. Sebagai contoh jika
suatu universitas mengelola data mahasiswa dan data mata kuliah maka
universitas harus mempunyai dua system pemrosesan file yaitu system yang
memproses data mahasiswa dan system yang memproses data mata kuliah.
Hal ini tentu akan menyulitkan jika banyak jenis data yang harus diproses.
Kelemahan-kelemahan system pemrosesan file dijelaskan sebagai berikut :
Timbulnya data rangkap (redundancy data) dan
Ketidakkonsistensi data (Inconsistency data)
Karena file-file dan program aplikasi disusun oleh programmer yang
berbeda, sejumlah informasi mungkin memiliki duplikasi dalam beberapa
file. Sebagai contoh nama mata kuliah dan sks dari mahasiswa dapat
muncul pada suatu file memiliki record-record mahasiswa dan juga pada
suatu file yang terdiri dari record-record mata kuliah. Kerangkapan data
seperti ini dapat menyebabkan pemborosan tempat penyimpanan dan
biaya akases yang bertambah. Disamping itu dapat terjadi inkonsistensi
data. Misalnya, apabila terjadi perubahan jumlah sks mata kuliah,
sedangkan perubahan hanya diperbaiki pada file mata kuliah dan tidak
diperbaiki pada file mahasiswa. Hal ini dapat mengakibatkan kesalahan
dalam laporan nilai mahasiswa.
Kesukaran dalam Mengakses Data
Munculnya permintaan-permintaan baru yang tidak diantisipasikan
sewaktu membuat program aplikasi, sehingga tidak memungkinkan untuk
pengambilan data.
Data terisolir (Isolation Data)
Karena data tersebar dalam berbagai file, dan file-file mungkin dalam
formatformat yang berbeda, akan sulit menuliskan program aplikasi baru
untuk mengambil data yang sesuai.
Masalah Pengamanan ( Security Problem )
Tidak semua pemakai diperbolehkan mengakses seluruh data. Bagian
Mahasiswa hanya boleh mengakses file mahasiswa. Bagian Mata kuliah
hanya boleh mengakses file mata kuliah, tidak boleh mengakses file
mahasiswa. Tetapi sejak program-program aplikasi ditambahkan secara
ad-hoc maka sulit melaksanakan pengamanan seperti yang diharapkan.
Data Dependence
Apabila terjadi perubahan atau kesalahan pada program aplikasi maka
pemakai tidak dapat mengakses data.

Kelemahan-kelemahan system pemrosesan file ini membuat


dikembangkannya system basis data sebagai solusi dari permasalahan yang
ada. Berikut beberapa keuntungan dan kerugian system basis data :

Keuntungan Sistem Basis Data


Terkontrolnya kerangkapan data
Dalam basis data hanya mencantumkan satu kali saja field yang sama
yang dapat dipakai oleh semua aplikasi yang memerlukannya.
Terpeliharanya keselarasan (kekonsistenan) data.
Apabila ada perubahan data pada aplikasi yang berbeda maka secara
otomatis perubahan itu berlaku untuk keseluruhan.
Data dapat dipakai secara bersama (shared).
Data dapat dipakai secara bersama-sama oleh beberapa program
aplikasi (secara batch maupun on-line) pada saat bersamaan.
Dapat diterapkan standarisasi
Dengan adanya pengontrolan yang terpusat maka DBA dapat
menerapkan standarisasi data yang disimpan sehingga memudahkan
pemakaian, pengiriman maupun pertukaran data.
Keamanan data terjamin
DBA dapat memberikan batasan-batasan pengaksesan data, misalnya
dengan memberikan password dan pemberian hak akses bagi pemakai
(misal : modify, delete, insert, retrieve)
Terpeliharanya integritas data
Jika kerangkapan data dikontrol dan kekonsistenan data dapat dijaga
maka data menjadi akurat Terpeliharanya keseimbangan (keselarasan)
antara kebutuhan data yang berbeda dalam setiap aplikasi struktur
basis data diatur sedemikian rupa sehingga dapat melayani
pengaksesan data dengan cepat.
Data independence (kemandirian data)
Dapat digunakan untuk bermacam-macam program aplikasi tanpa harus
merubah format data yang sudah ada.

Kelemahan Sistem Basis Data


Memerlukan tenaga spesialis
Kompleks
Memerlukan tempat yang besar
Mahal

Basis data adalah suatu fasilitas untuk mempermudah dalam


menghasilkan informasi yang digunakan oleh pemakai untuk mendukung
pengambilan keputusan. Pemrosesan basis data menjadi alat canggih yang
kehadirannya sangat diperlukan oleh berbagai institusi dan perusahaan.
Basis data merupakan media penyimpanan yang diperlukan dalam
pengembangan sistem informasi. Keberadaan basis data saat ini dapat
meningkatkan kinerja perusahaan dan dapat meningkatkan daya saing
perusahaan tersebut. Hal inilah yang menjadikan alasan dari penggunaan
teknologi basis data pada saat sekarang (dunia bisnis). Selain itu basis data
juga dapat melakukan pelayanan terhadap pelanggan secara cepat.
Berikut ini contoh penggunaan Aplikasi basis data dalam dunia bisnis :
Bank : Pengelolaan data nasabah, akunting, semua transaksi
perbankan
Bandara : Pengelolaan data reservasi, penjadualan
Universitas : Pengelolaan pendaftaran, alumni
Penjualan : Pengelolaan data customer, produk, penjualan
Pabrik : Pengelolaan data produksi, persediaan barang,
pemesanan, agen
Kepegawaian : Pengelolaan data karyawan, gaji, pajak
Telekomunikasi : Pengelolaan data tagihan, jumlah pulsa

1.5 DBMS (Database Management System)


Database Management System sering disebut sebagai database
manager, program dimana satu atau lebih pengguna komputer dapat
membuat dan mengakses data dalam sebuah database. DBMS mengatur
permintaan pengguna (dan permintaan dari program lainnya) sehingga para
pengguna dan program lainnya dapat mengetahui dimana data secara fisik
berada dalam media penyimpanan. Dalam system multi-user siapapun dapat
mengakses data secara bersamaan.
DBMS memastikan integritas data agar data dapat terus di akses dan
konsisten, selain itu DBMS juga menjaga keamanan data dengan
memastikan bahwa yang memiliki hak akses saja yang dapat mengakses
data.
Relational Database Management System (RDBMS) adalah yang paling khas
dari DBMS. Structured Query Language (SQL) digunakan untuk standard user
dan program interface. Jenis DBMS yang terkini adalah Object-Oriented
Database Management System (ODBMS)
Bahasa Dalam DBMS
DBMS (Database Management systems) adalah kumpulan program
yang mengkoordinasikan semua kegiatan yang berhubungan dengan
basis data. Dengan adanya berbagai tingkatan pandangan dalam suatu
basis data maka untuk mengakomodasikan masing-masing pengguna
dalam piranti lunak manajemen basis data biasanya terdapat bahasa-
bahasa tertentu yang disebut Data Sub language.
Data sub language adalah subset bahasa yang dipakai untuk operasi
manajemen basis data. Dalam penggunaan biasanya dapat ditempelkan
(embedded) pada bahasa tuan rumah (Cobol, PL/1, dsb). Secara umum
maka setiap pengguna basis data memerlukan bahasa yang dipakai
sesuai tugas dan fungsinya.
Dalam basis data secara umum dikenal 2 data sub language :
Data Definition Language (DDL)
Bahasa yang digunakan dalam mendefinisikan struktur atau kerangka
dari basis data, di dalamnya termasuk record, elemen data, kunci
elemen, dan relasinya
Data Manipulation Language (DML)
Bahasa yang digunakan untuk menjabarkan pemrosesan dari basis
data, fasilitas ini diperlukan untuk memasukkan, mengambil,
mengubah data. DML dipakai untuk operasi terhadap isi basis data
Ada 2 jenis DML :
- Procedural DML
Digunakan untuk mendefinisikan data yang diolah dan perintah
yang akan dilaksanakan.
- Non Procedural
Digunakan untuk menjabarkan data yang diinginkan tanpa
menyebutkan bagaimana cara pengambilannya.
Secara khusus pengguna menggunakan berbagai bahasa :
Programmer aplikasi menggunakan bahasa-bahasa seperti Cobol,
Informix, dll (host language) yang ditempelkan dengan bahasa yang
dipakai dalam DBMS. Pemakai terminal menggunakan bahasa Query
(misal SQL) atau menggunakan program aplikasi (yang dirancang oleh
programmer). Sedangkan DBA lebih banyak menggunakan bahasa DDL
dan DML yang tersedia dalam DBMS.
DBMS mempunyai tugas untuk menangani semua bentuk akses kepada
basis data, secara konsep :
- Pengguna menyatakan permintaan akses menggunakan DBMS
- DBMS menangkap dan menginterpretasikan
- DBMS mencari : eksternal / conceptual mapping, conceptual
schema, konseptual / internal mapping, internal schema
- DBMS melaksanakan operasi yang diminta terhadap basis data
tersimpan.
Semua langkah proses dapat dilakukan secara interactive atau dicompile
dulu.

Fungsi DBMS
Layanan-layanan yang sebaiknya disediakan oleh database management
system adalah :
Penyimpanan, pengambilan dan perubahan data
Sebuah DBMS harus menyediakan kemampuan menyimpan,
mengambil dan merubah data dalam basis data.
Katalog yang dapat diakses pemakai
Menyediakan sebuah katalog yang berisi deskripsi item data yang
disimpan dan diakses oleh pemakai.

Mendukung Transaksi
Menyediakan mekanisme yang akan menjamin semua perubahan yang
berhubungan dengan transaksi yang sudah ada atau yang akan dibuat.
Melayani kontrol concurrency
Sebuah DBMS harus menyediakan mekanisme yang menjamin basis
data ter-update secara benar pada saat beberapa pemakai melakukan
perubahan terhadap basis data yang sama secara bersamaan.
Melayani recovery
Menyediakan mekanisme untuk mengembalikan basis data ke keadaan
sebelum terjadinya kerusakan pada basis data tersebut.
Melayani autorisasi
Sebuah DBMS harus menyediakan mekanisme untuk menjamin bahwa
hanya pemakai yang berwenang saja yang dapat mengakses basis
data.
Mendukung komunikasi data
Sebuah DBMS harus mampu terintegrasi dengan software komunikasi.
Melayani integrity
Sebuah DBMS bertujuan untuk menjamin semua data dalam basis data
dan setiap terjadi perubahan data harus sesuai dengan aturan yang
berlaku.
Melayani data independence
Sebuah DBMS harus mencakup fasilitas untuk mendukung kemandirian
program dari struktur basis data yang sesungguhnya.
Melayani utility
Sebuah DBMS sebaiknya menyediakan kumpulan layanan utility.

1.6 Istilah - Istilah Dasar Basis Data


Enterprise
Suatu bentuk organisasi seperti : bank, universitas, rumah sakit,
pabrik, dsb.
Data yang disimpan dalam basis data merupakan data operasional dari
suatu enterprise.
Contoh data operasional : data keuangan, data mahasiswa, data
pasien
Entitas
Suatu obyek yang dapat dibedakan dari lainnya yang dapat
diwujudkan dalam basis data.
Contoh Entitas dalam lingkungan bank terdiri dari : Nasabah,
Simpanan, Hipotik
Contoh Entitas dalam lingkungan universitas terdiri dari : Mahasiswa,
mata kuliah
Kumpulan dari entitas disebut Himpunan Entitas
Contoh : semua nasabah, semua mahasiswa

Atribut (Elemen Data)


Karakteristik dari suatu entitas.
Contoh : Entitas Mahasiswa atributnya terdiri dari Npm, Nama, Alamat,
Tanggal lahir.
Nilai Data (Data Value)
Isi data / informasi yang tercakup dalam setiap elemen data.
Contoh Atribut Nama Mahasiswa dapat berisi Nilai Data : Diana,
Sulaeman, Lina Pengantar Basis Data 5 Pengantar Basis Data

Kunci Elemen Data (Key Data Element)


Tanda pengenal yang secara unik mengidentifikasikan entitas dari
suatu kumpulan entitas.
Contoh Entitas Mahasiswa yang mempunyai atribut-atribut npm, nama,
alamat, tanggal lahir menggunakan Kunci Elemen Data npm.
Record Data
Kumpulan Isi Elemen data yang saling berhubungan.
Contoh : kumpulan atribut npm, nama, alamat, tanggal lahir dari
Entitas Mahasiswa berisikan : "10200123", "Sulaeman", "Jl. Sirsak 28
Jakarta", "8 Maret 1983".
BAB 2
LINGKUNGAN BASIS DATA

2.1 Lingkungan Basis Data


Lingkungan basis data adalah sebuah habitat di mana terdapat basis
data untuk bisnis. Dalam lingkungan basis data, pengguna memiliki alat
untuk mengakses data. Pengguna melakukan semua tipe pekerjaan dan
keperluan mereka bervariasi seperti menggali data (data mining),
memodifikasi data, atau berusaha membuat data baru. Masih dalam
lingkungan basis data, pengguna tertentu tidak diperbolehkan mengakses
data, baik secara fisik maupun logis. (Koh, 2005, dalam Janner Simarmata &
Imam Paryudi 2006: 33).
Tujuan utama dari sistem basis data adalah menyediakan pemakai melalui
suatu pandangan abstrak mengenai data, dengan menyembunyikan detail
dari bagaimana data disimpan dan dimanipulasikan. Oleh karena itu,
perancangan sebuah basis data haruslah abstrak dan deskripsi umum dari
kebutuhan-kebutuhan informasi suatu organisasi harus digambarkan di
dalam basis data.
Sebuah basis data merupakan suatu sumber yang bisa digunakan bersama
maka setiap pemakai membutuhkan pandangan yang berbeda-beda
terhadap data di dalam basis data.
Tiga Tingkatan Arsitektur Basis Data menurut ANSI-SPARC
Ada 3 tingkat dalam arsitektur basis data yang bertujuan membedakan
cara pandang pemakai terhadap basis data dan cara pembuatan basis
data secara fisik.
3 tingkatan arsitektur basis data :
Tingkat Eksternal / View Level
Adalah sistem basis data yang berhubungan dengan representasi
data dari sisi setiap pengguna dan merupakan level
pengguna/programmer. Setiap user mempunyai bahasa yang sesuai
dengan kebutuhannya seperti C, COBOL, atau PL/I. Pada pengguna end
user, bahasa yang digunakan adalah bahasa query atau menggunakan
fasilitas yang tersedia pada program aplikasi. Pada level eksternal ini,
user dibatasi pada kemampuan perangkat keras dan perangkat lunak
yang digunakan aplikasi basis data. Yang diidefinisikan sebagai sebuah
Skema Eksternal.
Tingkat Internal / Physical Level
Adalah sistem basis data yang berhubungan dengan
penyimpanan data secara fisik (physical storage). Yang merupakan
level terendah untuk merepresentasikan basis data. Record disimpan
dalam media penyimpanan seperti hardisk dalam format byte. Dan
didefinisikan sebagai sebuah Skema Internal
Tingkat internal memperhatikan hal-hal berikut ini :
- Alokasi ruang penyimpanan data dan indeks
- Deskripsi record untuk penyimpanan (dengan ukuran
penyimpanan untuk data elemen
- Penempatan record
- Pemampatan data dan teknik encryption
Tingkat Konseptual / Logical Level
Adalah penghubung antara level internal dan external.
Conceptual level adalah sebuah representasi seluruh muatan informasi
yang dikandung oleh basis data. Keberadaannya tidak perlu
memperhitungkan kekurangan perangkat keras maupun perangkat
lunak pembangun aplikasi basis data. Didefinisikan sebagai sebuah
Skema Konseptual
Hal-hal yang digambarkan dalam tingkat konseptual adalah :
- Semua entitas beserta atribut dan hubungannya
- Batasan data
- Informasi semantik tentang data
- Keamanan dan integritas informasi
Semua cara pandang pada tingkat eksternal berupa data yang
dibutuhkan oleh pemakai harus sudah tercakup di dalam tingkat
konseptual atau dapat diturunkan dari data yang ada. Deskripsi data
dari entitas pada tingkat ini hanya terdiri dari jenis data dan besarnya
atribut tanpa memperhatikan besarnya penyimpanan dalam ukuran
byte.

Gambar 2. Tingkatan arsitektur sistem basis data

2.2 Data Independence


Tujuan utama dari 3 tingkat arsitektur adalah memelihara kemandirian
data (data independence) yang berarti perubahan yang terjadi pada tingkat
yang lebih rendah tidak mempengaruhi tingkat yang lebih tinggi.
Ada 2 jenis data independence, yaitu
Physical Data Independence
Bahwa internal schema dapat diubah oleh DBA tanpa menggangu
conceptual schema.
Dengan kata lain physical data independence menunjukkan kekebalan
conceptual schema terhadap perubahan internal schema.
Logical Data Independence
Bahwa conceptual schema dapat diubah oleh DBA tanpa menggangu
external schema.
Dengan kata lain logical data independence menunjukkan kekebalan
external schema terhadap perubahan conceptual schema.
Prinsip data independence adalah salah satu hal yang harus diterapkan di
dalam pengelolaan sistem basis data dengan alasan-alasan sbb :
DBA dapat mengubah isi, lokasi, perwujudan dalam organisasi basis
data tanpa mengganggu program-program aplikasi yang sudah ada.
Pabrik / agen peralatan / software pengolahan data dapat
memperkenalkan produk- produk baru tanpa mengganggu program-
program aplikasi yang sudah ada.
Untuk memindahkan perkembangan program-program aplikasi
Memberikan fasilitas pengontrolan terpusat oleh DBA demi keamanan
dan integritas data dengan memperhatikan perubahan-perubahan
kebutuhan pengguna.
BAB 3
MODEL DATA

3.1 Pengertian Model Data


Model data adalah kumpulan konsep yang terintegrasi yang
menggambarkan data, hubungan antara data dan batasan-batasan data dala
suatu organisasi. Fungsi dari sebuah model data untuk merepresentasikan
data sehingga data tersebut mudah dipahami.
Untuk menggambarkan data pada tingkat eksternal dan konseptual
digunakan model data berbasis objek atau model data berbasis record.

Model Data Berbasis Objek


Model data berbasis objek menggunakan konsep entitas, atribut dan
hubungan antar entitas. Beberapa jenis model data berbasis objek yang
umum adalah :
Entity-Relationship Model
Model yang digunakan pada E-R model adalah berdasarkan pada
persepsi terhadap dunia nyata yang terdiri dari sekumpulan objek,
yang disebut entity (entitas) dan hubungan antar objek tersebut
disebut relationship. Setiap entitas mempunyai atribut yang
membedakannya dengan entitas lainnya. Contoh : entitas Pelajar,
mempunyai atribut nama, umur, alamat. Pemodelan data yang
digunakan pada model E-R menggunakan diagram E-R.
- Simbol-simbol pada diagram E-R terlihat dari tabel dibawah ini :
Symbol ERD Keterangan
menggambarkan entitas

menggambarkan atribut-
atribut entitas
menggambarkan hubungan
antara himpunan entitas

menghubungkan antar objek


dalam diagram E-R

- Cardinality Ratio
Cardinality ratio adalah menjelaskan hubungan batasan jumlah
keterhubungan satu entitas dengan entitas lainnya atau
banyaknya entitas yang bersesuaian dengan entitas yang lain
melalui relationship.
Jenis cardinality ratio yaitu :
One to One (1:1)
Hubungan satu entitas dengan satu entitas
1 1
Warga Paspor
memili
negara
ki
One to Many (1:M) atau Many to One (M:1)
Hubungan satu entitas dengan banyak entitas atau banyak
entitas dengan satu entitas.

1 M
Tim basket Pemain
berisi
basket

Many to Many (M:N)


Hubungan banyak entitas dengan banyak entitas
M N
mahasiswa matakuliah
belajar

- Derajat Relationship
Derajat relationship menyatakan jumlah entitas yang
berparrtisipasi di dalam suatu relationship.
Unary degree
Relasi yang terjadi dari sebuah himpunan entity ke
himpunan entity yang sama. Sering disebut sebagai
regulasi tunggal. Misalkan relasi yang terjadi pada pasien
dan sarat. Relasi ini menunjukkan adanya persyaratan
menjadi pasien rawat inap. Misalkan pasien hanya boleh
mengikuti rawat inap bila telah terdaftar menjadi pasien
rawat jalan.

Pasien Syarat

Binary degree
Relasi yang terjadi dari dua himpunan entity. Relasi ini paling
sering dan paling banyak digunakan. Contoh relasi biner
adalah relasi antara pasien dengan obat.

Mema
Pasien Obat
kai

Ternary degree
Relasi yang terjadi dari hubungan tiga buah entity. Contoh
relasi ini adalah hubungan antara pasien, tindakan dan
dokter.

Dilaku
Pasien Tindakan
kan

Dokter

N-nary degree
Relasi yang menghubungkan lebih dari tiga buah entity.
Dimasukkan dalam relasi multi entity. Bentuk relasi semacam
ini sedapat mungkin dihindari karena akan mengaburkan
derajat relasi yang ada dan juga akan menyebabkan desain
database yang semakin kompleks.
- Participation Constraint
Menjelaskan apakah keberadaan suatu entitas tergantung pada
hubungannya dengan entitas lain. Participation constraint terbagi
menjadi dua jenis yaitu :
Total Participation adalah keberadaan suatu entitas
tergantung pada hubungannya dengan entitas lain. Di dalam
diagram E-R digambarkan dengan dua garis penghubung
antar entitas dan relationship.
Partial Participation adalah keberadaan suatu entitas tidak
tergantung pada hubungan dengan entitas lain. Di dalam
diagram E-R di gambarkan dengan satu garis penghubung.

- Representasi dari entity set


Entity set direpresentasikan dalam bentuk tabel dan nama yang
unik. Entity set terbagi atas :
Strong entity set
Entity set yang satu atau lebih atributnya digunakan oleh
entity set lain sebagai key dan digambarkan dengan empat
persegi panjang.

Weak entity set


Entity set yang dependen terhadap strong entity set.
Keberadaan entity tersebut tergantung keberadaan entity lain
dan digambarkan dengan persegi panjang bertumpuk.

- Langkah-langkah membuat E-R diagram :


Tentukan entitas-entitas yang diperlukan.
Tentukan relationship antar entitas
Tentukan cardinality ratio dan participation constraint.
Tentukan atribut-atribut yang diperlukan dari tiap entitas.
Tentukan key di antara atribut-atribut
Hindari penamaan entitas, relationship, dan atribut yang
sama.
Contoh kasus penggambaran E-R diagram :
Suatu universitas mempunyai banyak mahasiswa. Setiap
mahasiswa tidak harus mengikuti suatu mata kuliah. Setiap
mahasiswa biasanya mengikuti beberapa mata kuliah. Suatu
mata kuliah diajarkan oleh seorang dosen dan seorang dosen
bisa mengajar beberapa mata kuliah. Dan seorang dosen harus
mengajarkan suatu mata kuliah. Pada entitas mahasiswa
diperlukan informasi tentang NPM, Nama_Mhs, Alamat_Mhs, dan
Jurusan. Sedangkan mata kuliah diperlukan informasi Kd_Mk,
Nm_Mk, Semester. Dan dosen memerlukan informasi tentang
Kd_Dosen, Nm_Dosen.
NPM Kd_Mk

Nama_Mh Nm_Mk
s
Alamat_M SKS
hs
Jurusan Semester

M M Mata kuliah
Mahasiswa Mempelaj
ari
M

Diajar

Dosen

Kd_Dosen

Nm_Dose
n

Gambar 3. ERD
Semantic Model
Semantic model hamper sama dengan E-R model namun relasi
antar obyek ridak dinyakan dengan symbol namun dengan kata-
kata (semantic). Untuk lebih jelas dapat dilihat dalam gambar
berikut :

Gambar 4. Semantic model


Object-Oriented Model
Pada OOM atau Object-Oriented Model berorientasikan pada objek
yang berbasiskan dari kumpulan objek. Setiap objek dapat berisi :
- Nilai yang disimpan dalam variable instant: dimana
variable tersebut melekat objek itu sendiri.
- Metode: adalah operasi yang berlaku pada objek yang
bersangkutan. Objek-objek yang memiliki tipe nilai & metode
yang sama dikelompokkan dalam satu kelas, disini mirip
dengan tipe data abstrak pada bahasa pemrograman.
- Sending a message : Sebuah objek dapat mengakses data
sebuah objek yang lain hanya dengan memanggil metode
dari objek tersebut.

Model Data Berbasis Record


Pada model data berbasis record, basis data terdiri dari sejumlah record
dalam bentuk yang tetap yang dapat dibedakan dari bentuknya. Ada 3
macam jenis model data berbasis record yaitu :
Model hirarkis atau biasa disebut model pohon ini menggunakan
pola hubungan dengan istilah orang tua dan anak. Terdapat juga
istilah simpul (bercirikan kotak atau lingkaran). Simpul yang berada
diatas yang terhubung ke simpul pada level dibawahnya disebut
orang tua. Setiap orang tua bisa memiliki satu (hubungan 1:1) atau
beberapa anak (hubungan 1:M), tetapi setiap anak hanya memiliki
satu orang tua. Simpul simpul yang dibawahi oleh simpul orang
tua disebut anak. Adapun hubungan antara anak dan orang tua
disebut cabang. Perbedaannya adalah, record-record
diorganisasikan sebagai tree (pohon) daripada graf.

Gambar 5. Model data hirarki


Kelebihan basis data hirarki :
Data dapat dengan cepat dilakukan retrieve
Iintegritas data mudah dilakukan pengaturan.

Kelemahan basis data hirarki :


Pengguna harus sangat familiar dengan struktur basis
data
Terjadi redundansi data.

Model jaringan direpresentasikan dengan sekumpulan record


(Pascal),dan relasi antar data yang direpresentasikan oleh record
dan link. Model ini menyerupai model hirarki. Perbedaannya
terdapat pada suatu simpul anak bisa memilki lebih dari satu orang
tua. Model ini bisa menyatakan hubungan 1:1 (satu arang tua
punya satu anak), 1:M (satu orang tua punya banyak anak),
maupun N:M (beberapa anak bisa mempunyai beberapa orangtua).
Pada model jaringan, orang tua disebut pemilik dan anak disebut
anggota. Sebagai Contoh lihat gambar dibawah ini:

Gambar 6. Model data jaringan

Kelebihan model data jaringan :


Data lebih cepat diakses.
User dapat mengakses data dimulai dari beberapa tabel.
Mudah untuk memodelkan basis data yang kompleks
Mudah untuk membentuk query yang kompleks dalam
melakukan retieve data
Kelemahan model data jaringan :
Struktur basis datanya tidak mudah untuk dilakukan
modifikasi
Perubahan struktur basis data yang sudah didefinisikan
akan mempengaruhi program aplikasi yang mengakses
basis data
User harus memahami struktur basis data
Model relasional berbeda dengan model jaringan & hirarki.Pada
model data relasional pemodelan menggunakan tabel untuk
merepresentasikan data & relasi antar data. Setiap tabel terdiri
atas kolom, dan setiap kolom mempunyai nama variable
tertentu.Inti dari model ini adalah relasi, yang dimisalkan sebagai
himpunan dari record. Pada model relasional, skema atau deskripsi
data pada model relasi ditentukan oleh nama, nama dari tiap field
(Atribut atau kolom), dan tipe dari tiap field.

- Kelebihan model data relational :


Data sangat cepat diakses
Struktur basis data mudah dilakukan perubahan.
Ddata direpresentasikan secara logic
User tidak membutuhkan bagaimana data disimpan
Mudah untuk membentuk query yang kompleks dalam
melakukan retrieve data
Mudah untuk mengimplementasikan integritas data, ata
lebih akurat
Mudah untuk membangun dan memodifikasi program
aplikasi
Telah dikembangkan Structure Query Language (SQL)
- Kelemahan model data relational
Kelompok informasi atau tabel yang berbeda harus
dilakukan joined untuk melakukan retrieve data
User harus familiar dengan relasi antar tabel
User harus belajar SQL
BAB 4
RELATIONAL MODEL

4.1 Pengertian Relational Model


Relasi atau dikenal sebagai relationship dalam sistem basis data
adalah merupakan suatu hubungan antara entitas satu dengan entitas yang
lain. Relasi direpresentasikan dalam sebuah tabel dengan kolom-kolom dan
baris-baris. Pada model relasional, relasi digunakan untuk menyimpan
informasi mengenai objek-objek yang direpresentasikan dalam sebuah basis
data. Relasi ini digambarkan dalam bentuk tabel dua dimensi. Contohnya
mengenai informasi pegawai-pegawai yang bekerja di perusahaan X
direpresentasikan pada relasi PEGAWAI yang mengandung informasi nomor
induk pegawai, nama, alamat, gaji dan kode divisi tempat pegawai bekerja.

Karakteristik Relasi
Karakteristik dalam relasi merupakan dasar bagi penyusunan struktur
relasi yang akan digunakan sebelum penyimpanan data dapat dilakukan.
Karakteristik relasi tersebut yaitu:
Harus mempunyai nilai tunggal (single value) dan nilai yang tidak
dapat dibagi lagi (atomic value)
Semua elemen data harus mempunyai tipe dan ukuran sama
Masing-masing atribut dalam sebuah relasi mempunyai nama yang
unik
Dalam sebuah relasi tidak ada dua record data yang identik

Istilah-istilah dalam model basis data relasional :


Record : Sebuah baris dalam suatu relasi. Disebut juga tuple
Cardinality : Banyaknya record dalam sebuah relasi.
Atribut : Suatu kolom dalam sebuah relasi. Setiap entitas
pasti memiliki atribut yang mendeskrpsikan karakter dari entitas
tersebut. Penentuan atau pemilihan atribut-atribut yang relevan bagi
sebuah entitas merupakan hal penting dalam model data. Atribut
dapat dikelompokan sebagai berikut:
- Atribut key, adalah satu atau gabungan dari beberapa atribut yang
dapat membedakan semua baris data dalam tabel secara unik
(tidak boleh ada dua atau lebih bari data dengan nilai yang sama
untuk atribut tertentu)
- Atribut deskriptif, merupakan atribut yang bukan merupakan
anggota dari primary key
- Atribut sederhana, adalah atribut atomic yang tidak dapat dipilah
lagi, contoh: NPM, Nama
- Atribut komposit, adalah atribut yang masi bisa diuraikan lagi
menjadi sub-atribut yang masing-masing memiliki makna. Contoh:
Alamat Alamat, kota, propinsi, kodepos
- Atribut bernilai tunggal, adalah atribut yang mimiliki paling banyak
satu nilai untuk setiap baris data. Contoh: NPM, Nama, Tanggal
Lahir hanya dapat berisi satu nilai untuk seorang mahasiswa
- Atribut bernilai banyak, ditujukan pada atribut yang dapat diisi
dengan lebih dari satu nilai, tapi jenisnya sama. Contoh pada tabel
mahasiswa dapat ditambahkan atribut hobi, karena seorang
mahasiswa dapat memiliki lebih dari satu hobi.
- Atribut harus bernilai, adalah atribut yang tidak boleh kosong atau
harus ada nilainya. Nilai null digunakan untuk mengisi atribut yang
nilainya belum siap atau tidak ada. Contoh: NPM, nama
Domain : Batasan nilai dalam atribut dan tipe datanya. Domain
memiliki pengertian yang sama dengan tipe data, namun domain lebih
ditekankan pada batas-batas nilai yang diperbolehkan pada suatu
atribut. Contoh: data sks bertipe data integer, namun tidak ad asks
yang bernilai negative. Berarti domain nilai dari sks adalah integer > 0.
Derajat/Degree: Banyaknya kolom dalam relasi
Candidate Key : Atribut atau sekumpulan atribut yang unik yang
dapat digunakan untuk membedakan suatu record
Primary Key: Salah satu dari candidate key yang dipilih atau digunakan
untuk membedakan suatu record
Foreign Key : Sebuah kumpulan field dalam satu relasi yang
digunakan untuk merefer (menunjuk) ke suatu baris (tuple) pada
relasi yang lain (harus berkorespondensi dengan primary key pada
relasi yang kedua), seperti: logical pointer
Alternate Key: Candidate key yang tidak dipilih menjadi Primary Key

Domain

NPM *) Nama Jenis_Kela


min
200943500 Andi L
Relasi
123
200943500 Beni L
234
200943500 Citra P
345
Domain

Degree/Der
ajat

Primary Alternate Candidate


Key Key Key

NPM *) Nama Jenis_Kela


min
200943500 Andi L
123
200943500 Beni L
234
200943500 Citra P
345

Aturan-aturan kunci relasi


Integritas kesatuan (entity integrity): Elemen yang dipilih sebagai
primary key (kunci primer) tidak boleh null. Aturan ini menjamin bahwa
semua record yang ada dalam basis data akan dapat diakses karena
semua record dapat diidentifikasi berdasarkan kunci yang unik.
Contoh:
Tabel Mahasiswa
NPM *) Nama Jenis_Kela
min
200943500 Andi L
123
200943500 Beni L
234
200943500 Citra P
345

*) Primary Key
Integritas Referensial (referential integrity): Dalam suatu relasi
dalam basis data yang dihubungkan oleh kunci luar/kunci penghubung,
maka dalam relasi tersebut harus menjamin bahwa elemen data pada
Foreign key harus sama/sesuai dengan elemen data di relasi/table
lainnya dimana foreign key berfungsi sebagai primary key.
Contoh:
Tabel Mahasiswa
NPM *) Nama Jenis_Kela
min
200943500 Andi L
123
200943500 Beni L
234
200943500 Citra P
345

Foreign
Tabel KRS
Key
NPM Jumlah_Mat Jumlah_SKS
Kul
200943500 7 21
123
200943500 6 18
234
200943500 6 19
345
200943500 7 19
456
Varian Relasi
Relasi berfungsi sebagai penghubung antar entity. Entiti yang tidak
berelasi tidak hanya terdiri dari dua relasi saja. Tetapi entity bisa berelasi
dengan dirinya sendiri atau berelasi lebih dari dua entity. Relasi ini dapat
dikelompokan menurut varian sebagai berikut:

Redudansi dan Duplikasi


Redudansi
Salah satu dari perancangan lojik basis data adalah meniadakan
redundansi. Redundansi terjadi jika fakta yang sama disimpan lebih
dari sekali. Akibat dari redudansi adalah menyebabkan masalah pada
waktu update atau memperbarui data, ruang penyimpanan yang
boros, dan dapat menyebabkan ketidak konsistennya data. Tabel
berikut merupakan contoh redudansi.
Tabel redudansi
NPM KODE_MK SKS NILAI
200943500 MK_01 3 A
123
200943500 MK_04 3 B
234
200943500 MK_02 2 A
234
200943500 MK_02 2 A
345
200943500 MK_03 3 B
456

Terjadinya pengulangan penulisan pasangan KODE_MK dan SKS yang


sama misalkan untuk MK_02 (ditulis 2kali)
Duplikasi
Duplikasi berbeda dengan redundansi. Kadang-kadang duplikasi
diperlukan dalam basis data sementara redundansi harus dihindari.
Contoh duplikasi adalah sebaga berikut.

Tabel duplikasi
NPM KODE_MK NIlAI
200943500 MK_01 A
123
200943500 MK_04 B
234
200943500 MK_02 A
234
200943500 MK_02 A
345
200943500 MK_03 B
456

Kamus Data
Kamus data adalah suatu daftar data elemen yang terorganisir dengan
definisi yang tetap dan sesuai dengan sistem, sehingga user dan analis
sistem mempunyai pengertian yang sama tentang input, output, dan
komponen data strore.
Kamus data digunakan untuk:
Pada tahap analisis, sebagai alat komunikasi antara analis system
dengan pemakai system tentang data yang mengalir dalam system,
yaitu tentang data yang masuk ke system dan tentang informasi yang
dibutuhkan oleh pemakai system
Pada tahap perancangan system, digunakan untuk merancang input,
laporan-laporan database.

Kamus data berisi Nama arus data, alias, bentuk data, arus data,
penjelasan atau keterangan-keterangan, periode terjadinya transaksi,
volume arus data yang mengalir dalam periode tertentu, struktur data.
Berikut penjelasan lebih rinci mengenai elemen kamus data :
- Nama arus data: Karena kamus data dibuat berdasarkan arus data
yang mengalir di DAD, maka nama arus data juga harus dicatat di
kamus data.
- Alias: alias atau nama lain dari data dapat dituliskan bila nama ini ada.
Alias perlu ditulis karena data yang sama mempunyai nama yang
berbeda untuk orang atau departemen satu dengan yang lainnya.
Misalnya bagian pembuat faktur dan langganan menyebut bukti
penjualan.sebagai faktur, sedang bagian gudang menyebutnya
sebagai tembusan permintaan persediaan. Balk faktur dan
tembusan permintaan persediaan ini mempunyai struktur data yang
sama, tetapi mempunyai struktur yang berbeda.
- Bentuk data: bentuk dari data yang mengalir dapat berupa
dokumen dasar atau formulir, dokumen hasil cetakan komputer,
laporan tercetak, tampilan di layar monitor, variable, parameter,
field. Bentuk data perlu dicatat dalam kamus data karena dapat
digunakan untuk mengelompokkan kamus data ke dalam
kegunaannya sewaktu perancangan sistem. Kamus data yang
mencatat data yang mengalir dalam bentuk dokumen dasar atau
formulir akan digunakan untuk merancang bentuk input sistem.
Kamus data yang mencatat data yang mengalir dalam bentuk
laporan tercetak dan dokumen hasil cetakan komputer akan
digunakan untuk merancang output yang akan dihasilkan oleh
sistem. Kamus data yang mencatat data yang mengalir dalam
bentuk tampilan di layar monitor akan digunakan juga untuk
merancang tampilan layar yang akan dihasilkan oleh sistem. Kamus
data yang mencatat data yang mengalir dalam bentuk parameter
dan variabel akan digunakan untuk merancang proses dari program.
- Arus Data: menunjukkan darimana data mengalir dan kemana data
akan menuju. Keterangan arus data ini perlu dicatat di kamus data
supaya memudahkan mencari arus data di DFD (Data Flow
Diagram)
- Penjelasan: untuk lebih memperjelas arus data yang dicatat di
kamus data, maka bagian penjelasan dapat diisi dengan
keterangan-keterangan tentang arus data tersebut. Contoh : nama
dari arus data adalah TEMBUSAN PERMINTAAN PERSEDIAAN, maka
dapat lebih dijelaskan sebagai tembusan dari faktur penjualan
untuk meminta barang dari gudang.
- Periode: menunjukkan kapan terjadinya arus data ini Periode perlu
dicatat di KD karena dapat digunakan untuk mengidentifikasikan
kapan input data harus dimasukkan ke sistem, kapan proses dari
program harus dilakukan dan kapan laporan-laporan harus
dihasilkan.
- Volume: Volume yang perlu dicatat di kamus data adalah tentang
volume rata-rata dan volume puncak dari arus data. Volume rata-
rata menunjukkan banyaknya rata-rata arus data yang mengalir
dalam satu periode tertentu dan volume puncak menunjukkan
volume yang terbanyak. Volume ini digunakan untuk
mengidentifikasikan besarnya simpanan luar yang akan digunakan,
kapasitas dan jumlah dari alat input, alat pemroses dan alat output.
- Struktur Data: Struktur data menunjukkan arus data yang dicatat di
KD terdiri dari item-item data apa raja.
BAB 5
KETERGANTUNGAN FUNGSI
(FUNCTIONAL DEPENDENCIES)

Ketergantungan fungsional merupakan salah satu konsep yang sangat


penting dalam desain skema relasional, karena ini secara formal dapat
mendefinisikan bentuk-bentuk relasi yang normal (normalisasi data).

5.1 Definisi Ketergantungan Fungsional


Definisi ketergantungan fungsional atau functional Dependencies adalah :
Diberikan dua atribut, A dan B, B dikatakan ketergantungan fungsional dari
A jika setiap nilai A mempunyai tepat satu nilai terhadap B (mempunyai
fungsi satu-satu dan onto). A dan B dapat berbentuk gabungan, dapat juga
keduanya merupakan kelompok dua atau lebih atribut dari satu atribut.

Ketergantungan fungsional dapat menentukan detail dari pembentukan


semua atribut dalam relasi dan dapat menarik kesimpulan bagaimana
menggabungkan atribut yang satu dengan yang lain. Ketergantungan fungsi
tidak dapat membuktikannya hanya dengan melihat fakta. Dalam hal ini
relasi dan jika tidak nilai sama yang datang dari dua atribut atau lebih dari
satu tupel.

A B (Bentuk
matematika)

B (Bentuk graph atau diagram)


A
Gambar diatas menyatakan atribut B adalah ketergantungan fungsi
terhada atribut A

Ketergantungan fungsi harus dapat menarik kesimpulan dari bentuk dasar


dari pembentukan atribut.

Ketergantungan fungsional digambarkan untuk menggambarkan atau


mendeskripsikan bentuk normal atas suatu relasi.
Contoh:
R(A,B,C)
A B C
1 4 C
1
1 5 C
1
2 7 C
2

Apakah A B?
t1(A) = t2(A), tetapi t1(B) t2(B)
maka A B
Apakah A C?
t1(A) = t2(A) dan t1(C) = t2(C)
maka A C
suatu ketergantungan fungsi X Y disebut trivia jika Y X
contoh :
XX
X, Y X
X, Y Y
X, Y, Z X, Z
X, Y, Z Z
X, Y, Z X, Y, Z
Aturan Amstrong pada ketergantungan fungsional
Reflexive, Jika Y X maka X Y
Augmentation, jika X Y, maka (X, Z) (Y, Z)
Transitive, jika X Y dan Y Z, maka X Z
Decompositon, jika X (Y, Z), maka X Y dan X Z
Union, jika X Y dan X Z maka X (Y, Z)
Pseudotranstivity, jika X Y dan (Z, Y) W, maka (X, Z) W

Ketergantungan Fungsional, atribut Y pada relasi R dikatakan


tergantung fungsional pada atribut X (R.X R.Y), jika dan hanya jika setiap
nilai X pada relasi R mempunyai tepat satu nilai Y pada R. (R.X R.Y)
Contoh
Mata_Kuliah NPM Nama NILAI
Sistem Operasi 200943500123 Anik Widyanti A
Sistem Basis 200943500234 Aries Dharma B
Data
Kalkulus 200943500345 Basuki A
Pratama
Kewirausahaan 200943500456 Citra Purnama A
..

Berdasarkan tabel nilai maka ketergantunga fungsional yang dapat di


ajukan berdasarkan intuisi, fakta adalah:
NPM Nama
Yang berarti atribut Nama hanya bergantung pada atribut NPM.
{Mata_Kuliah, NPM} NILAI
Yang berarti bahwa atribut NILAI bergantung pada atribut Mata_Kuliah
dan NPM secara bersama-sama.
Ketergantungan Fungsinal Penuh, atribut Y pada relasi R dikatakan
tergantung fungsional penuh pada atribut X pada relasi R, jika Y tidak
tergantung pada subset dari X (bila X adalah key gabungan).
Contoh pada tabel pelanggan dengan atribut sebagai berikut:
Pelanggan (KODE_PLG, Nama, Kota, No_Fax)
Maka ketergantungann fungsional penuh dapat dijelaskan sebagai
berikut:
1. {KODE_PLG, Kota}No_Fax,
2. KODE_PLG No_Fax
Kondisi 1, No_Fax bergantung pada {KODE_PLG, Kota} dan juga pada
kondisi 2, bergantung pada KODE_PLG, yang merupakan bagian kondisi 1,
maka No_Fax tidak memiliki dependensi sepenuhnya terhadap
{KODE_PLG, Kota}, dengan kata lain No_Fax hanya memiliki dependensi
penuh terhadap KODE_PLG.

Ketergantungan Total, suatu atribut Y mempunyai dependensi total


terhadap atribut X jika: Y mempunyai depedensi fungsional terhadap X, X
mempunyai depedensi fungsional terhadap Y. (XY)
Contoh
NPM Nama Alamat TGL_LAHIR
200943500123 Anik Widyanti Cijantung, 16/09/1992
Jakarta Timur
200943500234 Aries Dharma Ranco 11/09/1991
200943500345 Basuki Pasar Minggu 07/12/1992
Pratama
200943500456 Citra Purnama Jagakarsa 18/04/1992

NPM dan Nama merupakan dependensi total NPM Nama, dengan


asumsi tidak ada nama mahasiswa yang sama.

Ketergantungan Transitif, atribut Z pada relasi R dikatakan tergantung


transitif pada atribut X, jika atribut Y tergantung pada atribut X pada
relasi R dan atribut Z tergantung pada atribut Y pada relasi R. (X Y, Y
Z, maka X Z)
Contoh
No_Faktur KD_Pelanggan Pelanggan
Maka
No_Faktur Pelanggan

5.2 Manfaat ketergantungan fungsi pada dekomposisi


1. Lossless joint decomposition, mendapatkan dekomposisi yang tidak
kehilangan data/informasi
2. No Redudancy, mendapatkan skema relasi yang tidak mengandung
redudansi
3. Dependency preservation, terjaminnya pemeliharaan ketegantungan
sehingga dapat mengatasi masalah update anomaly

Uji lossless decomposition


Misal diketahui skema relasi R didekomposisi menjadi gugus relasi {R1,
R2, R3, R4, , Rn}, maka dekomposisi ini disebut Lossless Join
Decomposition jika kondisi R1 R2 R3 Rn Ri dipenuhi
sekurang-kurangnya untuk 1 nilai i, dimana 1 i n. Dengan kata lain,
jika diketahui skema relasi R didekomposisi menjadi ugus relasi {R1, R2},
maka dekomposisi ini disebut Lossless Join Decomposition jika dipenuhi
salah satu kondisi :
R1 R2 R1 atau
R1 R2 R2
Langkah-2 Uji Lossless-joint Decomposition :
1. Uji Dekomposisi
R1 R2 Rn = R

2. Uji loseless join


Menggunakan sifat ketergantungan fungsional

Contoh:
Diketahui skema relasi R=(A,B,C,D,E,F,G,H) didekomposisi menjadi :
R1=(A,B,C,D,G) dan R2=(B,D,E,F,H). Ketergantungan fungsi pada R yang
berlaku adalah :
(1)B A,G
(2)E D,H
(3)A E,C
(4)D F
Ujilah apakah dekomposisi {R1,R2} tersebut lossless atau lossy ?

1. Uji Dekomposisi
R1 R2 = (A,B,C,D,G) (B,D,E,F,H) = (A,B,C,D,E,F,G,H) = R
Maka terbukti bahwa {R1,R2} dekomposisi dari R
2. Uji loseless
R1 R2 = (A,B,C,D,G) (B,D,E,F,H) = (B,D)
Akan dibuktikan bahwa paling sedikit satu kondisi berikut dipenuhi :
R1 R2 R1 ; (B,D) (A,B,C,D,G) atau
R1 R2 R2 ; (B,D) (B,D,E,F,H)
Dari ketergantungan fungsi (1) B A,G maka
(5) B,D A,G,D (augmentasi)
(6) B,D B,D (reflexive)
Jadi
(7)B,D A,B,D,G
Ketergantungan fungsi (1) B A,G maka
(8)B A
(9)B G
Dari ketergantungan fungsi (3) A E,C maka
(10) A E dan
(11) AC
Dari ketergantungan fungsi (8) B A
Dan ketergantungan fungsi (11) A C maka
(12) B C (transitif)
Dan (13) B,D C,D (augmentasi)
Dari ketergantungan fungsi (7) dan (13)
B,D A,B,C,D,G
Maka terrbukti {R1, R2} lossless

Uji dependency preservation


Misalkan F adalah gugus ketergantungan fungsional pada skema relasi R,
maka semua ketergantungan fungsi yang mungkin dapat diturunkan dari
F dengan hokum ketergantungan fungsi tersebut : Closure dari F atau
dapat ditulis F+.
Amstrongs Rule dapat dimanfaatkan untuk menentukan closure dari F
Contoh:
Diketahui R=(A, B, C, D)
F= {A B, B C, A C, C D}maka:
A D (transitif) dan
B D (transitif)
Sehingga {A B, B C, A C, C D, A D, B D} F+.
Closure ketergantungan fungsi F+ berguna untuk uji dependency
preservation.
Misal skema relasi R dengan himpunan ketergantungan fungsional F
didekomposisi menjadi R1,R2,R3,,Rn. Dan F1,F2,F3,,Fn adalah
himpunan ketergantungan fungsional yang berlaku di R1,R2,R3,,Rn
maka dekomposisi tersebut dikatakan memenuhi sifat Dependency
Preservation apabila berlaku :
(F1 F2 F3 Fn)+ = F+
Dependency Preservation (Pemeliharaan Ketergantungan) merupakan
kriteria yang menjamin keutuhan relasi ketika suatu relasi didekomposisi
menjadi beberapa tabel. Sehingga diharapkan tidak terjadi inkonsistensi
atau anomali ketika dilakukan update data.
Contoh :
Diketahui skema relasi R=(A,B,C) dengan Ketergantungan fungsi : A B ;
BC
Didekomposisi menjadi R1=(A,B) dan R2=(B,C)
a. Apakah dekomposisi tsb Lossless-Joint ?
b. Apakah dekomposisi tsb memenuhi Dependency Preservation ?
jawab
a. R1 R2 = (A,B) (B,C) = (A,B,C) = R
R1 R2 = (A,B) (B,C) = B
Lossless jika B (A,B) atau B (B,C).
Karena diketahui B C maka BB BC atau B BC (Augmentasi).
Jadi dekomposisi tsb Lossless.
b. R=(A,B,C) dan F = {AB, BC}.
Karena AB dan BC maka AC. Maka dapat dibentuk closure
F+={AB, BC,AC}.
R1=(A,B) dan F1={AB}. Karena hanya AB yang berlaku di R1.
R2=(B,C) dan F2={BC}. Karena hanya BC yang berlaku di R2.
F1 F2 = {AB,BC}. Karena AB dan BC maka AC.
Sehingga (F1 F2 )+={AB,BC,AC}=F+
Jadi dekomposisi tsb memenuhi Dependency Preservation.
BAB 6
NORMALISASI BASIS DATA

6.1 Pengertian Normalisasi


Normalisasi basis data umumnya dilakukan untuk basis data dalam skala
yang besar. Proses ini akan sangat membantu dalam menghemat ruang
yang digunakan oleh tabel dan mempercepat proses pencarian data.
Normalisasi merupakan teknik bottom-up untuk perancangan basis data
yang biasanya berdasarkan system yang sudah ada.
Basis data tanpa perancangan yang baik akan menghasilkan kondisi yang
buruk seperti data yang tersimpan di beberapa tempat (file atau record),
ketidakmampuan untuk menghasilkan informasi tertentu, terjadi kehilangan
informasi, adanya redudansi (pengulangan) data sehingga menggunakan
memori yang lebih banyak dan menyulitkan pada saat updating data,
timbulnya null value. Maka untuk mengatasi kondisi seperti ini diperlukan
normalisasi.
Normalisasi adalah suatu teknik untuk mengorganisasikan data
menggunakan aturan-aturan tertentu ke dalam table-tabel untuk memenuhi
kebutuhan pemakai di dalam suatu ogranisasi. Proses yang terjadi dalam
normalisasi yaitu pengelompokan data elemen menjadi table-table yang
menunjukkan entity dan relasinya. Selanjutnya akan diuji pada beberapa
kondisi, apakah ada kesulitan pada saat menambah / insert, menghapus /
delete, mengubah / update, dan membaca / retrieve pada suatu basis data.
Bila ada kesulitan pada pengujian tersebut, maka relasi tersebut dipecahkan
menjadi beberapa table lagi, sehingga diperoleh basis data yang optimal.
Tujuan dari normalisasi adalah untuk menhilangkan kerangkapan data,
mengurangi kompleksitas, memudahkan pemodifikasian data.

Tahapan normalisasi :

Bentuk tidak
normal (Un-

..................Menghilangkan atribut bernilai


jamak
Bentuk normal
pertama (1NF)

..................Menghilangkan ketergantungan
parsial
Bentuk normal
pertama (2NF)

..................Menghilangkan ketergantungan
transitif
Bentuk normal
pertama (3NF)

.................Menghilangkan anomali tersisa yang disebabkan ketergantungan

fungsional
Bentuk normal
pertama (BCNF)

..................Menghilangkan ketergantungan bernilai


jamak
Bentuk normal
pertama (4NF)

..................Menghilangkan anomali-anomali
tersisa
Bentuk normal
pertama (4NF)
6.2 Anomali / Penyimpangan
Anomaly adalah suatu kondisi dimana terjadi inkonsistensi data pada saat
dilakukan proses insert, update, dan delete.
Insertion Anomali
Penyimpangan yang terjadi akibat operasi insert record/tuple pada
sebuah relasi/table.
Sebuah Anomali Insert terjadi ketika atribut tertentu tidak dapat
dimasukkan ke dalam basis data tanpa kehadiran atribut lainnya.
Sebagai contoh kita tidak dapat menambahkan jenis kursus baru
jika tidak ada siswa yang mendaftar jenis kursus tersebut.
Kode_sisw Kode_kurs Nama_muri Alama Jenis_Kurs
a us d t us
S21 9201 Jimi Jakarta Akuntansi
S21 9267 Jimi Jakarta Bhs.Jepang
S24 9267 Sandi Bekasi Komputer
S30 9201 Riri Bogor Akuntansi
S30 9322 Riri Bogor Matematika

Update anomaly
Update anomaly terjadi ketika satu atau beberapa data yang bernilai
ganda diperbarui namun tidak semua. Sebagai contoh, jika kita
memperbarui alamat Jimi maka harus memperbarui semua alamat Jimi.
Kode_sisw Kode_kurs Nama_muri Alama Jenis_Kurs
a us d t us
S21 9201 Jimi Jakarta Akuntansi
S21 9267 Jimi Jakarta Bhs.Jepang
S24 9267 Sandi Bekasi Komputer
S30 9201 Riri Bogor Akuntansi
S30 9322 Riri Bogor Matematika

Delete anomaly
Delete anomaly terjadi ketika atribut tertentu hilang karena
penghapusan atribut lainnya. Sebagai contoh, jika Riri berhenti kursus
maka penghapusan atribut tersebut akan menyebabkan semua
informasi tentang kursus hilang.
Kode_sisw Kode_kurs Nama_muri Alama Jenis_Kurs
a us d t us
S21 9201 Jimi Jakarta Akuntansi
S21 9267 Jimi Jakarta Bhs.Jepang
S24 9267 Sandi Bekasi Komputer
S30 9201 Riri Bogor Akuntansi
S30 9322 Riri Bogor Matematika

6.3 Normalisasi bentuk pertama (1NF/First Normal Form)


Bentuk normal pertama (1NF) sampai dengan normal ketiga (3NF),
merupakan bentuk normal yang umum dipakai. Hal ini berarti pada
kebanyakan relasi, bila ketiga bentuk normal tersebut telah dipenuhi, maka
persoalan anomali tidak akan muncul lagi didalam kita melakukan
perancangan basis data.
Sebuah model data dikatakan memenuhi bentuk normal pertama apabila
setiap atribut yang dimilikinya memiliki satu dan hanya satu nilai. Apabila
ada atribut yang memiliki nilai lebih dari satu, atribut tersebut adalah
kandidat untuk menjadi entitas tersendiri. Maka normalisasi bentuk pertama
akan membuat setiap baris berisi kolom dengan jumlah yang sama dan
setiap kolom hanya mengandung satu nilai.

Laporan Proyek Manajemen

Kode Proyek : PC010

Nama Proyek : Sistem Pensiun

Manajer Proyek : K Stanley Biaya Proyek :


250.000.000

Kode Staf Nama Staf Kode Dept Nama Dept. Bayaran


/Jam
Diberikan
S10001 sebuah Laporan
L AbbaProyekL004
ManajemenITsebagai berikut :
Rp.22.000
S10030 A Willy L023 Pensiun
Rp.18.500
S21010 P David L004 IT
Rp.21.000
S00232 R Adit L003 Program
Calculated
fields

Langkah 1 :
Ubah laporan ke dalam bentuk Unormalised Form (UNF). Buat kolom
untuk semua item dalam laporan kecuali calculated fields. Dalam hal
ini total staf dan rata-rata bayaran.
Masukkan data ke dalam tabel. (Dalam contoh ini data yang
dimasukkan termasuk dari laporan proyek yang lain).
Identifikasi field kunci untuk tabel dan garis bawahi.

Unnormalised Form (UNF)


Kd_P Nama_Pr Manajer Biaya_Proy Kd_St Nama Kd_ Nama_ Bayar
roye oyek _Proyek ek af _Staf De Dept an per
k pt jam
PC01 Sistem K 250.000.00 S100 L L00 IT 22.00
0 pension Stanley 0 01 Abba 4 0
PC01 Sistem K 250.000.00 S1003 A L02 Pensiun 18.500
0 pension Stanley 0 0 Willy 3
PC01 Sistem K 250.000.00 S2101 P L00 IT 21.000
0 pension Stanley 0 0 David 4
PC01 Sistem K 250.000.00 S0023 R Adit L00 Program 26.000
0 pension Stanley 0 2 3
PC04 System R Jef 200.000.00 S100 L L00 IT 18.00
5 gaji 0 01 Abba 4 0
PC04 System R Jef 200.000.00 S310 T L02 Databa 25.50
5 gaji 0 02 Chris 8 se 0
PC04 System R Jef 200.000.00 S100 B L00 IT 21.75
5 gaji 0 10 Jones 4 0
PC04 System R Jef 200.000.00 S132 W L00 Gaji 17.00
5 gaji 0 10 Riki 8 0
PC06 Sistem B Curtis 150.000.00 S310 T L02 Databa 23.25
4 HR 0 02 Chris 8 se 0
PC06 Sistem B Curtis 150.000.00 S210 P L00 IT 17.50
4 HR 0 10 David 4 0
PC06 Sistem B Curtis 150.000.00 S100 B L00 HR 16.50
4 HR 0 34 Jamie 9 0
Langkah 2 :
Identifikasi atribut yang berulang/ganda.
Hilangkan atribut ganda ke dalam tabel baru .

Tabel Proyek
Kd_Proyek Nama_Proy Manajer_Pr Biaya
ek oyek Proyek
PC010 Sistem K Stanley 250.000.000
Pensiun
PC045 Sistem Gaji R Jef 200.000.000
PC064 Sistem HR B Curtis 150.000.000
Tabel Proyek_Staf
Kd_Proye Kd_Staf Nama_St Kd_Dept Nama_De Bayaran
k af pt per jam
PC010 S10001 L Abba L004 IT 22.000
PC010 S10030 A Willy L023 Pensiun 18.500
PC010 S21010 P David L004 IT 21.000
PC010 S00232 R Adit L003 Program 26.000
PC045 S10001 L Abba L004 IT 18.000
PC045 S31002 T Chris L028 Database 25.500
PC045 S10010 B Jones L004 IT 21.750
PC045 S13210 W Riki L008 Gaji 17.000
PC064 S10001 T Chris L028 Database 23.250
PC064 S10030 P David L004 IT 17.500
PC064 S21010 B Jamie L009 HR 16.500

6.4 Normalisasi bentuk kedua (2NF/Second Normal Form)


Persyaratan bentuk normal kedua (2NF) adalah memenuhi bentuk normal
kesatu (1NF) dan atribut bukan kunci haruslah bergantung secara
fungsi pada kunci utama/primary key. Dalam 2NF tiap tabel harus
ditentukan kunci-kunci atributnya. Kunci atribut harus unik dan dapat
mewakili atribut lain yang menjadi anggotanya.
Pada contoh tabel Proyek yang memenuhi normal pertama (1 NF),
terlihat bahwa Kd_Proyek merupakan Primary Key (PK).
Kd_Proyek Nama_Proyek, Manajer_Proyek, Biaya_Proyek.
Artinya adalah bahwa atribut Nama_Proyek, Manajer_Proyek,
Biaya_Proyek bergantung pada Kd_Proyek.
Tetapi Kd_Proyek Kd_Staf. Artinya adalah bahwa atribut
Kd_Staf tidak bergantung pada Kd_Proyek.

Untuk memenuhi normal kedua, maka pada relasi mahasiswa tersebut


dipecah menjadi 2 relasi sebagai berikut:

Tabel Proyek
Kd_Proyek Nama_Proyek Manajer_Proy Biaya_Proyek
ek
PC010 Sistem Pensiun K Stanley 250.000.000
PC045 Sistem Gaji R Jef 200.000.000
PC064 Sistem HR B Curtis 150.000.000

Tabel Proyek_Staf
Kd_Proy Kd_Staf Bayaran_per
ek _jam
PC010 S10001 22.000
PC010 S10030 18.500
PC010 S21010 21.000
PC010 S00232 26.000
PC045 S10001 18.000
PC045 S31002 25.500
PC045 S10010 21.750
PC045 S13210 17.000
PC064 S10001 23.250
PC064 S10030 17.500
PC064 S21010 16.500

Tabel Staf_Dept
Kd_Sta Nama_St Kd_Dept Nama_De
f af pt
S10001 L Abba L004 IT
S10030 A Willy L023 Pensiun
6.5 Bentuk Normal
S21010 P David L004 IT Ketiga (3 NF/Third
S00232 R Adit L003 Program
S31002 T Chris L028 Database Normal Form)
S10010 B Jones L004 IT
Definisi Bentuk Normal
S13210 W Riki L008 Gaji
S21010 B Jamie L009 HR Ketiga (3 NF) adalah
memenuhi bentuk 2 NF (normal kedua). Menghilangkan atribut yang
memiliki dependensi transitif.
Pada tabel Proyek_Staf : Kd_Proyek, Kd_Staf Bayaran_per_jam.
Hal ini berarti bayaran_per_jam memiliki kebergantungan pada
kd_proyek dan Kd_staf.
Pada tabel staf_dept : Kd_Staf Nama_Staf. Kd_Dept Nama_Dept.
Tetapi Kd_Staf Nama_Dept yang berarti Nama_Dept tidak
bergantung langsung pada Kd_Staf. Hal ini menunjukkan Nama_Dept
memiliki dependensi transistif terhadap primary key.

Sehingga untuk memenuhi bentuk 3 NF, relasi di atas didekomposisi


menjadi dua buah relasi sebagai berikut:
Tabel Proyek
Kd_Proyek Nama_Proyek Manajer_Proye Biaya_Proyek
k
PC010 Sistem Pensiun K Stanley 250.000.000
PC045 Sistem Gaji R Jef 200.000.000
PC064 Sistem HR B Curtis 150.000.000

Tabel Proyek_Staf
Kd_Proy Kd_Staf Bayaran per
ek jam
PC010 S10001 22.000
PC010 S10030 18.500
PC010 S21010 21.000
PC010 S00232 26.000
PC045 S10001 18.000
PC045 S31002 25.500
PC045 S10010 21.750
PC045 S13210 17.000
PC064 S10001 23.250
PC064 S10030 17.500
PC064 S21010 16.500

Tabel Staf_Dept
Kd_Sta Nama_Sta Kd_Dept
f f
S10001 L Abba L004
S10030 A Willy L023
S21010 P David L004
S00232 R Adit L003
S31002 T Chris L028
S10010 B Jones L004
S13210 W Riki L008

Tabel Departemen
Kd_Dept Nama_Dept
L004 IT
L023 Pensiun
L003 Program
L028 Database
L008 Gaji
L009 HR

6.6 Bentuk Normal Boyce-Codd (BCNF)


Bentuk BCNF adalah jika memenuhi bentuk 3 NF (normal ketiga) dan
semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat
unik). Setiap atribut harus bergantung fungsi pada atribut superkey.
BCNF merupakan bentuk normal sebagai perbaikan terhadap 3 NF. Suatu
relasi yang memenuhi BCNF selalu memenuhi 3 NF, tetapi tidak untuk
sebaliknya. Suatu relasi yang memenuhi 3 NF belum tentu memenuhi BCNF.
Karena bentuk 3NF masih memungkinkan terjadi anomali.
Pada contoh berikut ini terdapat tabel Kursus, kunci primer adalah
no_siswa dan kursus, dengan pengertian bahwa :
Siswa dapat mengambil satu atau dua kursus.
Setiap kursus membutuhkan 2 instruktur.
Setiap siswa dibimbing oleh salah satu dari 2 instruktur kursus.
Setiap instruktur boleh hanya mengambil satu kursus saja.
Pada contoh ini, no_siswa, kursus instruktur

No_Siswa Kursus Instruktur


110011 A2201 Benny
110012 A2201 Reddi
110013 B1101 Ade
110012 B1101 Reinhard
110014 B1101 Reinhard

Bentuk tabel Kursus adalah memenuhi bentuk normal ketiga (3 NF),


tetapi belum dalam bentuk BCNF karena nomor kursus masih bergantung
fungsi pada instruktur, jika setiap instruktur dapat mengajar hanya pada
satu kursus. Kursus bergantung fungsi pada satu atribut bukan superkey
seperti yang disyaratkan oleh BCNF.
Maka relasi KURSUS harus didekomposisi menjadi dua relasi, yaitu relasi
pengajar dan kursus_instruktur, seperti berikut ini :
Tabel Pengajar
Instruktur Kursus
Benny A2201
Reddi A2201
Ade B1101
Reinhard B1101

Tabel Kursus_Instruktur

No_siswa Instruktur
110011 Benny
110012 Reddi
110013 Ade
110014 Reinhard

6.7 Bentuk normal keempat (4NF)


Suatu relasi dikatakan dalam bentuk normal keempat dengan ketentuan
sebagai
berikut ini :
Sudah dalam bentuk BCNF dan tidak ada multivalued dependency
nontrivial.
Multivalued dependency (MVD) dipakai dalam bentuk normal keempat
(4NF).
Dependensi ini dipakai untuk menyatakan hubungan satu ke bentuk
(one to many)
Contoh :

Matakuliah Dosen Materi


Algoritma 2 Yushi Algoritma Rekursi
Nurdini Searching
Sorting
Metode Numerik Wayan Integrasi Numerik
Persamaan Diferensial

Relasi tersebut menggambarkan mengenai dosen yang mengajar


matakuliah tertentu dengan materi matakuliah yang bersangkutan. Contoh
dua dosen yang mengajar pengenalan komputer, yaitu Yushi dan Nurdini.
Adapun materi matakuliah Algoritma 2 adalah algoritma rekursi, searching,
sorting.
Relasi berikut ini memperlihatkan relasi yang telah dinormalisasikan
berdasarkan relasi sebelumnya.

Matakuliah Dosen Materi


Algoritma 2 Yushi Algoritma Rekursi
Algoritma 2 Yushi Searching
Algoritma 2 Yushi Sorting
Algoritma 2 Nurdini Algoritma Rekursi
Algoritma 2 Nurdini Searching
Algoritma 2 Nurdini Sorting
Metode Numerik Wayan Integrasi Numerik
Metode Numerik Wayan Persamaan Diferensial
Relasi tersebut memenuhi bentuk BCNF karena primary key nya adalah
gabungan dari matakuliah, dosen dan materi. Masalah tersebut dapat
dipecahkan melalui dekompoisi, hal ini disebabkan karena terdapat
kenyataan bahwa antara Dosen dengan Materi tidak ada ketergantungan.
Solusi masalah tersebut diajukan oleh R. Fagin melalui konsep dependensi
nilai banyak. Secara umum dependensi nilai banyak muncul pada relasi yang
paling tidak memiliki tiga atribut dan dua diantaranya bernilai banyak, dan
nilai nilainya tergantung hanya pada atribut ketiga.
Pada suatu relasi R dengan atribut A, B, C, atribut B dikatakan bersifat
multidependen terhadap A jika :
Sekumpulan nilai B yang diberikan pada pasangan ( A, C) hanya
tergantung pada nilai A, dan, tidak tergantung pada nilai C.
Hubungan diatas dinyatakan dengan : AB, dibaca A menentukan
banyak nilai B atau B multidependen terhadap A
Teorema Faqin yang berkaitan dengan multivalued dependency adalah :
Bila R ( A, B, C ) merupakan suatu relasi, dengan A, B, C adalah atribut
atribut relasi tersebut, maka proyeksi dari R berupa ( A, B ) dan ( A, C
) jika R memenuhi MVD A B | C
Perlu diketahui bahwa bila terdapat : A __ B, A __ C, maka keduanya
dapat
ditulis menjadi : A B | C
Berdasarkan teorema Faqin diatas, maka relasi tersebut diatas dapat
didekomposisi menjadi dua relasi sebagai berikut :
Matakuliah Dosen
Algoritma 2 Yushi
Algoritma 2 Nurdini
Metode Numerik Wayan
Matakuliah Materi
Algoritma 2 Algoritma Rekursi
Algoritma 2 Searching
Algoritma 2 Sorting
Metode Numerik Integrasi Numerik
Metode Numerik Persamaan Diferensial

6.8 Bentuk normal kelima ( 5 NF )


Dependensi gabungan mendasari bentuk normal kelima. Suatu relasi R
( X,W,Z) memenuhi dependensi gabungan jika gabungan dari proyeksi A, B,
C dengan A, B, C merupakan sub himpunan dari atribut atribut R.
Dependensi gabungan sesuai dengan definisi diatas dinyatakan dengan
notasi :
* (A, B, C )
dengan A = XY, B = YZ, C = ZX
Sebagai contoh terdapat hubungan dealer yang menjadi agen suatu
perusahaan distributor kendaraan. Dalam hal ini distributor memiliki
sejumlah produk kendaraan.

Dealer Distributor Kendaraan


Sumber Rejeki Nissan Grand Livina
Sumber Rejeki Toyota Avanza
Sumber Rejeki Nissan All new Nissan
serena
Wijaya Motor Toyota Rush
Relasi tersebut memenuhi dependensi gabungan :
*(Dealer Distributor, Distributor Kendaraan, Dealer Kendaraan)
Sehingga relasi tersebut dapat didekomposisi menjadi tiga buah relasi yaitu :
Deal_Dist (Dealer_Distributor).
Dist_Kend (Distributor_Kendaraan).
Deal_Kend (Dealer_Kendaraan).

Gabungan ketiga relasi tersebut akan membentuk relasi DDK dan


gabungan kedua proyeksi diatas bisa jadi menghasilkan relasi antara yang
salah, namum ketiganya akan menghasilkan relasi sesuai aslinya.
Bentuk normal Kelima ( 5 NF ) yang terkadang disebut PJ/NF ( Projection Join /
Normal Form), menggunakan acuan dependensi gabungan. Suatu relasi
berada dalam 5 NF jika dan hanya jika setiap dependensi gabungan dalam R
tersirat oleh kunci kandidat relasi R.

Dealer Distributor
Sumber rejeki Nissan
Sumber rejeki Toyota
Wijaya motor Toyota

Distributo Kendaraan
r
Nissan Grand livina
Nissan All new Nissan
serena
Toyota Avanza
Toyota Rush

Dealer Kendaraan
Sumber Rejeki Grand Livina
Sumber Rejeki Avanza
Sumber Rejeki All new Nissan
serena
Wijaya Motor Rush

BAB 7
ALJABAR RELASIONAL
7.1 Pengertian Aljabar Relasional
Bahasa yang dipakai pada model relasional disebut dengan bahasa query.
Bahasa Query adalah suatu bahasa yang menyediakan fasilitas bagi user
untuk mengakses informasi dari basis data. Pada umumnya level bahasa ini
lebih tinggi dari bahasa pemrograman standar. Bahasa query dapat
dikategorikan sebagai prosedural & non-prosedural.
Dalam bahasa prosedural, user menginstruksikan ke sistem agar
membentuk serangkaian operasi dalam basis data untuk mengeluarkan hasil
yang diinginkan. Dalam bahasa non-prosedural, user mendeskripsikan
informasi yang diinginkan tanpa memberikan prosedur detail untuk
menghasilkan informasi tersebut. Aljabar relasional merupakan bahasa query
prosedural, sedangkan kalkulus relasional tupel dan kalkulus relasional
domain adalah non-prosedural.
Aljabar relasional yaitu sekumpulan operasi yang digunakan untuk
melakukan proses manipulasi rangka untuk mendapatkan informasi yang
diperlukan dari database. Aljabar relasional menggunakan sebuah bahasa
query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya
adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru
sebagai hasil dari operasi tersebut.
Operasi dalam aljabar relasional secara umum dibagi menjadi 2:
operasi yang dikembangkan secara khusus untuk database
relational. (SELECT, PROJECT dan JOIN)
operasi himpunan (UNION, INTERSECTION, SET DIFFERENCE, dan
CARTESIAN PRODUCT)

7.2 Notasi
Notasi untuk masing-masing operasi adalah seperti yang terlihat dalam
tabel dibawah ini :

Operati My HTML Symb


on ol
Projectio PROJECT
n
Selection SELECT

Renamin RENAME Operati My Symb


g on HTML ol
Union UNION Cartesia X
n
Intersecti INTERSEC
product
on TION
Join JOIN
Assignme <-
nt Left LEFT
outer OUTER
join JOIN
Right RIGHT
outer OUTER
join JOIN 7.3 Pro
Full FULL
jectio
outer OUTER
n
join JOIN Project
Semijoi SEMIJO
n IN
digunakan untuk menampilkan atribut/kolom dari sebuah relasi.
Notasi :
<daftar attribut> (<nama relasi>)

Diberikan tabel pegawai sebagai berikut :

no_id nama gaji


1100123 Maria 5000000
1100124 Rut 7000000
1100125 Yerlin 5000000
SQL Aljabar Relasional Hasil
SELECT gaji Projectgaji(pegawai)
FROM pegawai gaji (pegawai)

gaji
5000000
7000000
SELECT no_id, Projectno_id,gaji no_id gaji
gaji FROM 1100123 5000000
(pegawai) 1100124 7000000
pegawai
no_id,gaji (pegawai) 1100125 5000000

Note : tidak ada baris yang memiliki duplikasi dalam hasil.

7.4 Selection
Select digunakan untuk menampilkan baris/record dari sebuah relasi yang
sesuai dengan kondisi.
Notasi :
<kondisi pilihan> (<nama relasi>)

SQL Aljabar Relasional Hasil


SELECT * SELECTgaji<7000000(pega
FROM wai)
pegawai gaji<7000000(pegawai)
WHERE gaji <
7000000 no_id nam gaji
a
110012 Mari 500000
3 a 0
110012 Yerli 500000
5 n 0
SELECT*FRO SELECTgaji<7000000ANDno_i
M pegawai
d>=1100123(pegawai) no_id nam gaji
WHERE gaji gaji<7000000ANDno_id>=110 a
<7000000 110012 Yerlin 500000
0123(pegawai)
AND 5 0

no_id>=1100
23
Note : operasi SELECT dalam aljabar relasional tidak ada
hubungannya dengan sintaks SELECT dalam SQL.

SQL Aljabar Relasional Hasil


SELECT PROJECTnama,gaji
nama,gaji
(SELECTgaji<7000000(pegawai)) nam gaji
FROM pegawai
atau a
WHERE gaji<
Temp Mari 500000
7000000
a 0
SELECTgaji<7000000(pegawai) Yerli 500000
Hasil PROJECTnama,gaji(Temp) n 0

7.5 Join (Inner Join)


Digunakan untuk mengkombinasikan baris-baris yang berhubungan dari dua
relasi
menjadi baris-baris tunggal.
Diberikan relasi P dan D, maka notasi:
P <kondisi join> D
Kondisi join dalam bentuk:
<kondisi> AND <kondisi> AND AND <kondisi>
Operator pembandingan: {=, <, , >, , }
Operasi join dengan kondisi join secara umum disebut dengan Theta Join.
Kondisi join yang operator pembandingannya berupa =, disebut dengan
Equijoin Contoh:
P untuk relasi pegawai D untuk relasi departemen
p_n p_na p_de d_ko d_nam
o ma pt de a
1 Bill A A Marketi
2 Sarah C
3 John A ng
B Sales
SQL Aljabar C Legal Hasil
Relasional
SELECT *FROM P,D SELECTp_dept =
WHERE
d_kode(E X D)
p_dept=d_kode atau
E JOINp_dept =

d_kode D
p_n p_na p_de d_ko d_nam
o ma pt de a
1 Bill A A Marketi
ng
2 Sarah C C Legal
3 John A A Marketi
ng

7.6 Operasi Himpunan


UNION: notasi R S
Relasi yang menggabungkan semua baris di R atau S dengan
meniadakan duplikasi
Contoh : R = {1,2,3,4}
S = {3,4,5,6}
R S = {1,2,3,4,5,6}

INTERSECTION: notasi R S
Relasi yang terdiri dari baris yang ada di R dan juga ada di S
Contoh : R = {1,2,3,4}
S = {3,4,5,6}
R S = {3,4}
DIFFERENCE: notasi R S
Relasi yang terdiri dari semua baris di R, tetapi tidak ada di S
Contoh : R = {1,2,3,4}
S = {3,4,5,6}
RS = {1,2}

CARTESIAN PRODUCT R X S
Relasi yang terdiri dari kombinasi baris yang terdapat di R dan S. Yang
mana setiap baris di R digabungkan dengan setiap baris di S
Contoh : R = {1,2,3,4}
S = {3,4,5,6}
R x S = { (1,3), (1,4), (1,5), (1,6), (2,3), (2,4), (2,5), (2,6),
(3,3), (3,4),(3,5), (3,6), (4,3), (4,4), (4,5), (4,6)}
Contoh Cartesian product menggunakan P untuk relasi pegawai dan D
untuk relasi departemen :
SQL Aljabar Hasil
Relasio
nal
p_no p_nama p_dep d_kod d_nama
SELECT * FROM PXD t e
1 Bill A A Marketing
P,D 1 Bill A B Sales
1 Bill A C Legal
2 Sarah C A Marketing
2 Sarah C B Sales
2 Sarah C C Legal
3 John A A Marketing
3 John A B Sales
3 John A C Legal
BAB 8
STRUCTURE QUERY LANGUAGE (SQL)

8.1 Pengertian Structure Query Language


Structure Query Language (SQL) merupakan bahasa standar yang
ditetapkan oleh American National Standars Institute (ANSI) untuk
mengakses dan memanipulasi data pada Database Relational. Karena
sifatnya standar maka setiap software RDMS harus menerapkan bahasa SQL
dengan diperbolehkan untuk mengembangkan atau menyertakan perintah-
perintah yang non standar.
Perintah SQL secara umum dibagi menjadi tiga jenis :
DDL (Data Definition Language)
Merupakan perintah SQL yang berhubungan dengan pendefinisian
suatu struktur basis data, dalam hal ini tabel dan basis data. Beberapa
perintah dasar dalam DDL yaitu :
CREATE
DROP
ALTER
RENAME
DML (Data Manipulation Language)
Merupakan perintah SQL yang berhubungan dengan manipulasi atau
pengolahan data dalam tabel. Perintah dasar dalam DML adalah :
SELECT
INSERT
UPDATE
DELETE

DCL (Data Control Language), merupakan kumpulan perintah SQL yang


berfungsi untuk melakukan pendefinisian pemakai yang boleh atau tidak
mengakses database dan apa saja privilegenya.
Yang termasuk dalam kategori DCL :
COMMIT,
ROLLBACK
GRANT
REVOKE.
Aturan yang berlaku pada penulisan perintah SQL yaitu :
Perintah dapat ditulis dalam huruf besar maupun kecil
Setiap perintah diakhiri dengan tanda titik koma ;
Perintah dapat ditulis satu atau beberapa baris untuk memberikan
komentar pada perintah SQL. Gunakan tanda minus - - untuk
komentar 1 baris, atau di antara tanda \* dan *\ untuk komentar
beberapa baris.

Berikut penjelasan untuk perintah dasar SQL dan fungsinya :


Membuat database
CREATE DATABASE nama_database;
Contoh :
CREATE DATABASE universitas;
Keterangan : Membuat database baru dengan nama universitas
Membuat tabel
CREATE TABLE nama_tabel (nama_kolom tipe_data(size), );
Contoh :
CREATE TABLE mahasiswa (npm integer (10), nama varchar(50), kelas
varchar (5));
Keterangan : membuat tabel baru dengan nama mahasiswa yang terdiri dari
3 field/kolom yaitu field npm yang bertipe integer , field nama yang bertipe
varchar, dan filed kelas yang bertipe varchar.
Menambah data ke dalam tabel
INSERT INTO nama_tabel (field1, field2,..) VALUES (nilai1, nilai2,);
Contoh :
INSERT INTO mahasiswa (npm, nama,kelas)
VALUES (201100123, Marko, R4A);
Merubah data dalam tabel
UPDATE nama_tabel SET nama_field=value WHERE kriteria;
Contoh :
UPDATE mahasiswa SET nama=Marsha WHERE npm = 201100123;
Keterangan : mengubah data nama pada tabel mahasiswa menjadi Marsha
yang mempunyai npm 201100123.
Menghapus data dalam tabel
DELETE FROM nama_tabel WHERE criteria;
Contoh :
DELETE FROM mahasiswa WHERE nama=Marsha;
Keterangan : menghapus data mahasiswa dari tabel mahasiswa yang
memiliki nama Marsha.
Menghapus tabel
DROP TABLE nama_tabel;
Contoh :
DROP TABLE mahasiswa;
Keterangan : menghapus tabel mahasiswa.
Menghapus database
DROP DATABASE nama_database;
Contoh :
DROP DATABASE universitas;
Keterangan : menghapus database universitas.
BAB 9
QUEL

9.1 Pengertian QUEL


QUEL adalah Query Language dari DBMS relasional INGRES, yang
dikembangkan di University of California di Berkeley dengan mengunakan
sistem operasi UNIX. Bahasa ini dipergunakan secara berdiri sendiri dengan
menuliskan instruksi ke prosesor QUEL, atau disisipkan kedalam bahasa
pemrogram C. Didalam bahasa C, instruksi QUEL dimulai dengan tanda ##,
sehingga dapat diterima oleh prosesor.

QUEL dibagi atas :


DDL
CREATE : membuat tabel
INDEX : membuat indeks
DEFINE VIEW : membuat view
DESTROY : menghapus tabel, indeks atau view
MODIFY : merubah struktur table/indeks
Contoh:
CREATE MAHASISWA(NPM=TEXT(8),
NAMA=TEXT(20), ALAMAT=TEXT(30),
KOTA=TEXT(15), JKEL=TEXT(1)
DML
RETRIEVE : menampilkan data
REPLACE : mengupdate data
DELETE : menghapus record
APPEND : memasukkan record baru
Contoh :
- Dapatkan data semua mahasiswa
RETRIEVE(MAHASISWA.ALL)
- Dapatkan nama mata kuliah dan jumlah sks-nya untuk mata kuliah
yang ber-sks 3 dari relasi MKULMI
RETRIEVE(MKULMI.MTKUL, MKULMI.SKS) where sks=3
Struktur dasar QUEL :
Setiap variabel tuple ditulis dalam range yaitu : range of t is r
Kalimat retrieve memiliki fungsi sama dengan select pada SQL
Kalimat where berisi predikat yang ditentukan
Bentuk query QUEL :
range of t1 is r1
range of t2 is r2
:
:
range of tm is rm
retrieve (ti1.Aj1, ti2.Aj2, ,tim.Ajm)
where P
keterangan :
ti adalah variael tupel
ri adalah relasi
Ajm adalah atribut
P adalah predikat
Tidak dapat untuk melaksanakan operasi aljabar seperti
intersection, union dan minus.
Logik : AND, OR dan NOT
Fungsi Statistik : COUNT, MAX, MIN, AVG, SUM
Ekspresi Aritmatik : >, <, <>, >=, <=
Contoh :
Diketahui skema tabel :
CUSTOMER (Cust_Name, Street, Cust_city)
BORROW (Branch_name, Location, Cust_name, Amount)
DEPOSIT (Branch_name, Account_name, Cust_name, Balance)
- Dapatkan semua nama customer yang memiliki tabungan pada cabang
perryride :
Range of t is Deposit
Retrieve (t.cust_name)
Where (t.branch_name = Perryride);
- Dapatkan nama customer dan kota untuk semua customer yang
memiliki pinjaman dari Bank Hermina
Range of s is Borrow
Range of t is Deposit
Retrieve (t.Cust_name, t.Cust_city);
- Hapus semua tuper pada relasi Borrow
Range of t is Deposit
Delete t;
BAB 10
QUERY BY EXAMPLE

10.1 Pengertian Query By Example


QBE (query by example) adalah metode query yang disediakan sistem
dalam bentuk record kosong dan pengguna dapat menentukan field dan nilai
tertentu yang akan digunakan dalam query. Atau dapat dikatakan dengan
bahasa yang lebih sederhana QBE merupakan edisi sederhana dari SQL.
Secara sederhana, metode ini berjalan dengan cara komputer (database)
menanyakan kepada user dengan menggunakan grafis QBE perintah apa
saja yang diinginkan oleh user. Proses pemilihan optional dan mengisi
perintah pada grafis QBE akan diterjemahkan oleh komputer (Database)
menjadi bahasa SQL yang kemudian hasilnya ditampilkan dalam bentuk GUI
(Graphical User Interface). Jadi bahasa yang compleks dalam SQL
disederhanakan menggunakan QBE dalam bentuk GUI. Namun tetap perlu
dipahami bahwa tidak 100% kemampuan QBE sama dengan SQL. Hal ini
disebabkan tidak semua bahasa dalam SQL dapat diterjemahkan melalui
QBE.
Kelebihan dari Query By Example adalah mempergunakan editor layar
khusus dan langsung dapat membuat query. User dapat menggunakan atau
memanggil tabel kosong dilayar untuk diberi nama relasi, atribut dan
instruksi yang diinginkan.
Perintah yang digunakan adalah :
P. (print) : menampilkan data
I. (insert) : memasukkan record baru
D. (delete) : menghapus record
U. (update) : merubah record
QBE menggunakan variable domain untuk membuat table contoh.
Variable domain ditentukan dengan kolom yang muncul. Dan symbol variable
diawali dengan garis bawah (_) untuk membedakannya dari konstanta.
Gunakan perintah P. (print) untuk menampilkan field-field yang diinginkan.
Bagan Umum Tabel QBE :
Nama Relasi Nama Atribut

Contoh :
Dapatkan semua data mahasiswa
Untuk menampilkan seluruh field yang ada dalam tabel mahasiswa,
gunakan perintah P.(print) pada kolom relasi. Notasi ini sama seperti
SELECT* pada perintah SQL
Mahasisw NPM Nama Alamat Kota Jkel
a
P.

Atau dengan menuliskan perintah P. pada setiap field.


Mahasisw NPM Nama Alamat Kota Jkel
a
P. P. P. P. P.

Dapatkan semua nama dosen wanita yang bertempat tinggal di Depok


Untuk menampilkan nama dosen wanita yang tinggal di depok dengan
menuliskan perintah P. pada field nama dan menuliskan Depok pada
field Kota, W pada field jenis kelamin.
Dosen NIP Nama Alamat Kota Jkel
P. Depok W

Atau menggunakan condition box


Isikan perintah P. pada field Nama dan tuliskan _x pada field kota (variable
x pada field Kota) dan _y pada field Jkel (variable y pada field JKel).
Kemudian pada condition box berikan nilai Depok pada variable x dan
nilai W pada variable y.
Dosen NIP Nama Alamat Kota Jkel
P. _x _y

CONDITION
_x="Depok" AND _y="W"

Keterangan :
_x : tanda garis bawah menunjukan bahwa x variabel

Dapatkan nama dosen yang mengajar mata kuliah komunikasi data


(gunakan relasi dosen dan MKULMI).
Pilihlah tuple dari kedua relasi dengan nilai yang sama, dalam hal ini
adalah kolom NIP, gunakan variable yang sama untuk kolom NIP pada dua
relasi tersebut.
Dosen NIP Nama Alamat Kota Jkel
_x P.

MKULMI KDMK MTKUL SKS NIP


Komunikasi Data _x

Tampilkan nama dan nilai Mid


MAHASISW NPM NAMA ALAMAT KOTA JKel
A
_x P.

NILAI NPM KDMK MID FINAL


_x P.

Merubah nilai Mid menjadi 90 untuk Mahasiswa dengan NPM 11198111


NILAI NPM KDMK MID FINAL
111981 U. 90
11
Menghapus record Mahasiswa yang bertempat tinggal di Bogor
MAHASISW NPM NAMA ALAMAT KOTA JKel
A
D. D. D. D. D.
Bogor

Menampilkan Nama dan NPM mahasiswa yang belum memiliki nilai


final untuk mata kuliah dengan KDMK MKK-0315
MAHASISW NPM NAMA ALAMAT KOTA JKel
A
P._x

NILAI NPM KDMK MID FINAL


P._x MKK-0315

Menampilkan Nama dan NPM mahasiswa yang memiliki nilai di atas 69


dan lebih kecil dari 80
MAHASISW NPM NAMA ALAMAT KOTA JKel
A
P._x

NILAI NPM KDMK MID FINAL


P._x <80
P._x >69
BAB 11
CONCURRENCY DAN RECOVERY CONTROL

11.1 Pengertian Concurrecy Control


Concurrency control atau pengontrolan konkurensi merupakan salah satu
fungsi dari DBMS. Pada DBMS terpusat multi-user dapat mengakses sejumlah
transaksi pada waktu bersamaan. Jika tidak dikontrol, hal ini dapat
menyebabkan interferensi satu sama lain sehingga basis data menjadi tidak
konsisten. Untuk mencegahnya, DBMS mengimplementasikan pengontrolan
konkurensi
Transaction (transaksi) adalah suatu aksi atau serangkaian aksi yang
dilakukan oleh seorang pemakai atau suatu program aplikasi, dimana dapat
mengakses atau mengubah isi dari basis data. Hasil transaksi adalah commit
atau rollback. Jika transaksi berjalan sukses maka dikatakan commit,
sebaliknya jika transaksi tidak berjalan sukses maka transaksi dibatalkan dan
kembali ke keadaan semula dikatakan rollback.
Permasalahan yang terjadi dalam konkurensi :
Lost update (modifikasi yg hilang)
Masalah operasi update yg sukses dari seorang pengguna kemudian
ditindih oleh operasi update dari pengguna lain
Waktu T1 T2 X
t1 begin_transacti 100
on
t2 begin_transactio read(x) 100
n
t3 read(x) x=x+100 100
t4 x=x-10 write(x) 200
t5 write(x) Commit 90
t6 Commit 90
Uncommited dependency (ketergantungan yg tidak sukses/modifikasi
sementara)
Masalah terjadi saat suatu transaksi membaca data dari transaksi lain
yg belum dicommit
Waktu T1 Tt2 X
t1 begin_transacti 100
on
t2 read(x) 100
t3 x=x=100 100
t4 begin_transactio write(x) 200
n
t5 read(x) 200
t6 x=x-10 Rollback 190
t7 write(x) 190
t8 Commit 190

Inconsistent analysis
Masalah terjadi saat satu transaksi membaca beberapa nilai tetapi
transaksi kedua pd waktu sama memodifikasi nilai tersebut.
Wakt T1 T2 X Y Z Jml
u
t1 begin_transac 100 50 25
tion
t2 begin_transac sum=0 100 50 25 0
tion
t3 read(x) read(x) 100 50 25 0
t4 x=x-10 sum=sum+x 100 50 25 100
t5 write(x) read(y) 90 50 25 100
t6 read(z) sum=sum+y 90 50 25 150
t7 z=z+10 90 50 25 150
t8 write(z) 90 50 35 150
t9 commit read(z) 90 50 35 150
t10 sum=sum+z 90 50 35 185
t11 Commit 90 50 35 185
Teknik pengontrolan konkurensi :
Locking
Apabila suatu transaksi mengakses suatu data maka suatu lock (kunci)
dapat mencegah pengaksesan oleh transasksi lain.
Timestamping
Timestamping merupakan suatu identitas waktu dimulainya suatu
transasksi. Timestamping mengatur prioritas transaksi berdasarkan
timestamp. Timestamp terkecil merupakan transaksi paling duluan,
jika terjadi konflik transaksi direstart.
Optimistic
Berasumsi bahwa konflik jarang terjadi sehingga proses tetap berjalan
& pengecekan dilakukan pada saat transaksi sudah di-commit. Jika ada
konflik transaksi direstart
11.2 Metode Locking
Metode lockingmerupakan prosedur untuk mengontrol pengaksesan data
secara konkuren. Apabila satu transaksi mengakses basis data, suatu lock
(kunci) akan menolak pengaksesan transaksi lain utk mencegah modifikasi
yg tidak benar.
Jenis kunci yang digunakan pada metode locking :
Kunci READ / S (digunakan bersama)
Jika transaksi mempunyai kunci read terhadap suatu data, maka dia
dapat melakukan operasi read tetapi tidak dapat melakukan operasi
update terhadap data tersebut.
Kunci WRITE / X (eksklusif)
Jika transaksi mempunyai kunci write terhadap suatu data, maka dia
dapat melakukan operasi read maupun operasi update terhadap data
tersebut.
Transaksi yg akan mengakses suatu data harus terlebih dahulu
menguncinya, meminta kunci S jika hanya melakukan read data saja atau
kunci X jika untuk melakukan operasi read & write. Jika data tsb belum
dikunci oleh transaksi apapun, maka kunci diperkenankan. Jika data tsb telah
dikunci, maka DBMS menentukan apakah kunci yg diminta sesuai dg yg ada.
Jika kunci read yg diminta sama dengan kunci read yg telah ada, maka
permintaan diperkenankan, selain itu maka transaksi harus menunggu (wait)
sampai kunci write dilepaskan. Transaksi terus menahan suatu kunci sampai
dilepaskan secara eksplisit selama eksekusi atau telah selesai.
Matriks Locking :
S X
S True False
X False False

11.3 Two Phase locking (2PL)


Protokol untuk menjamin serializability. Suatu transaksi mengikuti protokol
Two-phase locking jika semua operasi penguncian mendahului operasi
membuka kunci terlebih dahulu dalam suatu transaksi.
Phase 1: Growing Phase
Transaksi dapat memperoleh kunci. Transaksi tidak boleh melepaskan
kunci
Phase 2: Shrinking Phase
Transaksi boleh melepaskan kunci. Transaksi tidak dapat memperoleh
kunci
2PL untuk permasalahan Lost update
Wakt T1 T2 X
u
t1 begin_transactio 100
n
t2 begin_transactio write_lock(X) 100
n
t3 write_lock(X) read(X) 100
t4 Wait X=X+100 100
t5 Wait write(X) 200
t6 Wait un_lock(X) 200
t7 read(X) Commit 200
t8 X=X-10 200
t9 write(X) 190
t10 unlock(X) 190
t11 Commit 190

2PL untuk permasalahan Uncommited dependency :


Wakt T1 T2 X
u
t1 Begin_transactio 100
n
t2 Write_lock(X) 100
t3 Read(X) 100
t4 Begin_transacti X=X+100 100
on
t5 Write_lock(X) Write(X) 200
t6 Wait Un_lock(X) 100
t7 Wait Rollback 100
t8 Read(X) 100
t9 X=X-10 100
t10 Write(X) 90
t11 Un_lock(X) 90
t12 Commit 90

2PL untuk permasalahan Inconsistent analysis


Wakt T1 T2 X Y Z Jml
u
t1 Begin_transac 100 50 25
tion
t2 Begin_transac Sum=0 100 50 25 0
tion
t3 Write_lock(X) 100 50 25 0
t4 Read(X) Read_lock(X) 100 50 25 0
t5 X=X-10 Wait 100 50 25 0
t6 Write(X) Wait 90 50 25 0
t7 Write_lock(Z) Wait 90 50 25 0
t8 Read(Z) Wait 90 50 35 0
t9 Z=Z+10 Wait 90 50 35 0
t10 Write (Z) Wait 90 50 35 0
t11 Unlock((X,Z) Wait 90 50 35 0
t12 Commit Wait 90 50 35 0
t13 Read(X) 90 50 35 0
t14 Sum=sum+X 90 50 35 90
t15 Read_lock(Y) 90 50 35 90
16 Read(Y) 90 50 35 90
t17 Sum=sum+Y 90 50 35 140
t18 Read_lock(Z) 90 50 35 140
t19 Read(Z) 90 50 35 140
t20 Sum=sum+Z 90 50 35 175
t21 Unlock(X,Y,Z) 90 50 35 175
t22 Commit 90 50 35 175

11.4 Deadlock
Suatu situasi dimana dua atau lebih transaksi masing2 menunggu (wait)
suatu kunci yg ditahan oleh transaksi lain, untuk dilepaskan.
Teknik menangani deadlock
Deadlock prevention, DBMS mengamati transaksi apakah
menimbulkan deadlock & tidak akan membiarkan deadlock terjadi
Deadlock prevention and recovery, DBMS membiarkan terjadi
deadlock, mengenalinya lalu menanganinya.
Transaksi deadlock
Wakt T1 T2
u
t1 Begin_transaction
t2 Write_lock(X) Begin_transaction
t3 Read(X) Write_lock(Y)
t4 X=X-10 Read(Y)
t5 Write(X) Y=Y+100
t6 Write_lock(Y) Write(Y)
t7 Wait Write_lock(X)
t8 Wait Wait
t9 Wait Wait
t10 Wait
t11
11.5 Timestamp
Timestamp, merupakan suatu identifikasi unik dibuat DBMS yg
mengindikasikan waktu mulai relatif dari suatu transaksi. Dengan waktu
sistem atau penambahan pada kounter logik setiap waktu transaksi mulai.
Suatu protokol yg menyusun transaksi2 secara global, dimana transaksi yg
tertua, transaksi dg timestamp terkecil, mendapat prioritas utama dari
konflik transaksi tsb.
11.6 Optimistic
Berbasis pada asumsi bahwa pada lingkungan tertentu, jarang terjadi
konflik, sehingga lebih efisien membiarkan transaksi dieksekusi. Kemudian
pada saat akan di-commit, diidentifikasi apakah akan timbul konflik, jika ya
maka transaksi harus di rollback atau di proses ulang.

11.7 Recovery Control


Recovery basis data merupakan suatu proses penyimpanan kembali basis
data pada keadaan yang benar sebelum terjadi kegagalan(failure).
Penyebab kegagalan :
System crash (kerusakan sistem), akibat kesalahan pada perangkat
keras atau lunak, menyebabkan kehilangan memori utama
Media failure (kegagalan pada media), seperti media tidak dapat
dibaca, menyebabkan kehilangan sebagian dari penyimpanan
sekunder
Application software error (kesalahan pada perangkat lunak aplikasi,
seperti kesalahan logika yg mengakses basis data menyebab kan satu
atau lebih transaksi mengalami kegagalan
Natural physical disasters (bencana fisik yg natural), seperti
kebakaran, air bah, gempa
Carelessness (kekurangtelitian atau kerusakan pada data atau fasilitas
yg tidak disengaja disebabkan oleh operator atau pengguna
Sabotase, kerusakan pada data, fasilitas perangkat lunak & keras yg
disengaja
Fasilitas recovery pada dbms
Mekanisme backup
melakukan backup secara periodik terhadap basis data yang ada
Fasilitas Logging
Mencatat transaksi-transaksi dan perubahan-perubahan yang terjadi
terhadap basis data.
DBMS memelihara file khusus yang disebut Log (Journal) yang
menyediakan informasi mengenai seluruh perubahan yang
terjadi pada basis data.
Fasilitas Checkpoint
Mengizinkan update terhadap basis data yang akan menjadi basis
data yang permanen
Manager recovery
Mengizinkan sistem untuk menyimpan kembali basis data ke
keadaan sebelum terjadi kegagalan

11.8 Teknik recovery


Prosedur recovery yang digunakan tergantung dari kegagalan yang terjadi
pada basis data. Terdapat 2 kasus kerusakkan :
Jika basis data rusak secara fisik seperti : disk head crash dan
menghancurkan basis data, maka yang terpenting adalah
melakukan menyimpan kembali backup basis data yang terakhir
dan mengaplikasikan kembali operasi-operasi update transaksi yang
telah commit dengan menggunakan log file. Dengan asumsi bahwa log
file-nya tidak rusak.
Jika basis data tidak rusak secara fisik tetapi menjadi tidak konsisten,
seperti sistem crash sementara transaksi dieksekusi, maka
yang perlu dilakukan adalah membatalkan perubahan-perubahan
yang menyebabkan basis data tidak konsisten. Mengulang beberapa
transaksi sangat diperlukan juga untuk meyakinkan bahwa perubahan-
perubahan yang dilakukan telah disimpan di dalam secondory
storage.
Di sini tidak perlu menggunakan salinan backup basis data, tetapi
dapat me-restore basis data ke dalam keadaan yang konsisten dengan
menggunakan before- dan after-image yang ditangani oleh log file.
Teknik recovery berikut ini dilakukan terhadap situasi dimana basis data
tidak rusak tetapi basis data dalam keadaan yang tidak konsisten.
Deferred Update
Update tidak dituliskan ke basis data sampai sebuah transaksi dalam
keadaan commit. Jika transaksi gagal sebelum mencapai keadaan ini,
transaksi ini tidak akan memodifikasi basis data dan juga tidak ada
perubahan2 yang perlu dilakukan. Penulisan dilakukan secara initial
hanya terhadap log dan log record yang digunakan untuk actual
update terhadap basis data. Jika sistem gagal, sistem akan menguji log
dan menentukan transaksi mana yang perlu dikerja kan ulang, tetapi
tidak perlu membatalkan semua transaksi.
Immediate Update
Update diaplikasikan terhadap basis data tanpa harus menunggu
transaksi dalam keadaan commit. Update dapat dilakukan terhadap
basis data setiap saat setelah log record ditulis. Log dapat
digunakan untuk membatalkan dan mengulang kembali transaksi
pada saat terjadi kegagalan.
BAB 12
KEINTEGRITASAN DATA
DAN PENGAMANAN DATA

12.1 Pengertian data integrity


Data integrity berarti data konsisten dan valid pada keadaan apapun dan konstrain
apapun.

12.2 Aturan keintegritasan data


Entity integrity
Nilai atribut primary key tidak boleh null (tidak dikenal)
Contoh:
PEGAWAI(NIP,Nama,Alm,Gaji,KdDiv)
NIP sebagai primary key tidak boleh bernilai null atau kosong atau tidak
dikenal.
Referential integrity
Nilai atribut foreign key harus sesuai dengan nilai atribut rujukan (primary
key) pada relasi lain.
Contoh:
PEGAWAI(NIP,Nama,Alm,Gaji,KdDiv)
DIVISI(KdDiv,Ket,Lokasi)
Atribut KdDiv sebagai foreign key pada relasi PEGAWAI Harus mempunyai
nilai yang sesuai dengan rujukannya atribut KdDiv pada DIVISI.
Entity participation
Keharusan/ketidakharusan adanya keanggotaan dari suatu relationship,
pada saat perancangan database.
Domain constraint
Domain merupakan sekumpulan nilai yang diizinkan untuk satu atau lebih
dari satu atribut.
Enterprise constraint
Aturan yang dispesifikasikan oleh DBA atau pemakai.

12.3 Database security/pengamanan database


Pengamanan atau perlindungan database terhadap ancaman dengan
menggunakan pengontrolan secara tehnis dan administratif.
Ancaman merupakan situasi atau kejadian yang direpresentasikan oleh orang
atau lingkungan disengaja maupun tidak disengaja yang mengenai sistem ataupun
organisasi sehingga dapat merugikan organisasi yang bersangkutan.
Contoh:
Kehilangan privacy
Penggunaan password orang lain
Pemerasan
Kesalahan pada software yang mengakibatkan pengaksesan melebihi
normal.
Pelatihan pegawai yang tidak berkualitas
Kehilangan kepercayaan
Seperti no. 1
Entri ilegal oleh hacker
Pemogokan pegawai
Pencurian dan penggelapan
Seperti no. 1 dan 2
Usulan perubahan yang bukan wewenangnya
Pengubahan program yang dapat menembus mekanisme pengaman
Pencurian
Kehilangan integrity
Radiasi dan interferensi elektronik
Kebakaran
Terputusnya kabel
Terdapatnya virus
Korupsi data
Pelatihan yang tidak berkualitas

Kehilangan ketersediaan
Seperti no. 4 (point 1-4)
Ancaman bom
Menghadapi ancaman diperlukan pengontrolan secara fisik, prosedur
administratif atau keduanya.

Pengontrolan berbasis komputer


Authorization
Paswword
Encryption
Checkpointing
integrity
view
backing-up
journaling
Pengontrolan tidak berbasis komputer
Pengamanan PC

12.4 Pengontrolan Berbasis Komputer


Authorization
Pemberian ototritas/hak operasi yang legal pada user/program agar dapat
mengakses sistem serta tabelk, view, aplikasi, dan prosedur.
Pemberian otoritas/hak operasi dengan menggunakan GRANT dan REVOKE.
Jenis operasi/privilege : select, insert, update, delete, references dan usage
Sintaks GRANT :
GRANT oprasi/ALL PRIVILEGES
ON objek TO pemakai/PUBLIC
[WITH GRANT OPTION];

Sintaks REVOKE :
REVOKE [GRANT OPTION FOR]
Operasi/ALL PRIVILEGES
ON objek FROM pemakai/PUBLIC
[RESTRICT/CASCADE];

Contoh :
GRANT ALL PRIVILEGES
ON PEGAWAI TO Manager
WITH GRANT OPTION;
GRANT SELECT,UPDATE(GAJI)
ON PEGAWAI TO admin;
GRANT SELECT
ON DIVISI TO Public;
REVOKE SELECT
ON DIVISI FROM Public;
VIEW
Merupakan hasil dinamik dari operasi relasional terhadap satu atau lebih
relasi untuk mendapatkan relasi lain.
Mekanisme view dapat menyajikan data relevan dengan pemakai,
sedangkan yang lain disembunyikan.
Sintaks pembuatan view :
CREATE VIEW namaview [kolom,]
AS subselet [WITH [CASCEDE/LOCAL] GRANT OPTION]
FROM namatabel;
Contoh pembuatan view diperuntukkan manager divisi 2 yang inggin mengakses
data pegawai di divisi 2 secara detail.
CREATE VIEW peg2
AS select FROM pegawai WHERE KdDiv=2;
CREATE VIEW peg3
AS select NIP,Nama,Alm FROM pegawai where KdDiv=3
WITH CHECK OPTION;
DROP VIEW peg3;
- Password
Verifikasi user dengan menggunakan suatu kata tertentu.
- Backing-up
Proses yang secara periodik mengcopy database dan journal ke dalam
media penyimpanan tertentu.

- Encryption
Pengcodingan data dengan algoritma khusus sehingga data tidak
dapat dibaca oleh program apapun tanpa adanya kunci deskripsi dan
data yang dikirim tidak dapat dibaca sebelum proses deskripsi.
- Journaling
Pembuatan journal dari semua perubahan database agar supaya
pemulihan dapat secara efektif dilakukan pada saat terjadi kegagalan
ataupun kesalahan.
Jurnal mungkin akan berisi data
- Record transaksi
identifikasi dari record
tipe dari record jurnal (transaksi start, insert, update, delete, abort,
commit)
item data sebelum perubahan (operasi update dan delete)
item data sesudah perubahan (operasi insert dan update)
informasi manajemen jurnal, seperti pointer sebelum dan record jurnal
selanjutnya untuk semua transaksi
1. Record checkpoint

- Checkpointing
Titik sinkronisasi antara database dan transaksi log file. Informasi
pada jurnal digunakan untuk pemulihan database dari kegagalan yang
dilakukan. Satu kesulitan dengan skema ini adalah ketika kegagalan
terjadi, tidak diketahui seberapa jauh jurnal untuk kembali mencarinya
dan berakhir dengan melakukan transaksi REDO. Untuk membatasi
pencarian dan pemrosesan secara teratur digunakan teknik
checkpoint/pos pemeriksaan.
- Integrity
Pengontrolan keintegritasan data untuk menjamin data tetap valid.

12.5 Pengontrolan Tidak Berbasis Komputer


Pengontrolan yang berhubungan dengan politis, persetujuan dan administrasi.
Pembuatan Security policy dan Contingency plan
Security policy mendefinisikan pemeliharaan sistem yang aman pada
organisasi, meliputi :
Area bisnis
Tanggungjawab dan kewajiban pegawai
Sanksi kedisiplinan
Prosedur yang harus diikuti
Contingency plan mendefinisikan bagaimana suatu organisasi dapat
berfungsi pada saat darurat.
Penentuan personal kunci dan alternatif serta bagaimana cara
menghubunginya
Siapa yang menentukan Contingency plan dan bagaimana cara
penentuannya
Kebutuhan teknis dan operasional untuk operasi pentransferan
Siapa personal di luar organisasi yang dapat dihubungi
Terdapatnya jaminan terhadap situasi ini
Pengontrolan personel meliputi
Adanya prosedur perekrutan pegawai maupun penempatan pagawai pada
pos-pos kunci
Pelatihan pegawai
Pemisahan pekerjaan dan tanggungjawab
Pengontrolan pekerjaan lain
- Penempatan peralatan yang aman
- Software dan data yang aman
- Terdapatnya persetujuan antara sipembuat software dan kliennya
- terdapatnya persetujuan pemeliharaan software dan hardware
- Pengontrolan pengaksesan secara fisik baik internal dan eksternal
- Pengontrolan gedung terhadap resiko kebakaran dan banjir
- Persiapan terhadap siatusi darurat

12.6 Pengamanan Bentuk Lain


Pengamanan PC
Resiko yang dihadapi PC adalah terinfeksi virus, untuk itu di dalam Security
policy harus terdapat prosedur yang harus diikuti pada saat suatu software
ditransfer ke sistem.
DAFTAR PUSTAKA

1. Connoly, Thomas; Begg, Carolyn; Strachan, Anne. (2001). Database


Systems : A Practical Approach to Design, Implementation and
Management. 3rd edition. New York: Addison Wesley.

2. Date, C.J.. (2000). An Introduction to Database System. New York: Addison


Wesley Publishing Company, Vol. 7.

3. Elmasri, Ramez; Navathe, Shamkant B.(2001). Fundamentals of Database


Systems, California: The Benjamin/Cummings Publishing Company, Inc.

4. Kusrini. (2007). Strategi Perancangan dan Pengolahan Basis Data.


Yogyakarta: Andi Ofset.

5. Linda Marlinda. (2004). Sistem Basis Data.Yogyakarta: Andi Ofset.

6. Silberschatz, Abraham dan Korth, Henry.F. (2002). Database System


Concepts. San Fransisco: Mc Graw Hill.

7. Waljiyanto. (2003). Sistem Basis Data Analisis dan Pemodelan Data.


Yogyakarta: Graha Ilmu.

Anda mungkin juga menyukai