Cari Blog Ini

Jumat, 25 Maret 2011

Basis Data (Makalah)

BAB I
ARSITEKTUR SISTEM BASIS DATA


Arsitektur system basis data memberikan kerangka kerja bagi pembangunan basis data.


1.1 LEVEL ARSITEKTUR BASIS DATA

Menurut ANSI/SPARC, arsitektur basis data terbagi atas tiga level yaitu :

Internal/Physical Level: berhubungan dengan bagaimana data disimpan secara fisik (physical storage)

External /View Level berhubungan dengan bagaimana data di representasikan dari sisi setiap user.

Conceptual/Logical Level yang menghubungkan antara internal & external level




Contoh dalam sebuah basis data pegawai, ketiga level digambarkan sebagai berikut :

- Pada level konseptual, basis data mengandung informasi tenteang sebuah entity yang disebut EMPLOYEE.


Setiap EMPLOYEE mempunyai sebuah EMP_NUMBER (6 karakter), DEP_NUMBER(4 karakter) &


SALARY (5 digit desimal).

- Pada level internal, para pegawai direpresentasikan oleh STRORED_EMP, panjang 20 byte.


STORED_EMP terdiri atas 4 field yaitu flag/pointer, 6


byte, tiga field untuk atribut pegawai.

- User yang menggunakan PL/I mempunyai sisi pandang level eksternal dimana pegawai direpresentasikan


dalam sebuah record yang ditulis dengan sintaks PL/I

- Demikianlah pula user yang menggunakan COBOL mempunyai sisi pandang level eksternal dimana pegawai

direpresentasikan dalam sebuah record yang

ditulis dengan sintaks COBOL.





1.1.1 External Level /View Level

Adalah level user. Yang dimaksud dengan user adalah programmer, end user atau DBA.

Setiap user mempunyai ‘bahasa’ yang sesuai dengan kebutuhannya.

- programmer : bahasa yang digunakan adalah bahasa pemrograman seperti C, COBOL, atau PL/I

- end user : bahasa yang digunakan adalah bahasa query atau menggunakan fasilitas yang tersedia pada


program aplikasi pada level eksternal ini, user dibatasi pada kemampuan perangkat keras dan perangkat

lunak yang digunakan aplikasi basis data. Didefinisikan sebagai sebuah Skema Eksternal.





1.1.2 Conceptual Level / Logical level

Conceptual level adalah sebuah representasi seluruh muatan informasi yang dikandung

oleh basis data. Tidak seperti level eksternal maka pada level conceptual, keberadaannya

tidak memperhitungkan kekurangan perangkat keras maupun perangkat lunak

pembangun aplikasi basis data. Didefinisikan sebagai sebuah Skema Konseptual

1.1.3 Internal/Physical Level

Adalah level terendah untuk merepresentasikan basis data. Record disimpan dalam media

penyimpanan dalam format byte. Didefinisikan sebagai sebuah Skema Internal.



1.2 PEMETAAN

1.2.1 Conceptual/internal Mapping :

Yaitu pemetaan yang mendefinisikan hubungan antara level konseptual dan level

internal. Pemetaan ini menjelaskan bagaimana record & field pada level konseptual

direpresentasikan pada level internal.


1.2.2 External/Conceptual Mapping :

Yaitu pemetaan yang mendefinisikan hubungan antara level eksternal dan

level konseptual. Contoh : beberapa field dapat mempunyai tipe yang

berbeda, field dan nama field dapat berubah, bebeapa field pada level

konseptual dapat dikombinasikan ke dalam satu field external.



1.3 MODEL-MODEL DATA

Yang dimaksud dengan model data adalah sekumpulan tool konseptual untuk

mendeskripsikan data, relasi-relasi antar data, semantic data & konsistensi konstrain.

Bermacam-macam model data terbagi dalam tiga kelompok besar yaitu :

Object-based logical models, record-based logical models, & physical models.

1. Object-based logical Models

Yang termasuk dalam kelompok ini adalah :

- Entity-relationship model

- Object-oriented model

- Semantic data model

- Functional data model

Dua dari model di atas yaitu : entity-relationship model & object-oriented model akan

dijelaskan lebih detil.

a. Entity-relationship Model

E-R model didasarkan atas persepsi terhadap dunia nyata yanga terdiri dari

sekumpulan objek, disebut entity dan hubungan antar objek tersebut, disebut

relationship. Entity adalah objek di dunia yang bersifat unik. Setiap entity

mempunyai atribut yang membedakannya dengan entity lainnya. Contoh :

entity Mahasiswa, mempunyai atribut nama, umur, alamat no. ktm.

Pemodelan data dengan model E-R menggunakan diagram E-R. Diagram E-R

terdiri dari :

° Kotak persegi panjang, menggambarkan himpunan entity

° Elip, menggambarkan atribut-atribut entity

° Diamon, menggambarkan hubungan antara himpunan entity

° Garis, yang menghubungkan antar objek dalam diagram E-R

b. Object-Oriented Model

Model berorientasi objek berbasiskan kumpulan objek. Setiap objek berisi :

1. Nilai yang disimpan dalam variable instant, dimana variable tersebut

“melekat” dengan objek itu sendiri.

2. Metoda : operasi yang berlaku pada objek yang bersangkutan

3. Objek-objek yang memiliki tipe nilai & metode yang sama

dikelompokkan dalam satu kelas. Kelas disini mirip dengan tipe data

abstrak pada bahasa pemrograman.

4. Sending a message : sebuah objek dapat mengakses data sebuah objek

yang lain hanya dengan memanggil metode dari objek tersebut.

c. Model-model lojik berbasis record

Terdapat beberapa model dalam kelompok ini :

c.1. Model Relasional ( Relational Model)

model relasional menggunakan kumpulan tabel-tabel untuk merepresentasikan data

& relasi antar data-data tersebut. Setiap tabel terdiri atas kolom-kolom, dan setiap

kolom mempunyai nama yang unik.



c.2 Model Jaringan (Network Model )


Data dalam model jaringan direpresentasikan dengan sekumpulan record

(Pascal), dan relasi antara data direpresentasikan oleh record & link. Link dipandang

sebagai pointer. Record-record diorganisasikan sebagai graf. Contoh, model

relasional di atas direpresentasikan dalam model jaringan.




c.3 Model Hirarki (Hirarchical Model)

Mirip dengan model jaringan.Data direpresentasikan dalam record

dan link. Perbedaannya adalah, record-record diorganisasikan sebagai tree

(pohon) daripada graf. Model relasional berbeda dengan model jaringan &

hirarki, dalam hal penggunaan pointer atau link.



1.4 BAHASA YANG DISEDIAKAN OLEH SISTEM BASIS DATA

