KALKULUS RELASIONAL

Nama Haidi

Matakuliah Basis Data

 

AMIK Wahana Mandiri

Kalkulus relasional è merupakan bahasa manipulasi teoritis yang non-prosedural, artinya bahasa ini hanya mengekspresikan ” what to do or what characteristics are required ” dan tidak mengekspresikan ” how to do it ” seperti pada bahasa queri prosedural.

Kalkulus relasional è dilandasi dengan teori predicate calculus yang menggunakan fungsi sebagai suatu ekspresi logik.

Predikat è adalah suatu fungsi yang dapat mengembalikan nilai benar ( true ) atau salah ( false ) tergantung dari subsitusi nilai argumen dari fungsi tersebut.

Jadi bila semua argumen dari sebuah fungsi disubstitusi dengan suatu nilai, maka fungsi tersebut menjadi suatu ekspresi yang disebut preposisi ( preposisition ) yaitu suatu ekspresi yang hanya bernilai benar atau salah.

Jika P è adalah suatu predikat, maka kita dapat mengekspresikan { x \ P(x) } yang berarti “semua x yang memenuhi suatu predikat P sehingga P bernilai benar untuk semua nilai x”.

Kita juga dapat menggunakan operator logika seperti And (Ù), Or (Ú) dan Not (~);

misalnya { y \ ~ (P(y) Ù Q(y))}.

 

Penerapan predicate calculus terhadap model data relasional menggunakan dua pendekatan teoritis:

 

 

 

  1. Tuple Oriented Relational Calculus ( TOPC )

    Pada TOPC, variable x pada { x \ P(x) } merepresentasikan suatu tuple ( record ).

     Contoh :

  • Cari semua Norek, saldo dari semua rekening yang bertipe cek { T.Norek.T.saldo \ T.tipe = “cek ” } dimana T Î Rekening.

 

  • Cari semua No.KTP dari semua nasabah yang memiliki rekening tipe cek dengan saldo diatas 5 juta. { S.No.KTP \ T.tipe = “cek” Ù Saldo > 5.000.000 Ù Rekening.No.Rek = KusRek.No.Rek }

     

b) Domain-Oriented Predicate Calculus (DOPC)

Pada DOPC, variable x pada { x \ P(x) } merepresentasikan suatu set domain sehingga menjadi

{ d1,d2,…dn \ P (d1,d2 …, dn)}.

 

Contoh :

  • Cari semua NoRek, Saldo dari semua rekening yang bertipe cek .{ NoRek, Saldo \ ( NoRek, Saldo, Tipe Î att (Rekening )) Ù tipe = “cek”}.

 

  • Cari semua NoKTP dari semua nasabah yang memiliki rekening tipe cek dengan saldo diatas 5 juta.                     

    { NoKTP \ (NoRek, Saldo, Tipe Î (rekening)) Ù (NoRek, NoKTP Î att (KusRek)) Ù tipe=”cek” Ù Saldo > 5.000.000 Ù Rekening.NoRek = KusRek.NoRek}.

BAHASA QUERI KOMERSIAL

 

Berdasarkan acuan model relasional, ada 2 bahasa query komersial yang tersedia :

  1. SQL (Structured Query Language)
  2. QBE (Query By Example ) .

 

SQL dan QBE masing-masing mewakili bahasa query prosedural dan non-prosedural.

 

 

  1. SQL ( Sructured Query Language )
    1. SQL dibangun è dengan basis aljabar relasional yang dijelaskan bab sebelumnya.

       

    2. SQL memberikan bahasa query tingkat tinggi ( a high level query language ) dengan struktur sederhana dengan kosakata dan gramatika yang sederhana pula, seperti berikut :    

      Select    A1, A2, …, An

From    T1, T2 ,…, Tn

Where    P

 

Dimana :

A1,A2,…,An : himpunan dari semua atribut yang hendak ditampilkan.

T1,T2,…,Tn : himpunan dari semua tabel yang terlibat (diperlukan) dalam query.

 

P :    predikat / kriteria yg diinginkan tentang informasi yg dicari.

 

 

