Mokh ikhwan, ulfinur fatimah
-
Upload
ikhwanalive -
Category
Software
-
view
438 -
download
6
description
Transcript of Mokh ikhwan, ulfinur fatimah
Dosen Pengampu :
TUGAS FOLIO
DATABASE
Diusulkan oleh:
Mokh Ikhwan 4111411030
Ulfinur Fatimah 4111411004
Dosen Pengampu :
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI SEMARANG
2013
Riza Arifudin, S.Pd., M.Cs.
1
BAB 1
KONSEP DASAR BASIS DATA
Basis data (atau database) adalah kumpulan informasi yang disimpan di
dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu
program komputer untuk memperoleh informasi dari basis data tersebut (A,
Pratama, 2013:1). Menurut di (http://database.rizaarifudin.info) Basis data juga
dapat didefinisikan sebagai sekumpulan data yang saling berhubungan, disimpan
dengan minimum redundansi untuk melayani banyak aplikasi secara optimal.
1.1 Sistem Basis Data
Sistem Manajemen Basis Data (SMBD) merupakan suatu perangkat lunak
yang terdiri atas sekumpulan program untuk mengelola dan memelihara data di
dalam suatu struktur yang digunakan oleh banyak aplikasi, bebas (independence)
terhadap media penyimpanan dan metoda akses. Sistem tersebut menyusun elemen
data di dalam struktur yang telah didefinisikan sebelumnya dan menyimpan relasi
diantara elemen data yang berbeda di dalam basis data.
Sebagai suatu perangkat lunak, SMBD merupakan sistem perangkat lunak dengan
penggunaan yang bersifat umum (general-purposed) yang memfasilitasi proses
pendefinisian, konstruksi, dan manipulasi basis data untuk berbagai aplikasi.
Basis data dan perangkat lunak merupakan bagian dari sistem basis data,
yang secara ringkas dapat dikatakan merupakan sistem penyimpanan record yang
terkomputerisasi. Penyederhanaan sistem basis data digambarkan sebagai berikut:
Program Aplikasi Pengguna
Basis Data
Sistem Manajemen Basis Data
Gambar 1.2 Penyederhanaan Sistem Basis Data
2
Sistem basis data terdiri atas empat komponen, yaitu:
a. Data:
Sebagaimana telah dijelaskan sebelumnya, data untuk suatu basis data mempunyai
karakteristik terintegrasi dan pemakaian bersama. Pada aplikasi yang relatip besar
data cenderung digunakan oleh sistem multi-user, sedangkan pada aplikasi relatip
kecil data cenderung digunakan oleh sistem single-user.
Sistem multi-user ialah suatu sistem yang memungkinkan banyak pengguna (user)
dapat mengakses basis data secara berbarengan (concurrent). Sistem single-user
ialah suatu sistem dengan paling banyak satu pengguna dapat mengakses basis data
pada sembarang waktu yang diberikan.
b. Perangkat keras:
Terdiri atas peralatan utama berupa penyimpanan bantu dan peralatan
Input/Output (I/O), processor dan memory utama, serta peralatan pendukung
(misalnya untuk peralatan jaringan atau peralatan komunikasi yang lain).
c. Perangkat Lunak:
Sebagaimana telah disebutkan sebelumnya, perangkat lunak untuk sistem basis
data disebut SMBD, yang merupakan lapisan diantara basis data secara phisik
dengan pemakai. Fungsi utama dari SMBD ialah untuk menjadi perisai bagi
pengguna dari rincian perangkat keras, sehingga pengguna dengan pengetahuan
minimum mengenai perangkat keras dapat menggunakan sistem basis data dengan
mudah.
d. Pengguna:
Terdapat 3 macam pengguna sistem basis data, ialah:
Pemrogram aplikasi, yaitu yang bertanggung jawab menulis program aplikasi
yang menggunakan basis data.
Pengguna akhir, yaitu pengguna yang berinteraksi dengan sistem basis data
secara on-line melalui workstation atau terminal. Antarmuka banyak
digunakan untuk mempermudah interaksi. Sedang untuk pengguna tertentu
menggunakan fasilitas update data secara interaktif dengan bahasa query,
karena lebih luwes dalam memberikan fungsi yang tidak disediakan oleh
antarmuka. Bahasa query ialah bahasa standar yang digunakan untuk
mendefinisikan dan memanipulasi data di dalam basis data.
3
Administrator Basis Data (Database Administrator), yaitu seseorang yang
menyusun strategi dan putusan kebijakan mengenai data, dan menyediakan
kebutuhan dukungan teknik untuk mengimplementasikan putusan yang dipilih.
Administrator basis data bertanggung jawab terhadap penggunaan kewenangan
akses ke basis data, mengkoordinasikan dan memantau penggunaan basis data,
dan untuk menyediakan sumber-sumber perangkat lunak dan perangkat keras
sesuai kebutuhan. Dengan demikian administrator basis data bertanggung
jawab untuk semua kontrol sistem pada tingkat teknik.
1.2 Keuntungan Pendekatan Basis Data
Di dalam pendekatan basis data, terdapat suatu tempat penyimpanan data tunggal
yang dikelola. Data tersebut didefinisikan sekali dan kemudian diakses oleh
bermacam pengguna dan aplikasi.
Pendekatan basis data memberikan sejumlah keunggulan potensial dibandingkan
dengan pemrosesan file tradisional. Keunggulan tersebut antara lain ialah:
a. Redundansi data minimum:
Redundansi yang merupakan cara penyimpanan data yang memunculkan
beberapa masalah sebagaimana telah dijelaskan pada bagian sebelumnya.
b. Konsistensi data:
Dengan menghilangkan atau mengontrol redundansi, dapat dipangkas
terjadinya inkonsistensi data. Jika diberlakukan redundansi yang terkontrol,
sistem basis data menjalankan konsistensi dengan mengupdate setiap data
yang dimiliki jika terjadi perubahan.
c. Integrasi data:
Di dalam suatu basis data, data disusun ke dalam suatu struktur logika tunggal,
dengan relasi logika yang didefinisikan diantara objek data yang
berhubungan.
d. Pemakaian data bersama:
Suatu basis data dimaksud untuk dipakai bersama oleh semua pengguna yang
diberi kewenangan.
e. Menjalankan pembakuan:
4
Dengan pendekatan basis data, terdapat otoritas untuk mendefinisikan dan
men-jalankan pembakuan data. Semua perubahan terhadap data, misalnya
nama data dan format, menjadi terkontrol.
f. Mempermudah pengembangan aplikasi:
Pendekatan basis data akan memangkas beaya dan waktu untuk
pengembangan aplikasi baru. Pemisahan deskripsi data dari program aplikasi
menyebabkan susunan data dapat diubah dan dikembangkan (dalam batas
tertentu) tanpa perlu mengubah program aplikasi yang memproses data
tersebut.
g. Menyediakan antarmuka banyak pengguna:
Karena bervariasinya pengguna, dengan tingkat pengetahuan teknis yang
berbeda, basis data menyediakan antarmuka pengguna yang bervariasi pula.
h. Menggambarkan relasi komplek diantara data:
Suatu basis data mungkin mengandung sejumlah keanekaragaman data yang
saling berhubungan di dalam banyak cara. Pendekatan basis data memberikan
kemampuan menggambarkan suatu keanekaragaman relasi yang komplek
diantara data dengan tetap memberikan kemudahan dan efisiensi di dalam
pencarian kembali dan update data yang berhubungan.
i. Menjalankan batasan keutuhan (integrity):
Banyak aplikasi basis data mempunyai batasan keutuhan tertentu yang
diberlakukan pada data. Suatu SMBD menyediakan kemampuan untuk
mendefinisikan dan menjalankan batasan tersebut.
j. Menyediakan backup dan pemulihan (recovery):
Suatu SMBD menyediakan fasilitas untuk backup dan pemulihan data dari
kerusakan perangkat keras, perangkat lunak, maupun kesalahan proses.
1.3 Resiko Pendekatan Basis Data
Sebagaimana putusan-putusan yang lain, pendekatan basis data bukanlah tanpa
risiko,
dan risiko-risiko tersebut harus dikenali untuk dapat ditangani. Pendekatan basis
data
membawa risiko-risiko sebagai berikut:
a. Spesialisasi baru:
5
Adopsi pendekatan basis data atau pembelian perangkat lunak SMBD memerlukan
SDM dengan spesialisasi yang baru. Untuk memenuhinya perlu mencari tenaga
baru atau dengan mengadakan pelatihan staf yang ada.
b. Perlunya beaya awal (start-up cost):
Beaya awal antara lain meliputi beaya untuk pengadaan perangkat keras,
perangkat lunak, dan pelatihan. Bahkan untuk aplikasi yang komplek berpotensi
memerlukan perangkat keras dan perangkat lunak dengan beaya yang relatip
mahal.
c. Perlunya konversi data:
Resiko ini muncul apabila data yang sudah ada sebelumnya diperlukan untuk basis
data (untuk kesinambungan proses), dan dengan sistem penyimpanan data
sebelumnya yang belum sesuai dengan keperluan basis data.
d. Perlunya backup:
Backup atau salinan file ke media penyimpanan yang tidak aktif, berguna di
dalam mengembalikan data yang rusak atau hilang, khususnya untuk data yang
penting jika terjadi kerusakan data. Perangkat lunak SMBD atau prosedur
tambahan dapat digu-nakan untuk keperluan tersebut.
e. Meningkatnya kompleksitas data:
Di dalam basis data terdapat puluhan bahkan ratusan file yang saling
terintegras. Pengelola file tersebut relatip komplek.
f. Data mudah diserang (vulnerable):
Dibandingkan dengan pemrosesan file tradisional, basis data lebih mengandung
kerawanan apabila terjadi masalah di dalam basis data, karena banyak aplikasi
secara bersamaan akan terganggu bahkan dapat menjadi lumpuh atau tidak dapat
berfungsi.
g. Gangguan dengan adanya data bersama:
Akses tumbukan untuk data bersama melalui beberapa program aplikasi dapat
menyebabkan timbulnya beberapa masalah.
h. Konflik organisasi:
Basis data melibatkan beberapa bagian di dalam suatu organisasi. Perlu suatu
konsensus untuk pendefinisian maupun “pemilikan” data. Tanpa konsensus
tersebut, tanggung jawab data, khususnya di dalam pemeliharaannya menjadi tidak
jelas.
6
Meskipun demikian, secara keseluruhan basis data memberikan pemecahan dalam
mengatasi makin meningkatnya kebutuhan akan informasi, makin meluasnya
aplikasi,
keterkaitan antar aplikasi, dan tuntutan pemakai akan layanan yang semakin cepat
dan mudah. Perkembangan teknologi komputer dan komunikasi yang sangat cepat
menawarkan kemampuan yang dapat dimanfaatkan basis data untuk meningkatkan
layanan pengolahan data.
BAB II
APLIKASI BASIS DATA
Basis data merupakan sumber daya yang berharga, karena dapat
digunakan untuk menghasilkan informasi. Pada kenyataannya basis data tidak
diakses secara langsung, akan tetapi dilakukan dengan menggunakan aplikasi.
Dengan kata lain aplikasi basis data merupakan pintu masuk ke dalam sumber
daya basis data.
2.1 Komponen Sistem Aplikasi Basis Data
a. Perangkat Keras, untuk menjalankan SMBD
b. Program, mendukung berbagai aplikasi basis data diperlukan perangkat
lunak berupa program komputer.
Program aplikasi dikelompokkan menjadi dua, ialah
- Program aplikasi yang dibuat dengan menggunakan bahasa
pemrograman baku seperti Pascal, Visual Basic, Visual Dephi, Visual
FoxPro dan lain-lain. Program tersebut mengakses SMBD melalui
pemanggilan sub-routine.
- Program aplikasi yang berisi program yang ditulis dengan menggunakan
bahasa yang dimiliki oleh produk SMBD, misalnya dengan bahasa
query/update yang interaktif. SMBD menyediakan fasilitas untuk
menyimpan urutan perintah query/update tersebut.
c. Data
Data untuk aplikasi basis data ialah basis data itu sendiri. Struktur dari
keseluruhan basis data disebut dengan schema atau conceptual view.
Bagian dari struktur basis data yang diproses oleh suatu aplikasi disebut dengan
7
sub schema atau application view. Sub schema disebut juga dengan logical
view.
d. Prosedur
Prosedur, Pemakai dan staf operasi memerlukan prosedur yang menjelaskan
bagaimana sistem dijalankan. Misalnya jika terjadi kegagalan (failure)
sistem, khususnya untuk sistem multi-user, maka prosedur yang harus
disiapkan antara lain ialah:
a) apa yang harus dikerjakan pertama kali,
b) data apa yang perlu disimpan, dan
c) bagaimana dengan transaksi yang sedang dikerjakan yang tidak dapat
diproses selama terjadi kegagalan.
Jika kondisi telah menjadi normal kembali, maka prosedur yang harus disiapkan
ialah:
a) berapa banyak pekerjaan yang harus dikerjakan ulang, dan
b) data apa yang secara manual diperoleh selama terjadinya kegagalan
perlu untuk dimasukkan ke dalam sistem sebelum transaksi yang baru dapat
diproses.
e. Orang
Orang yang terkait dengan aplikasi basis data dikelompokkan sebagai berikut:
a) Clientele adalah orang untuk siapa sistem dikembangkan.
b) Pemakai ialah yang menggunakan sistem untuk memenuhi kebutuhan bisnis
c) Personal Operasi mereka yang menjalankan komputer dan peralatan-
peralatan yang berhubungan. Terdiri dari: operator komputer, personalia
data kontrol, dan operator data entry.
d) Personal Pengembang Sistem yang merancang dan
mengimplementasikan basis data dan aplikasinya.
e) Administrator Basis Data (ABD) yang berfungsi untuk melindungi basis
data dan memecahkan konflik diantara pemakai.
2.2 Komponen Fungsional Aplikasi Basis Data
Komponen sistem menyediakan tiga fungsi dari basis data, yaitu:
a. mekanisme untuk updating data,
Aplikasi basis data harus menyediakan suatu mekanisme updating data, yaitu
yang terkait dengan kegiatan-kegiatan: memasukkan (entering), menghapus
(deleting), dan mengganti (editing) basis data.
8
Terdapat Lima metode dalam peng-update-an data, yaitu :
1. Load Utility
Bagian dari SMBD, metoda ini merupakan metoda primitive. Pemakai
mengisi data dengan dipandu oleh nama data item yang muncul.
2. Menggunakan Formulir
formulir tampilan di layar mempunyai format yang lebih teratur, posisi
tampilan data item dapat dirancang sesuai kebutuhan, dan dilengkapi
dengan petunjuk untuk pemandu. Kemampuan tersebut menjadikan
tampilan pada layar lebih komunikatif.
3. Menggunakan Format Tabular (menampilkan sejumlah data dalam bentuk
penampilan semacam matrik.)
4. Perintah query/update secara interaktif
Perintah untuk mengakses program query/update dari SMBD, kemudian
menuliskan perintah yang diperlukan untuk mengganti data sesuai
keinginan.
5. Input dari file lain
b. mekanisme untuk menampilkan atau display data,
Terdapat tiga cara untuk menampilkan atau display data, yaitu:
1. Report
Report merupakan ekstrak dari basis data, yang hasilnya dapat langsung
dicetak ke printer, display pada layar monitor, dan disimpan ke media
penyimpanan.
2. Respon ke Query
suatu pelaksanaan perintah yang ditulis dengan bahasa query basis data.
Bahasa ini sangat populer, dan pada Agustus 1986 menjadi standard dengan
sebutan Structure Query Language (SQL)
3. Eksport ke Sistem lain.
c. mekanisme untuk mengontrol pemrosesan aplikasi.
Terdapat banyak cara untuk melakukan kontrol pemrosesan aplikasi,
diantaranya ialah:
1. Menu
Sebagai contoh pada susunan hierarchi menu dan sub-menu sebagai berikut:
File Edit
Open Add
9
New Modify
Exit
2. Pemprograman Aplikasi
Pemprograman aplikasi dapat dilakukan validasi item yang meliputi cek tipe
data, cek batas atas/bawah (jika ada), cek validasi isian (domain isian),
dan hubungan antar sub-isian (misalnya tanggal dengan bulan).
3. Mengurangi Kumpulan Perintah yang Tersedia
Dengan menggunakan pemrograman visual, satu command atau lebih
dapat dibuat enabled atau disabled.
Mekanisme kontrol aplikasi sangat penting. Secara ringkas bentuk-bentuk
kontrol yang dapat dilakukan ialah:
- Membatasi view basis data, yaitu dengan hanya memberikan data yang
diperlukan.
- Membatasi akses ke aplikasi melalui password dan nomor account.
- Mengajarkan aplikasi kepada pemakai hanya untuk yang diperlukan.
- Membatasi pemrosesan melalui menu.
- Membatasi pemrosesan melalui perancangan program aplikasi.
- Membatasi kumpulan command yang dapat diaktifkan.
Diharapkan dengan upaya-upaya tersebut, dapat lebih menjamin keutuhan
dan keamanan basis data.
1
BAB III
PEMODELAN DATA
Model data adalah kumpulan tools yang secara konseptual untuk
mendeskripsikan data, hubungan data, semantic data, dan konsistensi konstrain.
Model data yang akan diuraikan pada bagian ini adalah meliputi :
3.1 Model Data Flat-File
Basis data flat-file terdiri dari satu atau lebih file yang dapat dibaca,
yang secara normal berbentuk format file text. Informasi pada suatu file-file
disimpan sebagai fields, dengan fields-nya memiliki panjang konstan atau
panjang bervariasi yang dipisahkan beberapa karakter (delimeter).
Contoh 3.1 :
0123:Aris Puji Widodo:PS.Ilmu Komputer
1234:Djalal ER Riyanto:PS.Ilmu Komputer
2345:Kushartantya:PS.Ilmu Komputer
3456:Suhartono:PS.Ilmu Komputer
4567:Bambang Yismianto:PS.Ilmu Komputer
5678:Indriyati:PS.Ilmu Komputer
6789:Beta Noranita:PS.Ilmu Komputer
7890:Eko Adi Sarwoko:PS.Ilmu Komputer
Pada contoh 3.1, terdapat 3 fields, untuk setiap fields dipisahkan dengan titik dua.
Setiap fields memiliki panjang tidak konstan. Pada saat menggunakan fields
separator, seharusnya fields seperatornya bukan merupakan karakter yang terdapat
pada data.
Kelemahan basis data flat-file:
Flat-file tidak menggunakan struktur data yang dengan mudah dapat direlasikan
Sulit untuk mengatur data secara efisien dan menjamin akurasi
Lokasi fisik fields data dengan file harus diketahui
Program harus dikembangkan untuk mengatur data
3.2 Model Data Hirarki
Basis data Hirarki satu tingkat di atas basis data flat-file, dalam hal
ini kaitanya dengan kemampuan untuk menemukan dan memelihara relasi antar
kelompok data. Arsitektur basis data hirarki berdasarkan konsep hubungan
parent/child. Pada basis data hirarki, suatu root table atau parent table berada apa
struktur yang paling atas, terhubung ke child table yang dihubungkan dengan
2
data. Struktur model basis data hirarki terlihat seperti kebalikan dari struktur
pohon seperti yang diberikan pada gambar 3.1.
Publishers
Authors
Titles
BookStores
Inventory Orders
Root table atau parent
Child tables dari Root table
Child tables dari level
sebelumnya
Gambar 3.1, Model Basis Data Hirarki
Pada gambar 3.1 Publishers adalah sebagai root table. Publisher memiliki dua
child table : Author dan BookStores. Publisher mempunyai beberapa orang Author
yang dikontrak, dan mempunyai beberapa BookStores untuk mensuplai kebutuhan
buku-buku. Titles adalah child dari Author, Inventory dan Orders adalah child
dari BookStrores. Salah satu masalah yang muncul adalah terjadinya redudansi
informasi Titles yang disimpan pada tabel Inventory, karena tidak ada hubungan
langsung antara Authors dan BookStores.
Kelebihan basis data hirarki dibandingkan flat-file:
- Data dapat dengan cepat dilakukan retrieve
- Integritas data mudah dilakukan pengaturan
Kelemahan basis data hirarki dibandingkan flat-file:
- Pengguna harus sangat familiar dengan struktur basis data
- Terjadi redudansi data
3.3 Model Basis Data Jaringan
Model basis data jaringan merupakan perbaikan dari model basis data
hirarki, yaitu dengan menambahkan kemampuan root table untuk melakukan share
relationships dengan child tables. Dalam hal ini child table dapat memiliki banyak
root table dan untuk melakukan akses terhadap child table, tidak dibutuhkan lagi
untuk mengakses root table terlebih dahulu.
Untuk set structure dapat dilihat pada gambar 3.2.
3
Publishers
Authors BookStores
owner
set structure
members
contract supply
Gambar 3.2. Model Basis Data Jaringan
Pada gambar 3.2. tabel Publishers memiliki 2 tabel : Authors dan BookStores.
Authors dan BookStores adalah sebagai member dari tabel Publishers. Publishers
meng-contract Authors untuk bekerja, dan Publishers akan men-supply buku-buku
yang selesai dikerjakan ke BookStores.
Publishers
Authors
Titles
BookStores
Inventory Orders
Root table atau parent
shared child table
Child tables dari level
sebelumnya
Child tables dari level
sebelumnya
Gambar 3.3. Child Table yang Dilakukan Share
Pada gambar 3.3. memberikan deskripsi child table atau members dapat dilakukan
share oleh parent table. Tabel Titles dimiliki oleh Authors dan BookStores, karena
Authors dan BookStores membutuhkan relasi dengan Titles. Walaupun 2 set
structure dapat digunakan untuk mengakses tabel Titles, informasi book title hanya
disimpan pada satu tabel, sehingga redudansi data direduksi.
Kelebihan basis data jaringan:
- Data lebih cepat diakses
- User dapat mengakses data dimulai dari beberapa tabel
- Mudah untuk memodelkan basis data yang komplek
- Mudah untuk membentuk query yang komplek dalam melakukan retrieve
data.
Kelemahan basis data jaringan:
- Struktur basis datanya tidak mudah untuk dilakukan modifikasi
4
- Perubahan struktur basis data yang telah didefinisikan akan mempengaruhi
program aplikasi yang mengakses basis data
- User harus memahami struktur basis data.
3.4 Model Basis Data Relasional
Beberapa perbaikan ditambahkan pada model ini, yaitu sederhana dalam
mengatur data, retrieve data, dan change data. Unit utama yang disimpan pada basis
data adalah berbentuk tabel atau kelompok data yang saling berhubungan. Tabel
terdiri baris dan kolom, baris adalah merepresentasikan tuple atau record pada tabel,
dan kolom merepresentaksikan fields pada tabel. Tabel dapat berhubungan dengan
tabel yang lain dengan menggunakan kunci.
Model basis data relasional tidak memiliki parent/root teble, walaupun relasi
antara parent table dan child table diperbolehkan. Parent table dapat memiliki
banyak child table, dan demikian juga sebaliknya. Untuk representasi model basis
data relasional diberikan pada gambar 3.4.
Publishers
Authors Titles
BookStores
Inventory
Orders
supply
contract sell
are ordered
stocked inwrite
Gambar 3.4. Model Basis Data Relasional
Kelebihan basis data relasional:
- Data sangat cepat diakses
- Struktur basis data mudah dilakukan perubahan
- Data direpresentasikan secara logik, user tidak membutuhkan bagaimana
data disimpan.
- Mudah untuk membentuk query yang komplek dalam melakukan retrieve data
- Mudah untuk mengimplementasikan integritas data
- Data lebih akurat
- Mudah untuk membangun dan memodifikasi program aplikasi
- Telah dikembangkan Structure Query Language (SQL).
Kelemahan basis data relasional:
5
- Kelompok informasi/tables yang berbeda harus dilakukan joined untuk
melakukan retrieve data
- User harus familiar dengan relasi antar tabel
- User harus belajar SQL
3.5 Model Basis Data Berorientasi Objek
Model basis data berorientasi objek adalah suatu model basis data, dimana
data didefinisikan, disimpan, dan diakses menggunakan pemrograman berorientasi
objek.
Pada gambar 3.5. diberikan ilustrasi mengenai contoh basis data berorientasi objek
dan implementasinya. Basis data berorientasi objek didefinisikan dengan
menggunakan bahasa pemrograman berorientasi objek, yaitu bahasa Java. Aplikasi
End user juga di bangun dengan menggunakan bahasa berorientasi objek. Object
database management system digunakan untuk membuat link antara basis data dan
aplikasi.
Database declarations
using Java
interaction
Object declarations using
Java
Application code written
using Java
Java program compiler
Application executables
generated
End user
Database
Gambar 3.5. Basis Data Berorientasi Objek
Dua struktur dasar yang terdapat pada basis data berorientasi objek terdiri
adalah dari objects dan literals. Objects adalah suatu struktur yang memiliki
identifiers, object dapat diasosiasikan dengan object yang lain. Literals adalah nilai-
nilai yang diasosiasikan dengan object dan tidak memiliki identifiers. Object dan
literals diorganisasikan oleh suatu tipe, dimana setiap elemen memiliki properties
yang sama, yang dapat dimodifikasi untuk setiap object. Class adalah ekuivalen
dengan tabel pada basis data relasional. Operasi digunakan untuk mengambil nilai-
nilai dari class yang lain, menambah nilai, dan untuk menghapus nilai. Ilustrasi
bagaimana relasi data pada basis data berorientasi objek diberikan pada gambar 3.6.
6
Nama Class
Properties
Class
Operasi / method
Gambar 3.6. Model Data Berorientasi Objek
Kelebihan basis data berorientasi objek:
Programmer hanya dibutuhkan memahami konsep berorientasi objek untuk
mengkombinasikan konsep berorientasi objek dengan storage basis data
relasional
Objek dapat dilakukan sifat pewarisan dari objek yang lain
Secara teoritis mudah untuk mengatur objek
Model data berorientasi objek lebih kompatibel dengan tools pemrograman
berorientasi objek.
Kelemahan basis data berorientasi objek:
User harus memahami konsep berorientasi objek, karena basis data berorientasi
objek tidak dapat bekerja dengan metoda pemrograman tradisional
3.6 Model Basis Data Relasional Objek
Tujuan model basis data relasional objek dikembangkan adalah untuk
mengkombinasikan konsep model basis data relasional dengan style pemrograman
berorientasi objek. Pada gambar 3.7. memberikan ilustrasi contoh basis data
relasional objek. Tabel employee memiliki 2 kolom yang memiliki tipe bentukan,
yaitu empInfo yang bertipe Person dan addrInfo yang bertipe Address. Pada
empInfo memiliki tipe Person, dimana Person memiliki kategori yang lebih
spesifik: noId, firstName, dan lastName.
7
Gambar 3.7. Basis Data Relasional Objek
Kelebihan basis data relasional objek:
- Tipe bentukan dapat dibuat
Kelemahan basis data relasional objek:
- User harus memahami antara konsep berorientasi objek dengan relasional
- Beberapa vendor mengimplementasikan konsep relasional objek tidak
mendukung sifat pewarisan objek.
1
BAB IV
MODEL ENTITY RELATIONSHIP
Model data Entity-Relationship (E-R) terdiri dari sekumpulan obyek-obyek,
yang disebut dengan entitas dan hubungan yang terjadi diantara obyek-obyek tersebut.
Model data E-R terbagi menjadi tiga konsep dasar, yaitu : himpunan entitas, himpunan
relationship, dan atribut.
4.1 Entitas (Entity) dan Himpunan Entitas (Entitas Set)
Suatu entitas merupakan suatu obyek dasar atau individu yang mewakili
sesuatu yang nyata eksistensinya dan dapat dibedakan dari obyek-obyek yang lain.
Suatu entitas mempunyai sekumpulan sifat, dan nilai dari beberapa sifat tersebut
adalah unik yang dapat mengidentifikasi entitas tersebut.
Sebagai contoh : setiap mahasiswa pada suatu perguruan tinggi merupakan
suatu entitas, dan NIM secara unik dapat menjadi identitas seorang mahasiswa
Suatu entitas memiliki atribut. Atribut merupakan sifat-sifat atau properti
yang dimiliki oleh entitas. Atribut inilah yang membedakan antara entitas yang satu
dengan entitas yang lain. Sebagai contoh, entitas mahasiswa mempunyai atribut
NIM, nama_mhs, alamat_mhs, tgl_lahir seperti yang diberikan pada table 4.1.
Tabel 4.1. Himpunan Entitas Mahasiswa NIM Nama_mhs Alamat_mhs Tgl_lahir
J2F004001 Thoriq Menoreh 9 Semarang 50236 24-9-1987
J2F004002 Pasha Beringin A2 Jakarta 10342 5-11-1986
J2F004003 Afifah Mawar II/7 Semarang 50234 16-8-1988
J2F004004 Rizky Buana 123 Bandung 20345 23-2-1987
J2F004004 Felix Bima I/21 Jakarta 10431 13-10-1988
Untuk setiap atribut, terdapat sekumpulan nilai yang disebut dengan domain,
atau himpunan nilai dari atribut tersebut. Domain dari atribut nama-mahasiswa
dapat berupa himpunan semua text-string dengan panjang yang telah ditentukan.
Dengan demikian, suatu basis data terdiri dari sekumpulan himpunan entitas
yang masing-masing terdiri dari sejumlah entitas dengan tipe yang sama. Sehingga
suatu atribut dari suatu himpunan entitas merupakan suatu fungsi pemetaan dari
himpunan entitas ke domain.
Suatu atribut yang digunakan dalam model E-R, dapat dikarakterisasikan ke
dalam tipe-tipe atribut sebagai berikut:
Atribut komposit dan atribut sederhana
2
Atribut sederhana yaitu atribut yang tidak diuraikan menjadi sub atribut, atau
tidak dapat diuraikan menjadi atribut yang lain. Sedangkan atribut komposit
adalah atribut yang dapat diuraikan menjadi beberapa sub atribut. Pada contoh
di atas, nama_mhs merupakan atribut sederhana, sedangkan alamat_mhs
merupakan atribut komposit karena dapat diuraikan menjadi beberapa sub
atribut, yaitu alamat, nama_kota, kodepos.
Atribut bernilai tunggal (single-valued attribute) dan atribut bernilai banyak
(multivalued attribute)
Atribut bernilai tunggal ditujukan pada atribut yang mempunyai paling banyak
satu nilai untuk setiap baris data. Pada contoh data mahasiswa di atas, semua
atribut merupakan atribut bernilai tunggal. Sedangkan atribut bernilai banyak
adalah ditujukan pada atribut yang dapat berisi lebih dari satu nilai, tetapi
mempunyai jenis yang sama. Contoh atribut bernilai banyak adalah jika kita
menambahkan atribut hobi pada data mahasiswa. Seorang mahasiswa dapat
memiliki satu hobi atau lebih dari satu hobi, bahkan dapat juga tidak
mempunyai hobi.
Atribut null
Nilai null digunakan ketika suatu entitas tidak mempunyai suatu nilai untuk
suatu atribut. Null juga menandakan bahwa suatu nilai atribut tidak ada atau
tidak diketahui. Sebagai contoh, jika mahasiswa tidak mempunyai hobi, maka
pada atribut hobi tidak ada nilainya.
Atribut turunan (Derived Attribute)
Atribut turunan adalah atribut yang nilainya diperoleh dari pengolahan atau
dapat diturunkan atribut atau tabel lain yang berhubungan. Sebagai contoh
adalah penambahan atribut angkatan pada tabel data mahasiswa. Nilai pada
atribut angkatan dapat diketahui dari NIM mahasiswa.
4.2 Relasi (Relationship) dan Himpunan Relasi (Relationship Set)
Relasi menunjukkan adanya hubungan di antara sejumlah entitas yang berasal dari
sejumlah himpunan entitas yang berbeda. Misalnya, seorang mahasiswa dengan
NIM = ‘J2F004001’ dan nama_mhs = ‘Thoriq’ (yang ada di himpunan entitas
mahasiswa) mempunyai relasi dengan entitas mata kuliah dengan kode_mtkul =
‘KOM104’ dan nama_mtkul = ‘Algoritma Pemrograman’. Relasi dari kedua entitas
tersebut mengandung arti bahwa mahasiswa tersebut sedang mengambil mata
kuliah Algortima Pemrograman.
3
Kumpulan semua relasi di antara entitas-entitas yang terdapat pada himpunan
entitas membentuk suatu himpunan relasi seperti yang diberikan pada table 4.2.
Tabel 4.2. Himpunan Entitas Mata Kuliah
Kode_mtkul Nama_mtkul sks Semester
KOM304 Sistem Operasi 3 3
KOM104 Algoritma
Pemrograman
3 1
KOM203 Pemrograman
Internet
3 2
KOM103 Logika Informatika 3 1
4.3 Kardinalitas Relasi (Mapping Cardinalities)
Kardinalitas merupakan jumlah maksimum entitas dimana entitas tersebut dapat
berelasi dengan entitas pada himpunan entitas yang lain.
Terdapat empat maca kardinalitas relasi yang terjadi antara himpunan entitas A dan
himpunan entitas B, yaitu :
Satu ke Satu (One to one)
Suatu entitas di dalam himpunan entitas A dihubungkan dengan paling banyak
satu entitas di dalam hinpunan entitas B, dan entitas di dalam himpunan entitas
B dihubungkan dengan paling banyak satu entitas dalam himpunan entitas A.
a1
a4
a3
a2
b4
b3
b2
b1
Gambar 4.1. Kardinalitas Relasi Satu ke Satu
Satu ke banyak (One to many)
Suatu entitas di dalam himpunan entitas A dihubungkan dengan lebih dari satu
entitas di dalam himpunan entitas B, dan entitas di dalam himpunan entitas B
hanya dapat dihubungkan dengan paling banyak satu entitas dalam himpunan
entitas A.
4
a1
a3
a2
b4
b3
b2
b1
b5
Gambar 4.2. Kardinalitas Relasi Satu ke Banyak
Banyak ke Satu (Many to one)
Suatu entitas di dalam himpunan entitas A dihubungkan dengan paling banyak
satu entitas di dalam himpunan entitas B, dan entitas di dalam himpunan entitas
B dapat dihubungkan dengan lebih dari satu entitas dalam himpunan entitas A.
a4
a3
a2
a1
a5
b1
b3
b2
Gambar 4.3. Kardinalitas Relasi Banyak ke Satu
Banyak ke Banyak (Many to many)
Suatu entitas di dalam himpunan entitas A dapat dihubungkan dengan lebih dari
satu entitas di dalam himpunan entitas B, dan entitas di dalam himpunan entitas
B dapat dihubungkan dengan lebih dari satu entitas dalam himpunan entitas A.
a1
a4
a3
a2
b4
b3
b2
b1
Gambar 4.4. Kardinalitas Relasi Banyak ke Banyak
5
4.4 Kunci (Key)
Kunci atau key merupakan satu atau gabungan dari beberapa atribut yang
dapat membedakan semua baris data dengan unik. Jika suatu atribut menjadi kunci,
maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama. Terdapat 3
macam kunci, yaitu:
1. Superkey, merupakan suatu himpunan yang terdiri dari satu atau lebih atribut
yang dapat membedakan setiap baris data dengan unik dalam sebuah tabel.
Sebagai contoh (NIM, nama_mhs, alamat_mhs, tgl_lahir), (NIM, nama_mhs,
alamat_mhs), (NIM, nama_mhs), (nama_mhs), (NIM).
2. Candidate-key, merupakan himpunan atribut minimal yang dapat membedakan
setiap baris data dengan unik dalam sebuah tabel. Sebagai contoh adalah (NIM),
(nama_mhs).
3. Primary key, merupakan kunci yang paling unik, lebih ringkas, lebih sering
dijadikan acuan. Primary key dapat dipilih dari salah satu dari candidate key.
Dari contoh di atas yang paling tepat dijadikan primary key adalah (NIM).
4.5 Diagram Entity-Relationship (Diagram E-R)
Suatu database, dapat digambarkansecara grafik dengan suatu diagram E-R.
Komponen-komponen pada diagram E-R dengan notasi yang diberikan pada
gambar 4.4.:
Persegi panjang, menggambarkan himpunan entitas.
Elips, menggambarkan atribut-atribut (atribut yang berfungsi sebagai kunci
digarisbawahi).
Belah ketupat, menggambarkan himpunan relationship.
Garis, menggambarkan hubungan atribut ke entitas dan himpunan entitas ke
himpunan relationship.
Kardinalitas relasi dapat digambarkan dengan banyaknya garis cabang atau
dengan pemakaian angka, 1 untuk relasi satu, n untuk relasi banyak.
6
Himpunan Entitas E
a
Himpunan Relasi R
atribut a sebagai key
garis Gambar 4.4. Notasi Diagram E-R
Sebagai contoh, relasi antara himpunan entitas Mahasiswa dengan himpunan
Mata Kuliah. Himpunan relasinya disebut dengan “Belajar”. Pada relasi ini,
seorang mahasiwa bisa mengambil lebih dari satu mata kuliah. Setiap mata
kuliah dapat diambil lebih dari satu mahasiswa. Relasi tersebut diberikan pada
gambar 4.5.
Mahasiswa Belajar mata kuliah
NIMnama_mhs
tgl_lahiralamat_mhs
NIM kode_mtkul
nilai
kode_mtkul nama_mtkul
skssemester
n n
Gambar 4.5. Skema Diagram E-R
4.6 Himpunan Entitas Lemah (Weak Entitas Lemah)
Himpunan entitas yang tidak memiliki atribut yang dapat berfungsi sebagai
primary key disebut dengan himpunan entitas lemah. Himpunan entitas lemah berisi
entitas-entitas yang kemunculannya tergantung pada keberadaannya dalam sebuah
relasi terhadap entitas lain (entitas kuat). Sebagai contoh, pada tabel data
Mahasiswa, dapat dilengkapi dengan entitas baru, yaitu hobi seperti yang diberikan
pada gambar 4.6.
7
Mahasiswa
NIM
nama_mhs
alamat_mhs
tgl_lahir
menyenangi
NIM hobi
hobi hobi1 n
Gambar 4.6. Penambahan Entitas hobi
Data hobi dapat dikategorikan sebagai himpunan entitas lemah (digambarkan
dengan kotak ganda), karena keberadaannya bergantung pada adanya relasi dengan
entitas yang ada pada himpunan entitas mahasiswa.
4.7 Spesialisasi dan Generalisasi
Suatu himpunan entitas mungkin mempunyai sub kelompok entitas yang
berbeda dari entitas yang lain pada himpunan entitas tersebut. Suatu sub himpunan
yang berada dalam himpunan entitas mungkin mempunyai atribut yang tidak
dimiliki oleh semua entitas dalam himpunan entitas tersebut.
Sebagai contoh, himpunan entitas Dosen dapat dibagi menjadi dua, yaitu
dosen tetap dan dosen tidak tetap. Himpunan entitas dosen, bisa memiliki atribut
nip, golongan, pangkat, tgl_masuk. Sedangkan untuk dosen tidak tetap, atribut-
atribut tersebut tidak diperlukan. Adanya perbedaan tersebut menyebabkan entitas
dosen tidak mungkin disatukan dalam sebuah himpunan entitas. Dari suatu
himpunan entitas, dapat dilakukan pengelompokan yang dapat membentuk suatu
himpunan entitas baru atau proses top down disebut dengan proses spesialisasi
seperti pada gambar 4.7.
8
Dosen
ISA
Dosen tidak
tetapDosen Tetap
top down
Gambar 4.7. Spesialisasi
Kebalikan dari spesialisasi adalah generalisasi, yaitu proses bottom up. Sebagai
contoh adalah himpunan entitas mahasiswa sebenarnya dapat terdiri dari mahasiswa
S1-regular dan mahasiswa S1-ekstensi pada gambar 4.8.
Adanya spesialisasi dan generalisasi digambarkan dalam relasi khusus yang disebut
dengan relasi ISA.
Mahasiswa
ISA
Mahasiswa
S1-Ekstensi
Mahasiswa
S1-Regular
bottom up
Gambar 4.8. Generalisasi
4.8 Agregasi
Satu keterbatasan dari model E-R adalah tidak mungkin untuk mengekspresikan
suatu himpunan relasi yang secara langsung menghubungkan sebuah himpunan
entitas dengan sebuah himpunan relasi. Untuk mengatasi hal tersebut, digunakan
suatu notasi khusus untuk menunjukkan adanya agregasi semacam itu.
Sebagai contoh, relasi antara himpunan entitas mahasiswa dengan himpunan entitas
mata kuliah. Terdapat beberapa mata kuliah yang mengandung kegiatan praktikum.
Himpunan relasi “Kegiatan” dalam diagram ER berikut ini menunjukkan entitas
9
mahasiswa yang mengikuti kegiatan praktikum, karena sedang mengambil mata
kuliah yang ada praktikumnya, seperti yang diberikan pada gambar 4.9.
Mahasiswa Belajar Mata_Kuliahn
Praktikum
n
Kegiatan
nimkode_mtkul
kode_prakt
nilai
kode_prakt nama_prakt
n
n
Gambar 4.9. Agregasi
10
BAB V
OPERATOR RELASI
5.1 Relasi Aljabar
Operasi aljabar terdiri dari himpunan operator level tinggi yang dioperasikan pada suatu
relasi. Setiap operator menggunakan satu atau dua relasi sebagai input dan menghasilkan
relasi baru sebagai output.
Codd mendefinisikan operator relasi terdiri dari delapan operator, dimana dibagi
menjadi dua kelompok sebagai berikut :
1. Operasi tradisional, terdiri dari Union, Intersection, Difference, dan Cartesian
Product.
2. operasi relasional khusus, terdiri dari Restrict, Project, Join, dan Devide.
Untuk kedelapan operator tersebut diatas, akan diuraikan secara detil sebagai berikut :
1.a Union ( )
AB adalah relasi dengan heading (atribut) yang sama untuk setiap A dan B, dimana
terdiri dari himpunan semua tuples yang terdapat pada A atau B atau kedua-duanya.
Ilustrasi : (hasil relasi baru adalah bagian yang diberi warna)
A B
Gambar 5.1. Ilustrasi AB.
Contoh 5.1.
Diberikan relasi (tabel) A
S SNAME STATUS CITY
S1 Aris 20 Semarang
S4 Eko 20 Semarang
Relasi (Tabel) B
S SNAME STATUS CITY
S1 Aris 20 Semarang
S2 Heni 10 Jakarta
Maka AB adalah menghasilkan relasi baru :
S SNAME STATUS CITY
S1 Aris 20 Semarang
S2 Eko 20 Semarang
S4 Heni 10 Jakarta
11
1.b. Intersect ( )
AB adalah relasi dengan heading (atribut) yang sama untuk setiap A dan B,
dimana terdiri dari himpunan semua tuples yang terdapat pada A dan B.
Ilustrasi : (hasil relasi baru adalah bagian yang diberi warna)
A B
Gambar 5.2. Ilustrasi AB.
Contoh 5.2.
Dengan menggunakan tabel A dan B yang diberikan pada contoh 5.1., maka AB
adalah menghasilkan relasi baru :
S SNAME STATUS CITY
S1 Aris 20 Semarang
I.c Difference (MINUS)
A MINUS B adalah relasi dengan heading (atribut) yang sama untuk setiap A dan
B, dimana terdiri dari himpunan semua tuples yang terdapat pada A, tetapi tidak
terdapat pada B.
Ilustrasi : (hasil relasi baru adalah bagian yang yang tidak diberi warna)
A B
Gambar 5.3. Ilustrasi A MINUS B.
Contoh 5.3.
Dengan menggunakan tabel A dan B yang diberikan pada contoh 5.1., maka A
MINUS B adalah menghasilkan relasi baru :
S SNAME STATUS CITY
S4 Eko 20 Semarang
Dan untuk B MINUS A adalah :
S SNAME STATUS CITY
S2 Heni 10 Jakarta
1.d Cartesian Product ( / TIMES)
12
A TIMES B adalah relasi yang terdiri dari semua himpunan tuples untuk setiap
elemen relasi pada A dikombinasikan dengan semua elemen pada relasi B.
Ilustrasi :
P
Q
R
Z
K
P
P
Z
K
Q
Q
Z
K
R
R
Z
K
Cartesian
Product
Gambar 5.4. Ilustrasi A TIMES B.
Contoh 5.4.
Dengan menggunakan tabel A dan B yang diberikan pada contoh 5.1., maka A
TIMES B adalah menghasilkan relasi baru :
A A A A B B B B
S SNAME STATUS CITY S SNAME STATUS CITY
S1 Aris 20 Semarang S1 Aris 20 Semarang
S1 Aris 20 Semarang S2 Heni 10 Jakarta
S4 Eko 20 Jakarta S1 Aris 20 Semarang
S4 Eko 20 Jakarta S2 Heni 10 Jakarta
1.e Restriction ( )
Ekstraksi terhadap suatu tuples (baris) pada suatu relasi yang memenuhi kondisi
tertentu. Kondisi untuk relasi, direpresentasikan menggunakan klausa WHERE
dan dapat dikombinasikan dengan operator logika dan/atau matematika.
Ilustrasi :
Gambar 5.5. Ilustrasi Restriction.
Contoh 5.5.
Dengan menggunakan tabel A yang diberikan pada contoh 5.1., maka A WHERE
CITY = ‘Semarang’ adalah menghasilkan relasi baru :
S SNAME STATUS CITY
S1 Aris 20 Semarang
S4 Eko 20 Semarang
Tuples (baris) yang
memenuhi kondisi
13
Atau dapat juga dituliskan ke dalam bentuk :
)()''( ASemarangCITY
1.f Projection ( )
Ekstraksi terhadap suatu atribut (kolom) pada suatu relasi yang memenuhi kondisi
tertentu.
Ilustrasi :
Atribut (kolom) yang
memenuhi kondisi
Gambar 5.6. Ilustrasi Projection.
Contoh 5.6.
Dengan menggunakan tabel A yang diberikan pada contoh 5.1., maka A
[S,SNAME] adalah menghasilkan relasi baru :
S SNAME
S1 Aris
S4 Eko
Atau dapat juga dituliskan ke dalam bentuk :
)(, ASNAMES
1.g Natural Join (JOIN)
Membentuk relasi dari dua relasi yang terdiri dari semua kemungkinan kombinasi
tuples, dimana tuples pada relasi yang kedua memenuhi suatu kondisi tertentu
(memiliki nilai atribut yang sama).
Ilustrasi :
a1 b1
a2
a3
b1
b2
Natural Join
b1
b2
c1
c2
b3 c3
a1
a2
b1
b1
a3 b1
c1
c1
c2
Gambar 5.7. Ilustrasi Natural Join.
Jika suatu relasi yang tidak memiliki atribut yang memenuhi kodisi (memiliki nilai
sama), maka A JOIN B adalah ekuivalen dengan A TIMES B.
1.h Devide (DEVIDEBY)
14
A DEVIDEBY B adalah relasi dengan heading (X) dan terdiri dari himpunan semua
tuples (X : x) dari tuples (X : x, Y : y) pada relasi A untuk semua tuples (Y : y) pada
relasi B.
Ilustrasi :
a
Devide
x
y
a
a
x
y
a z
b x
c y
Gambar 5.8. Ilustrasi Devide.
5.2 Relasi Kalkulus
Untuk melakukan manipulasi model relasional dapat dilakukan dengan relasi
aljabar dan relasi kalkulus. Relasi aljabar dapat secara aktual untuk membentuk relasi
yang diharapkan dari suatu relasi yang terdapat pada basis data, sedangkan relasi
kalkulus memberikan notasi untuk memformulasikan definisi relasi yang diinginkan
pada kondisi relasi yang diharapkan.
Dalam hal ini, hanya dilakukan pendefinisian karakteristik kondisi yang
diharapkan dan memisahkan penggunaan operasi-operasi relasi aljabar (Join, Projection,
…) yang dieksekusi untuk mengkonstruksikan hasil. Dengan kata lain bahwa relasi
kalkulus adalah merupakan deskriptif, sedangkan relasi aljabar adalah merupakan
perspektif. Atau dapat juga dikatakan bahwa relasi kalkulus merepresentasikan kondisi
suatu permasalahan (non-prosedural), sedangkan relasi aljabar memberikan prosedur
untuk menyelesaikan permasalahan (prosedural).
Kedua relasi tersebut adalah ekuivalen, tetapi berbeda dalam hal penerapannya
saja. Relasi kalkulus digunakan untuk natural language, sedangkan relasi aljabar
digunakan untuk bahasa pemrograman.
Relasi kalkulus merupakan bahasa yang berbasiskan first order predicate
calculus. Ekspresi menyatakan sifat dari hasil yang diharapkan, tanpa menentukan
bagaimana hasil tersebut di proses. Relasi kalkulus memiliki cirri-ciri sebagai berikut :
1. First order calculus biasanya mempergunakan simbol-simbol predikat dan simbol-
simbol fungsi. Untuk kaitannya dengan basis data : simbol fungsi tidak diperlukan
dan predikat diinterprestasikan sebagai relasi.
2. Formula pada first order calculus dapat dibedakan ke dalam dua kelas :
15
a. Open formulas (free variable)
b. Closed formulas atau sentences yang memiliki variable terbatas.
Karena kalkulus dipergunakan sebagai bahasa query dan basis data bertujuan
untuk instant maupun relasi lainnya, maka closed formulas tidak diperhatikan.
Untuk open formulas dapat didefinisikan sebagai himpunan tuples elemen dari
kondisi secara keseluruhan, yang dapat menghasilkan formula “TRUE”.
3. Karena definisi relasi yang berbeda dari teori himpunan dalam memunculkan nama
atribut dan himpunan domain, maka digunakan notasi yang sedikit berbeda.
2.a Domain Relational Calculus (DRC)
Ekspresi dalam DRC memiliki bentuk :
fxAxAxA kk |:,...,:,: 2211
dimana :
f : formula, Boolean expression
kxxx ,...,, 21 : variabel yang muncul pada f
kAAA ,...,, 21 : atribut-atribut
kk xAxAxA :,...,:,: 2211 : disebut list target dari formula, sebagai definisi
struktur hasil ekspresi, dimana relasi kAAA ,...,, 21 berisi tuples dengan nilai
kccc ,...,, 21 , yang secara berurutan mengganti nilai kxxx ,...,, 21 yang memenuhi f (
f =TRUE).
Adapun untuk definisi singkat dari DRC adalah sebagai berikut :
Simbol yang muncul pada formula adalah terdiri dari : konstan (elemen-elemen
domain D), variabel (elemen-elemen dari himpunan berhingga V yang dihubungkan
dengan domain D), nama relasi (tabel) dan atribut (berdasarkan skema basis data),
operator perbandingan (=, ≠, >, >=, <, <=), penghubung logika ( (dan/konjugsi),
(atau/disjungsi), ⌐ (not/negasi), ada/beberapa ( ), dan semua ( ))
Contoh 5.7.
Diberikan skema basis data silsilah dinasti keluarga, dimana terdiri dari empat relasi
(tabel) dan masing-masing memiliki key tunggal (atribut yang di beri garis bawah).
REIGNS(Sovereign, From, To)
PERSON(Name, Sex, Birth, Death)
16
FATHERHOOD(Father, Child)
MOTHERHOOD(Mother, Child)
REIGNS
Sovereign From To
James I 1603 1625
Charles I 1625 1648
Charles II 1660 1685
James II 1685 1688
Mary II 1688 1694
Anne 1702 1714
PERSON
Name Sex Birth Death
James I M 1566 1625
Elizabeth F 1590 1662
Charles I M 1600 1649
Charles II M 1630 1685
Mary F 1631 1659
James II M 1633 1701
Henrietta A F 1640 1670
Mary II F 1662 1694
Anne F 1665 1714
James F.E M 1686 1766
FATHERHOOD
Father Child
Lord Darnley James I
James I Elizabeth
James I Charles I
Charles I Charles II
Charles I Mary
Charles I James II
Charles I Herietta A
James II Mary II
James II Anne
James II James F.E
MOTHERHOOD
Mother Child
Mary Stuart James I
Anne of Denmark Elizabeth
Anne of Denmark Charles I
Henrietta Maria Charles II
Henrietta Maria Mary
Henrietta Maria James II
Henrietta Maria Herietta A
Anne Hyde Mary II
Anne Hyde Anne
Mary of Modena James F.E
17
Kemudian dilakukan operasi manipulasi terhadap model relasional diatas
menggunakan DRC sebagai berikut :
[a] Mengambil nama dan tanggal lahir dari anggota keluarga yang berstatus female
(F).
Dengan menggunakan formula secara DRC, maka query diatas diekspresikan
sebagai berikut :
'':,:,:,:|:,: 2432131 FxxDxBxSexxNPERSONxBxN
Sehingga diperoleh hasil query dari ekspresi diatas adalah :
Name Birth
Elizabeth 1590
Mary 1631
Henrietta A 1640
Mary II 1662
Anne 1665
[b] Mengambil Nama, Sex, dan dates (birth, death, mulai dan berakhirnya kekuasaan) untuk
semua keluarga Sovereigns.
Dengan menggunakan formula secara DRC, maka query diatas diekspresikan sebagai
berikut :
|:,:,:,:,:,: 654321 xDxToxFromxBxSexxSovn
541 :,:,: xToxFromxSovnREIGNS
6321 :,:,:,: xDxBxSexxNPERSONS
Sehingga diperoleh hasil query dari ekspresi diatas adalah :
Name Sex Birth From To Death
James I M 1566 1603 1625 1625
Charles I M 1600 1625 1648 1649
Charles II M 1630 1660 1685 1685
James II M 1633 1685 1688 1701
Mary II F 1662 1688 1694 1694
Anne F 1665 1702 1714 1714
[c] Mengambil nama-nama Sovereigns yang ayahnya diketahui, tettapi tidak terdapat pada
list sebagai anggota dinasti.
Dengan menggunakan formula secara DRC, maka query diatas diekspresikan sebagai
berikut :
|: 1xSovn
18
431 :,:,: xToxFromxSovnREIGNS
12 :,: xCxFDFATHERGHOO
7652765 :,:,:,: xDxBxSexxNPERSONxxx
Sehingga diperoleh hasil query dari ekspresi diatas adalah :
Sovereign
James I
5.2.2. Tuple Relational Calculus (TRC) Ekspresi dalam TRC memiliki bentuk :
fXx |
dimana :
f : Merupakan formula
x : Merupakan variabel tuple, satu-satunya variabel tuple di f
X : Satu set atribut yang berkorespodensi dengan x .
Nilai dari ekspresi adalah relasi dalam X , yang berisi semua tuples yang menghasilkan
TRUEf .
Contoh 5.8.
Suatu ekspresi yang dituliskan dalam DRC :
|:,:,: 321 xToxFromxSovn
321 :,:,: xToxFromxSovnREIGNS
dapat dituliskan ke dalam ekspresi TRC dengan menggunakan satu variabel :
xREIGNSToFromSovnx |,,
Contoh 5.9.
Suatu ekspresi yang dituliskan dalam DRC :
|:,:,:,:,:,: 654321 xDxToxFromxBxSexxSovn
541 :,:,: xToxFromxSovnREIGNS
6321 :,:,:,: xDxBxSexxNPERSONS
dapat dituliskan ke dalam ekspresi TRC :
|,,,,,1 DToFromBSexSovnx
)(,, 22 xREIGNSToFromSovnx
)..()..()..( 121212 ToxToxFromxFromxSovnxSovnx
19
)(,,, 33 xPERSONSDBSexNamex
)..()..()..()..( 13131313 DxDxBxBxSexxSexxSovnxNamex
Catatan :
Perbedaan antara DRC dan TRC adalah dalam membentuk variabel “RANGE” melalui
domain bukan relasi.
5.3 Persamaan dan Perbedaan Relasional Aljabar dan Relasi Kalkulus
1. Relasional kalkulus dan relasional aljabar dikelompokan pada bahasa yang
“Relationally Complete”, artinya : Setiap ekspresi relasional kalkulus dapat
direduksi pada bentuk relasional aljabar yang ekuivalen dengan ekspresi tersebut.
2. Ekspresi relasional kalkulus diselesaikan dengan menggunakan predikat kalkulus,
sedangkan ekspresi relasional aljabar diselesaikan dengan memanfaatkan operator
pada relasi sebagai operannya.
20
BAB VI
STRUCTURE QUERY LANGUAGE (SQL)
6.1 Struktur Dasar
SQL adalah didasarkan pada himpunan operasi-operasi relasional yang telah
dilakukan modifikasi dan perbaikan. Struktur dasar SQL terdiri dari tiga klausa, yaitu
SELECT, FROM, dan WHERE :
SELECT berkorespondensi dengan operasi Projection pada relasional aljabar.
SELECT digunakan untuk menampilkan list atribut pada hasil query.
FROM berkorespondensi dengan operasi Cartesian product pada relasional aljabar.
FROM digunakan sebagai list suatu relasi (tabel) yang akan di proses dan di
evaluasi.
WHERE berkorespondensi dengan operasi Selection pada relasional aljabar.
WHERE terdiri dari predikat yang meliputi atribut dalam relasi yang muncul pada
klausa FROM.
Secara umum tipikal query dengan menggunakan SQL memiliki bentuk sebagai berikut:
SELECT nAAA ,...,, 21
FROM nrrr ,...,, 21
WHERE P
Dimana :
nAAA ,...,, 21 : merepresentasikan atribut
nrrr ,...,, 21 : merepresentasikan relasi (tabel)
P : adalah predikat, dengan P = TRUE.
Sintak query SQL adalah ekuivalen dengan ekspresi relasional aljabar sebagai berikut:
nPAAA rrrn
...21,...,, 21
Untuk contoh-contoh yang diberikan pada modul ini, akan menggunakan skema basis
data supplier dan part yang diberikan pada gambar 6.1.
21
Tabel SUPPLIER
Tabel PARTS
Tabel SHIPMENT
Gambar 6.1. Skema Basis Data Supplier dan Part
22
1.1 Klausa Select
Diberikan suatu query sederhana dengan menggunakan skema basis data pada gambar
6.1, yaitu menentukan nama-nama semua kota (CITY) yang terdapat pada tabel PARTS:
SELECT CITY
FROM PARTS
Hasil query perintah SQL diatas adalah suatu relasi (tabel), yaitu :
Hasil query di atas akan mengambil semua tuples yang terdapat pada header (atribut)
CITY, sehingga duplikasi tuple terjadi. Untuk menghindari duplikasi yang terdapat pada
tuple dapat dilakukan dengan menambahkan DISTINCT setelah SELECT. Jika sintak
query di atas di rubah menjadi :
SELECT DISTINCT CITY
FROM PARTS
maka hasil query-nya menjadi :
Menampilkan semua atribut yang terdapat pada relasi sebagai hasil query, dapat
digunakan simbol asterisk ‘*’.
Misalkan diberikan sintak SQL :
SELECT COLOR, WEIGHT * 10
FROM PARTS
Sehingga akan diperoleh relasi sebagai hasil query sebagai berikut :
23
1.2 Klausa Where
Klausa WHERE digunakan untuk menentukan predikat atau kriteria yang harus di
penuhi suatu relasi sebagai hasil query. Klausa ini bersifat opsional, yaitu dapat
menggunakan klausa WHERE atau tidak. Jika tidak menggunakan klausa WHERE, maka
query dilakukan untuk semua tuples pada tabel yang disebutkan pada klausa FROM.
Misalkan, untuk menampilkan semua tuples SUPPLIER yang memiliki STATUS = 20.
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER
WHERE STATUS = 20
Hasil query perintah SQL diatas adalah :
Nilai predikat yang terdapat klausa WHERE, untuk tipe string harus diberikan tanda petik
tunggal, sedangkan untuk tipe numerik tidak menggunakan tanda petik tunggal.
Misalkan, untuk menampilkan semua tuples SUPPLIER yan berada di semarang :
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER
WHERE CITY = ‘Semarang’
Hasil query perintah SQL diatas adalah :
24
Predikat pada klausa WHERE dapat dikombinasikan dengan operator relasi
lainnya, seperti <, <=, >, >=, <>, dan operator logika, seperti AND, OR, NOT.
Misalkan, untuk menampilkan semua SUPPLIER yang memiliki STATUS = 30,
tetapi berada pada kota(CITY) Yogyakarta :
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER
WHERE STATUS = 30 AND CITY = ‘Yogyakarta’
Hasil query perintah SQL diatas adalah :
Klausa WHERE dapat digunakan untuk melakukan query dengan predikat yang
berbentuk suatu range nilai tertentu, yaitu menambahkan klausa BETWEEN.Misalkan,
menampilkan SUPPLIER yang memiliki STATUS antara 10 sampai dengan 30 :
Perintah SQL-nya adalah :
Hasil query perintah SQL diatas adalah :
Klausa WHERE dapat digunakan untuk melakukan query dengan predikat yang
berbentuk range nilai tertentu, yaitu menambahkan klausa BETWEEN.Misalkan,
menampilkan SUPPLIER yang memiliki STATUS antara 10 sampai dengan 30 :
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER
WHERE STATUS BETWEEN 20 AND 30
Hasil query perintah SQL diatas adalah :
25
Untuk atribut yang bertipe string dapat dilakukan suatu pencarian dengan pola tertentu,
yaitu dengan memanfaatkan karakter ‘%’ atau ‘_’ (underscore) dan menambahkan
klausa LIKE pada klausa WHERE :
‘%’ untuk semua substring
‘_’ untuk semua karakter pada posisi yang sesuai.
Misalkan, untuk menampilkan semua tuples SUPPLIER yang kotanya (CITY) di awali
dengan huruf ‘S’ :
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER
WHERE STATUS LIKE ‘S%’
Hasil query perintah SQL diatas adalah :
Sedangkan untuk menampilkan semua SUPPLIER yang karakter kedua dari kota
(CITY) adalah karakter ‘o’ :
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER
WHERE STATUS LIKE ‘_o%’
Hasil query perintah SQL diatas adalah :
1.3 Klausa From
Klausa FROM digunakan untuk menentukan tabel yang akan dijadikan sebagai sumber
untuk pencarian data. Misalkan, untuk menampilkan semua SUPPLIER yang
melakukan SHIPMENT dengan jumlah kuantitasnya lebih besar 300 :
Perintah SQL-nya adalah :
SELECT *
FROM SUPPLIER, SHIPMENT
WHERE SUPPLIER.SCODE=SHIPMENT.SCODE
AND SHIPMENT.QTY > 300
Hasil query perintah SQL diatas adalah :
26
Dalam melakukan query untuk dua tabel atau lebih tidak dapat dilakukan
sembarang. Tabel-tabel yang digunakan harus memiliki keterhubungan. Pada contoh
query di atas keterhubungan diwakili oleh nilai yang sama pada atribut SCODE yang
diwakili oleh kedua tabel yang digunakan. Ekspresi SUPPLIER.SCODE adalah
menunjukan nilai SCODE yang berasal dari tabel SUPPLIER, sedangkan
SHIPMENT.SCODE adalah menunjukan nilai SCODE yang berasal dari tabel
SHIPMENT. Untuk menghindari ketidakjelasan atribut yang terlihat pada relasi
sebagai hasil query, dapat dilakukan dengan cara menyebutkan nama tabel yang
terdapat pada klausa FROM. Dan untuk menyederhanakan cara penulisan, dapat
digunakan nama alias untuk tabel-tabel yang terdapat pada klausa FROM.
6.2 Fungsi Agregasi
Dalam melakukan suatu query, terkadang dibutuhkan untuk melakukan perhitungan
jumlah tuples, total nilai suatu atribut, nilai atribut terbesar atau terkecil, dan
menentukan nilai rata-rata suatu atribut.
Untuk memenuhi kondisi-kondisi di atas, SQL sebagai bahasa query menyediakan
fungsi-fungsi agregasi sebagai berikut.
AVG
Untuk memperoleh nilai rata-rata suatu atribut yang bertipe numerik.
MIN
Untuk memperoleh nilai terkecil suatu atribut yang bertipe numerik.
MAX
Untuk memperoleh nilai terbesar suatu atribut yang bertipe numerik.
SUM
Untuk memperoleh nilai total suatu atribut yang bertipe numerik.
COUNT
Untuk memperoleh nilai banyaknya tuples.
Untuk peggunaan fungsi-fungsi agregasi di atas, diberikan contoh-contoh penerapan
fungsi agregasi pada suatu query sebagai berikut:
Menghitung banyaknya tuples pada tabel SHIPMENT
27
Perintah SQL-nya adalah :
SELECT COUNT(*)
FROM SHIPMENT
Hasil query perintah SQL diatas adalah :
Menampilkan total berat (WEIGHT) untuk semua PARTS
Perintah SQL-nya adalah :
SELECT SUM(WEIGHT)
FROM PARTS
Hasil query perintah SQL diatas adalah :
Menghitung rata-rata kuantitas (QTY) untuk semua SHIPMENT
Perintah SQL-nya adalah :
SELECT AVG(QTY)
FROM SHIPMENT
Hasil query perintah SQL diatas adalah :
Menentukan nilai STATUS yang terbesar untuk SUPPLIER
Perintah SQL-nya adalah :
SELECT MAX(STATUS)
FROM SUPPLIER
Hasil query perintah SQL diatas adalah :
Menentukan nilai kuantitas (QTY) yang terkecil untuk SHIPMENT
Perintah SQL-nya adalah :
SELECT MIN(QTY)
FROM SHIPMENT
Hasil query perintah SQL diatas adalah :
28
Fungsi agregasi dapat juga dikombinasikan dengan klausa GROUP BY, untuk
menyatakan pengelompokan tuple hasil query.
Misalkan, untuk menampilkan banyaknya tuple dan jumlah kuantitas (QTY) untuk
SHIPMENT yang dikelompokan berdasarkan PARTS (PCODE) dengan urutan secara
menaik:
Perintah SQL-nya adalah :
SELECT PCODE, COUNT(*), SUM(QTY)
FROM SHIPMENT
GROUP BY PCODE
ORDER BY PCODE
Hasil query perintah SQL diatas adalah :
6.3 Nilai Null
Nilai NULL pada suatu query dapat diperlakukan secara khusus, yaitu dapat juga
diperlakukan untuk query menggunakan ekspresi SQL.
Misalkan, menampilkan atribut CITY dari tabel SUPPLIER yang masih kosong :
Perintah SQL-nya adalah :
SELECT DISTINCT SCODE
FROM SUPPLIER
WHERE CITY is NULL
Hasil query perintah SQL diatas adalah : Tidak menampilkan hasil apapun, karena
semua atribut CITY sudah diisi dengan data.
Dapat juga dilkakukan untuk menghitung banyaknya nama SUPPLIER yang STATUS-
nya sudah terisi (tidak kosong) :
Perintah SQL-nya adalah :
SELECT COUNT(*)
FROM SUPPLIER
WHERE STATUS is NOT NULL
29
6.4 Manipulasi Data (DML)
4.1 Menambahkan Tuple (Record)
Sintak SQL untuk penambahan tuple baru ke suatu tabel adalah :
INSERT INTO nAAAt ,...,, 21
VALUES nVVV ,...,, 21
dimana :
t : nama relasi (tabel) yang akan dilakukan penambahan tuple
nAAA ,...,, 21 : nama-nama atribut yang akan di isi nilainya
nVVV ,...,, 21 : nilai-nilai yang akan diisikan pada atribut-atribut.
Nama atribut-atribut pada tabel dapat tidak dituliskan, jika akan mengisikan nilai ke
semua atribut dengan urutan atribut sesuai dengan pendefinisian struktur yang
dilakukan pada saat awal pembuatan tabel. Tetapi jika urutan atribut berbeda atau
atribut yang akan diisikan nilainya tidak pada semua atribut, maka nama-nama
atribut yang akan di isi nilainya harus dituliskan.
Misalkan, untuk menambahkan tuple pada tabel SUPPLIER :
Perintah SQL-nya adalah :
INSERT INTO SUPPLIER
VALUES ('S6','YOSHINTA',20,'Semarang')
Hasil query perintah SQL diatas adalah :
Ekspresi perintah SQL di atas, dapat juga dituliskan menggunakan ekspresi SQL :
INSERT INTO SUPPLIER (SCODE,SNAME,STATUS,CITY)
VALUES ('S6','YOSHINTA',20,'Semarang')
Untuk nama atribut yang tidak disebutkan pada perintah INSERT, atribut-atribut
tersebut akan di isi dengan nilai NULL.
Misalkan, perintah SQL sebagai berikut :
INSERT INTO SUPPLIER (SCODE,SNAME,STATUS)
tuple baru yang ditambahkan pada tabel SUPPLIER
30
VALUES ('S7','MIRANTHI',20)
Hasil query perintah SQL diatas adalah :
4.2 Menghapus Tuple (Delete)
Sintak SQL untuk menghapus tuple pada suatu tabel adalah :
DELETE FROM t
[ WHERE P ]
4.3 Mengubah Tuple (Record)
Sintak SQL untuk mengubah nilai atribut pada tuple dari sebuah tabel adalah :
UPDATE t
SET assignment
[ WHERE P ]
6.5 Transaksi
Perintah transaksi yang harus digunakan sebagai akhir transaksi adalah :
- commit [ work ]
Operasi-operasi manipulasi data yang telah dilakukan, akan di simpan secara
permanen ke dalam disk dan transaksi dinyatakan selesai. Setelah transaksi
commit, secara otomatis transaksi baru di mulai.
- rollback [ work ]
Operasi-operasi manipulasi data yang belum dilakukan commit akan dibatalkan
(tidak disimpan secara permanen ke dalam disk). Sehingga kondisi basis data
yang di simpan pada disk tidak akan mengalami perubahan, seperti sebelum
transaksi rollback di eksekusi.
Work pada perintah transaksi commit dan rollback bersifat opsional dan tidak
memberikan pengaruh terhadap makna kedua perintah transaksi tersebut.
nilai NULL atribut CITY yang ditambahkan pada tabel SUPPLIER
31
6.6 DDL
DDL adalah perintah-perintah untuk mendefinisikan objek-objek basis data, dimana
tidak hanya sekumpulan relasi (tabel), tetapi juga tentang informasi setiap tabel, yaitu
meliputi sebagai berikut :
Skema untuk setiap tabel
Domain nilai untuk setiap atribut
Integritas constraints
Indek untuk setiap tabel
Informasi security dan authorization untuk setiap tabel
Struktur fisik penyimpanan untuk setiap tabel pada disk.
Sintak SQL untuk membuat tabel di dalam basis data adalah :
CREATE TABLE nn DADADAt ,...,, 2211
dimana :
t : adalah nama tabel
nAAA ,...,, 21 : adalah nama-nama atribut yang dimiliki oleh tabel t
nDDD ,...,, 21 : adalah domain nilai masing-masing atribut yang ditentukan
berdasarkan tipe data
Untuk domain tipe data meliputi sebagai berikut :
char(n)
Tipe string dengan panjang tetap sebesar n karakter (jika panjang karakter yang
diisikan kurang dari n, maka sisanya di isi dengan spasi)
varchar(n)
Tipe string dengan panjang fleksibel, tetapi maksimal sebanyak n karakter.
int atau integer
Tipe integer 2 byte.
smallint
Tipe integer 1 byte.
real, double, precision
Tipe pecahan decimal floating point.
float(n)
Tipe pecahan decimal floating point dengan presisi n digit.
date
Tipe tanggal (terdiri 4 digit tahun, bulan, dan tanggal).
32
time
Tipe waktu (terdiri dari jam, menit, dan detik)
Misalkan, untuk membuat tabel SUPPLIER :
Perintah SQL-nya adalah :
CREATE TABLE SUPPLIER
( SCODE char(3),
SNAME varchar(20),
STATUS int,
CITY varchar (15))
Dalam melakukan pembuatan tabel dapat juga dilakukan untuk menambahkan suatu
indek primer berdasarkan atribut tertentu, yaitu dengan cara menggunakan klausa
PRIMARY KEY. Misalkan, pada tabel SUPPLIER di atas memiliki indek
berdasarakan atribut SCODE :
Perintah SQL-nya adalah :
CREATE TABLE SUPPLIER
( SCODE char(3) NOT NULL,
SNAME varchar(20),
STATUS int,
CITY varchar (15),
PRIMARY KEY (SCODE))
Jika suatu tabel memiliki indek secara komposit (gabungan), maka dilakukan dengan
cara menuliskan semua atribut pada kalusa PRIMARY KEY.
Misalkan pada tabel SUPPLIER memiliki indek SCODE dan SNAME :
Perintah SQL-nya adalah :
CREATE TABLE SUPPLIER
( SCODE char(3) NOT NULL,
SNAME varchar(20) NOT NULL,
STATUS int,
CITY varchar (15),
PRIMARY KEY (SCODE,SNAME))
Keberadaan tabel yang telah dibuat dapat dibatalkan atau di hapus dengan menggunakan
perintah SQL :
DROP TABLE t
t adalah nama tabel yang di hapus. Misalkan tabel SUPPLIER akan dihapus :
Perintah SQL-nya adalah :
33
DROP TABLE SUPPLIER
Struktur tabel yang telah dibut dapat dilakukan perubahan, tanpa harus menghapus tabel
dan kemudian membangunnya kembali dengan definisi struktur yang baru. Perubahan
struktur menjadi lebih praktis, dan juga tidak mengakibatkan hilangnya data yang sudah
ada pada tabel (jika data sudah ada).
Perubahan struktur terdiri dari :
Penambahan atribut
Sintak SQL :
ALTER TABLE t ADD A D
t adalah nama tabel yang dilakukan perubahan, A adalah nama atribut, dan D adalah
tipe data untuk atribut A .
Penghapusan atribut
Sintak SQL :
ALTER TABLE t DROP A
t adalah nama tabel yang dilakukan perubahan, dan A adalah nama atribut.
Misalkan, untuk menambahkan atribut DATE_OF_BORN pada tabel SUPPLIER :
Perintah SQL-nya adalah :
ALTER TABLE SUPPLIER ADD DATE_OF_BORN date
Dan untuk menghapus atribut DATE_OF_BORN pada tabel SUPPLIER, dilakukan
dengan perintah SQL :
ALTER TABLE SUPPLIER DROP DATE_OF_BORN
34
BAB 7
NORMALISASI DATA
Normalisasi data merupakan suatu proses untuk mendapatkan struktur tabel atau
relasi yang efisien dan bebas dari anomali, dan mengacu pada cara data item dikelompokkan
ke dalam struktur record. Anomali merupakan efek samping yang tidak diharapkan, yang
ditimbulkan dari suatu proses.
Terdapat tiga macam anomali, ialah:
Anomali Peremajaan
Anomali Anomali
Anomali Penghapusan
Sebagai contoh :
PERWALIAN
NIM NAMA NODOSEN DOSEN
20001 MARLINA 131 DRA DINA MSC
20002 HARDIMIN 132 BADRUN SSI MSI
20003 KOMARUDIN 133 DRS AMINUDIN
20004 HUSNI 131 DRA DINA MSC
20005 DANY 131 DRA DINA MSC
20006 INDAH 132 BADRUN SSI MSI
Ketergantungan Fungsional
Suatu ketergantungan fungsional ialah suatu relationship diantara atribut. Dengan
ketergantungan fungsional, jika diberikan nilai suatu atribut maka akan dapat diperoleh atau
dicari nilai dari atribut lain. Atau secara lebih formal ketergantungan fungsional
didefinisikan sebagai berikut:
R suatu relasi, x dan y himpunan bagian dari himpunan atribut R.
y mempunyai ketergantungan fungsional (KF) pada x, atau:
x y
jika dan hanya jika setiap nilai x di dalam R mempunyai asosiasi dengan tepat satu nilai
y di dalam R.
35
x disebut determinant, yaitu sebagai atribut
penentu.
y disebut dependent, yaitu sebagai atribut
yang bergantung.
sebagaimana berikut :
x y
Diagram Ketergantungan Fungsional
Contoh:
Jika diberikan relasi berikut:
MHS (nim, nama, tgllahir, alamat, kodepos,
kabupaten, propinsi)
Dari relasi di atas, maka:
nim nama
nim tgllahir
nim alamat
nim kodepos
nim kabupaten
nim propinsi
dan juga
kodepos kabupaten
kodepos propinsi
merupakan contoh-contoh yang memenuhi ketentuan ketergantungan fungsional.
Sedangkan
tgllahir alamat
tidak memenuhi ketentuan di dalam ketergantungan fungsional, karena pada kenyataan-nya
dapat terjadi lebih dari satu orang dengan tgllahir yang sama
Kunci (Key)
X Y
36
Secara umum, suatu kunci ialah suatu atribut atau group atribut yang secara fungsional
menentukan atribut non-key.
NILAI
NIM KODEMTK NIL_HURUF
20001 MTK1 A
20001 MTK3 B
20002 MTK3 B
20003 MTK1 C
20003 MTK2 B
20004 MTK3 C
20005 MTK1 A
20006 MTK2 B
20006 MTK3 B
Unnormalized
Unnormalized ialah suatu relasi yang mengandung atribut dengan nilai non-atomic, dan atau
mempunyai group atribut berulang. Nilai atribut atomic ialah nilai suatu atribut yang tidak
dapat dibagi menjadi komponen-komponen yang lebih kecil. Sehingga nilai atribut
composite dan nilai atribut multivalued tidak diijinkan disini.
Berikut adalah contoh relasi yang mengandung atribut dengan nilai non-atomic, yang
disebabkan adanya atribut-atribut composite dan atribut multivalued.
nama_jalan kota kode_pos
KENDARAAN
NOPOLISI PEMILIK ALAMAT WARNA
H3003YA IR HARY
D.
JL MELATI 234,PATI,33890 MERAH
H3004YB PAMUJI JL GARUDA
V/2,TEGAL,33567
HITAM,PUTIH
H3005YA NINA JL DELIMA
X/54,DEMAK,33452
BIRU,BIRU
MUDA
37
Perhatikan isi data dari formulir isian rencana studi berikut:
FORMULIR ISIAN RENCANA STUDI
NAMA : AMIR
NIM : 10
KODE MATA KULIAH DOSEN RUANG NILAI
----- ----------- ---------- ----- -----
MTK1 STATISTIK DRS JANUAR, MSI R101 B
MTK2 BHS INGGRIS DRA ANDINI R102 A
Kemudian data di atas, ditambah dengan data dari mahasiswa lain disimpan dalam bentuk
relasi sebagai berikut:
RENC_STUDI
NIM NAMA KODEMTK MTK DOSEN RUANG NILAI
10 AMIR MTK1, STATISTIK, DRS
JANUAR
MSI,
R101, B,
MTK2 BHS
INGGRIS
DRA
ANDINI
R102 A
11 PUTRI MTK1, STATISTIK, DRS
JANUAR
MSI,
R101, A,
MTK4 FISIKA DRS HERY
MSI
R201 B
12 ANDI MTK2 BHS
INGGRIS
DRA
ANDINI
R102 A
merupakan relasi dengan bentuk unnormalized, karena di dalamnya terdapat group atribut
berulang.
Bentuk Normal Ketiga (3NF)
Suatu relasi di dalam 3NF jika dan hanya jika:
Memenuhi 2NF
Setiap atribut bukan kunci tergantung non-transitive pada kunci utama.
FORMULIR ISIAN RENCANA STUDI
NAMA : AMIR
NIM : 10
KODE MATA KULIAH DOSEN RUANG
NILAI
----- ----------- ---------- ----- ---
--
MTK1 STATISTIK DRS JANUAR, MSI R101 B
MTK2 BHS INGGRIS DRA ANDINI R102 A
38
Atribut bukan kunci merupakan sembarang atribut yang tidak berpartisipasi di dalam kunci
utama dari relasi terkait. Sedangkan ketergantungan transitive terjadi apabila satu atribut
bukan kunci tergantung pada satu atau lebih atribut bukan kunci yang lain.
Kunci Utama A B
Gambar 7.9 Ketergantungan Transitive
Dari gambar di atas, B mempunyai ketergantungan fungsional pada Kunci Utama, dan juga
pada A. Non-transitive memberikan implikasi tidak adanya saling ketergantungan.
Contoh:
Relasi di dalam Gambar 7.8 (yang masih mengandung ketergantungan transitive) akan
diubah agar mempunyai bentuk normal yang lebih tinggi yaitu 3NF.
Untuk itu maka relasi TBL_MTK dipecah menjadi dua, yaitu AMPU dan LOKASI,
sehingga relasi yang dihasilkan ialah sebagai berikut.
39
MHS KRS
NIM NAMA NIM KODEMTK NILAI
10 AMIR 10 MTK1 B
11 PUTRI 10 MTK2 A
12 ANDI 11 MTK1 A
11 MTK4 B
12 MTK2 A
AMPU LOKASI
KODEMTK MTK DOSEN DOSEN RUANG
MTK1 STATISTIK DRS JANUAR
MSI
DRS JANUAR
MSI
R101
MTK2 BHS
INGGRIS
DRA ANDINI DRA ANDINI R102
MTK4 FISIKA DRS HERY
MSI
DRS HERY
MSI
R104
Gambar 7.10 Bentuk Normal Ketiga (3NF)
Dari relasi yang dihasilkan terakhir di atas, maka:
Tidak ada ketergantungan transitive.
Setiap atribut bukan kunci bergantung penuh pada kunci utama.
Sampai dengan tahapan terakhir ini (3NF), diperoleh struktur relasi yang bebas dari anomali.
7.4. Bentuk-bentuk Normal
Relasi di dalam bentuk normal ketiga (3NF) sudah cukup untuk banyak perancangan basis
data praktis. Akan tetapi 3NF tidak menjamin semua anomali telah dihilangkan (McFadden,
1988). Sehingga untuk menghilangkan anomali yang masih ada diperlukan penambahan
proses normalisasi yang lebih tinggi. Pada prakteknya sangat sedikit orang perlu
memikirkan penormalisasian di atas bentuk normal ketiga (Whitehorn, 2003).
Bentuk-bentuk normal yang lebih tinggi dari 3NF antara lain ialah:
a. Boyce-Codd Normal Form (BCNF)
Jika suatu relasi mempunyai lebih dari satu kunci kandidat yang overlapping, terdapat
kemungkinan masih dijumpainya anomali (meskipun relasi sudah memenuhi 3NF). R.
F. Boyce dan E. F. Codd mengusulkan pemecahannya dengan mengenalkan suatu
40
bentuk normalisasi yang didefinisikan lebih kuat dari 3NF. Bentuk tersebut yang
kemudian disebut dengan nama Boyce Codd Normal Form (BCNF). Suatu relasi di
dalam BCNF jika dan hanya jika, hanya determinant yang menjadi kunci kandidat.
b. Bentuk Normal Keempat
Meskipun suatu relasi sudah memenuhi BCNF, terdapat kemungkinan relasi tersebut
masih menghasilkan anomali peremajaan. Untuk menghilangkan anomali tersebut
perlu dilakukan proses normalisasi untuk mendapatkan 4NF. Di dalam membentuk
relasi menjadi 4NF, akan terkait dengan suatu bentuk hubungan antar atribut yang
disebut dengan: Multi Valued Dependence (MVD).
Ambil R suatu relasi, dan A, B, C merupakan bagian berubah-ubah dari R.
B dikatakan multi dependent pada A, atau
A B
jika dan hanya jika himpunan nilai B sesuai dengan pasangan (nilai A, nilai C) di dalam
R, hanya bergantung pada nilai A dan bebas dari nilai C.
Suatu relasi R di dalam 4NF jika dan hanya jika, kapan saja terdapat himpunan bagian
A dan B dari atribut R sedemikian sehingga:
MVD A B memenuhi,
maka semua atribut juga bergantung fungsional pada A.
c. Bentuk Normal Kelima
Sebelum bicara tentang relasi dengan bentuk normal yang lebih tinggi dari 4NF,
perlu dikenalkan dahulu tentang Joint-Dependency (JD).
Joint Dependency (JD):
Ambil R suatu relasi, dan A, B, .., Z himpunan bagian berubah-ubah dari himpunan
atribut R.
R memenuhi joint dependence, jika:
* (A, B, .., Z)
jika dan hanya jika R sama dengan joint dari projection dari A, B, ..., Z.
41
Suatu relasi di dalam 5NF atau disebut dengan Projection-Joint Normal Form (PJ/NF)
jika dan hanya jika setiap JD di dalam R dinyatakan tidak langsung oleh kandidat key
dari R.
42
BAB 8
PERLINDUNGAN DAN PEMULIHAN DATA
Integritas dan Keamanan
Integritas konstrain memberikan jaminan bahwa perubahan yang dilakukan terhadap
basis data tidak menghasilkan hilangnya konsistensi data. Integritas konstrain juga
untuk mencegah terjadinya suatu kerusakan basis data akibat adanya kejadian yang
bersifat asidental.
Integritas Data
Integritas data adalah jaminan konsistensi data terhadap semua status konstrain yang
diberlakukan terhadap data tersebut, sehingga memberikan jaminan keabsahan data
itu sendiri.
Keamanan Basis Data
Keamanan basis data adalah pemberian perlindungan basis data terhadap ancaman
dan gangguan, baik yang bersifat teknis maupun administrasi
Locking dan Deadlock
Salah satu teknik untuk mengatasi masalah-masalah yang terjadi pada konkurensi
dengan cara menggunakan teknik Locking. Locking adalah merupakan teknik untuk
melakukan penguncian terhadap suatu transaksi lain dalam melakukan pengaksesan
data yang sedang dipergunakan oleh transaksi current.
Matrik Jenis Kompatibel Lock
Transaksi B
Transaksi A
X-lock S-lock No Lock
X-lock No No Yes
S-lock No Yes Yes
No Lock Yes Yes Yes
Teknik Locking untuk penanganan konkurensi pada kehilangan update :
Transaksi A Waktu Transaksi B
T1 Begin transaksi A
Begin transaksi A T2 Read(Balance)
{membutuhkan S-lock pada
Balance}
Read(Balance) T3 Balance = Balance + 100
{membutuhkan S-lock pada
Balance}
Balance = Balance + 10 T4 Write(Balance)
43
{membutuhkan X-lock pada
Balance}
WAIT
Write(Balance) T5 WAIT
{membutuhkan X-lock pada
Balance}
WAIT
WAIT Deadlock WAIT
WAIT Deadlock WAIT
View Serializability
Konsep view equivalent merupakan kepastian untuk konsep view serializability. Dikatakan
bahwa schedule S adalah view serializability jika view equivalent untuk serial schedule.
Schedule 6 adalah view serializable. Tentu saja view equivalent untuk serial schedule < 3T ,
4T ,6T >, karena instruksi read(Q) membaca inisialisasi nilai Q antara kedua schedule, dan
6T menjalankan write Q terakhir antara kedua schedule.
3T 4T 6T
Read(Q)
write(Q)
write(Q)
write(Q)
Testing untuk Serializability
Jika untuk precedences graph S memiliki cycle, maka schedule S tidak conflict
serializable. Tetapi jika precedences graph S tidak memiliki cycle, maka schedule S
conflict serializable.
Contoh
Diberikan schedule A sebagai berikut :
1T 2T 3T 4T
5T
read(Y)
read(Z)
read(Y)
read(Y)
write(Y)
read(V)
read(W)
write(W)
44
T2T1
T3 T4
T5
T25
T26
T28
T27
read(U)
read(U)
write(U)
write(Z)
read(Y)
write(Y)
read(Z)
write(Z)
Sehingga dari schedule A diatas diperoleh precedence graph sebagai berikut :
Deadlock Detection and Recovery Deteksi deadlock dilakukan dengan cara sistem secara periodik mengawasi dan
mendeteksi deadlock yang terjadi.
Misalkan terdapat transaksi T25, T26, T27, T28 melakukan aktivitas transaksinya.
T25 dalam status menanti penggunaan data yang dipegang transaksi T26 dan T27
T27 menanti transaksi T26.
Jika T28 menanti Transaksi T27 maka terjadilah siklus penantian yang mengakibatkan
terjadinya deadlock. Siklus tersebut adalah T26 – T28 – T27 – T26, yang dapat dilihat pada
gambar 8.17 yang merupakan terjadinya deadlock.
45
DAFTAR PUSTAKA
Pratama, A. 2013.Pengenalan Database
http://ilmukomputer.org/wp-content/uploads/2013/02/PENGENALAN-
DATABASE-ILMUKOMP.pdf (di unduh 1/12/2013)
http://rogayah.staff.gunadarma.ac.id/Downloads/files/28963/konsep-sistem-basis-
data_presentasi.pdf (di unduh 1/12/13)
http://database.rizaarifudin.info/category/materi-1/ (dilihat 1/12/2013)