Sebuah system basis data menyediakan dua tipe bahasa yaitu : tipe

untuk menspesifikasikan skema basis data, disebut DDL, dan tipe untuk

mengekspresikan queri atau update basis data, disebut MDL.


1.4.1 Data-definition Language

Skema basis data dispesifikasikan oleh sekumpulan definisi dengan sebuah bahasa khusus yang disebut data-definition language

(DDL). Hasil kompilasi DDL berupa tabel-tabel yang disimpan dalam sebuah file, disebut data dictionary (kamus data) atau data

directory. Kamus data adalah sebuah file yang berisi metadata. File ini yang dikonsultasi sebelum data yang sebenarnya dibaca

atau dimodifikasi oleh system basis data.

1.4.2 Data-manipulation Language

Adalah bahasa untuk memanipulasi data yaitu :

o Pengambilan informasi yang disimpan dalam basis data

o Penyisipan informasi baru ke basis data

o Penghapusan informasi dari basis data

o Modifikasi informasi yang disimpan dalam basis data

Query adalah statemen yang ditulis untuk mengambil informasi. Bagian dari DML

yang menangani pengambilan informasi ini disebut bahasa query.


1.5 DATABASE ADMINISTRATOR (ADMINISTRATOR BASIS DATA)

Administrator basis data adalah orang yang bertanggungjawab terhadap strategi

yang berhubungan dengan pengolahan data di suatu perusahaan. Selain hal tersebut,

DBA adalah orang yang bertanggungjawab terhadap implementasi strategi tersebut

secara teknis. Berikut dijelaskan bebrapa fungsi DBA secara detil :

- mendefinisikan skema konseptual

yaitu memutuskan informasi apa saja yang akan dihasilkan oleh sutu basis data.

Dalam hal ini DBA bertugas mendefinisikan entity-entiti yang terlibat pada

perancangan basis data. Proses ini disebut dengan Logical Database Design

(kadang-kadang disebut Conceptual Database Design). Setelah DBA menentukan

muatan dari basis data maka DBA akan menyusun skema konseptual

menggunakan DDL (data definition language). Kemudian dengan DBMS, skema

tersebut diimplementasikan.

- mendefinisikan Skema Internal

selain menentukan skema konseptual dari basis data, DBA juga bertanggung

jawab terhadap desain penyimpanan data secara fisik.

- mensosialisasikan hasil rancangan baik konseptual & internal ke user

Dalam hal ini tugas DBA adalah menyakinkan user bahwa data-data yang mereka perlukan semua telah


tersedia & membantu user untuk mengimplementasikanrancangan tersebut dalam DDL.

- mendefinisikan aturan-aturan sekuriti & integritas data

- mendefinisikan prosedur-prosedur back-up & recovery

- memonitor performansi system & menangani perubahan-perubahan yang ada.



DATABASE MANAGEMENT SYSTEM (SISTEM MANAJEMEN BASIS DATA)

DBMS adalah software yang menangani semua akses ke basis data. Secara konsep apa

yang terjadi adalah sebagai berikut :

1. user melakukan pengaksesan basis data untuk informasi yang diperlukannya menggunakan suatu bahasa


manipulasi data, biasanya disebut SQL.

2. DBMS menerima request dari user & menganalisa request tersebut

3. DBMS memeriksa skema eksternal user, pemetaan eksternal/konseptual, skema konseptual, pemetaan


konseptual/internal, & struktur penyimpanan.

4. DBMS mengeksekusi operasi-operasi yang diperlukan untuk memnuhi permintaan user.












BAB II

MODEL ENTITY-RELATIONSHIP

Model E-R didasarkan pada persepsi dari sebuah dunia nyata yang terdiri dari

sekumpulan objek, disebut entiti & relasi diantar objek-objek tersebut.


2.1 Konsep Dasar

Terdapat tiga notasi dasar yang bekerja pada model E-R yaitu : entity sets, relationship

sets, & attributes.

a. Entity Sets

Sebuah entiti adalah sebuah “benda” (thing) atau “objek”(object) di dunia nyata yang

dapat dibedakan dari semua objek lainnya. Entity sets adalah sekumpulan entiti yang

mempunyai tipe yang sama. Kesamaan tipe ini dapat dilihat dari atribut/property yang

dimiliki oleh setiap entiti. Misal kumpulan orang yang menyimpan uang pada suatu

bank dapat didefinisikan sebagai entiti set nasabah.

b. Relationship Sets

Relationship adalah hubungan diantara beberapa entiti. Misal relasi yang

menghubungkan antar Toni dengan rek. 142-099999. Relasi ini menunjukkan bahwa

Toni adalah nasabah yang mempunyai nomor rekening 142-099999. Relationship set

adalah sekumpulan relasi yang mempunyai tipe yang sama

c. Kunci Relasi (Relation Keys)

Nilai dari kunci relasi harus mengidentifikasikan sebuah baris yang unik didalam

sebuah relasi. Kunci relasi terdiri dari satu atau lebih atribut-atribut relasi. Atribut-

atribut dalam kunci relasi harus memiliki sifat sebagai berikut :

- untuk satu nilai hanya mengindentifikasikan satu baris dalam satu relasi

- tidak memiliki subset yang juga merupakan kunci relasi

- tidak dapat bernilai null



Kardinalitas Pemetaan

Kardinalitas pemetaan atau rasio kardinalitas menunjukkan jumlah entity yang dapat

dihubungkan ke satu entity lain dengan suatu relationship sets.

Kardinalitas pemetaan meliputi :

Hubungan satu ke satu (one to one).

Yaitu satu entity dalam A dihubungkan dengan maksimum satu entity dalam

Hubungan satu ke banyak (one to many)

Yaitu satu entity dalam A dihubungkan dengan sejumlah entity dalam B. Satu

entity dalam B dihubungkan dengan maksimum satu entity dalam A.

Hubungan banyak ke satu (many to one)

Yaitu satu entity dalam A dihubungkan dengan maksimum satu entity dalam

B. Satu entity dalam B dapat dihubungkan dengan sejumlah entity dalam A.

Hubungan banyak k banyak (many to many).

Satu entity dalam A dihubungkan dengan sejumlah entity dalam B, & satu

entity dalam B dihubungkan dengan sejumlah entity dalam A.



Diagram Entity-Relationship

Komponen E-R diagram adalah :

Persegi panjang (rectangles) : merepresentasikan entity sets

Elip (ellipses) : merepresentasikan atribut entity

Wajik(diamonds) : merepresentasikan relationship sets

Lines (garis) : merepresentasikan hubungan atribut ke entity sets & entity sets

ke relatioship sets


Contoh:

Diagram E-R dibawah terdiri dari 2 entity sets, customer & loan, & satu relationship set

