Anda di halaman 1dari 35

05 | Aljabar Relasional

Tri Afirianto, S.T., M.T. | tri.afirianto@ub.ac.id


Sistem Basis Data
Aljabar Relasional
Sekumpulan operasi yang digunakan untuk
melakukan proses manipulasi data dalam
rangka untuk mendapatkan informasi yang
diperlukan dari basis data
Notasi

Operasi Dasar Operasi Tambahan
R Relation (R
1
) (R
2
) Natural Join
s
A
(R) Selection (R
1
)
q
(R
2
) Theta Join
p
A1, ...,An,
(R) Projection (R
1
) (R
2
) Intersection
(R
1
) (R
2
) Union (R
1
) (R
2
) Division
(R
1
) x (R
2
) Cross Product
(R
1
) - (R
2
) Difference
r
R(A1, ..., An)
(E) Rename
R - Relation
Simbol ini merujuk pada tabel relasi beserta
data di dalamnya, baik tabel asli maupun yang
sudah dimodifikasi dengan operator-operator
aljabar relasional
R Relation (lanj.)
Contoh:
Basis data penerimaan mahasiswa
Kampus(nmKampus, alamat, pendaftaran)
Siswa(ID, nama, nilai, rata-rata)
Pendaftar(ID, nmKampus, melalui, putusan)
nmKmps almt pendftrn ID nama nilai rata2 ID nmKmps melalui putusan
Kampus Siswa Pendaftar
s Operator Selection
Disimbolkan dengan huruf Yunani Sigma (s)
Untuk memilih baris tertentu dari sebuah
himpunan baris data (record/tuple) yang
memenuhi kondisi dan membuang baris yang
lain
Notasi:
s
<kondisi pilihan>
(<nama relasi>)
s Operator Selection (lanj.)
Siswa dengan nilai > 30.4
s
nilai > 30.4
(Siswa)
Siswa dengan nilai > 30.4 dan rata-rata < 70
s
nilai > 30.4 rata2 < 70
(Siswa)
Pendaftar ke UB melalui CS
s
nmKmps = UB melalui = CS
(Pendaftar)


nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
p Operator Projection
Disimbolkan dengan huruf Yunani Phi (p)
Untuk memilih kolom (atribut) tertentu dari
himpunan atau subhimpunan dan membuang
yang lain

Notasi:
p
<daftar atribut>
(<nama relasi>)
p Operator Projection (lanj.)
Menampilkan nama Universitas
p
nmKmps
(Kampus)
Menampilkan ID dan nmKmps Pendaftar
p
ID, nmKmps
(Pendaftar)


nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
Duplicate Values
Aljabar relasional akan secara otomatis menghapus
duplicate values
Bahasa SQL tidak menghapus duplicate values,
kecuali diperintahkan
Contoh ketika menampilkan alamat dari tabel
Kampus:
p
almt
(Kampus)


nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
p dan s
Dapat digunakan bersamaan untuk
mengambil kolom dan baris tertentu dari
tabel relasi
p dan s (lanj.)
ID dan nama Siswa dengan nilai > 35.0
p
ID, nama
(s
nilai > 35.0
(Siswa))
Nama kampus dan alamat Universitas dengan
pendaftaran > 1000
p
nmKmps, almt
(s
pendftrn > 1000
(Kampus))

nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
p dan s (lanj.)
Atau bisa ditulis dalam bentuk
Kampus_1000 s
pendftrn > 1000
(Kampus)
(tabel Kampus dipilah dulu hanya dengan
mengambil pendaftaran > 1000 dan disimpan
dalam relasi dengan nama Kampus_1000)
Hasil p
nmKmps, almt
(Kampus_1000)
(kemudian relasi Kampus_1000 dipilah hanya
diambil kolom-kolom nama Kampus, dan
alamat)
x Cross Product
Disimbolkan dengan tanda x
Digunakan untuk menggabungkan 2 relasi

