Anda di halaman 1dari 39

Basis Data Lanjut – Pendahuluan

Nur Budi Nugraha, S.Kom, M.T.


Entity Relationship Diagram

 Sebuah teknik pemodelan data yang merepresentasikan


gambar entitas dan relasi-relasi antar entitas di dalam
sebuah sistem informasi
 Dibentuk oleh dua komponen utama:
- Entitas (Entity)
- Relasi (Relationship)
yang dideskripsikan lebih detail dengan sejumlah attribut
(properti)
Entitas (Entity)

 Entity : merupakan obyek yang mewakili sesuatu dalam


dunia nyata, baik secara fisik maupun secara konsep
contoh
fisik : mobil, rumah, manusia, pegawai dsb
konsep : department, pekerjaan, mata kuliah dsb
 Setiap entitas pasti memiliki attribut yang mendeskripsikan
karakteristik dari entitas tersebut
 Notasi entitas:
NamaEntitas
Relasi (Relationship)

Relasi menyatakan hubungan antar entitas, termasuk


terhadap entitas itu sendiri (rekursif)

contoh : entitas seorang pegawai dengan NoKTP: “001” dengan nama


“Ali”, memiliki relasi dengan sebuah data di entitas departemen dengan
nomor=11 nama=”Personalia”
Pegawai Departemen
NoKtp Nama Nomor Nama
001 Ali 11 Personalia
002 Aminah 12 Keuangan
003 Ani 13 Humas
004 Budi
005 Tono
Primary Key

Adalah candidate key yang membedakan data antara satu


dengan lainnya (unik) dari seluruh data yang terdapat di
dalam sebuah tabel. Biasanya dipilih berdasarkan :
- Seringnya dijadikan acuan
- Lebih ringkas
- Lebih menjamin keunikan key

Primary Key untuk entitas


Pegawai:
- NoKTP
Konsep Foreign Key
 Foreign key adalah kolom yang diambil dari primary key
entitas lain yang menggunakan hubungan antar 2 tabel tsb.

Fakta
Adi, Budi dan Cici bekerja pada
bagian Personalia. Sedangkan Rudi
dan Santo bekerja pada bagian
Gudang

Dari fakta diatas dan panah relasi


sebelah kiri, bagaimana cara
menuliskan data yang menunjukkan
hubungan/relasi antar tabel pegawai
dan departemen?
Konsep Foreign Key

Ada 3 alternatif untuk menyimpan data relasi


1. Membuat tabel baru yang field-fieldnya berisi primari key kedua tabel
2. Primary key di tabel pegawai ditempatkan pula pada tabel departemen
3. Primary key dari tabel departemen ditempatkan pula pada tabel
pegawai

Alternatif 1 dan 2 tidak dipakai karena mengakibatkan pengulangan yang


tidak perlu (boros). Alternatif ke-3 dipilih, sehingga struktur tabelnya
menjadi:

Kolom DEP_Nomor dan DEP_Nama


pada tabel Pegawai disebut dengan
foreign key, karena diambil dari
primary key entitas lain
ERD Perusahaan
NmDepan Inisial NmBlk

Nama

Alamat Gaji nama nomor lokasi8

JenisKel bekerja
(1,1) untuk (1,N )
Pegawai Departemen
NoKTP (0,1)
mengepalai (1,1)

(0,N)
JmlPegawai
(0,1)