borrower. Atribut dari customer adalah nama, ktp, jalan, kota. Atribut untuk loan adalah

no_pinjaman, jml_pinjaman. Hubungan entity customer ke loan adalah banyak ke

banyak.



Entity Sets Lemah

Adalah entity set yang tidak mempunyai primary key. Entity sets yang mempunyai

primary key disebut entity sets kuat.


Spesialisasi

Proses mendesain subgrup di dalam suatu entity disebut dengan specialisasi. Suatu

himpunan entity bisa memiliki suatu subgrup yang berbeda diantara entiti-entiti lain

dalam himpunan tersebut. Misalnya suatu sub himpunan entity dalam suatu himpunan

entity bisa memiliki atribut yang berbeda dari entity-entiti lain. Model E-R memiliki

fasilitas untuk perbedaan ini.

satu proses spesialisasi, maka suatu entity menjadi milik dua spesialisasi tersebut. Misal

suatu account bisa merupakan suatu personal account dan suatu checking account.

Dalam diagram E-R, spesialisasi dilambangkan dengan komponen segitiga bertuliskan

ISA. ISA juga melambangkan hubungan antara superclass-subclass. Entity yang dengan

kedudukkan lebih rendah/tinggi memiliki lambing sama.


Generalisasi

Disamping proses desain top-down (dari inisial entity ke level lebih rendah (subgrup)),

desain juga dapat dilakukan dengan proses bottom-up, yaitu banyak entiti disintesiskan

menjadi entity yang lebih tinggi berdasarkan kesamaan feature-nya.

Desainer basis data mungkin mengidentifikasi terlebih dulu entity

checking-account dengan atribut account-number, balance dan overdraft-

amount. Ditemukan juga entity set saving-account dengan atribut

account-number, balance dan interest-rate.

Terdapat kesamaan antara entity set checking-account dengan entity set

saving-account, yaitu keduanya memiliki beberapa atribut yang sama.

Persamaan ini dapat diekspresikan dengan generalisasi.







BAB III
MODEL RELATIONAL

3.1 PENDAHULUAN

Model relasi pertama kali dikenalkan oleh Codd, pada tahun 1971. Sejak itu model

relasi memainkan peranan yang sangat penting dalam berbagai perancangan basis data.

Ada tiga alas an mengapa model relasi mempunyai peranan penting dalam perancangan

basis data yaitu :

· mempunyai piranti komunikasi yang baik antara user & designer

artinya relasi merepresentasikan struktur data yang dapat dimengerti oleh user

maupun designer.

· model relasional mendefinisikan salah satu kriteria perancangan basis data yang

penting yaitu relasi bentuk normal.

· Struktur data yang direpresentasikan oleh relasi dapat segera dikonversikan &

diimplementasikan ke RDBMS.



3.2 APA YANG DISEBUT DENGAN RELASI

Relasi pertama kali didefinisikan menggunakan teori himpunan. Cara termudah untuk mendefinisikan sebuah relasi adalah

sebagai sebuah tabel dimana data-datanya disimpan dalam baris tabel.


Contoh Table : Tabel Work dibawah ini

Terdiri dari tiga kolom, yaitu Person_Id, Proj_No dan Total_Time.

Tabel ini menyimpan waktu yang dihabiskan oleh person pada proyek

tersebut. Selain tabel Work terdapat juga relasi Persons. Relasi ini

menyimpan secara detail tentang person yang bekerja pada proyek

dimaksud.






3.3 TERMINOLOGI

- Relasi = Tabel

- Atribut relasi = Kolom tabel

- Tuple = Baris


3.4 STRUKTUR LOJIK & FISIK

Relasi adalah sebuah representasi data lojik bukan fisik. Relasi menggambarkan

struktur data tanpa memperhatikan bagaimana data disimpan atau diakses.

Representasi lojik berarti bahwa sebuah relasi harus :


- tidak terdapat duplikasi baris

- urutan baris tidak diperhatikan

- setiap kolom dalam suatu relasi mempunyai sebuah nama yang unik



struktur fisik diperlukan selama implementasi fisik yaitu pada saat menentukan layout

data & indeks yang digunakan untuk mengakses data dalam suatu relasi. Hal penting

lainnya yang harus diperhatikan dalam merancang relasi adalah bahwa nama-nama

atribut relasi harus menggambarkan sumber data berasal.




3.5 REDUNDANSI & DUPLIKASI

3.5.1

Redundansi

Salah satu dari perancangan lojik basis data adalah meniadakan

redundansi. Redundansi terjadi jika fakta yang sama disimpan lebih dari sekali.

Contoh redundansi adalah relasi Project_Data berikut : dalam relasi Project_Data,

Project_Budget dari sebuah proyek disimpan lebih dari sekali. Yaitu sebanyak

orang yang bekerja pada proyek tersebut. Hal ini tidak diinginkan karena

menyebabkan banyak kerugian sebagai berikut :

o Jika Project_Budget untuk Proj_No berubah maka harus dilakukan

perubahan lebih dari satu baris dalam relasi tersebut.

o Setiap kali penambahan orang baru untuk suatu proyek maka harus

dimasukkan pula budget untuk proyek tersebut.

o Sebuah proyek yang tidak ada orangnya, seperti PROJ4, akan hanya

mempunyai sebuah nilai Project_Budget tetapi tidak punya nilai untuk

atribut lainnya. Ini berarti bahwa operasi-operasi terhadap relasi tersbut

harus disesuaikan dengan keadaan struktur basis data saat itu.





3.5.2 Duplikasi

Duplikasi berbeda dengan redundansi. Kadang-kadang duplikasi diperlukan

dalam basis data sementara redundansi harus dihindari.

Contoh duplikasi adalah relasi USE dibawah ini. Relasi USE memiliki lebih dari satu

baris yang mempunyai nilai yang sama untuk atribut Project_Id, yaitu Proj1. Demikian

juga untuk Proj2. Nilai-nilai ini harus disimpan lebih dari sekali karena menggambarkan

fakta yang berbeda.




Sedangkan dalam relasi Assigment, satu nilai atribut Date_Of_Birth, yaitu 1 June 1953,

dapat juga muncul lebih dari sekali. Berbeda dengan Proj1 & Proj2 di atas, 1 June 53

menunjukkan fakta yang sama yaitu menunjukkan orang yang sama. Hal ini

menyebabkan terjadinya redundansi dalam relasi Assignment.





3.6 MENGHILANGKAN REDUNDANSI

Salah satu cara untuk menghilangkan redundansi adalah dengan dekomposisi.

Sbuah relasi yang menyimpan sebuah fakta lebih dari sekali dapat didekomposisi ke

dalam relasi-relasi yang hanya menyimpan sebuh fakta sekali.



QUERY LANGUAGE