A B C
A1 B1 C1
A2 B2 C2
R1
E F
E1 F1
E2 F2
R2
A B C E F
A1 B1 C1 E1 F1
A1 B1 C1 E2 F2
A2 B2 C2 E1 F1
A2 B2 C2 E2 F2
R1 x R2
x Cross Product (lanj.)
Tampilkan nama dan nilai Siswa dengan rata-
rata > 1000 yang mendaftar ke CS dan ditolak
p
nama, nilai
(s
Siswa.ID = Pendaftar.ID rata2 > 1000 melalui = CS
putusan = ditolak
(Siswa x Pendaftar))

nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
Division
Disimbolkan dengan tanda
Untuk mendapatkan nilai yang ada pada salah
satu atribut dari relasi pembilang yang nilai
atributnya sama dengan nilai atribut relasi
penyebut
Division (lanj.)
A B
A1 B1
A1 B2
A1 B3
A1 B4
A2 B1
A2 B2
A3 B2
A4 B2
A4 B4
R1
B
B2
R2
B
B2
B4
R3
B
B1
B2
B4
R4
A
A1
A2
A3
A4
R1 R2
A
A1
A4
R1 R3
A
A1
R1 R4
Division (lanj.)
A B C D
A1 B1 C1 D1
A1 B1 C3 D3
A2 B2 C3 D3
A3 B3 C1 D1
A3 B3 C3 D3
A1 B1 C2 D2
R1
C D
C1 D1
C3 D3
R2
A B
A1 B1
A3 B3
R1 R2
Natural Join
Disimbolkan dengan
Digunakan untuk menggabungkan 2 relasi
dengan menggabungkan kolom yang sama
dan salah satu kolom yang sama tersebut akan
dihilangkan
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
B C D
B1 C1 D1
B1 C2 D2
B2 C1 D3
B2 C2 D4
R2
A B C D
A1 B1 C1 D1
A2 B2 C2 D4
R1 R2
Natural Join (lanj.)

(R
1
) (R
2
)

p
schema(R
1
)

schema(R
2
)
(s
R
1
.A = R
2
.A ... R
1.N
= R
2.N
(R
1
x R
2
))
p
A,B,C,D
(s
R
1
.B = R
2
.B R
1.C
= R
2.C
(R
1
x R
2
))
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
B C D
B1 C1 D1
B1 C2 D2
B2 C1 D3
B2 C2 D4
R2
A B C D
A1 B1 C1 D1
A2 B2 C2 D4
R1 R2
Natural Join (lanj.)
Tampilkan nama dan nilai Siswa dengan rata-
rata > 1000 yang mendaftar ke CS dan ditolak
p
nama, nilai
(s
Siswa.ID = Pendaftar.ID rata2 > 1000 melalui = CS
putusan = ditolak
(Siswa x Pendaftar))
p
nama, nilai
(s
rata2 > 1000 melalui = CS putusan = ditolak
(Siswa
Pendaftar))

nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan

q
Theta Join
Disimbolkan dengan
q

Digunakan untuk menggabungkan 2 relasi
dengan menggabungkan kolom dengan
kondisi atau syarat tertentu
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
B C D
B1 C1 D1
B1 C2 D2
B2 C1 D3
B2 C2 D4
R2
A R1.B R2.B R1.C R2.C D
A1 B1 B1 C1 C1 D1
A1 B1 B1 C1 C2 D2
A2 B2 B2 C2 C1 D3
A2 B2 B2 C2 C2 D4
R1
R1.B=R2.B
R2

q
Theta Join (lanj.)
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
B C D
B1 C1 D1
B1 C2 D2
B2 C1 D3
B2 C2 D4
R2
A R1.B R2.B R1.C R2.C D
A1 B1 B1 C1 C1 D1
A1 B1 B1 C1 C2 D2
A2 B2 B2 C2 C1 D3
A2 B2 B2 C2 C2 D4
R1
R1.B=R2.B
R2

