Mokh ikhwan, ulfinur fatimah

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

description

 

Transcript of Mokh ikhwan, ulfinur fatimah

Page 1: 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.

Page 2: Mokh ikhwan, ulfinur fatimah

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

Page 3: Mokh ikhwan, ulfinur fatimah

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.

Page 4: Mokh ikhwan, ulfinur fatimah

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:

Page 5: Mokh ikhwan, ulfinur fatimah

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:

Page 6: Mokh ikhwan, ulfinur fatimah

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.

Page 7: Mokh ikhwan, ulfinur fatimah

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

Page 8: Mokh ikhwan, ulfinur fatimah

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.

Page 9: Mokh ikhwan, ulfinur fatimah

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

Page 10: Mokh ikhwan, ulfinur fatimah

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.

Page 11: Mokh ikhwan, ulfinur fatimah

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

Page 12: Mokh ikhwan, ulfinur fatimah

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.

Page 13: Mokh ikhwan, ulfinur fatimah

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

Page 14: Mokh ikhwan, ulfinur fatimah

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:

Page 15: Mokh ikhwan, ulfinur fatimah

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.

Page 16: Mokh ikhwan, ulfinur fatimah

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.

Page 17: Mokh ikhwan, ulfinur fatimah

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.

Page 18: Mokh ikhwan, ulfinur fatimah

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

Page 19: Mokh ikhwan, ulfinur fatimah

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.

Page 20: Mokh ikhwan, ulfinur fatimah

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.

Page 21: Mokh ikhwan, ulfinur fatimah

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

Page 22: Mokh ikhwan, ulfinur fatimah

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.

Page 23: Mokh ikhwan, ulfinur fatimah

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.

Page 24: Mokh ikhwan, ulfinur fatimah

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.

Page 25: Mokh ikhwan, ulfinur fatimah

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

Page 26: Mokh ikhwan, ulfinur fatimah

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

Page 27: Mokh ikhwan, ulfinur fatimah

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

Page 28: Mokh ikhwan, ulfinur fatimah

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)

Page 29: Mokh ikhwan, ulfinur fatimah

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

Page 30: Mokh ikhwan, ulfinur fatimah

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)

Page 31: Mokh ikhwan, ulfinur fatimah

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 :

Page 32: Mokh ikhwan, ulfinur fatimah

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)

Page 33: Mokh ikhwan, ulfinur fatimah

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

Page 34: Mokh ikhwan, ulfinur fatimah

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

Page 35: Mokh ikhwan, ulfinur fatimah

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

Page 36: Mokh ikhwan, ulfinur fatimah

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.

Page 37: Mokh ikhwan, ulfinur fatimah

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.

Page 38: Mokh ikhwan, ulfinur fatimah

21

Tabel SUPPLIER

Tabel PARTS

Tabel SHIPMENT

Gambar 6.1. Skema Basis Data Supplier dan Part

Page 39: Mokh ikhwan, ulfinur fatimah

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 :

Page 40: Mokh ikhwan, ulfinur fatimah

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 :

Page 41: Mokh ikhwan, ulfinur fatimah

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 :

Page 42: Mokh ikhwan, ulfinur fatimah

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 :

Page 43: Mokh ikhwan, ulfinur fatimah

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

Page 44: Mokh ikhwan, ulfinur fatimah

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 :

Page 45: Mokh ikhwan, ulfinur fatimah

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

Page 46: Mokh ikhwan, ulfinur fatimah

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

Page 47: Mokh ikhwan, ulfinur fatimah

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

Page 48: Mokh ikhwan, ulfinur fatimah

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

Page 49: Mokh ikhwan, ulfinur fatimah

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 :

Page 50: Mokh ikhwan, ulfinur fatimah

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

Page 51: Mokh ikhwan, ulfinur fatimah

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.

Page 52: Mokh ikhwan, ulfinur fatimah

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

Page 53: Mokh ikhwan, ulfinur fatimah

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

Page 54: Mokh ikhwan, ulfinur fatimah

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

Page 55: Mokh ikhwan, ulfinur fatimah

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.

Page 56: Mokh ikhwan, ulfinur fatimah

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

Page 57: Mokh ikhwan, ulfinur fatimah

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.

Page 58: Mokh ikhwan, ulfinur fatimah

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.

Page 59: Mokh ikhwan, ulfinur fatimah

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)

Page 60: Mokh ikhwan, ulfinur fatimah

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)

Page 61: Mokh ikhwan, ulfinur fatimah

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.

Page 62: Mokh ikhwan, ulfinur fatimah

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)