Query language adalah suatu bahasa yang menyediakan fasilitas bagi user untuk



mengakses informasi dari basis data. Pada umumnya level bahasa ini lebih tinggi dari

bahasa pemrograman standar. Bahasa query dapat dikategorikan sebagai prosedural &

non-prosedural.

Dalam bahsa prosedural, user menginstruksikan ke sistem agar membentuk

serangkaian operasi dalam basis data untuk mengeluarkan hasil yang diinginkan. Dalam

bahasa non-prosedural, user mendeskripsikan informasi yang diinginkan tanpa

memberikan prosedur detail untuk menghasilkan informasi tersebut.

Sebagian besar system basis data relasional yang beredar dipasaran menawarkan bahasa

query dengan pendekatan prosedural & non-prosedural.

Bebrapa bahasa query yang murni adalah : aljabar relasional (relational

algebra) merupakan bahasa query prosedural, sedangkan kalkulus relasional tuple

(tuple relational calculus) & kalkulus relasional domain(domain relational calculus)

adalah non-prosedural. Berikut hanya akan dibahas bahasa query bukan bahasa data-

manipulation yang lengkap, yaitu bahasa yang tidak hanya terdiri dari bahas query tetapi

juga bahasa untuk memodifikasi basis data, seperti perintah insert dan delete tuple.



3.7.1 Aljabar Relasional ( Relational Algebra)

Aljabar relasional adalah sebuah bahasa query prosedural yang terdiri dari

sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya

adalah sebuah relasi baru sebagai hasil dari operasi tersebut. Operasi-operasi dasar dalam

aljabar relasional adalah : select, project, union, set difference, Cartesian product dan

rename. Disamping operasi-operasi dasar terdapat beberapa operasi lainnya seperti set

intersection, natural join, division dan assignment. Operasi-operasi ini akan

didefinisikan dalam terminology operasi dasar.



3.7.1.1 Operasi-operasi Dasar

Operasi-operasi select, project dan rename disebut operasi unary, karena operasi-

operasi tersebut hanya memerlukan satu relasi. Tiga operasi lainnya memerlukan

sepasang relasi, disebut operasi binary.

a. Operasi Select

Operasi select menyeleksi tuple-tuple yang memenuhi predikat yang diberikan.

Digunakan symbol sigma (ó) untuk menunjukkan operasi select. Predikat muncul

sebagai subcript dari ó. Argumen relasi diberikan dalam kurung yang mengikuti ó.

Jadi untuk menyeleksi tuple-tuple dari relasi loan dimana branch-name-nya adalah

“Perryridge”,


b. Operasi Project

Seandainya diinginkan semua daftar loan-number dan amount, tanpa branch-

name. Dengan operasi project dapat dihasilkan relasi ini. Operasi project disimbolkan

dengan symbol phi (ð). Nama-nama atribut yang diinginkan tampil ditulias sebagai

subcrip ð.


c. Komposisi Operasi-operasi relasional

Berikut contoh query yang lebih kompleks : “ Temukan kastemer-kastemer yang tinggal di Horison “.



d. Operasi Union

Operasi union dalam aljabar relasional sama halnya dengan operasi union pada

aritmatika. Misal user menginginkan nama-nama semua nasabah bank yang memiliki sebuah account atau sebuah loan atau keduanya.


e. Operasi Pengurangan Himpunan ( Set Difference)

Disimbolkan dengan tanda “-“. Operasi ini untuk menemukan tuple-tuple yang berada pada satu relasi tetapi tidak berada pada relasi yang lainnya.


f. Operasi Cartesian –product

Operasi Cartesian-product disimbolkan dengan “x”. Dengan operasi ini dapat

dihasilkan informasi yang merupakan kombinasi dari dua relasi.

Secara garis besar, jika dipunyai relasi r1(R1) dan r2(R2), maka r1 x r2 adalah

relasi yang skemanya merupakan gabungan dari R1 ( atribut-atribut relasi r1) dan

R2 (atribut-atribut r2). Relasi R mengandung semua tuple t dimana terdapat sebuah

tuple t1 dalam r1 dan t2 dalam r2 sedemikian sehingga t[R1] = t1[R1] dan

t[R2]=t2[R2].



g. Operasi Rename

Dilambangkan dengan symbol rho (ñ). Sintaks penulisan rename : ñx(E).

Operasi rename mengeluarkan hasil ekspresi E dengan nama x.


3.7.1.2 Definisi Aljabar relasional

Jika E1 & E2 adalah ekspresi aljabar-relasional, maka berikut ini adlah semua ekspresi

aljabar-relasional :

E1 ∪ E2

E1 – E2

E1 x E2

óp(E1), dimana p adalah sebuah predikat untuk atribut-atribut dalam E1

ðs(E1), dimana s adalah daftar yang terdiri dari bebrapa atribut dalam E1

ñx(E1), dimana x adalah nama baru untuk hasil E1




3.7.2 Kalkulus relasional Tuple ( Tuple Relational Calculus)

Tuple relational calculus adalah query yang non-prosedural. Tuple relational

calculus menggambarkan informasi yang diinginkan tanpa memberi prosedurnya secara

detil untuk mendapatkan informasi tersebut.

Sebuah query dalam tuple relational calculus ditulis :

{t|P(t)}

yaitu : semua tuple t sedemikian sehingga predikat P adalah benar untuk t. dengan

mengikuti notasi terdahulu, digunakan t[A] untuk menyatakan nilai tuple t pada

atribut A, dan t∈r untuk menyatakan bahwa tuple t berada dalam relasi r.


Contoh Query :

Misal diinginkan informasi branch-name, loan-number dan amount untuk pinjaman di

atas $1200. Maka query-nya adalah : {t|t∈loan ∧t[amount]>1200}. Andai hanya

diinginkan atribut loan-number dari relasi loan. Untuk mengekspresikan permintaan ini,

diperlukan notasi “terdapatlah (there exists)” dengan notasi :

∃ t ∈ r (Q(t))

dibaca “ terdapatlah sebuah tuple t dalam relasi sedemikian sehingga bahwa

predikat Q(t) adalah benar”.

Dengan menggunakan notasi ini maka dapat ditulis query “Tampilkan loan number untuk

setiap pinjaman yang lebih dari $1200” sebagai