c. Struktur dasar SQL tersebut equvalen dengan operasi pada aljabar relasional berikut:

 


p A1,A2,…An (s P(T1 X …X Tn))

 

d.    Beberapa operator SQL yang berkorespondensi dengan operator aljabar relasional :

Aljabar Relasional 

SQL 

Ù

AND 

Ú

OR 

¹

<> or ><

³

>=

£

<=

 

Contoh query untuk mencari semua KartuID dari semua kustomer yang memiliki rekening tipe tabungan adalah sebagai berikut:

Select KartuId

From rekening KusRek

Where Type =”tabungan” dan rekening.NoRek = kusRek.NoRek

 

e. Contoh Kasus Translasi Aljabar Relasional ke dalam SQL    :

1.     AR        : s Balance > 4000000 ( account )

 

 

    SQL    : Select    ………..

From    ……………

Where …………

 

2. AR    : s type = “saving” ^ balance > 4.000.000 ( account )

SQL: Select    ………..

From    ……………

Where …………

 

3. AR : s name = “Nyoman” V Street =

“Beringin” ( customer )

SQL: Select    ………..

    From    ……………

            Where …………

 

4. AR    :    p acc no, balance ( account )

SQL    :

 

 

 

5. AR    :    p Acc no, balance (s balance > 4.000.000 ( account ) )

SQL    :

 

 

 

 

f. SQL Sebagai Subbahasa memiliki kemampuan seperti :

  • Pendefinisian struktur data,
  • Pengubahan data,
  • Pengaturan sekuritas, dan lain-lain.

 

Alasan SQL dikatakan sebagai subbahasa data è karena SQL tidak mendukung persyaratan bahasa yang lengkap, sekalipun SQL dapat dipakai untuk mengakses basis data.

 

SQL tidak menyediakan hal-hal berikut :

  1. Pernyataan penguji kondisi (semacam IF pada COBOL).
  2. Pernyataan pengulangan/iterasi (semacam REPEAT pada Pascal).

 

g. Antarmuka SQL terhadap DBMS

SQL dapat dipakai oleh berbagai kalangan (DBA, Pemrogram, ataupun Pengguna).

  • SQL sebagai bahasa administrasi basis data

Dalam hal ini SQL dipakai oleh DBA untuk menciptakan serta mengendalikan pengaksesan basis data.

 

  • SQL sebagai bahasa qury interaktif.

    User dapat memberikan perintah-perintah untuk mengakses basis data yang sesuai dengan kebutuhannya.

     

3. SQL sebagai bahasa pemrograman basis data

Pemrogram dapat menggunakan perintah-perintah SQL dalam program aplikasi yang dibuat, guna mengakses basis data.

4. SQL sebagai bahasa klien/server

SQL juga dipakai sebagai untuk mengimplementasikan sistem klien/server.

ELEMEN SQL

  • Elemen dasar SQL
    • Pernyataan

Tabel 6.1 Pernyataan-pernyataan dasar SQL.

Pernyataan 

Keterangan 

ALTER 

Mengubah struktur tabel 

COMMIT 

Mengakhiri sebuah eksekusi transakasi 

CREATE 

Menciptakan tabel, indeks, atau pandangan 

DELETE 

Menghapus baris pada tabel 

DROP 

Menghapus tabel, indeks, atau pandangan

GRANT 

Menugaskan hak terhadap basis data kepada pengguna atau grup pengguna 

 

 

 

  • Nama

Nama digunakan sebagi identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel, kolom, dan pengguna.

  • Tipe Data

Tabel 6.2 Tipe data standar

Tipe Data 

Keterangan 

CHAR 

Untuk menyatakan deretan karakter (string). Misalnya untuk menyatakan nama orang, nama jalan, atau nama kota 

INTEGER 

Untuk menyatakan bilangan bulat 

NUMERIC 

Untuk menyatakan bilangan real 

 

Tabel 6.3 Tipe data perluasan

Tipe Data 

Keterangan 

VARCHAR 

Untuk menyatakan string yang panjangnya bervariasi 

MONEY 

Untuk menyatakan uang 

BOOLEAN 

Menyatakan tipe logis (True atau False) 

BLOB 