(1,N
TglMulai
)
(0,N )
)
(0,N

mengatur
bekerja
memimpin
pada
(1,N

(1,1)
)
menanggung
LamaJam Proyek
(1,1)

Nomor Nama Lokasi


Tanggungan

Nama Hubungan
JenisKel TglLahir
Derajat kardinalitas relasi (Cardinality Ratio)

Kardinalitas relasi menunjukkan jumlah maksimum data


entitas yang dapat berelasi dengan entitas lain
Satu ke satu (one to one)

Setiap data pada entitas A berhubungan dengan maksimal


satu data pada entitas B, begitu pula sebaliknya

Entitas A Entitas B
Contoh:
data 1 data 1
relasi “mengepalai” antara
entitas Pegawai dengan entitas data 2 data 2

Departemen data 3 data 3

data 4 data 4
Satu ke Banyak (one to many)

Setiap data pada entitas A bisa berhubungan dengan


banyak data pada entitas B, tetapi data pada entitas
B berhubungan maksimal hanya dengan sebuah data
di A
Entitas Entitas
A B
Contoh:
data 1 data 1
relasi “menanggung” antara
entitas pegawai terhadap data 2 data 2

entitas tanggungan data 3 data 3

data 4
Banyak ke Satu (many to one)

Merupakan kebalikan dari relasi satu-ke-banyak

Entitas A Entitas B
Contoh:
data 1 data 1
relasi “bekerja untuk” pada entitas
pegawai terhadap entitas data 2 data 2
departemen
data 3 data 3

data 4
Banyak ke banyak
(many to many)

Setiap data pada entitas A bisa berhubungan dengan


banyak data pada entitas B, demikian pula
sebaliknya
Entitas A Entitas B

Contoh:
data 1 data 1

relasi “bekerja pada” pada entitas


data 2 data 2
Pegawai terhadap entitas proyek
data 3 data 3

data 4 data 4
Batasan Partisipasi (Participation
Constraint)

Menentukan apakah keberadaan sebuah entitas


tergantung pada hubungannya ke entitas lain melalui
jenis relasinya
Ada 2 jenis:
1. Partisipasi Total partisipasi pegawai dalam relasi “bekerja untuk”,
memberikan arti bahwa setiap data pada pegawai, harus direlasikan
pada sebuah departemen. Atau tidak ada data pegawai yang tidak
berelasi dengan data departemen

2. Partisipasi sebagian partisipasi pegawai dalam relasi “mengepalai”


terhadap departemen, tidak setiap data pada pegawai dihubungkan
dengan departemen dengan relasi ini. Atau tidak semua pegawai
mengepalai departemen
Notasi lain untuk relasi
Macam relasi

 relasi Biner (binary relation)


 relasi tunggal (unary relation)
 relasi Multi entitas (n-ary relation)
 relasi ganda (redundant relation)
Relasi Biner (Binary Relation)

Merupakan relasi yang terbentuk antar 2 buah entitas

Contoh:
relasi “bekerja pada” pada entitas pegawai terhadap entitas
proyek

Pegawai Bekerja Pada Proyek


(1,N) (1,N)
Relasi Tunggal (Unary Relation)

Merupakan relasi yang terjadi dari sebuah entitas ke entitas


yang sama
Contoh:

relasi memimpin pada entitas pegawai

Pegawai

(0,1)
( 0 ,N )

memimpin
Relasi Multi Entitas
(N-ary Relation)

Merupakan relasi dari 3 buah entitas atau lebih. Seharusnya


dihindari, karena akan mengaburkan derajat relasi yang ada
dalam relasi.
Contoh:

Instruktur Menawarkan Semester

Nama
IDSemester
Kursus Tahun

NoKursus
Relasi Ganda
(Redundant Relation)

Relasi yang jumlahnya lebih dari satu untuk dua buah


entitas

Contoh:

bekerja
(1,1) untuk (1,N)
Pegawai Departemen
(0,1)
mengepalai (1,1)
STRUCTURED QUERY LANGUAGE
 Berikut adalah syntax dari SQL-SELECT
 SELECT [DISTINCT] select_list
 FROM table_source
 [WHERE search_condition]
 [GROUP BY group_by_expression]
 [HAVING search_condition]
 [ORDER BY order_expression [ASC | DESC] ]
 Keterangan SYNTAX:
 Yang berhuruf besar (SELECT, INTO, FROM, WHERE, GROUP BY, HAVING DAN
ORDER BY) artinya adalah kata kunci (keyword) yang harus disertakan jika kita
membutuhkannya di dalam pengolahan data. Kita tidak boleh menulis lebih dari sekali,
atau membuat nama variabel dengan nama tersebut.
 Yang berhuruf kecil (select_list, new_table_, table_source, search_condition,
group_by_expression, order_expression) adalah isian yang bisa kita ubah berdasarkan
kebutuhan kita.
 Kurung kotak [ ] menunjukkan bahwa bagian tersebut boleh disertakan atau tidak,
tergantung dari kebutuhan. Dari sini bisa diketahui, sebuah SQL-SELECT yang paling
sederhana minimal harus menyertakan:
 SELECT select_list
 FROM table_source
 Urutan syntax untuk kata kunci (keyword), misalnya ORDER BY terletak di setelah
GROUP BY, menunjukkan bahwa keyword harus disusun berdasarkan urutan tersebut,
jika keduanya disertakan, ORDER BY tidak boleh ditulis mendahului GROUP BY.
 select_list
 adalah kolom-kolom yang didefinisikan sebagai hasil dari
proses query.
 a. Menampilkan keseluruhan field
 Untuk menampilkan keseluruhan field dari tabel-tabel yang
didefinisikan, digunakan *. Misalnya, untuk menampilkan
seluruh field dari tabel Anggota, perintahnya:
 SELECT * FROM Anggota
 b. Menampilkan kolom-kolom tertentu
 Kolom-kolom yang dipilih berupa ekspresi, yang mana
ekspresi tersebut bisa berupa:
 field tabel (biasanya)
 konstanta
 operasi dan fungsi
 Antara kolom satu dengan lainnya dipisahkan dengan
tanda koma (,). Jika merupakan field tabel, maka judul
kolom adalah nama field tersebut. Selain itu, jika tidak
diberi nama, judul kolom akan kosong.
Contoh :
 menampilkan nama dan alamat Anggota:
 SELECT nama, alamat FROM Anggota
 menampilkan nama dalam bentuk huruf kapital:
 SELECT UPPER(nama), alamat FROM Anggota
 Mengubah judul kolom
 Kolom-kolom yang dipilih bisa diberi judul tertentu sesuai dengan
keinginan kita. Ada 2 cara untuk mengubah judul kolom:
 Menggunakan syntax: ekspresi AS judul_kolom
 Ini merupakan cara standar yang dipakai pada banyak sistem
database.
 Menggunakan syntax: judul_kolom = ekspresi
 Contoh:
 menampilkan nama dan alamat Anggta:
 SELECT nama AS NamaAnggota, alamat AS AlamatAnggota
FROM Anggota
 menampilkan nama dalam bentuk huruf kapital dg judul kolom NamaKapital:
 SELECT NamaKapital=UPPER(nama), alamat FROM Anggota
 [DISTINCT]
 Digunakan apabila kita ingin menghilangkan duplikasi
dari hasil query (hasil query yang sama ditampilkan
sekali).
 Misal, untuk menampilkan nomor-nomor anggota yang
sedang meminjam atau belum mengembalikan:
 SELECT NoAnggota FROM Peminjaman
 Perhatikan, pada hasil query di atas terdapat NoAnggota
yang ditampilkan lebih dari sekali bagi anggota yang
meminjam buku lebih dari 1. Untuk meniadakan
duplikasi, querynya adalah sbb:
 SELECT DISTINCT NoAnggota FROM Peminjaman
 Penggunaan klausa WHERE biasanya digunakan untuk:
 Filter (penyaringan) data. Yakni hanya menampilkan data
tertentu yang sesuai dengan kriteria yang kita masukkan. Atau
bisa juga dikatakan sebagai pencarian data.
 Merelasikan/menghubungkan query yang disusun lebih dari
satu tabel.
 Penerapannya adalah dengan memasukkan suatu ekspresi
kondisi setelah klausa WHERE:
 WHERE <kondisi>
 Jika <kondisi> lebih dari satu, maka bisa ditambahkan
dengan AND atau OR (sesuai dengan kebutuhan).

 WHERE <KONDISI> UNTUK FILTER

 Where untuk filter atau pencarian data di dalam SQL


Server bisa dalam beberapa bentuk ekspresi, yakni:
 operasi pembandingan
 operasi pendekatan pola
 operasi pembandingan dengan sekumpulan nilai
 Operasi Pembandingan: = < <= >= > <> is
 misal:
- menampilkan anggota yang berjenis kelamin laki-laki:
 SELECT * FROM Anggota WHERE JK="L"
 - menampilkan Anggota yang tahun kelahirannya lebih dari
1985:
 SELECT * FROM Anggota WHERE year(TglLahir) > 1985
- menampilkan Anggota wanita yang lahir di bulan Juli:
 SELECT * FROM anggota WHERE JK="P" AND
month(TglLahir)=6
- menampilkan idKoleksi yang belum dikembalikan
(TglKembali belum terisi)
 SELECT * FROM Peminjaman WHERE TglKembali IS NULL
 Operasi LIKE (pendekatan pola)
  khusus string
Operasi ini, hanya untuk pembandingan nilai bertipe string.
Digunakan untuk mengenali string-string yang memiliki pola
tertentu. Di dalam operasi ini, digunakan simbol-simbol berikut:
 simbol % artinya mewakili 0 s/d tak terhingga dari sembarang
karakter.
 misal:
- menampilkan anggota yang nama depannya: "Budi"
 SELECT * FROM anggota WHERE Nama LIKE “%Budi%"
 - menampilkan koleksi yang judulnya terdapat kata
“pemrograman”:
 SELECT * FROM koleksi WHERE Judul LIKE "%pemrograman%"
 operasi IN atau NOT IN
 Ekspresi ini digunakan untuk membandingkan dengan sebuah
kumpulan nilai, yang mana kumpulan nilai bisa berupa:
 nilai-nilai yang diisikan
 query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja)
 Nilai-nilai yang diisikan, maksudnya kita sendiri yang