{t||∃∃ s ∈loan (t[loan-number]=s[loan-number]∧s[amount]>1200}


3.7.3 Kalkulus Relasional Domain ( The Domain Relational Calculus)

Bentuk kalkulus relasional ini menggunakan variabel domain yang mengambil

sebuah nilai dari domain atribut, bukan dari nilai seluruh tuple.

Contoh query :

Tampilkan nama cabang, loan number dan jumlah pinjaman yang lebih dari

$1200, dengan kalkulus relasional domain, query-nya ditulis :

{<b,l,a>||∃∃<b,l,a>∈ loan ∧a>1200}



- Tampilkan


semua loan-number untuk jumlah pinjaman yang lebih dari $1200,

dengan kalkulus relasional domain, query-nya ditulis :

{<l>||∃∃ b,a(<b,l,a>∈ loan ∧ >1200)}

Tampilkan nama-nama semua customer yang mempunyai pinjaman di cabang

Perryridge beserta loan-number-nya.

{<c,a>| ∃ (<c,l>∈ borrower ∧∧∃∃ b (<b,l,a> ∈ loan ∧ b = “Perryridge”))}

Tampilkan nama-nama semua customer yang mempunyai pinjaman, rekening,

atau keduanya pada cabang Perryridge :

{<c>| ∃ l (<c,l>∈ borrower ∧∧∃∃ b,a (<b,l,a> ∈ loan ∧ b =

“Perryridge”))

∨ ∃ b,n (<b,a,n> ∈ account ∧ b = “Perryridge”))}

Tampilkan semua nama-nama customer yang mempunyai rekening pada

semua cabang-cabang yang berlokasi di Brooklyn :

{<c>| ∀ x,y,z (<x,y,z> ∈ branch) ∧ y = “Brooklyn”⇒

∃ a,b(<x,a,b> ∈ account ∧ <c,a> ∈ depositor )}


3.7.4 Modifikasi Dalam Basis Data

1. Penghapusan (Deletion)

Dalam aljabar relasional, operasi deletion diekspresikan dengan :

r Î r-E, dimana r adalah relasi dan E adalah sebuah query aljabar

relasional.

Berikut beberapa contoh dari perintah delete dengan aljabar relasional adalah :

Hapus semua rekening atas nama Smith

account Î account - ó customer-name = “Smith” (account)

Hapus semua pinjaman dengan jumlah diantara 0 s/d 50


loan Î loan - óamount > = 0 and amount <=50 (loan)

Hapus semua account pada cabang-cabang yang berlokasi di Needham

r1 Î ó branch –city = “Needham” (account x branch)

r2 Î ð branch-name, account-number, balance (r1)

account Î account – r2


2. Penyisipan (Insertion)

Untuk menyisipkan data ke dalam suatu relasi, dapat dilakukan dengan dua cara

yaitu menentukan tuple-tuple yang akan disisipkan. Dalam relasional aljabar,

penyisipan diekspresikan dengan : r Î r ∪ E, dimana r adalah relasi dan E adalah

sebuah ekspresi relasional aljabar.

Contoh : seandainya akan disisipkan fakta bahwa Smith mempunyai $1200 dalam

rekening A-973 pada cabang Perryridge. Query-nya ditulis :

account Î account ∪ {(“Perryridge”, A-973,1200)}

depositor Î depositor ∪ {(“Smith”, A-973)}

Contoh lain :

r1 Î (óbranch-name = “Perryridge”(borrower x loan))

r2 Î ð branch-name, loan-number (r1)

account Î account ∪ (r2 x {(200)})

depositor Î depositor ∪ ð customer-name, loan-number (r1)

3. Updating

Dapat digunakan operator proyeksi secara umum sebagai berikut :

r Î ð F1,F2,… Fn(r)

Contoh : seandainya akan dibuat bunga tabungan sebesar 5% ditulis query

: account Î ðbranch-name,account-number,balanceÎbalance*1.05 (account)


4. View

View didefinisikan dengan statement create view. Untuk mendefinisikan sebuah view

maka view tersebut harus diberi nama dan query untuk menghasilkan view tersebut.

Format statement create view sebagai berikut :

Create view v as <ekspresi query>

Dimana ekspresi query adalah sebuah ekspresi query relation-algebra yang sah dan

nama view direpresentasikan dengan v.

Contoh : untuk membuat view yang terdiri dari semua cabang bank dan

pelanggannya

Create view all-customer as