(R
1
)
q
(R
2
) s
q
(R
1
x R
2
)
atau dalam contoh di bawah adalah:
R
1

R
1
.B = R
2
.B
R
2
s
R
1
.B = R
2
.B
(R
1
x R
2
)
Operator Union
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
A B C
A3 B3 C3
A4 B4 C4
A5 B5 C5
R2
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
R1 R2
Disimbolkan dengan
Digunakan untuk menggabungkan baris
(record/tuple) dari 2 tabel relasi
Operator Union (lanj.)
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
A B C
A3 B3 C3
A4 B4 C4
A5 B5 C5
R2
A
A1
A2
A3
A4
A5
(p
A
R
1
) (p
A
R
2
)

(p
A
R
1
) (p
A
R
2
)
Operator Different
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
A B C
A3 B3 C3
A4 B4 C4
A5 B5 C5
R2
Disimbolkan dengan
Digunakan untuk mengurangi baris (record/tuple)
dari tabel ke-1 yang sama dengan baris di tabel ke-2
A B C
A1 B1 C1
A2 B2 C2
R1 R2
Operator Different (lanj.)
Tampilkan ID dan nama Siswa yang tidak
mendaftar di Universitas manapun
p
ID, nama
((p
ID
Siswa p
ID
Pendaftar) Siswa)

nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
Operator Intersection
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
A B C
A3 B3 C3
A4 B4 C4
A5 B5 C5
R2
Disimbolkan dengan
Digunakan untuk memilih baris (record/tuple) yang
sama dari 2 tabel relasi
A B C
A3 B3 C3
R1 R2
Operator Intersection (lanj.)
A B C
A1 B1 C1
A2 B2 C2
A3 B3 C3
R1
A B C
A3 B3 C3
A4 B4 C4
A5 B5 C5
R2

R
1


R
2
R
1
(R
1
R
2
)
A B C
A3 B3 C3
R1 R2
Union, Different, dan Intersection
A B C
R1
A B C
R2
A B C
R3
Operator Union (), Different (), dan Intersection
() umumnya digunakan untuk relasi atau tabel yang
memiliki schema yang sama
r Operator Rename
Disimbolkan dengan r
Digunakan untuk mengganti nama atribut (kolom)
suatu schema
Seringkali digunakan untuk operasi union, different,
intersection, dan self-joins
nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
r Operator Rename (lanj.)
Menampilkan list yang berisi daftar nama siswa dan
nama kampus
r
c(nama)
(p
nmKmps
Kampus) r
c(nama)
(p
nama
Siswa)
nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
r Operator Rename (lanj.)
Menghilangkan keambiguan pada operasi self-joins
Contoh:
Tampilkan Kampus yang berada pada alamat yang
sama
s
n
1<>
n
2
(r
c
1
(n
1,a,p1
)
(Kampus) r
c
2
(n
2,a,p2
)
(Kampus))
nmKmps almt pendftrn ID nama nilai rata2
Kampus Siswa Pendaftar
ID nmKmps melalui putusan
Tugas
1. Cari no pegawai, nama pegawai, dan email untuk semua
pegawai! (tabel HR_EMPLOYEES)
2. Cari nama dan email untuk semua pegawai yang bekerja
pada departemen Research! (tabel HR_EMPLOYEES dan
HR_DEPARTEMENTS)
3. Tampilkan nomor projek, nomor departemen, nama
manajer departemen, email, dan gaji untuk projek yang
berlokasi di kota Kediri! (tabel HR_EMPLOYEES,
HR_DEPARTEMENTS, HR_JOBS, dan HR_LOCATIONS)
4. Cari nama pegawai yang bekerja pada semua projek yang
dikontrol oleh nomor departemen 5! (tabel HR_EMPLOYEES,
HR_DEPARTEMENTS dan HR_JOB_HISTORY)
Database Human Resources

Anda mungkin juga menyukai