mengisikan nilai-nilai tersebut di dalam query kita. Misalnya:
 - menampilkan koleksi yang jenisnya buku dan majalah
(idTipeKoleksi=1 atau 2):
 SELECT * FROM koleksi WHERE idTipeKoleksi IN (1, 2)
 - menampilkan anggota yang selain mahasiswa atau dosen
(idJenisAnggota selain 2 dan 3)
 SELECT * FROM anggota WHERE IDJenisAnggota NOT IN (1, 3)
 WHERE <KONDISI> UNTUK RELASI
 Jika kita mengambil informasi dari lebih dari sebuah tabel,
maka kita perlu menambahkan kondisi untuk relasi antara
kedua tabel tersebut. Pada dasarnya mirip dengan filter,
tapi fungsinya digunakan untuk merelasikan antara tabel-
tabel yang diambil informasinya.
 misal:
 menampilkan idKoleksi, judul dan nama pengarang.
 SELECT Koleksi.idKoleksi, Koleksi.Judul, Pengarang.Nama
 FROM Koleksi, Pengarang
 WHERE Koleksi.idPengarang=Pengarang.id
 FUNGSI-FUNGSI AGREGATE
 yaitu fungsi-fungsi yang hasilnya diambil dari proses tiap baris pada tabel.
Proses tersebut akan mengolah nilai sebuah field atau lebih mulai baris pertama
sampai seluruh baris.
 Fungsi-fungsi tersebut yakni:
 - COUNT(*) untuk mendapatkan jumlah baris