Untuk menyatakan data biner (gambar, suar, dan sebagainya 

SERIAL / AUTOINCREMENT

Untuk menyatakan nilai yang urut 

 

 

ELEMEN SQL

 

  • Elemen dasar SQL

 

  1. Konstanta

    Konstanta è menyatakan nilai yang tetap (kebalikan dari konstanta adalah variabel).

Variabel :………..

 

Beberapa contoh konstanta :

Konstanta numerik    :123, -245, 5.45

Konstanta    : ‘Jl. Suikapura 23’

Konstanta simbolik (konstanta yang tersedia pada SQL dan mempunyai makna tersendiri) : SYSDATE (tanggal sistem), USER (nama pengguna yang menjalankan SQL). Konstanta simbolik seringkali disebut variable sistem.

  1. Ekspresi

    Ekspresi è segala sesuatu yang menghasilkan nilai. Ekspresi è digunakan untuk menghitung nilai. Sebagai contoh :

(LABA/MODAL) * 100

merupakan ekspresi untuk membagi isi variable LABA dengan MODAL, dan kemudian dikalikan dengan 100.

Tabel 6.3 Simbol pada ekspresi aritmatika.

Simbol 

Keterangan 

* 

Perkalian 

/ 

Pembagian 

+ 

Penjumlahan 

 

Pengurangan 

 

 

 

 

 

 

 

 

 

 

KELOMPOK PERNYATAAN SQL

Pernyataan SQL dikelompokkan menjadi :

  • DDL
  • DML
  • DCL
  • Pengendali Transaksi
  • Pengendali Programatik.

 

1. DDL (Data Definition Language)

  • DDL
    è perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, tebel, atribut (kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel.

 

  • Kelompok DDL : CREATE, ALTER, dan DROP.

 

  • Sintaks SQL untuk melakukan pembuatan tabel baru didalam basis data :

 

 

create table t (A1 D1, A2, D2, …., An Dn)

dimana :

  • t adalah nama tabel yang akan dibuat
    • A1, A2, …, An adalah nama-nama atribut yang akan terdapat di dalam tabel t
    • D1, D2, …, Dn adalah domain nilai masing-masing atribut tersebut yang di tentukan berdasarkan tipe datanya.

     

    • Contoh perintah perintah SQL

A. Membuat tabel Mahasiswa

Create table mahasiswa

        (nim char (6),

    nama_mhs varchar (30),

        alamat_mhs varchar (50),

    tgl_lahir (date)

 

 

B. Penghapusan terhadap tabel Mahasiswa :

drop tabel mahasiswa

C.    Ekspresi SQL untuk pembuatan tabel Mahasiswa sekaligus dengan pendefinisian Indeks Primer berdasarkan nim :

        create table mahasiswa

            (nim char (6),

        nama_mhs varchar (30),

            alamat_mhs varchar (60),

            tgl_lahir date,

        primary key (nim))

 

 

d.    Ekspresi SQL, jika jumlah atribut yang membentuk Indeks Primer ada lebih dari satu

    Create table nilai

        (nim char (6),

        kode_kul char (6),

        indeks_nilai char (1),

        primary key (nim, kode_kul))

 

 

e.    Ekspresi SQL untuk penghapusan tabel Mahasiswa :

drop tabel mahasiswa

 

 

f. Sintaks SQL untuk perubahan struktur tabel yang berbentuk penambahan atribut baru ke tabel t adalah :

alter table t add A D

 

 

g. Sintaks SQL untuk penghapusan atribut dari tabel t

        Alter table t drop A

 

 

h. Ekspresi SQL untuk penambahan atribut baru bernama ip di tabel Mahasiswa :

    Alter table mahasiswa add ip numeric (5, 2)

i.    Jika atribut ip ingin dihapus dari tabel mahasiswa, ekspresi SQL-nya :

    Alter table mahasiswa drop ip

 

2. DML (Data Manipulation Language)

  • DML
    è kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan, dan penghapusan data.

 

  • Perintah yang masuk kategori DML adalah :

SELECT        =    Memilih data

INSERT        =    Menambah data

    DELETE        =     Menghapus data

UPDATE    =    Mengibah data

 

  • Perintah Select (klausa select) digunakan untuk menetapkan daftar atribut (field) yang diinginkan sebagai hasil query. Perintah select (klausa select) tidak terlepas dari dua klausa, yaitu :
  • Klausa form digunakan untuk menetapkan tabel (atau gabungan tabel) yang akan ditelusuri selama query data dilakukan.
  • Klausa where, yang sifatnya opsional, digunakan sebagai predikat (kriteria) yang harus dipenuhi dalam memperoleh hasil query.

 

sintaks (cara penulisan) dari ekspresi SQL dasar dengan 3 klausa tersebit adalah :

select A1 [A1, A2, ……, An]

from t1 [t1, t2, ….,tm]

[where p]

dimana :

  • A1, A2, …..,An merupakan daftar atribut.
  • t1, t2, ….,tm merupakan daftar tabel.
  • P merupakan predikat query.
  • [ ] merupakan tanda opsional (boleh digunakan, boleh tidak digunakan).

 

STRUKTUR DASAR

  1. Klausa Select

Perintah SQL untuk NIM dan nama mahasiswa yang ada di tabel Mahasiswa, maka perintah SQL berikut ini :

    Select nim, nama_mhs

    From mahasiswa

 

Sementara, perintah berikut ini :

    Select nama_mhs

    From mahasiswa

 

    Apa bentuk tampilan dari klausa dibawah :

Select nim, nama_mhs as nama

    Alamat_mhs as alamat

    From mahasiswa

 

Apa bentuk tampilan dari klausa dibawah :

Select *

    From mahasiswa

2. Klausa Where

Berikut ini adalah contoh untuk menampilkan semua atribut untuk mahasiswa dengan NIM=’980002′:

    Select *

    From mahsiswa

    Where nim = ‘980002’

 

    Apa tampilan dari perintah dibawah ini :

    Select *

    From kuliah

    Where semester between 3 and 5

 

3. Klausa Form

Ekspresi berikut menghasilkan table seperti apa :

select *

from kuliah, dosen

where kuliah. kode_dos = dosen.kode_dos

 

Ekspresi berikut menghasilkan table seperti apa :

apa ?    :

select *

from kuliah k, dosen d

where k.kode_dos = d.kode_dos

 

Ekspresi berikut menghasilkan table seperti apa :

select k.kode_kul, k.nama_kul, d.nama_dos

from kuliah k, dosen d

where k.kode_dos = d.kode_dos

 

Ekspresi berikut menghasilkan table seperti apa :

select k.kode_kul as kode,

k.nama_kul as kuliah, d.nama_dos as dosen

from kuliah k, dosen d

where k.kode_dos = d.kode_dos

and k.semester = 3

 

 

 

Ekspresi berikut menghasilkan table seperti apa :

select n.nim, m.nama_mhs

k.nama_kul, n.indeks_nilai

from nilai n, mahasiswa m, kuliah k

where n.nim = m.nim

and n.kode_kul = k.kode_kul

 

MANIPULASI DATA

  • SQL juga dilengkapi dengan sejumlah perintah untuk melakukan manipulasi data seperti penambahan record baru, pengubahan nilai atribut dan penghapusan record didalam suatu tabel.

 

1. Penambahan Record

Sintaks SQL untuk penambahan record baru ke sebuah tabel adalah :

Insert into t (A1, A2, …, An)

Values (V1, V2, … , Vn)

 

Di mana :

  • T è nama tabel yang akan mengalami penambahan record
  • A1, A2,… , An adalah nama-nama atribut yang akan di isi nilai
  • V1, V2, … , Vn adalah nilai-nilai yang akan mengisi atribut-atribut tersebut

 

 

 

 

MANIPULASI DATA

  • SQL juga dilengkapi dengan sejumlah perintah untuk melakukan manipulasi data seperti penambahan record baru, pengubahan nilai atribut dan penghapusan record didalam suatu tabel.

 

1. Penambahan Record

Sintaks SQL untuk penambahan record baru ke sebuah tabel adalah :

Insert into t (A1, A2, …, An)

Values (V1, V2, … , Vn)

 

 

  • T è nama tabel yang akan mengalami penambahan record
  • A1, A2,… , An adalah nama-nama atribut yang akan di isi nilai
  • V1, V2, … , Vn adalah nilai-nilai yang akan mengisi atribut-atribut tersebut

 

Ekspresi berikut menghasilkan table seperti apa :

Insert into Mahasiswa (nim, nama_mhs, alamat_mhs, tgl_lahir)

Values (‘980011’, ‘Siti Zubaedah’,

‘Jl. Guntur Kulon 12, Bogor’,

’02/03/1973′)

atau :

insert into Mahasiswa

values (‘980011’, ‘Siti Zubaedah’,

‘Jl. Guntur Kulon 12, Bogor’,

’02/03/1973′)

 

 

2.    Penambahan record baru dengan perintah berikut :

Insert into Mahasiswa (nim, nama_mhs,

alamat_mhs)

Values (‘980011’, ‘Siti Zubaedah’,

‘Jl. Guntur Kulon 12, Bogor’)

 

 

2. Penghapusan Record

  • Sintaks SQL untuk penghapusan record dari sebuah tabel adalah :

Delete from t

[ where p ]

di mana :

  • t adalah nama tabel yang akan mengalami penghapusan record
  • p merupakan predikat atau kriteria untuk menentukan record mana saja yang akan dikenai penghapusan, jika klausa where ini tidak digunakan, maka penghapusan akan dilakukan pada semua record di dalam tabel t
  • Berikut ini adalah perintah SQL untuk menghapus record kuliah tertentu :

Delete from kuliah

Where kode_kul = ‘IF-310’

 

  • Berikut ini adalah perintah SQL untuk menghapus beberapa record di tabel kuliah :

Delete from kuliah

Where kode_kul like ‘MA%’

 

  • Sintaks SQL untuk pengubahan nilai atribut pada suatu record dari sebuah tabel adalah :

Update t

Set assignment

[ where P ]

 

 

  • t adalah nama tabel yang akan mengalami pengubahan record
  • assignment adalah ekspresi pemberian nilai baru untuk suatu atribut yang akan kita ubah
  • merupakan predikat atau kriteria untuk pemilihan record yang akan dikenai perubahan, jika klausa where ini tidak digunakan, maka perubahan akan dilakukan pada semua record di dalam tabel t

 

  • Berikut ini adalah perintah SQL untuk mengubah nilai atribut sks untuk mata kuliah tertentu :

Update kuliah

Set sks = 4

Where kode_kul = ‘IF-310’

 

  • Perintah update digunakan untuk melakukan penambahan gelar di depan nama dosen tertentu berikut ini :

Update dosen

Set nama_dosen = ‘Prof. ‘ + nama_dosen

Where kode_dos = 2

 

  • Perintah update tanpa klausa where berikut ini dilakukan untuk semua record :

Update nilai

Set indeks_nilai = null

Yang mengakibatkan terisinya null (pengosongan nilai untuk atribut indeks_nilai) pada semua record di tabel Nilai.

 

 

3. Pengurutan Hasil Query
  • Ekspresi dasar SQL (dengan tiga klausa : select, from, dan where), è akan menghasilkan query dengan urutan yang sesuai dengan struktur penyimpanan yang kita terapkan pada hasil query.

 

  • Jika kita menggunakan struktur penyimpanan Heap (tabel tanpa Indeks Primer), è query ditampilkan berdasarkan kronologis penyimpanannya.

 

  • Jika terhadap tabel query, kita menggunakan struktur penyimpanan Sekeunsial Berindeks (tabel yang memiliki Indeks Primer), maka hasil query akan ditampilkan sesuai dengan atribut yang menjadi dasar Imdeks Primer-nya.

 

  • Jika kita ingin menampilkan hasil query dengan urutan berdasarkan atribut tertentu, maka kita dapat menambahkan klausa order by.

 

  • Misalkan, tabel Mahasiswa memiliki Indeks Primer berdasarkan atribut nim (sehingga hasil query ke tabel ini akan disusun berdasarkan nilai atribut nim tersebut), ekspresi SQL untuk menampilkan record-record mahasiswa berdasarkan urutan namanya    :

select *

from mahasiswa

order by nama_mhs

 

Urutan berdasarkan nama tersebut disusun secara ascending.

  • Jika ingin ditampilkan berdasarkan atribut tgl_lahir tapi secara descending, maka pada klausa order by di sertakan pula klausa desc :

select *

from mahasiswa

order by tgl_lahir desc

 

4. Beberapa contoh kasus Aljabar Relasional dan SQL (dikerjakan oleh mahasiswa secara bersamaan) dengan menggunakan table sbb :

 

 

Mahasiswa

Mhs 

Nim 

T_lahir 

Jones

Dendi

Tomy

Paula 

61521

61300

61425

61230 

05/12/77

28/04/78

01/11/75

14/06/77 

 

Kuliah

M_kuliah 

Kode_mk 

Nilai 

Matematika

Ekonomi

Sejarah

b.inggris 

Mat 231

Eko 220

Hst 211

Eng 202 

3

3

2

2 

 

Mhs_kul

Nim 

Kode 

Nilai 

61521

61521

61521

61300

61425

61425

61230

61230 

Mat 231

Eko 220

Hst 211

Hst 211

Eng 202

Mat 231

Mat 231

Eng 202 

B

A

B

A

C

B

D

C 

 

 

 

Mutu

Nilai 

Bobot 

A

B

C

D

E 

4

3

2

1

0 

 

a. Cari semua nim dan nama mahasiswa yang tidak lahir tgl 28/04/78

 

Jawab:                    

AR : π nim,nama(select t_lahir =|= 28/04/78)(mahasiswa)

SQL    :

Select nim, nama

From    : mahasiswa

Where    : T_lahir <>28/04/78

 

b. Tampilkan nilai & nim dari mahasiswa yang memperoleh nilai “D”

Jawab : ……………..

c. Tampilkan nilai mahasiswa yang bobotnya diatas “dua”

Jawab : ……………..

    d. Tampilkan bobot terkecil

Jawab : ……………..

e. Tampilkan semua entity dengan kode mata kuliah = mat231

Jawab : ……………..

f. Cari semua entity kuliah yang kreditnya “2” dan nama mata kuliahnya “sejarah”

Jawab : ……………..

 

 

 

 

 

 

 

QBE (QUERY BY EXAMPLE )

  • QBE menyediakan ekpresi query dalam bentuk tabular ( disebut Skeleton ).

 

  • Dengan menggunakan satu atau lebih tabel user dapat mengekspresikan suatu query dengan hanya memberikan karakteristik informasi yang dicari.

     

  1. Query untuk mencari semua KartuID kustomer yang memiliki rekening tipe tabungan dengan saldo lebih dari 4 juta, dapat diekspresikan dengan menggunakan 2 skeleton rekening dan kusRek seperti berikut :

    Rekening:

NoRek 

Type 

Saldo 

X 

” tabungan “ 

> 4.000.000 

 

    KusRek

KartuID 

NoRek 

P. y 

x 

 

  • Sembarang nama yang didahului dengan garis bawah ( _ ) menunjukkan bahwa nama tersebut adalah nama variabel. Hal ini untuk membedakan antara nama variabel dan nilai dari suatu variabel.
  • Pada contoh diatas ada dua variabel yaitu : _x dan y, dan ada dua nilai variabel yaitu 4.000.000 dan “tabungan”. Simbol P yang mendahului suatu variabel atau nilai variabel digunakan untuk menyatakan perintah cetak (print) atau tampilkan nilai dari suatu variabel. Jadi P.y berarti perintah cetak dari nilai variabel _y.

 

2. Query untuk mencari semua Nama dan KartuId kustomer yang memiliki rekening tipe tabungan atau tipe cek.

    Rekening

NoRek 

Type 

Saldo 

X 

“tabungan” 

 

Z 

“cek” 

 

 

    KusRek

KartuID 

NoRek 

Y 

X 

Y 

Z 

 

    Kustomer

Nama 

KartuID 

Jalan 

Kota 

P.w 

P.y 

   

Leave a comment