ð branch-name, customer-name (depositor x account) ∪ ð branch-name, customer-name (borrower










BAB IV
PERANCANGAN BASIS DATA RELASIONAL



1.1 KETERGANTUNGAN FUNGSIONAL & MULTI NILAI


1.1.1 Ketergantungan Fungsional (Functional Dependency (FD))

Adalah ketergantungan nilai-nilai dari satu atau beberapa atribut terhadap satu atribut

atau himpunan atribut lainnya.

Notasi : Y ➔ X

Biasa digunakan untuk menunjukkan bahwa X tergantung secara fungsional terhadap

Y. Atribut Y dikenal sebagai determinant dari FD Y ➔ X

Contoh : Person_ID, Project ➔ Time_Spent_By, Person_On_Project

Notasi X ↔ Y berarti X ➔ Y dan Y ➔ X


1.1.2 Functional Dependency Penuh

Atau Full Functional Dependency, biasa digunakan untuk mengindikasikan himpunan

atribut minimum dalam sebuah determinant dari satu FD.

Himpunan atribut x akan bergantung secara fungsional penuh (fully functionally

dependent) pada himpunan atribut y jika :


1. x bergantung secara fungsional pada y

2. x tidak bergantung secara fungsional pada suatu sub-himpunan dari y.

Person_ID, Project, Project_budget ➔Time_spent_By_Person_on_Project

➔ Bukan suatu FD penuh

Person_ID, Project ➔ Time_spent_by_Person_on_Project

➔ suatu FD penuh

karena :

Person_ID ➔ Time_spent_By_Person_on_Project maupun

Project ➔ Time_spent_By_Person_on_Project,

Tidak memenuhi syarat sebagai FD penuh.





Sifat-sifat FD :

1. Redundan FD

Sebuah FD dalam himpunan FD dikatakan redundan jika FD tersebut dapat

diturunkan dari FD lainnya dalam himpunan FD.

Cara untuk mendeteksi sebuah FD redundan dengan langkah-langkah sebagai

berikut :

tentukan S sebagai himpunan dari FD.

hapus satu FD misal f dan susun himpunan FD S’ = S – f

test apakah f dapat diturunkan dari DS-FD dalam S’ dengan

menggunakan himpunan rule

jika f dapat diturunkan, berarti f redundan, ➔ S = S’. Jika tidak,

masukkan f ke dalam himpunan S’ sedemikian sehingga S = S’ + f.

ulangi langkah ke-2 sampai 4 semua FD dalam S.

himpunan rule-relu digunakan untuk menghindari looping pada langkah ke-3.

Himpunan rule-rule (set of rule) (Amstrong,1974 & Beeri at.al 1978) terdiri dari :


- jika Y ⊆ X, maka X Y (refleksi)

- jika Z ⊆ W, dan X Y, maka XW YZ ( augmentasi)

- jika X Y dan Y Z, maka X Z (transitive)
Dalam prakteknya, terdapat aturan-aturan tambahan yaitu :



contoh :


X Y dan YW Z, maka XW Z (pseudotransitive)

X Z dan X YZ (union)

X YZ, maka X Y dan Y Z ( dekomposisi)



Himpunan FD : { Z A, B X, AX Y, ZB Y}

Akan ditunjukkan bahwa ZB Y adalah redundan.

Z A dengan augmentasi menghasilkan ZB AB

B X dan AX Y dengan pseudotransitive menghasilkan AB Y

ZB AB dengan transitive menghasilkan ZB Y



1.1.3 Algoritma Keanggotaan

Digunakan untuk menentukan apakah suatu FD, f(A B), dapat diturunkan dari satu

himpunan FD, sbb :

1. T = A, T adalah variable yang mengandung satu himpunan atribut-atribut A

adalah determinant dari f.

2. lihat FD yang lain untuk melihat apakah sebuah FD X Y ditemukan, tambahkan

atribut-atribut dalam pada himpuanan atribut-atribut dalam T ( aturan union &

transitive)


3. Ulangi langkah-langkah setiap kali T dirubah hingga tidak ada lagi atribut-atribut

yang dapat ditambahkan pada T.

4. Jika pada akhir algoritma B berada dalam T, maka A B dapat diturunkan dari

FD lain dalam S ( aturan dekomposisi).


Contoh :

Himpunan FD : { Z A, B X, AX Y, ZB Y}


T = ZB

T = ZB + A = ZBA, karena Z A berada dalam sisa himpunan FD dan Z⊆T.

T = ZBA + X = ZBAX, karena B X berada dalam sisa himpunan FD dan

B⊆T.

T = ZBAX + Y = ZBAXY karena AX Y berada dalam sisa himpuanan FD

dan AX ⊆ T.


4.1.4 Closure

Sebuah closure mendefinisikan semua fungsional dependency yang dapat diturunkan

dari satu himpunan FD yang diberikan.

Notasi F+ digunakan untuk menunjukkan closure dari himpuanan dependensi.



Contoh

F = { X Y, Y Z, YZ W, WX Y}

Dari himpunan FD di atas diturunkan FD yang lain, seperti :

X Z dengan transitive dari X Y dan Y Z

Atau

XZ W dengan pseudotransitive dari X W dan YZ W


: Untuk memastikan /menentukan apakah semua FD yang mungkin diturunkan dari

satu himpunan FD dapat digunakan algoritma sebagai berikut :


T = A

While (changes to T) do

Contoh :

1. T = x


For each functional dependency

X Y in F do

Begin

If X is in T then

Add Y to T

End



2. kemudian tambahkan Y ke T karena X Y berada dalam himpunan FD.

3. tambahkan Z ke T, karena Y Z berada dalam himpunan FD dan sekarang T =

XYZ.

4. tambahkan W ke T, karena YZ W

jadi F+ untuk X :

X X, X Y, X Z, X W,

X YZ, X YW, X ZW,

X YWZ

Untuk melihat F+ dan Y, algoritma dapat diulang dengan memulai T =Y demikian

seterusnya.

1.2

NORMALISASI (1..3)

Untuk menentukan apakah suatu relasi tertentu sudah dalam bentuk normal, harus

diuji FD antara atribut-atribut dalam relasi.

Dalam definisi relasi yang diusulkan oleh C. Beeri dan Cowokers (1978), bahwa

relasi terdiri dari dua komponen yaitu : atribut-atribut dan FD antara atribut-atribut

tersebut.


Sebuah relasi mempunyai bentuk :

R1 = ({X,Y,Z}, {X Y, X Z})

Atribut

Contoh :

Relasi ASSIGN

{ Person_ID, PROJECT, PROJECT_BUDGET, Time_Spent_By_Person_On_Project}

atribut-atribut

{Person_ID, Project Time_Spent_By_Person_On_Project, Project Project_Budget}

FD

Functional Dependencies dapat digunakan dalam mendesain suatu basis data

relasional untuk menghilangkan property-properti yang tidak diinginkan sehingga

didapatkan desain yang baik yang disebut dalam bentuk normal. Terdapat sejumlah

bentuk normal dimana yang dikenal (sangat popular) sebanyak 3 macam bentuk

normal, yaitu : bentuk normal pertama, kedua dan ketiga.

Bentuk Normal Pertama

Sebuah relasi berada dalam bentuk normal pertama jika semua domaun adalah simple





1.3 METODOLOGI PERANCANGAN DIAGRAM E-R

Definisi basis data relasional adalah kumpulan relasi-relasi yang mengandung

semua informasi yang akan disimpan dalam basis data.

Tiap relasi dalam basis data disimpan dalam sebuah file tersendiri. Struktur file

yang digunakan untuk menyimpan relasi cukup sederhana, karena tiap record dalam file

memiliki format yang sama.

Perancangan basis data merupakan salah satu bagian terpenting dalam proses

pengembangan sistem. Perancangan basis data mempunyai beberapa tujuan yaitu :

1. menghilangkan redundansi data

2. meminimumkan jumlah relasi di dalam basis data

3. membuat relasi berada dalam bentuk normal, sehingga dapat

meminimumkan permasalahan berkenaan dengan penambahan,

pembaharuan dan penghapusan.




BAB V

STRUCTURED QUERY LANGUAGE (SQL)

Sistem basis data komersial menghendaki adanya sebuah bahasa query yang lebih

user-friendly. Oleh karena itu dikenal SQL sebagai bahasa query yang marketable. SQL

menggunakan kombinasi aljabar relasional & kalkulus relasional. Meskipun SQL adalah

bahasa query, namun SQL mempunyai banyak kemampuan lain disamping melakukan

query terhadap basis data. SQL mempunyai kemampuan untuk mendefinisikan struktur

data, modifikasi data dalam basis data dan menentukan konstrain sekuriti.


4.1 LATAR BELAKANG

SQL merupakan bahasa basis data relasional standard. Terdapat macam-macam



versi SQL. Versi aslinya pertama kali dikembangkan oleh IBM San Jose Research

Laboratory.

Bahasa SQL mempunyai bebrap bagian yaitu :

- Data Definition Language (DDL)

DDL memberikan perintah untuk mendefinisikan skema relasi, penghapusan relasi,

membuat indeks dan modifikasi skema relasi.

- Interactive Data-Manipulation Language (DML)

DML merupakan bahasa query yang berdasarkan pada aljabar relasi dan kalkulus

relasi tuple. Termasuk didalamnya adalah perintah untuk penyisipan,

penghapusan dan modifikasi.

- Embedded DML

Bentuk embedded SQL biasanya terdapat dalam bahasa pemrograman multi guna

seperti PL/I, Cobol , Pascal dan Fortran.

- View Definition

DDL SQL memasukkan perintah untuk mendefinisikan view.

4.2
- Authorization

DDL SQL memasukkan perintah untuk menentukan hak-hak akses ke relasi dan

view.

- Integrity

DDL SQL memasukkan perintah untuk menentukan konstrain integritas yang

harus dipenuhi oleh data yang tersimpan dalam basis data.

- Transaction control

SQL memasukkan perintah-perintah untuk menentukan awal dan akhir transaksi.

Beberapa implementasi juga memungkinkan locking data untuk concurrency


STRUKTUR DASAR

Struktur dasar dari ekspresi SQL terdiri dari tiga klausa yaitu : select, from dan


- Klausa Select berhubungan dengan operasi proyeksi dari aljabar relasional.

Operasi ini digunakan untuk mendaftar semua atribut yang diinginkan sebagai hasil

suatu query.

- Klausa From berhubungan dengan operasi Cartesian-product dari aljabar

relasional. Operasi ini mencatat semua relasi yang di”scan” dalam evaluasi suatu

query.

- Klausa Where berhubungan dengan operasi predikat seleksi dari aljabar

relasional. Operasi ini terdiri dari sebuah predikat yang menyangkut atribut-

atribut dari relasi yang muncul dalam klausa from.


Sebuah query SQL biasanya mempunyai bentuk :

Select A1,A2,…..An

From r1,r2,….rn

Where P



4.2.1 Klausa Select


Contoh : “ Tentukan nama-nama dari semua cabang bank dalam relasi loan “

Query-nya :

select branch-name from loan


Hasil dari query tersebut adalah sebuah relasi yang berisi sebuah atribut tunggal dengan

nama branch-name.


Bahasa query formal bersifat matematis dimana relasi adalah sebuah himpunan sehingga

tuple-tuple yang telah muncul tidak akan muncul lagi (tidak akan terjadi duplikasi tuple).

Tapi dalam prakteknya untuk menghilangkan duplikasi tuple sangat memakan waktu.

Oleh karenanya SQL memungkinkan terjadinya duplikasi tersebut. Dari contoh di atas,

maka query-nya akan mencatat setiap branch-name setiap kali branch-name tersebut

ditemukan dalam relasi loan.


Untuk kasus di atas jika diinginkan untuk menghilangkan duplikasi maka dapat

disisipkan distinct setelah select. Query di atas ditulis ulang sebagai berikut :

Select distinct branch-name from loan

Jika tuple yang terduplikasi diinginkan hilang.

Klausa selest dapat juga mengandung operasi aritmatika yaitu operator : +, -, *, / dan

operasi terhadap konstanta atau atribut dari tuple. Contoh query berikut :


Select branch-name, loan-number, amount * 100

From loan

Akan menghasilkan sebuah relasi yang sama dengan relasi loan, kecuali bahwa atribut

amount dikalikan dengan 100. SQL-92 juga menyediakan tipe data spesial seperti tipe

date, dan memungkinkan beberapa fungsi aritmatika untuk beroperasi pada tipe-tipe ini.

4.2.2 Klausa Where


Contoh query : “Temukan semua loan number untuk pinjaman-pinjaman yang dibuat

pada cabang Perryridge dengan jumlah lebih besar dari $1200”.

Query-nya ditulis sebagai berikut :


Select loan-number

From loan

Where branch-name = “Perryridge” and amount >1200

SQL menggunakan konektivitas lojik and, or dan not dalam klausa where. SQL juga

memasukkan perintah between untuk menentukan apakah suatu nilai lebih kecil daripada

atau sama dengan suatu nilai lain dan lebih besar daripada atau sama dengan suatu nilai

lain.

Contoh : jika diinginkan menemukan loan-number yang jumlah pinjamannya antara

$90000 dan $100000, ditulis sebagai berikut :


Select loan-number

From loan

Where amount between 90000 and 100000

4.2.3 Klausa From

Contoh query : “Untuk semua customer yang mempunyai sebuah pinjaman dari bank,

temukan nama dan loan number mereka”.

Dalam SQL ditulis :


Select distinct customer-name, borrower.loan-number

From borrower, loan

Where borrower.loan-number = loan.loan.number


4.2.4 Operasi Rename

SQL menyediakan mekanisme operasi rename untuk relasi dan atribut. Operasi

rename dalam SQL menggunakan klausa as dengan bentuk :

Nama-lama as nama-baru



Contoh :


Jika atribut dengan nama loan-number akan diganti dengan nama loan-id,

dapat ditulis sebagai berikut :



Select distinct customer-name, borrower.loan-number as loan-id

From borrower,loan

Where borrower.loan-number = loan.loan-number and

branch-name = “Perryridge”



4.3 OPERASI HIMPUNAN

Operasi operasi himpunan pada SQL-92 meliputi : union, intersect, dan except.



Union identik dengan ∪, intersect identik dengan ∩ dan except identik dengan – pada

aljabar relasional.





4.3.1 Operasi Union



Contoh :


Untuk mendapatkan semua customer yang mempunyai pinjaman, rekening

atau keduannya pada bank ditulis :





(select customer-name from depositor)

union

(select customer-name from borrower)







Operasi union secara otomatis akan menghilangkan duplikasi, tidak seperti klausa select.

Sehingga pada query di atas, jika Jones (seorang customer) mempunyai beberapa

rekening atau pinjaman (atau keduannya) pada bank, maka Jones hanya akan muncul

sekali. Jika duplikasi diinginkan ada maka harus ditulis union all.





4.3.2 Operasi Intersect



Contoh :


untuk mendapatkan semua customer yang memiliki pinjaman dan

rekening pada bank, query-nya ditulis :


(select distinct customer-name from depositor)

intersect

(select distinct customer-name from borrower)


Operasi intersect secara otomatis menghilangkan duplikasi. Jika diinginkan duplikasi

tetap ada ditulis intersect all.



4.3.3 Operasi Except



Contoh :

bank, ditulis :


untuk mendapatkan semua customer yang mempunyai sebuah rekening tetapi tidak memiliki pinjaman pada

(select distinct customer-name from depositor)

except

(select customer-name from borrower)


Operasi except secara otomatis menghilangkan duplikasi. Jika diinginkan ada maka

ditulis : except all.



4.4 FUNGSI-FUNGSI AGREGASI


Yang termasuk fungsi-fungsi agregasi adalah :

- Average : avg

- Minimum : min

- Maximum : max

- Total : sum

- Count : count


Fungsi-fungsi di atas telah tersedia. Input untuk avg dan sum haruslah bertipe numerik.

Untuk operator lainnya dapat non-numerik.



Contoh :


untuk mendapatkan rata-rata saldo rekening pada cabang Perryridge


Query-nya dapat ditulis :



Select avg(balance)

From account

where branch-name = “Perryridge”


Jika fungsi agregasi iningn diterapkan pada kelompok himpunan tuple, maka digunakan

klausa group by. Nama atribut/kel. Atribut dalam klausa group by digunakan untuk

membentuk grup/kelompok. Artinya tuple-tuple yang mempunyai nilai yang sama pada

semua atribut dalam klausa group-by dimasukkan dalam satu grup/kelompok.

Contoh :


Select branch-name, avg(balance)

From account

Group by branch-name


Jika suatu fungsi diterapkan pada grup/kelompok yang dibentuk oleh group by maka

digunakan klausa having setelah group by.



Contoh :

Query-nya :


ingin ditampilkan nama cabang yang mempunyai rata-rata saldo lebih dari

1200.

Select branch-name, avg(balance)

From account

Group by branch-name having avg (balance)>1200

Fungsi agregrasi count sering digunakan untuk menghitung jumlah tuple dalam suatu

relasi. Notasi fungsi ini dalam SQL adalah count (*). Jadi untuk menentukan jumlah

tuple dalam relasi customer, ditulis :

Select count(*) from customer


4.5 SUBQUERI TERSARANG (NESTED SUBQUERYS)

Biasanya digunakan untuk melalukuan test keanggotaan himpunan, perbandingan

himpunan dan kardinalitas himpunan.


4.5.1 Keanggotaan Himpunan

Digunakan in dan not in untuk melakukan test keanggotaan himpunan.

Contoh :

untuk mendapatkan semua customer yang mempunyai pinjaman dan

rekening pada bank.

Pertama : menemukan semua pemegang reeking dengan query :

(select customer-name from depositor)


Kedua :

mencari semua customer yang merupakan peminjam dan yang muncul

dalam daftar pemegang rekening. Maka dilakukan dengan

“menyarangkan” subquery di atas dalam sebuah select luar (outer select),

menjadi :

Select distinct customer-name

from borrower

Where customer-name

in (select customer-name from depositor)


4.5.2 Perbandingan Himpunan

Perhatikan query berikut : “Temukan semua nama cabang bank yang mempunyai asset

lebih besar dari bank-bank yang mempunyai minimal satu

cabang berlokasi di Brooklyn”.

Query-nya ditulis :



Select branch-name from branch where assets > all

(select assets from branch where branch-city = “Brooklyn”)



4.6 MODIFIKASI BASIS DATA

Meliputi menambah, menghapus dan mengubah informasi menggunakan SQL.



4.6.1 Penghapusan (Deletion)

Yang dapat dihapus (delete) hanyalah tuple bukan nilai pada suatu atribut tertentu.

Dalam SQL, deletion diekspresikan dengan


Delete from r where p


Dimana p menunjukkan predikat dan r adalah relasi.

Contoh :

- Hapus semua rekening Smith, ditulis :

Delete from depositor where costomer-name = “Smith”

- Hapus semua pinjaman dengan jumlah pinjaman antara $1300 dan $1500

Delete from loan where amount between 1300 and 1500

- Hapus semua rekening pada setiap cabang yang berlokasi di Perryridge

Delete from account where branch-name in

(select branch-name

from branch where branch-city = “Perryridge”)


4.6.2 Penyisipan (Insertion)

Untuk menambahkan satu tuple dalam relasi digunakan statement insert. Contoh :

Insert into account values (“Perryridge”,”A-9732”,1200)

Query ini identik dengan

Insert into account (branch-name, account-number,balance)

Values (“Perryridge”,”A-9732”,1200)

Insert juga dapat dilakukan untuk suatu hasil dari query yang lain.

Contoh :

Insert into account select branch-name, loan-number, 200

From loan where branch-name = “Perryridge”



4.6.3 Update

Dalam situasi tertentu, diinginkan untuk mengganti nilai dalam sebuah tuple tanpa

harus mengganti semua nilai dalam tuple tersebut. Untuk tujuan ini dapat digunakan

statement update.

Contoh :

- untuk menaikkan saldo para nasabah sebesar 5% ditulis query sebagai berikut :

Update account set balance = balance * 1.05



4.7 - untuk menaikkan saldo nasabah sebesar 6% bagi nasabah yang saldonya lebih

dari $10000, ditulis query sebagai berikut :

Update account set balance = balance *1.06

Where balance >10000


BAHASA DEFINISI DATA ( DATA – DEFINITION LANGUAGE)

DDL SQL memungkinkan dilakukannya spesifikasi tidak hanya pada himpunan



relasi tetapi juga informasi untuk setiap relasi, yang meliputi :

- Skema setiap relasi

- Domain nilai setiap atribut relasi

- Konstrain integritas

- Himpunan indeks untuk setiap relasi

- Sekuriti dan autorisasi setiap relasi

- Struktur penyimpanan secara fisik untuk setiap relasi dalam disk.


4.7.1 Tipe-tipe Domain dalam SQL

SQL-92 standar mendukung bermacam-macam tipe domain yang built-in sebagai

berikut :

- char(n) : tipe karakter dengan panjang yang tetap (n) (fixed-length character)

- varchar(n) : tipe karakter dengan panjang bervariasi. Maksimum panjang n.

- int : integer

- smallint : small integer

- numeric (p,d) : p menunjukkan jumlah digit bilangan dan d menunjukkan julah

digit dibelakang titik desimal.

- real, double precision : floating-point dan double-precision floating point

- float (n) : floating-point number

- date : tipe kalender

- time : tipe hari dalam jam,menit dan detik



SQL-92 menggunakan klausa create domain untuk mendefinisikan domain.




Contoh :

create domain person-name char(20)


4.7.2 Definisi Skema dalam SQL

Untuk mendefinisikan sebuah relasi dengan perintah create table :

Create table r(A1D1,A2D2,….AnDn,

<integrity contraint1>,

……………,

<integrity contrantk>)


Dimana r adalah nama relasi, setiap AI adalah nama atribut dalam skema relasi, dan DI

adalah tipe domain dari nilai dalam domain atribut Ai. Integrity constraint yang

diperbolehkan antara lain : primary key (Aj1, Aj2,….Ajn) dan check (P)

Contoh :

Create table customer



(customer-name


char(20)


not null,



customer-street char(30),



customer-city

primary key





create table branch


char(30),

(customer-name))



(branch-name

branch-city

assets


char(15)

char(30),

integer,


not null,



primary key (branch-name), check(assets >=0))


create table account



(account-number


char(10)


not null,



branch-name


char(15),



balance


integer,


primary key (account-number),



check (balance >=0))





create table depositor

(customer-name char(20)


not null,



account-number


char(10)


not null,



primary key (customer-name, account-number))