- SUM(kolom) untuk mendapatkan hasil penjumlahan kolom
- MAX(kolom) untuk mendapatkan nilai tertinggi
- MIN(kolom) untuk mendapatkan nilai terendah
- AVG(kolom) untuk mendapatkan nilai rata-rata
 misal:
- untuk menampilkan jumlah seluruh anggota:
 SELECT COUNT(*) FROM Anggota
 - untuk menampilkan tahun kelahiran anggota tertua:
 SELECT MAX(year) FROM anggota
 [GROUP BY <KOLOM1> [,<KOLOM2>]]
 digunakan untuk pengelompokan dari fungsi-fungsi aggregate.
Yang penting untuk diperhatikan, kolom-kolom yang
disertakan setelah GROUP BY harus sama dengan kolom-
kolom yang dipilih pada setelah klausa SELECT yg selain
fungsi AGGREGATE.
- untuk menampilkan jumlah anggota perjenis kelamin:
 SELECT JK, COUNT(*) FROM anggota GROUP BY JK
 - untuk menampilkan rata-rata harga koleksi per kode penerbit
 SELECT idPenerbit, AVG(harga)
 FROM koleksi
 GROUP BY idPenerbit
Referensi
 Kuliah Basis Data. Informatika ITS Surabaya. 2008.
Departements

departement_id departement_name manager_id


10 Administration 101
20 IT 103

Employees
employee_id name salary manager_id departement_id
100 Steven 8000 101 10
101 Lexa 10000 101 10
102 Bruce 9000 103 20
103 Diana 11000 103 20
104 Bruce 8500 103 20
TUGAS - 1
1. Buat dalam bentuk ERD
2. Tampilkan nama employee yang memiliki salary lebih dari 9000
3. Tampilkan id dan nama dari employee yang memiliki nama
dengan huruf n.
4. Tampilkan nama employee yang menjadi manager di departemen
IT
5. Hitung jumlah employee yang memiliki nama Bruce
6. Tampilkan id departemen dan nama departemen dari employee
yang bernama Lexa
7. Tampilkan nama-nama employee yang bekerja di departemen
pada masing-masing departemen
8. Tampilkan id departemen yang total salary semua employee yang
bekerja pada departement tersebut lebih dari 20000
9. Tampilkan id departemen, nama departemen, dan jumlah
employee yang bekerja pada masing-masing departemen tersebut
TUGAS - 1
Tampilkan departemen id, departemen name, jumlah employee yang
bekerja di masing-masing departemen yang:
10. Jumlah pekerjanya kurang dari 3
11. Memiliki jumlah pekerja paling tinggi
12. Memiliki jumlah pekerja paling kecil
13.Tampilkan id departemen dan salary minimum dari departemen yang
memiliki rata-rata salary paling besar

Referensi sql : http://www.w3schools.com/sql/

Anda mungkin juga menyukai