0% menganggap dokumen ini bermanfaat (0 suara)
401 tayangan121 halaman

JobSheet Basis Data 2021

Dokumen tersebut merupakan job sheet tentang perancangan basis data yang mencakup penjelasan tentang entity relationship diagram (ERD), entitas, atribut, relasi, dan kunci/key. Job sheet ini memberikan panduan kepada mahasiswa untuk merancang basis data dengan menggunakan ERD.

Diunggah oleh

Eh
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
401 tayangan121 halaman

JobSheet Basis Data 2021

Dokumen tersebut merupakan job sheet tentang perancangan basis data yang mencakup penjelasan tentang entity relationship diagram (ERD), entitas, atribut, relasi, dan kunci/key. Job sheet ini memberikan panduan kepada mahasiswa untuk merancang basis data dengan menggunakan ERD.

Diunggah oleh

Eh
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 121

JOB SHEET

PERANCANGAN
BASIS DATA
MKK-23207

Disusun Oleh
Putu Indah Ciptayani, S.Kom. M.Cs

PROGRAM STUDI TRPL


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BALI
2020
DAFTAR ISI

JOB SHEET 1 ................................................................................................................................1


JOB SHEET 2 .............................................................................................................................. 25
JOB SHEET 3 .............................................................................................................................. 36
JOB SHEET 4 .............................................................................................................................. 52
JOB SHEET 5 .............................................................................................................................. 60
JOB SHEET 6 .............................................................................................................................. 68
JOB SHEET 7 .............................................................................................................................. 74
JOB SHEET 8 .............................................................................................................................. 83
JOB SHEET 9 .............................................................................................................................. 93
JOB SHEET 10 .......................................................................................................................... 104
JOB SHEET 11 .......................................................................................................................... 108
JOB SHEET 12 .......................................................................................................................... 114
Perancangan Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Job Sheet 1
Bidang Studi : TRPL
Jurusan : Teknik Elektro
Waktu : 12 x 50 Menit
Entity Relationship
Kelas/Sem : IIIB/3 Diagram Pertemuan 3, 4, 5, 6, 7 dan 8
Th Ajaran : 2021/2022

Job Sheet 1

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mampu merancangkan serta memodelkan
basis data dalam bentuk ERD menggunakan aplikasi pendukung
perancangan ERD dan memetakannya ke dalam tabel-tabel basis data.

C. Indikator
1. Mahasiswa mampu menentukan entitas dan atributnya
2. Mahasiswa mampu menentukan jenis atribut
3. Mahasiswa mampu menentukan relasi dan kekangan kardinalitas antar
entitas
4. Mahasiswa mampu menggambarkan rancangan ERD ke dalam
software penunjang
5. Mahasiswa mampu memetakan ERD ke dalam tabel-tabel database
D. Peralatan
1. Seperangkat computer yang sudah terinstal Microsoft Visio, MySQL,
Web Server Apache dengan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
1. Entity Set
Sebuah database dimodelkan dengan sekumpulan entitas dan
relasi antar entitasnya. Entitas merupakan objek yang berwujud dan
dapat dibedakan dengan objek lainnya.
Contoh, dalam database akademik ada entitas mahasiswa, dosen
dan matakuliah.
Entity set (himpunan entitas) merupakan sekumpulan entitas yang
memiliki tipe sama, misalnya sekumpulan entitas mahasiswa disebut
sebagai entity set mahasiswa, sedangkan sekumpulan entitas matakuliah
disebut sebagai entity set matakuliah.

1
Perancangan Basis Data

Di dalam penggambaran ERD, entitas dilambangkan dengan kotak,


dimana di dalam kotak tertulis nama entitasnya.

Contoh :

Mahasiswa Matakuliah

2. Atribut
Atribut adalah properti yang dimiliki oleh semua anggota dari entity
set. Sebuah entitas akan memiliki atribut, misalnya entitas mahasiswa memiliki
atribut NIM, nama_mahasiswa, alamat_mahasiswa, telp_mahasiswa,
tanggal_lahir. Entitas matakuliah misalnya memiliki atribut kode_matakuliah,
nama_matakuliah dan SKS.
Terdapat beberapa jenis atribut, yaitu sebagai berikut:
a. Atribut sederhana : yaitu atribut yang tidak bisa dipecah lagi dan
hanya bernilai tunggal. Contohnya yaitu NIM, agama,
jenis_kelamin. Penggambaran atribut ini adalah dengan symbol
elips
b. Atribut komposit : yaitu atribut yang nilai dapat dipecah-pecah.
Misalnya : nama dapat dipecah menjadi nama depan dan nama
belakang, alamat dapat dipecah menjadi nama_jalan, kecamatan,
kota, provinsi, kode_pos. Atribut ini digambarkan dengan elips yang
bercabang
c. Atribut bernilai banyak : yaitu sebuah atribut yang nilainya bisa
lebih daripada satu. Misalnya : hobby (mahasiswa bisa saja punya
lebih daripada satu hobby), telp (mahasiswa bisa saja punya lebih
daripada satu telp). Atribut ini digambarkan dengan double-lined
ellipse
d. Atribut turunan : yaitu atribut yang nilainya dapat
diturunkan/dihitung dari atribut lainnya. Misalnya umur dapat
dihitung dari atribut tanggal_lahir, subtotal dapat dihitung dari
jumlah dikalikan dengan harga. Atribut ini digambarkan dengan
elips bergaris putus-putus.
Contoh penggambaran atribut dari entitas mahasiswa dapat dilihat sebagai
berikut:

2
Perancangan Basis Data

Nama_depan Nama_belakang

NIM Nama Tanggal_lahir

hobby
Mahasiswa umur

telp
Alamat Kode_pos

Nama_jalan
kecamatan kota provinsi

Pada gambar di atas, tampak bahwa sebuah entitas bernama mahasiswa


dengan :
- dua buah atribut sederhana yaitu NIM dan tanggal_lahir
- dua buah atribut komposit yaitu nama (dipecah menjadi nama_depan
dan nama_belakang), alamat (dipecah menjadi nama_jalan, kecamatan,
kota, provinsi dank ode_pos)
- dua buah atribut bernilai banyak yaitu : hobby dan telp
- sebuah atribut turunan yaitu : umur yang diturunkan dari tanggal_lahir
Catatan :
- nama bisa saja menjadi atribut sederhana jika perancang menghendaki
menggabungkan nama_depan dan nama_belakang menjadi satu kolom
saat penyimpanan nantinya
- telp bisa saja menjadi atribut sederhana apabila perancang hanya
menghendaki penyimpnan 1 buah nomor telepon saja untuk satu
mahasiswa, demikian juga dengan hobby
- umur hanya akan menjadi atribut turunan jika ada atribut tanggal_lahir.
Jika tidak ada atribut tanggal_lahir maka umur menjadi tidak bisa dihitung
dan menjadi atribut sederhana.

3. Kunci/Key
Kunci merupakan atribut yang bernilai unik. Misalnya : mahasiswa
memiliki NIM yang tidak akan sama dengan mahasiswa yang lainnya. Kunci
juga bisa tersusun dari dua atau lebih atribut. Terdapat beberapa jenis
kunci yaitu:
• Super key : satu atau beberapa atribut yang memiliki nilainya secara
unik menggambarkan setiap entitas.
• Candidate key : super key dengan panjang minimal
• Primary key : kunci utama tabel yang dipilih dari salah satu candidate
key. Dalam sebuah entity set bisa saja terdapat lebih dari satu buah
candidate key, akan tetapi nantinya akan dipilih salah satu saja yang

3
Perancangan Basis Data

paling kuat tingkat keunikannya dan dirasa paling sederhana. Primary


key sebuah entitas tidak boleh bernilai kosong (NULL)

Contoh :
Nama_pegawai
NIP telp

Pegawai jabatan

Dalam contoh ERD di atas, maka bisa disusun kunci-kunci sebagai berikut:
• Super key : {NIP}, {NIP, Nama_pegawai}, {telp}
• Candidate key : {NIP}, {telp}
• Primary key : {NIP}

Catatan :
- Telp bisa menjadi super key karena nonor telp antara satu pegawai
dan lainnya tidak sama
- Nama_pegawai saja tidak bisa menjadi super key karena bisa jadi ada
pegawai yang memiliki nama sama, demikian juga dengan jabatan.
Namun saat NIP bergabung dengan nama_pegawai, ini akan menjadi
perpaduan yang unik (tidak mungkin ada NIP dan nama pegawai yang
sama)
- Untuk pengambilan candidate key maka akan diambil super key
terpendek yaitu
- Untuk pemilihan primary key harus dipastikan yang paling unik,
sederhana dan tidak akan berubah-ubah. Telp memang unik, tapi bisa
jadi nomor telp seorang pegawai akan berubah, sehingga NIP akan
lebih baik untuk primary key.

Sebuah entitas yang kuat harus memiliki kunci primer. Kunci primer
dilambangkan dengan atribut bergaris bawah, seperti contoh berkut :
Nama_depan Nama_belakang

NIM Nama Tanggal_lahir

hobby Nama_pegawai
Mahasiswa umur NIP

telp
Alamat Kode_pos Pegawai

Nama_jalan
kecamatan kota provinsi jabatan telp

4
Perancangan Basis Data

4. Relasi Antar Entitas


Relasi/asosiasi merupakan keterhubungan antar entitas. Misalnya
mahasiswa mempelajari matakuliah. Terdapat relasi mempelajari antara
entitas mahasiswa dengan entitas matakuliah. Relasi digambarkan dengan
bentuk belah ketupat.

Mahasiswa Mempelajari Matakuliah

Contoh lainnya misalnya : dosen mengajar matakuliah

Dosen mengajar Matakuliah

Relasi memiliki derajat yaitu : jumlah entitas yang terlibat di dalam


relasi. Dari contoh di atas, maka derajat relasinya adalah binary karena
melibatkan 2 buah entitas di dalamnya. Contoh lainnya misalnya unary
relationship yang hanya melibatkan satu buah entitas dan ternary
relationship yang melibatkan 3 buah entitas di dalam sebuah relasi.

Konselor Ruangan
supervisor

menangani
Pegawai memimpin

bawahan
Client

Unary relationship (roles) Ternary relationship

Setiap relasi memiliki kekangan kardinalitas, yaitu maksimal


keterlibatan suatu entitas di dalam relasi. Terdapat empat jenis kekangan
kardinalitas :
a. One-to-one : relasi yang menggambarkan maksimal keterlibatan
masing-masing entitas adalah maksimal satu. Misalnya : relasi antara
mahasiswa dengan skripsi. Setiap mahasiswa maksimal memiliki satu
skripsi dan satu buah skripsi maksimal dimiliki oleh satu mahasiswa.

1 1
Mahasiswa memiliki Skripsi

b. One-to-many : relasi yang menggambarkan keterlibatan maksimal dari


salah satu entitas hanya satu, sedangkan entitas kawannya bisa lebih
daripada satu. Misalnya mahasiswa mengerjakan banyak project,

5
Perancangan Basis Data

sedangkan sebuah project hanya dikerjakan oleh maksimal satu


mahasiswa saja.
1 n
Mahasiswa memiliki Project

c. Many-to-one : sama dengan relasi one-to-many, hanya dibalik


pembacaannya saja.
1 n
Project memiliki Mahasiswa

d. Many-to-many : relasi yang melibatkan lebih dari satu anggota setiap


entitas. Misalnya seorang mahasiswa akna mempelajari lebih daripada
satu matakuliah, sedangkan satu matakuliah dipelajari oleh lebih
daripada satu mahasiswa.
m n
Mahasiswa memiliki Matakuliah

5. Entitas Lemah
Entitas lemah merupakan entitas yang keberadaannya bergantung
pada entitas lainnya dan tidak memiliki primary key. Keberadaan entitas
lemah bergantung pada entitas kuat lainnya yang disebut identifying entity.
Relasi antara entitas lemah ke identifying entity-nya bersifat many-to-one.
Entitas lemah dilambangkan dengan kotak bergaris ganda. Meskipun tidak
memiliki primary key, namun entitas lemah hendaknya memiliki
discriminator. Discriminator (atau partial key) dari sebuah weak entity set
merupakan sekumpulan atribut yang dapat membedakan seluruh entitas
dari anggota entitas lemah lainnya. Contoh entitas lemah misalnya keluarga
pegawai yang ditanggung oleh perusahaan tempat pegawai berkerja.
NIP Nama_pegawai Nama_keluarga Tanggal_lahir

hubungan
1 n
Pegawai menanggung Keluarga_Pegawai

Dalam contoh di atas, keluarga_pegawai merupakan entitas lemah,


karena keberadaannya bergantung pada entitas pegawai (sebagai
identifying entity) dan keluarga_pegawai tidak memiliki primary key
karena tidak ada satupun field yang unik di dalam entitas tersebut. Namun
dalam satu keluarga (keluarga dari seorang pegawai), tidak mungkin
terdapat nama yang sama, sehingga nama_keluarga bisa menjadi partial key
atau discriminator.

6
Perancangan Basis Data

6. Penerjemahan/Pemetaan ERD ke Dalam Tabel


Sebuah ERD dapat dipetakan ke dalam tabel-tabel untuk membentuk
database yang utuh dengan aturan sebagai berikut:
1. Sebuah entitas baik lemah maupun kuat akan menjadi sebuah tabel
2. Setiap atribut sederhana akan menjadi kolom pada tabel yang
dibentuk oleh entitasnya
3. Setiap atribut komposit hanya akan diambil bagian daunnya saja
(cabang terakhir) dan batang tidak akan disimpan menjadi kolom.
Contoh : nama dipecah menjadi nama_depan dan nama_belakang,
maka yang akan disimpan menjadi kolom adalah nama_depan dan
nama_belakang, sedangkan nama akan ditinggalkan (tidak
disimpan)
4. Setiap atribut bernilai banyak akan menjadi tabel tersendiri, dengan
kolom berupa kunci primer dari entitas utamanya ditambah dengan
atribut tersebut, dan keduanya akan menjadi kunci primer yang
disebut kunci primer komposit. Contoh atribut hobby akan
membentuk tabel hobby_mahasiswa dengan kolom berupa NIM dan
hobby, dimana kunci primernya adalah {NIM, hobby}
5. Setiap atribut turunan tidak akan disimpan di dalam tabel, kecuali
pada kasus tertentu jika kecepatan akses database lebih diutamakan
daripada memory.
6. Setiap relasi akan menghasilkan kunci tamu (foreign key), dimana
kunci ini merupakan kunci yang berasal dari entitas lain. Cara
penerjemahan relasi adalah sebagai berikut:
a. One-to-one : salah satu kunci primer menjadi kunci tamu pada
tabel lainnya. Misalnya NIM yang merupakan kunci primer
mahasiswa akan menjadi kunci tamu ke tabel skripsi
b. One-to-many : Kunci primer dari entitas yang bernilai one akan
menjadi kunci tamu pada entitas kawannya. Misalnya NIM
mahasiswa akan menjadi kunci tamu pada tabel project
c. Many-to-many : akan membentuk tabel baru, dimana kunci
primer dari kedua tabel akan menjadi kunci tamu pada tabel baru.
Misalnya relasi mahasiswa dengan matakuliah akan membantuk
tabel baru dengan kunci tamu NIM dan kode_matakuliah
7. Kunci primer dari entitas lemah adalah kunci primer dari identifying
entity-nya ditambah dengan discriminatornya. Misalnya kunci
primer tabel keluarga_pegawai adalah : {NIP, nama_keluarga}

7. Langkah Perancangan ERD


Untuk merancang sebuah ERD, maka perlu dilakukan langkah-langkah
berikut:
a. Menentukan semua entity set yang terlibat

7
Perancangan Basis Data

b. Menentukan atribut dari masing-masing entity set (sesuai dengan


kebutuhan data dari sistem yang hendak dibangun)
c. Menentukan primary key dari tiap-tiap entity set
d. Menentukan relationship set antar entity set
e. Menentukan derajat/kardinalitas relasi untuk setiap relatinship
set

8. Pembuatan Database pada MySQL


Untuk menjalankan MySQL, pastikan MySQL sudah terinstal di
komputer Anda. Anda juga bisa menginstal satu paket software XAMPP dan
sebuah browser (bebas). Berikut adalah langkah-langkah untuk memulai
membuat database di dalam MySQL dengan menggunakan phpMyAdmin:
a. Bukalah XAMPP Control Panel dari Start, lalu klik Start untuk Apache
dan MySQL

Maka PID dan port akan terisi dan teks pada tombol akan berubah
menjadi “Stop” apabila proses berhasil. Jika tidak terjadi perubahan, maka
berati proses gagal.

8
Perancangan Basis Data

b. Kemudian bukalah browser dan ketikkan localhost/phpmyadmin pada


bagian url atau klik tombol Admin pada bagian MySQL. Anda akan
melihat tampilan berikut. Sisi sebelah kiri yang merupakan daftar basis
data yang pernah Anda buat mungkin saja masih kosong jika Anda
belum pernah membuat basis data sebelumnya.

c. Untuk membuat sebuah basis data, maka Anda perlu menekan tab
Database, kemudian ketikkan nama database dan klik Create.

9
Perancangan Basis Data

d. Misal kita ketikkan nama database sebagai latihan1

1 2

Jika berhasil maka akan muncul teks “Database has been created” atau
teks dalam Bahasa Indonesia “Database telah dibuat” dan Anda dapat
melihat pada sisi sebelah kiri

e. Sekarang Anda bisa menekan nama database tersebut untuk


mengaktifkannya. Setelah Anda menekan nama database latihan1 pada
sisi kiri, maka Anda akan aktif pada database latihan1, dimana belum
ada tabel sama sekali, karena Anda belum membuat tabel.

Nama database aktif

10
Perancangan Basis Data

f. Sebelum membuat tabel, pemahaman akan tipe data pada MySQL harus
dipahami terlebih dahulu

Tipe Data String : menyimpan data berupa karakter atau deretan


karakter
Contoh : Nama, alamat, NIM

Tipe Data Date and Time : menyimpan data dalam bentuk waktu
baik tanggal lengkap sampai dengan detik ataupun tahunnya
saja.
Contoh : tanggal lahir

Tipe Data BLOB : menyimpan data binary.


Misalnya jika ingin menyimpan suatu file utuh ke dalam database

Tipe Data Numerik : untuk menyimpan data bilangan, baik


bilangan bulat maupun pecahan
Harap diperhatikan bahwa tidak semua deretan angka bisa
dikategorikan sebagai tipe numerik. Tipe numerik umum untuk
diperlakukan dengan operasi matematis, seperti dijumlahkan,
dikalikan dan lain sebagainya. Akan tetapi beberapa deretan angka
tidak pernah diperlakukan secara matematis, seperti misalnya NIM,
kode pos, kode pegawai.

11
Perancangan Basis Data

Jadi bijaksanalah dalam memilih tipe data.


Contoh tipe data numerik : umur, harga, nilai. Sedangkan NIM, kode
pos termasuk ke dalam tipe data String

Tipe Data Lainnya : tipe data untuk menyimpan data-data lain.


Misalnya : menyatakan pilihan yang disediakan, 1 : Golongan Darah A,
2 : Golongan Darah O, 3 : Golongan Darah B, 4 : Golongan Darah AB

g. Setelah memahami tipe data, maka lanjutkan dengan membuat tabel.


Misalnya akan membuat tabel kategori_barang dengan kolom sebagai
berikut :
Field Tipe Data Keterangan

12
Perancangan Basis Data

Kode_kategori INT PRIMARY KEY, NOT NULL,


AUTO_INCREMENT
Nama_kategori VARCHAR (30)

Keterangan : AUTO_INCREMENT (A_I) adalah sebuah data yang akan


berisi nomor urut otomatis yang dimulai dari 1 dan seterusnya.
Sehingga user tidak perlu mengisi data ke dalam kolom tersebut.
Sebuah kolom yang bersifat AUTO_INCREMENT harus berupa INT atau
BIGINT dan harus menjadi primary key serta dalam satu tabel hanya
boleh ada satu field yang bersifat AUTO_INCREMENT.

1 2

h. Kemudian Anda akan dihadapkan pada tampilan untuk mengisi nama-


nama kolom pada tabel, seperti berikut:

Pastikan memilih primary dan men-check


A_I (auto increment)

2
i. Setelah menekan Save, maka Anda akan menemui tampilan sebagai
berikut:

13
Perancangan Basis Data

Keterangan :
- Untuk menghapus tabel Anda bisa menekan drop
- Untuk bisa melihat data Anda bisa menekan Browse
- Untuk bisa mengubah struktur data (tipe data dan nama kolom
tabel) Anda bisa menekan Structure
- Untuk mengisi data, Anda bisa menekan Insert
j. Misalnya ingin membuat tabel dengan kunci tamu (foreign key) seperti
tabel barang di bawah ini:
Field Tipe Data Keterangan
Kode_barang VARCHAR PRIMARY KEY, NOT NULL
(10)
Nama_barang VARCHAR
(30)
Stock SMALLINT
Harga INT
Tgl_kadaluwarsa DATE
Kode_kategori INT FOREIGN KEY REFERENCES
kategori_barang.kode_kategori

1
2

k. Anda harus mengisi kolom-kolom tabel sebagai berikut:

14
Perancangan Basis Data

Pastikan memilih primary untuk


kode_barang dan index untuk 2
kode_kategori (agar bisa jadi FK)
l. Sekarang Anda telah memiliki 2 buah tabel.

m. Untuk menambahkan kunci tamu (foreign key) pada tabel barang, klik
Structure pada tabel barang

n. Klik Relation View

15
Perancangan Basis Data

o. Isikan data berikut pada relation view:

Jika berhasil maka akan keluar pesan berikut:

p. Untuk melihat relasi yang terbentuk, maka klik nama database :


latihan1

16
Perancangan Basis Data

q. Klik More dan Pilih Designer

r. Anda akan melihat tampilan relasi antar tabel sebagai berikut:

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja

17
Perancangan Basis Data

1. Contoh Kasus 1
a. Bacalah study kasus berikut
Bangunlah basis data untuk kasus pencatatan data mahasiswa suatu
kampus, dimana pada kasus ini dipersempit yang dicatat hanyalah
matakuliah yang dipelajari oleh mahasiswa selama masa
perkuliahannya, data skripsi yang dimiliki oleh mahasiswa dan project-
project yang pernah dikerjakannya. Adapu detail kasus (aturan bisnis)
adalah sebagai berikut:
1) Setiap mahasiswa memiliki data NIM, nama depan, nama
belakang, tanggal lahirnya, umur, alamat berupa : nama jalan,
kecamatan, kota, provinsi dan kode pos, untuk kepentingan
identifikasi minat dan bakat maka hobby mahasiswa juga didata
dan boleh lebih daripada satu hobby. NIM mahasiswa
merupakan kode unik dengan panjang karakter yaitu 10.
2) Setiap mahasiswa akan mempelajari beberapa matakuliah
selama masa studinya, dimana data matakuliah berupa nama
matakuliah, sks dank ode matakuliah. Setiap akhir periode
pembelajaran maka mahasiswa akan mendapatkan nilai berupa
nilai angka dan nilai huruf. Nilai angka bisa disimpan hingga 2
digit di belakang koma, sedangkan nilai huruf berupa A, AB, B
sampai dengan E. Kode matakuliah memiliki panjang karakter
yang tepat 7 karakter.
3) Setiap mahasiswa akan mempunyai skripsi sebagai syarat
kelulusannya. Satu mahasiswa hanya mempunyai satu skripsi
saja, sedangkan satu skripsi akan dimiliki oleh satu mahasiswa
saja. Data skripsi yang dicatat berupa kode skripsi, judul skripsi
dan abstraknya
4) Kampus seringkali mengadakan lomba untuk mengerjakan
project-project tertentu, dimana mahasiswa yang mengerjakan
project akan didanai. Setiap projet memiliki judul dank ode
project. Setiap project hanya boleh dikerjakan oleh satu orang
mahasiswa, sedangkan seorang mahasiswa boleh saja
mengerjakan beberapa project.

Langkah penyusunan ERD adalah sebagai berikut:


a) Menentukan semua entity set yang terlibat
Entitas yang terlibat yaitu : mahasiswa, matakuliah, skripsi dan
project
b) Menentukan atribut dari masing-masing entity set (sesuai
dengan kebutuhan data dari sistem yang hendak dibangun)
i. Entitas mahasiswa : Atribut sederhana (NIM,
tanggal_lahir), atribut komposit (nama menjadi
nama_depan, nama_belakang, alamat menjadi
nama_jalan, kecamatan, kota, provinsi dan kode_pos),
atribut bernilai banyak : hobby, atribut turunan : umur

18
Perancangan Basis Data

ii. Entitas matakuliah : atribut sederhana (nama_matkul,


kode_matkul, sks)
iii. Entitas Skripsi : atribut sederhana (kode_skripsi,
judul_skripsi, abstrak)
iv. Entitas project : atribut sederhana (kode_project,
judul_project, dana_project)
c) Menentukan primary key dari tiap-tiap entity set
i. Entitas mahasiswa : NIM
ii. Entitas matakuliah : kode_matkul
iii. Entitas Skripsi : kode_skripsi
iv. Entitas project : kode_project
d) Menentukan relationship set antar entity set
i. Relasi mempelajari antara mahasiswa dengan
matakuliah
ii. Relasi mengerjakan antara mahasiswa dengan project
iii. Relasi memiliki antara mahasiswa dengan skripsi
e) Menentukan derajat/kardinalitas relasi untuk setiap relatinship
set
i. Relasi many-to-many pada mempelajari karena satu
mahasiswa mempelajari banyak matakuliah, sedangkan
satu matakuliah dipelajari oleh banyak mahasiswa
ii. Relasi one-to-many pada mengerjakan karena satu
mahasiswa mengerjakan banyak project sedangkan
satu project maksimal dikerjakan oleh seorang
mahasiswa
iii. Relasi one-to-one memiliki karena seorang mahasiswa
boleh memiliki maksimal satu skripsi dan demikian juga
dengan satu skripsi dimiliki oleh maksimal seorang
mahasiswa

b. Gunakan Microsoft Visio atau software lainnya untuk membuat ERD


berikut:

19
Perancangan Basis Data

umur Nama_depan Nama_belakang Nilai_angka Nama_matkul SKS


Nilai_huruf
Tanggal_lahir Kode_matakuliah
NIM Nama
Matakuliah
n
mempelajari
hobby m
Mahasiswa
1
1 abstrak
Dana_project
Alamat
mengerjakan 1
mempunyai Skripsi
n Kode_pos
Nama_jalan
Project Judul_skripsi
kecamatan kota provinsi Kode_skripsi

Judul_project
Kode_project

Penerjemahan ke dalam tabel adalah sebagai berikut :


1. Terdapat 4 entitas kuat dan akan menjadi 4 tabel yaitu : tabel
mahasiswa, matakuliah, skripsi dan tabel project
2. Semua atribut sederhana dalam setiap entitas akan menjadi kolom
3. Dalam entitas mahasiswa terdapat atribut komposit nama, maka
atribut nama_depan dan nama_belakang akan menjadi kolom
dalam tabel mahasiswa. Atribut pecahan dari alamat yaitu
nama_jalan, kecamatan, kota, provinsi dank ode_pos akan menjadi
kolom juga di tabel mahasiswa
4. Atribut hobby tidak akan disimpan di dalam tabel mahasiswa,
namun menjadi tabel tersendiri yaitu hobby_mahasiswa dengan
kolom NIM dan hobby dan keduanya menjadi kunci primer
5. Atribut turunan umur tidak akan disimpan ke dalam tabel
mahasiswa
6. Penerjemahan relasi :
a. Relasi one-to-one memiliki dari mahasiswa ke skripsi akan
menghasilkan kunci tamu NIM ke tabel skripsi.
b. Relasi one-to-many mengerjakan dari mahasiswa ke project
akan menghasilkan kunci tamu NIM ke tabel project
c. Relasi many-to-many mempelajari dari mahasiswa ke
matakuliah akan menghasilkan sebuah tabel baru yang bisa
diberinama mahasiswa_matakuliah atau tabel nilai (tergantung
mana yang lebih enak merepresentasikan konten tabel) dengan
kolom berupa kunci tamu NIM dan kode_matakuliah, kemudian
ditambah dengan atribut nilai_angka, nilai_huruf
7. Tidak ada entitas lemah

c. Dengan demikian tabel yang terbentuk adalah sebagai berikut.


Buatlah database bernama akademik di MySQL menggunakan
phpMyAdmin atau SQLYog.

Tabel mahasiswa

20
Perancangan Basis Data

Nama Kolom Tipe Data Keterangan


NIM CHAR(10) PRIMARY KEY, NOT NULL
Nama_depan VARCHAR (30)
Nama_belakang VARCHAR (30)
Tanggal_lahir DATE
Nama_jalan VARCHAR(60)
Kecamatan VARCHAR (30)
Kota VARCHAR (30)
Provinsi VARCHAR (30)
Kode_pos CHAR(5)

Tabel Matakuliah
Nama Kolom Tipe Data Keterangan
Kode_matakuliah CHAR(7) PRIMARY KEY, NOT NULL
Nama_matakuliah VARCHAR (40)
SKS TINYINT

Tabel skripsi
Nama Kolom Tipe Data Keterangan
Kode_skripsi INT PRIMARY KEY, NOT NULL,
AUTO_INCREMENT
Judul_skripsi VARCHAR (120)
Abstrak VARCHAR (500)
NIM VARCHAR(10) FOREIGN KEY REFERENCES
mahasiswa.NIM

Tabel project
Nama Kolom Tipe Data Keterangan
Kode_project INT PRIMARY KEY, NOT NULL,
AUTO_INCREMENT
Judul_project VARCHAR (120)
Dana_project INT
NIM CHAR(10) FOREIGN KEY REFERENCES
mahasiswa.NIM

Tabel hobby_mahasiswa
Nama Kolom Tipe Data Keterangan
NIM VARCHAR(10) PRIMARY KEY, NOT NULL, FOREIGN
KEY REFERENCES mahasiswa.NIM
Hobby VARCHAR (30) PRIMARY KEY, NOT NULL

Tabel nilai_mahasiswa
Nama Kolom Tipe Data Keterangan

21
Perancangan Basis Data

NIM CHAR(10) PRIMARY KEY, NOT NULL, FOREIGN


KEY REFERENCES mahasiswa.NIM
Kode_matakuliah CHAR(7) PRIMARY KEY, NOT NULL, FOREIGN
KEY REFERENCES
matakuliah.kode_matakuliah
Nilai_angka FLOAT
Nilai_huruf VARCHAR(2)

2. Contoh Kasus 2
a. Bacalah study kasus berikut
Bangunlah basis data untuk kasus berikut. Sebuah perusahaan ingin
mencatat keluarga yang ditanggung oleh para pegawainya. Adapun
keluarga yang dimaksudkan adalah suami/istri dan anak-anaknya.
Adapu detail kasus (aturan bisnis) adalah sebagai berikut:
1) Setiap pegawai akan didata NIP dan namanya. NIP memiliki
panjang tepat 18 karakter.
2) Data keluarga yang dicatat berupa nama, tanggal lahir dan
hubungannya dengan pegawai. Satu keluarga berhubungan
hanya dengan satu orang pegawai saja.

Langkah penyusunan ERD adalah sebagai berikut:


a) Menentukan semua entity set yang terlibat
Entitas yang terlibat yaitu : pegawai, keluarga_pegawai sebagai
entitas lemah karena keberadaannya tergantung pada pegawai
dan tidak memiliki atribut yang unik.
b) Menentukan atribut dari masing-masing entity set (sesuai
dengan kebutuhan data dari sistem yang hendak dibangun)
i. Entitas pegawai : Atribut sederhana (NIP,
nama_pegawai)
ii. Entitas keluarga_pegawai : atribut sederhana
(nama_keluarga, hubungan, tanggal_lahir)
c) Menentukan primary key dari tiap-tiap entity set
i. Entitas pegawai: NIP
ii. Entitas keluarga_pegawai : karena entitas lemah maka
tidak memiliki kunci primer, maka tentukan
discriminator yaitu nama_keluarga (karena dalam satu
keluarga tidak mungkin ada nama yang benar-benar
sama)
d) Menentukan relationship set antar entity set
i. Relasi menanggung antara pegawai dengan
keluarga_pegawai
e) Menentukan derajat/kardinalitas relasi untuk setiap relatinship
set
i. Relasi one-to-many pada menanggung karena satu
pegawai dapat menanggung lebih daripada satu anggota

22
Perancangan Basis Data

keluarga sedangkan satu anggota keluarga hanya


ditanggung oleh satu pegawai

b. Gunakan Microsoft Visio atau software lainnya untuk membuat ERD


berikut:
NIP Nama_pegawai Nama_keluarga Tanggal_lahir

hubungan
1 n
Pegawai menanggung Keluarga_Pegawai

Penerjemahan ke dalam tabel adalah sebagai berikut :


1. Terdapat 1 entitas kuat dan akan menjadi 1 tabel yaitu : tabel
pegawai, dan terdapat 1 entitas lemah yaitu : tabel
keluarga_pegawai
2. Semua atribut sederhana dalam setiap entitas akan menjadi
kolom
3. Tidak ada atribut komposit
4. Tidak ada atribut bernilai banyak
5. Tidak ada atribut turunan
6. Penerjemahan relasi pada entitas lemah :
a. Relasi one-to-many menanggung dari pegawai ke
keluarga_pegawai akan menghasilkan kunci tamu NIP ke tabel
keluarga_pegawai
7. Kunci tabel keluarga_pegawai adalah NIP dan nama_keluarga

c. Dengan demikian tabel yang terbentuk adalah sebagai berikut.


Buatlah database bernama akademik di MySQL menggunakan
phpMyAdmin atau SQLYog.

Tabel pegawai
Nama Kolom Tipe Data Keterangan
NIP CHAR(18) PRIMARY KEY, NOT NULL
Nama_pegawai VARCHAR (60)

Tabel keluarga_pegawai
Nama Kolom Tipe Data Keterangan
Nama_keluarga CHAR(18) PRIMARY KEY, NOT NULL
Tanggal_lahir DATE
Hubungan ENUM (Istri,
Suami, Anak)
NIP CHAR(18) PRIMARY KEY, NOT NULL, FOREIGN
KEY REFERENCES pegawai.NIP

23
Perancangan Basis Data

H. Evaluasi
Susunlah ERD dari kasus berikut dan kemudian bangunlah database dari hasil
pemetaan ERD ke dalam MySQL!

1. Sebuah aplikasi makanan sehat menyediakan berbagai resep makanan


untuk para pelanggannya. Setiap resep makanan (meal) akan dibuat oleh
seorang nutrisionist. Satu nutrisionist bisa menyusun banyak meal. Setiap
meal akan tersusun dari beberapa jenis bahan dasar (food). Satu jenis food
juga bisa menjadi penyusun dari beberapa meal. Sebagai contoh: meal
capcay tersusun dari food berupa : garam, saus tomat, kol, brokoli, dada
ayam, bawang putih. Untuk detail penyusunan meal maka harus dicatat
jumlah food yang digunakan dan satuan yang digunakan, misalkan meal
capcay disusun oleh garam dengan jumlah 5, satuannya mg, saus tomat
dengan jumlah 1, satuannya sendok makan. Setiap meal ini nantinya akan
dicoba oleh beberapa pengguna aplikasi, dan pengguna aplikasi akan
memberikan review berupa nilai bintang (star) dan review berupa kata-
kata. Setiap client bisa mereview banyak meal sesuka hatinya. Data food
yang dicatat yaitu : id_food, kalori, protein, lemak, karbohidrat, gula,
kalsium, kolesterol. Data meal yang dicatat berupa: id_meal, nama_meal,
tanggal_upload, keterangan_resep. Data nutrisionist berupa :
id_nutrisionist, nama_nutrisionist, alamat_nutrisionist, bidang. Sedangkan
data client berupa: id_client, nama_client, jenis_kelamin, tanggal_lahir,
tinggi, berat, nomor_hp, email
2. Sebuah perusahaan real estate, mengelola banyak property untuk
disewakan. Setiap property tentu dimiliki oleh tepat satu orang pemilik,
sedangkan seorang pemilik bisa memasang banyak property untuk
dikelola oleh perusahaan. Sebuah property, akan ditangani oleh seorang
sales dari perusahaan. Satu orang sales bisa saja menangani banyak
property pada suatu waktu. Setiap property nantinya akan disewa oleh
seorang penyewa dengan kurun waktu tertentu, dan kemudian mungkin
saja pindah tangan kepada penyewa lainnya pada lain waktu. Satu orang
penyewa, dalam hal ini sah saja menyewa lebih dari satu property. Saat
seorang penyewa menyewa property, maka harus dicatat nomor
kontraknya, tanggal kontrak, harga kontrak, tanggal mulai dan tanggal
berakhir. Data sales yang dicatat dalam database nantinya berupa :
id_sales, nama_sales, alamat sales, kontak (bisa lebih daripada satu). Data
pemilik dapat berupa : id_pemilik, nama pemilik, alamat pemilik, telepon
pemilik. Data property dapat berupa : kode_properti, alamat property,
luas tanah, luas bangunan, jenis property, deskripsi property, tahun
dibangun. Data penyewa berupa : id_penyewa, nama_penyewa,
alamat_penyewa, nomor_telp_penyewa.

24
Perancangan Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Job Sheet 2
Bidang Studi : TRPL
Jurusan : Teknik Elektro
Waktu : 4 x 50 Menit
Normalisasi Basis
Kelas/Sem : IIIB/3 Data Pertemuan 9 dan 10
Th Ajaran : 2021/2022

Job Sheet 2

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu memahami
konsep normalisasi dan merancang basis data sesuai konsep normalisasi data.

C. Indikator
1. Mahasiswa mampu memahami berbagai jenis ketergantungan
fungsional
2. Mahasiswa mampu merancang basis data sesuai konsep normalisasi

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web
Server dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
Normalisasi merupakan suatu proses yang digunakan untuk menentukan
pengelompokkan atribut-atribut dalam sebuah relasi sehingga diperoleh
relasi yang terstruktur baik. Relasi yang terstruktur baik adalah relasi yang
memenuhi 2 kondisi :
1. Mengandung redundansi sesedikit mungkin
2. Memungkinkan baris-baris dalam relasi disisipkan, dimodifikasi dan
dihapus tanpa menimbulkan kesalahan atau ketidakonsistenan
Normalisasi dilaksanakan melalui sejumlah langkah. Setiap langkah
berhubungan dengan bentuk normal tertentu. Bentuk normal adalah suatu
keadaan yang dihasilkan oleh penerapan aturan-aturan sederhana yang
berhubungan dengan dependensi fungsional terhadap relasi tersebut.
Dalam normalisasi, dikenal istilah anomali. Anomali adalah masalah yang
timbul dalam relasi ketika terjadi operasi pemutakhiran data dalam relasi.
Masalah yang terjadi misalnya pengubahan data yang membuat

25
Perancangan Basis Data

ketidakkonsistenan data atau bahkan membuat suatu data menjadi hilang.


Anomali ada 3:
1. Anomali penyisipan : merupakan masalah yang terjadi ketika suatu baris
disisipkan ke dalam relasi. Biasanya terjadi karena kunci primer bernilai
null
2. Anomali pengubahan : masalah yang timbul ketika data dalam relasi
diubah
3. Anomali penghapusan : merupakan masalah yang terjadi karena suatu
baris dalam relasi dihapus, yaitu terdapatnya data lain yang hilang

Sebagai contoh akan digunakan tabel barang_pemasok berikut:


Kode_Brg Nama_Brg Hrg Kode_ Nama_Pemasok Kota
Pemasok
T-001 TV ABC 14” 600 P22 PT Jaya Bogor

T-002 TV ABC 21” 950 P22 PT Jaya Bogor

T-003 TV XYZ 14” 450 P11 PT Amerta Bandung

T-004 TV LZW 29” 1750 P33 PT Kartika Yogya

T-005 TV LZW 21” 475 P44 PT Nindya Malang

Tabel lainnya yang akan digunakan sebagai contoh adalah tabel dosen :
No_Dosen Nama_Dosen Jenis_Kel Pendidikan Thn_Lulus
D41 Ika P S1 1987
D41 Ika P S2 1990
D42 Iko L S1 1987
D42 Iko L S2 1992
D42 Iko L S3 1999
D43 Ike L s1 1994

Pada tabel BARANG_PEMASOK anomali penyisipan terjadi jika terdapat


pemasok baru bernama PT Indah, maka Pemasok ini belum dapat disisipkan
jika ia belum memberikan barang. Contoh lainnya, misalnya pemasok P33
memasok barang baru, maka data pemasok akan diisikan ulang lagi, hal ini
bisa menimbulkan ketidakkonsistenan jika data pemasok sedikit saja berbeda.
Anomali pengubahan yang terjadi pada tabel barang_pemasok misalnya
pemasok P22 yang semula di Bogor pindah ke Bekasi, hal ini mengharuskan
semua data yang berkaitan dengan kota P22 harus diganti, jika ada satu saja
yang ketinggalan maka akan terjadi ketidakkonsistenan data.

26
Perancangan Basis Data

Contoh anomaly penghapusan yang terjadi pada tabel barang_pemasok


adalah jika barang dengan kode T-44 dihapus, maka penghapusan ini juga
akan menghapus fakta tentang pemasok dengan kode pemasok P33.
Sebelum melakukan normalisasi, maka konsep dependensi data atau
ketergantungan harus dipahami terlebih dahulu. Beberapa ketergantungan
yang akan penting dalam melakukan normalisasi diantaranya adalah sebagai
berikut:
1. Dependensi Fungsional
2. Dependensi Sepenuhnya
3. Dependensi Parsial
4. Dependensi Transitif

1. Dependensi Fungsional
Kadang dikenal dengan istilah dependensi saja. Merupakan kekangan
antara dua buah atribut atau dua buah himpunan atribut. Sebuah atribut Y
dikatakan mempunyai ketergantungan fungsional terhadap X apabila setiap
nilai dalam X berhubungan dengan satu nilai yang sama dalam Y. Dependensi
Y terhadap X dinotasikan dengan X→Y. Notasi X→ Y dibaca dengan salah satu
bentuk
 X panah Y
 X menentukan Y
 Y tergantung secara fungsional terhadap X
Atribut di sebelah kiri panah biasa disebut penentu atau determinan,
sedangkan atribut di sebelah kanan panah disebut dengan dependen atau yang
tergantung.
Contoh dependensi fungsional pada tabel barang_pemasok adalah :
 Kode_Barang→Nama_Brg
 Kode_Barang→Hrg
 Kode_Barang→Kode_Pemasok
 Kode_Barang→Nama_Pemasok
 Nama_Brg→Kode_Barang
 Kode_Pemasok→Nama_Pemasok
 Nama_Pemasok→Kode_Pemasok
Sebuah atribut bisa bergantung pada lebih dari satu atribut. Contoh :
 {X,Y}→Z
Artinya atribut Z mempunyai dependensi terhadap pasangan X dan Y.

Pada tabel dosen berlaku


 {No_Dosen,Pendidikan}→Thn_Lulus
Sedangkan bila lebih dari satu atribut bergantung pada suatu atribut,
bagian dependent bisa digabungkan, seperti :
 Kode_Barang→{Nama_Barang,Hrg,Kode_Pemasok}

2. Dependensi Sepenuhnya

27
Perancangan Basis Data

Suatu atribut Y dikatakan memiliki dependensi sepenuhnya terhadap X


apabila memnuhi dua kondisi berikut :
• Y mempunyai dependensi fungsional terhadap X
• Y tidak memiliki dependensi fungsional terhadap bagian dari X
Contoh pada tabel dosen:
{No_Dosen,Pendidikan}→Thn_Lulus

3. Dependensi Parsial
Suatu atribut Y dikatakan memiliki dependensi parsial terhadap X apabila
memenuhi dua kondisi berikut :
• Y adalah atribut non kunci primer dan X adalah kunci primer
• Y memiliki dependensi fungsional terhadap bagian dari X tetapi
tidak terhadap keseluruhan dari X
Contoh pada tabel dosen:
No_Dosen→Jenis_Kel (di mana No_Dosen merupakan bagian dari kunci
primer {No_Dosen,Pendidikan})

4. Dependensi Transitif
Suatu atribut Z dikatakan memiliki dependensi transitif terhadap X
apabila memenuhi dua kondisi berikut :
• Z memiliki dependensi fungsional terhadap Y
• Y memiliki dependensi fungsional terhadap X
Dinotasikan : X→Y→Z
Contoh :
• Kode_barang→Kode_Pemasok
• Kode_Pemasok→Nama_Pemasok
Maka dapat ditulis :
• Kode_Barang→Kode_Pemasok→Nama_Pemasok

5. Diagram dependensi
Dependensi dapat digambarkan ke dalam diagram. Untuk tabel
barang_pemasok dan tabel dosen, diagram dependensi dapat digambarkan
sebagai berikut:

6. Bentuk Normal Pertama (1NF)

28
Perancangan Basis Data

Bentuk Normal Pertama adalah suatu keadaan yang membuat setiap


perpotongan baris dan kolom dalam relasi hanya berisi satu nilai. Langkah
yang perlu dilakukan adalah menghilangkan atribut bernilai ganda. Misalnya
diberikan sebuah tabel yang belum normal (Unormalied Form/UNF) yaitu
tabel pegawai_klien sebagai berikut:
Nomor Pegawai NamaPegawai NomorKlien NamaKlien
P27 Amir Udinsyah K01 Rini
K02 Edy
K04 Sari
P28 Kartika Amelia K03 Robert
K07 Vero
P29 Berkat K05 Iko
P30 Mahendra K01 Rini
K07 Vero

Maka bentuk 1NF adalah sebagai berikut:


Nomor Pegawai NamaPegawai NomorKlien NamaKlien
P27 Amir Udinsyah K01 Rini
P27 Amir Udinsyah K02 Edy
P27 Amir Udinsyah K04 Sari
P28 Kartika Amelia K03 Robert
P28 Kartika Amelia K07 Vero
P29 Berkat K05 Iko
P30 Mahendra K01 Rini
P30 Mahendra K07 Vero

Setelah 1NF terbentuk, maka tentukan kunci primer. Pada contoh di atas
yang menjadi kunci primer adalah NomorPegawai dan NomorKlien. Tabel 1NF
di atas masih terkena anomali penyisipan, anomali pengubahan dan anomali
penghapusan, sehingga harus dilakukan normalisasi lebih lanjut.

7. Bentuk Normal Kedua (2NF)


Syarat bentuk 2NF adalah :
• Sudah memenuhi 1NF
• Tidak mengandung ketergantungan parsial
Pada contoh tabel 1NF Pegawai_Klien terdapat ketergantungan parsial.
Untuk mempermudah dalam melakukan normalisasi, maka sebaiknya
digambarkan dulu diagram dependensinya :

29
Perancangan Basis Data

Langkah membentuk 2NF


 Ubahlah setiap dependensi parsial menjadi sebuah tabel, dengan kunci
primer adalah determinannya
 Ubahlah dependensi yang terkait langsung dengan kunci primer
sebagai tabel tersendiri dan kunci primernya adalah kunci primer
dalam tabel semula
Contoh :
 R(A,B,C,D)
 Kunci Primer {A,B}
 A→D
 Tabel yang terbentuk R1(A,D);R2(A,B,C)

Tabel Pegawai_Klien pada contoh di atas menjadi bentuk 2NF sebagai berikut:
 Pegawai(NomorPegawai,NamaPegawai)
 Klien(NomorKlien,NamaKlien)
 Pegawai_Klien(NomorPegawai,NomorKlien)

8. Bentuk Normal Ketiga (3NF)

30
Perancangan Basis Data

Suatu keadaan yang menyaratkan relasi harus sudah berada dalam bentuk
normal kedua dan tidak mengandung dependensi transitif. Contohnya pada
relasi barang_pemasok yaitu :Kode_barang → Kode_Pemasok →
Nama_Pemasok. Cara mendekomposisinya :
 Bentuk tabel yang mewakili dependensi fungsional yang tidak
melibatkan kunci primer dalam relasi semula. Determinannya mejadi
kunci primer tabel yang dibentuk
 Bentuk tabel yang berisi kunci primer tabel semula. Kemudian
pindahkan semua atribut bukan kunci primer yang bergantung pada
kunci primer tetapi tidak bergantung pada determinan lain ke tabel
tersebut. Jadikan atribut yang menjadi kunci primer tabel semula
sebagai kunci primer tabel baru. Atribut yang berasal dari determinan
yang menjadi perantara akan bertindak sebagai kunci asing/tamu

Contoh :
 R(A,B,C,D)
 Kunci (A)
 B→C
 A→B
 R1(B,C)
 R2(A,D,B)

Diagram dependensi untuk tabel barang_pemasok:

Dari diagram tersebut jelas terlihat bahwa tabel tersebut sudah memenuhi
bentuk 2NF, karena tidak terdapat dependensi parsial. Namun masih terdapat
dependensi transiti segingga belum memenuhi bentuk 3 NF. 3NF untuk tabel
barang_pemasok:
 Pemasok(Kode_Pemasok,Nama_Pemasok,Kota)
 Barang(KodeBarang,NamaBrg,Kode_Pemasok)

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet

31
Perancangan Basis Data

2. Perhatikan keamanan instalasi listrik saat menghidupkan dan


mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
Gambarkan diagram dependensi dari kasus berikut, kemudian lakukan
normalisasi hingga 3NF.

Anda disuruh membuat database untuk kegiatan perlombaan di sebuah


kampus. Adapun aturan bisnis dari kegiatan tersebut adalah:

a. Terdapat berbagai cabang lomba yang ditawarkan. Setiap cabang


bisa diikuti oleh banyak peserta
b. Setiap peserta berasal dari satu sekolah tertentu dan boleh
mengikuti beberapa cabang lomba sekaligus
c. Setiap sekolah berhak mengirimkan banyak perserta untuk satu
atau beberapa cabang lomba

32
Basis Data

Anda diberikan contoh data sebagai berikut:


Kode_ Nama_ lomba Aturan_ Tgl_ Kode_ Nama_ Jenis_ Kode_ Nama_ Alamat_ Nilai_
lomba lomba lomba peserta peserta kelamin sekolah sekolah sekolah lomba
1 Karya Ilmiah Tema lomba 2018- 11 Intan Perempuan S1 SMA N 1 Jalan 86
adalah blab la 09-10 Permata Denpasar Melati no
5,
Denpasar
12 Ria Perempuan S2 SMA N 5 Jalan 87
Tanaya Denpasar Danau
Toba no
5,
Denpasar
2 Programming Lomba 2018- 12 Ria Perempuan S2 SMA N 5 Jalan 87
menggunakan 09-03 Tanaya Denpasar Danau
Bahasa Pascal Toba no
5,
Denpasar

33
Basis Data

1. Ubah setiap sel menjadi atomic dan tidak ada data ganda, sehingga
memenuhi bentuk 1NF.

Tentukan kunci primer dari tabel di atas :


Kunci primer : {kode_lomba,kode_peserta}

Diagram dependensi :

2. Hilangkan ketergantungan parsial agar memenuhi 2NF. Sehingga akan


terbentuk tabel lomba, tabel peserta dan tabel nilai.
Tabel lomba : {kode_lomba, nama_lomba, aturan_lomba, tgl_lomba}
Tabel peserta : {kode_peserta, nama_peserta, jenis_kelamin, kode_sekolah,
nama_sekolah}
Tabel nilai : {kode_lomba, kode_peserta, nilai_lomba}

3. Hilangkan ketergantungan transitif dari tabel-tabel yang telah memenuhi


bentuk 2NF. Dari ketiga tabel yang terbentuk hanya 1 tabel yang masih
mengandung ketergantungan transitif yaitu tabel peserta. Maka tabel
peserta akan dipecah menjadi tabel peserta dan tabel sekolah.

34
Basis Data

Tabel peserta : {kode_peserta, nama_peserta, jenis_kelamin,


kode_sekolah}
Tabel sekolah : { kode_sekolah, nama_sekolah}

Dengan demikian, terdapat 4 tabel yang terbentuk yaitu tabel lomba,


peserta, sekolah dan nilai.

4. Buatlah database dengan nama jobsheet2, kemudian buatlah tabel-tabel


normal yang terbentuk dengan menggunakan phpMyAdmin atau SQLYog.

H. Evaluasi
Temukan sebuah kasus, buatlah aturan bisnis selengkap mungkin, lalu
berikan contoh data dan lakukan normalisasi hingga 3NF. Lalu buatlah
database dengan nama NIM_jobsheet2. Simpanlah tabel-tabel hasil
normalisasi ke dalam database tersebut.

35
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Job Sheet 3
Bidang Studi : TRPL
Jurusan : Teknik Elektro
Waktu : 4 x 50 Menit
Data Definition
Kelas/Sem : IIIB/3 Language (DDL) Pertemuan 11 dan 12
Th Ajaran : 2021/2022

Job Sheet 3

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa mampu memahami konsep dasar
Structure Query Language dan mampu menerapkan bahasa query DDL.

C. Indikator
1. Mahasiswa mampu memahami perintah DDL
2. Mahasiswa mampu menggunakan DDL dalam membangun basis data

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web
Server dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori

1. Structure Query Language (SQL)


Structured Query Language (SQL) merupakan bahasa utama dalam database
relasional. SQL memiliki karakteristik sebagai berikut:
a. Relatif mudah dipelajari;
b. non-procedural : SQL menspesifikasikan informasi apa yang dibutuhkan,
bukan bagaimana mendapatkannya;
c. free-format;
d. Menggunakan kata-kata bahasa Inggris seperti SELECT, INSERT, dan
UPDATE;
e. bisa digunakan oleh banyak penguna.

Terdapat 4 jenis SQL yaitu :


1. Data Deinition Language (DDL) yang dapat digunakan untuk
membangun struktur basis data, seperti membuat tabel,

36
Basis Data

mengubah struktur tabel, menambahkan constraint tabel atau


menghapus tabel dan object lainnya di dalam basis data
2. Data Manipulation Language (DML) yang dapat digunakan untuk
melakukan manipulasi data seperti menambah, mengubah,
menghapus data bahkan memfilter data
3. Data Control Language (DCL) yaitu perintah untuk mengatur
managemen dan hak akses di dalam basis data agar keamanan
basis data lebih terjamin.
4. Transaction Control Language (TCL) yaitu perintah yang
digunakan untuk mengontrol transaksi data yang dilakukan
melalui eksekusi perintah DML.

2. Data Deinition Language (DDL)


DDL akan mendefinisikan struktur tabel, yaitu field-field yang terdapat di
dalamnya dan constraint-constraint yang harus dipenuhi. Pembuatan,
pengubahan dan penghapusan tabel di dalam database memang dengan
mudah bisa dilakukan melalui wizard, akan tetapi adakalanya kita tidak bisa
menggunakan wizard, misalnya jika kita ingin melakukan ketiga operasi
tersebut melalui sebuah aplikasi.

a. Membuat database
CREATE DATABASE <nama database>;

Contoh :
CREATE DATABASE tutorial1;

Dalam sintaks di atas, berarti user ingin membuat database


bernama tutorial1

b. Melihat database
SHOW DATABASES;

c. Bekerja dengan database tertentu


USE <nama database>;

Contoh : USE tutorial1;

d. Membuat tabel tanpa primary key


CREATE TABLE <nama tabel>
(field1 tipe data,
Field2 tipe data,
.,
.
);

37
Basis Data

Contoh :
CREATE TABLE mahasiswa
(NIM char(10),
Nama_mahasiswa varchar(100),
Gaji_orang_tua INT,
Tgl_lahir DATE
);

e. Membuat tabel dengan primary key


CREATE TABLE <nama tabel>
(field1 tipe data,
Field2 tipe data,
.,
.,
PRIMARY KEY (nama field PRIMARY KEY)
);

Contoh :
CREATE TABLE ruangan
( Kode_ruang INT AUTO_INCREMENT,
Nama_ruangan VARCHAR(50),
PRIMARY KEY(Kode_ruangan)
);

f. Melihat tabel dalam database


SHOW TABLES;

g. Melihat struktur tabel


SHOW COLUMNS FROM <nama tabel>;

Contoh :
SHOW COLUMNS FROM ruangan;

h. Mengubah struktur tabel


a) Menambah kolom
ALTER TABLE <nama tabel>
ADD field tipe data;

Contoh :
ALTER TABLE ruangan
ADD nama_gedung VARCHAR(100);

b) Menghapus kolom

38
Basis Data

ALTER TABLE <nama tabel>


DROP field;

Contoh :
ALTER TABLE ruangan
DROP nama_gedung;

c) Mengubah kolom
Untuk mengubah kolom bisa dilakukan dengan sintaks MODIFY
atau CHANGE.

MODIFY
ALTER TABLE <nama tabel>
MODIFY field tipe data baru;

Contoh :
ALTER TABLE ruangan
MODIFY Nama_ruangan VARCHAR(50);

CHANGE
ALTER TABLE <nama tabel>
CHANGE <nama field lama> <nama field baru> tipe data baru;

Contoh :
ALTER TABLE ruangan
MODIFY Nama_ruangan Nama VARCHAR(50);

Note : Menggunakan CHANGE, Anda tidak hanya dapat


mengubah tipe data tapi juga mengubah nama kolom.

i. Mengganti nama tabel


RENAME TABLE <nama tabel lama> TO <nama tabel baru>

Contoh :
RENAME TABLE ruangan to ruang;

j. Menghapus tabel
DROP TABLE <nama tabel>

Contoh :
DROP ruangan;

39
Basis Data

k. Menghapus database
DROP DATABASE <nama database>

Contoh :
DROP DATABASE Tutorial1;

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
Catatan : pada Jobsheet ini, kita akan mempelajari cara menggunakan
SQLYog untuk mengakses MySQL.
1. Bukalah XAMPP Control Panel dan start MySQL

2. Bukalah SQLYog dari komputer Anda dan masukkan setting seperti


berikut:

40
Basis Data

Keterangan :
Host : localhost (karena Anda mengakses dari komputer local)
Username : root (user default, kecuali Anda memiliki username lain dan
ingin login dengan username tersebut)
Password : dikosongkan (secara default password kosong, namun jika
Anda telah mengubah atau membuat password pada saat instalasi, maka
isikanlah password tersebut)
Post : 3306 (sesuai dengan port saat Anda start MySQL di XAMPP Control
Panel)

41
Basis Data

3. Anda akan melihat tampilan berikut:


Tombol untuk eksekusi perintah SQL Tombol untuk
pada bagian yang diblok atau pada eksekusi semua
SQL yang sedang disorot perintah SQL

Tempat Anda dapat


mengetikkan perintah SQL

Nama basis data


yang Anda
miliki

Area munculnya pesan


berhasil/kesalahan dan hasil eksekusi
SQL

4. Untuk memulai ketiklah perintah seperti berikut lalu klik tombol Execute
Query atau tekan tombol F9

42
Basis Data

5. Pastikan Anda mendapat pesan seperti di bawah ini, yang menyatakan


bahwa Anda berhasil membuat database :

6. Kadangkala Anda mengeksekusi perintah dua kali, padahal sebelumnya


sudah berhasil, maka Anda akan mendapatkan pesan seperti berikut:

Keterangan : error tersebut berarti bahwa database sudah ada, dan Anda
tidak boleh membuat database dengan nama yang sama lagi

7. Untuk melihat database yang baru saja Anda buat, dapat dilakukan dengan
cara :

43
Basis Data

Klik
kanan
di root
dan
Lihat di pilih
bagian sini, Refresh
dan jika atau
tidak ada tekan
maka F5
lakukan
refresh

8. Untuk bekerja dengan database Anda, klik dua kali pada nama database
hingga font berukuran tebal, seperti gambar berikut:

44
Basis Data

Klik
dua
kali

9. Selain dengan cara itu, Anda juga bisa mengetikkan perintah seperti di
bawah ini, lalu block/sorot dan tekan F9 dari keyboard atau bisa juga
menekan tombol Execute Query (Play):

10. Untuk membuat sebuah tabel, coba ketiklah perintah di bawah ini lalu
blok dan tekan F9

45
Basis Data

11. Pastikan Anda mendapatkan pesan sukses dan 0 error

12. Untuk melihat tabel yang terbentuk maka Anda dapat mengetikkan
perintah berikut lalu pastikan Anda blok dan tekan F9 setiap ingin melihat
hasil dari query Anda:

Jika perintah Anda benar, maka Anda akan melihat tampilan berikut
pada bagian Result

13. Ketikkan perintah berikut untuk membuat tabel baru bernama ruangan
dengan primary key berupa kode ruangan, lalu blok dan tekan F9

14. Ketikkan perintah berikut untuk melihat hasil tabel yang terbentuk

46
Basis Data

15. Jika ingin melihat tabel-tabel yang terbentuk, maka ketiklah perintah
berikut :

16. Ketiklah perintah berikut untuk menambahkan sebuah kolom bernama


nama_gedung pada tabel ruangan

17. Sekarang coba mengubah tipe data nama gedung menjadi karakter
dengan panjang maksimal 50. Ketiklah perintah berikut :

18. Sekarang ketiklah perintah berikut untuk mengubah kolom


nama_ruangan menjadi nama_ruang :

47
Basis Data

19. Ketiklah perintah berikut untuk menghapus field nama_gedung:

20. Jika ingin menambahkan primary key pada tabel yang telah dibuat
sebelumnya, misalnya pada tabel mahasiswa, maka ketiklah perintah
berikut:

21. Sekarang tambahkan sebuah kolom bernama ruangan_piket ke tabel


mahasiswa dengan mengetikkan kode berikut:

48
Basis Data

22. Sekarang tambahkan kunci tamu pada tabel mahasiswa, dimana


ruangan_piket merupakan kunci tamu dari tabel ruangan yang diambil
dari kode_ruangan.

Catatan :
1. Sebuah kolom yang menjadi kunci tamu, otomatis akan dijadikan
index pada tabel dengan nama index sesuai dengan nama foreign key
2. Jika versi SQLYog Anda tidak bisa melihat relasi antar tabel, Anda
bisa melihatnya melalui phpMyAdmin seperti cara yang dilakukan
pada Jobsheet 2 dan 3.

23. Misalnya Anda ingin menghapus foreign key yang terbentuk, anggap saja
misalnya salah, maka Anda dapat mengetikkan perintah berikut:

49
Basis Data

Keterangan :
Sebenarnya tanpa DROP index, maka relasi antar tabel akan otomatis
terputus, namun index yang otomatis dibuat pada saat ADD FOREIGN KEY
tidak bisa serta merta hilang, sehingga jika ingin menghapusnya harus
menyertakan perintah DROP INDEX.

24. Untuk menyimpan semua perintah SQL yang sudah Anda buat, bisa
dilakukan dengan cara klik File kemudian Save.

H. Evaluasi
1. Buatlah sebuah basis data bernama latihan_jobsheet3
2. Buatlah sebuah tabel (bebas), dengan ketentuan sebagai berikut :
a. Jumlah kolom minimal 3
b. Jenis tipe data yang digunakan minimal 2 (ketetapatan pemilihan
tipe data juga akan dinilai)
c. Tabel memiliki primary key

50
Basis Data

3. Tampilkan struktur data dari tabel Anda melalui cmd prompt


4. Ubahlah salah satu nama kolom pada tabel Anda dan tunjukkan
hasilnya!
5. Buatlah tabel kedua dengan ketentuan sebagai berikut:
a. Jumlah kolom minimal 4
b. Tabel memiliki kunci primer
c. Salah satu kolom merupakan kunci tamu dari tabel pertama

51
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Job Sheet 4
Bidang Studi : TRPL
Jurusan : Teknik Elektro
Waktu : 4 x 50 Menit
Data Manipulation
Kelas/Sem : IIIB/3 Language Pertemuan 13 dan 14
Th Ajaran : 2021/2022

Job Sheet 4

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa mampu melakukan manipulasi
data (penggunaan query Data Manipulations Language)

C. Indikator
1. Mahasiswa mampu memahami perbedaan DML dengan DDL
2. Mahasiswa mampu menggunakan DML untuk menambahkan data ke
dalam tabel
3. Mahasiswa mampu menggunakan DML untuk memperbarui data
4. Mahasiswa mampu menggunakan DML untuk menghapus data
5. Mahasiswa mampi menggunakan DML untuk mengambil data dari
dalam tabel

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web
Server dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
1. Data Manipulation Language (DML)
DML digunakan untuk operasi-operasi yang berkaitan dengan data di dalam
tabel. DML berbeda dengan DDL, dimana DDL hanya berkaitan dengan struktur
tabel, sedangkan DML berhubungan dengan pengelolaan data di dalam tabel yang
sudah dibangun dengan DDL. Pengelolaan data yang dimaksudkan di sini dapat
berupa:
a. Penyisipan data baru dengan perintah INSERT INTO
b. Pengubahan data lama dengan perintah UPDATE
c. Penghapusan data dengan perintah DELETE

52
Basis Data

d. Pengambilan data baik dengan filter ataupun tidak menggunakan


perintah SELECT
Tabel berikut bernama tabel pegawai dan akan digunakan sebagai contoh
untuk teori DML di jobsheet ini pada pembahasan berikutnya.
Tabel pegawai
Field Tipe Data Keterangan
NIP CHAR(4) PRIMARY KEY, NOT NULL
Nama VARCHAR(40)
Gaji INT
Tgl_lahir DATE

2. Perintah SELECT
Perintah ini digunakan untuk mengambil data atau menampilkan data dari
dalam tabel. Bentuk perintah SELECT yang paling sederhana yaitu tanpa filter dan
pengurutan adalah sebagai berikut:
SELECT kolom1, kolom2,…. Kolom_n
FROM nama_tabel
Catatan:
Anda bisa mengganti nama kolom dengan asterisk (*) jika ingin
menampilkan semua kolom sesuai urutan pada tabel.

Contoh :
a. Jika ingin menampilkan kolom NIP dan nama pegawai maka dapat
dilakukan dengan sintaks berikut:
SELECT NIP, nama
FROM pegawai;
b. Jika ingin menampilkan semua data pegawai dapat dilakukan dengan
sintaks berikut:
SELECT *
FROM pegawai;

3. Perintah INSERT INTO


Perintah ini berfungsi untuk menambahkan data ke dalam tabel. Bentuk
dasar perintah ini adalah sebagai berikut:
INSERT INTO (kolom1, kolom2, …., kolom_n)
VALUES (nilai1, nilai2,…., nilai_n);
Catatan :
a. Pada saat menambahkan data, maka tidak semua kolom wajib diisi
b. Urutan nilai yang disisipkan harus sesuai dengan urutan di dalam
tanda kurung setelah sintaks INTO (bukan sesuai urutan pada
tabel)
c. Jika ingin mengisi semua kolom pada tabel, maka setelah INSERT
INTO bisa langsung melompat ke VALUES, dengan satu syarat yaitu
semua kolom dalam tabel terisi dan urutan pengisian mengikuti
urutan kolom dalam tabel

53
Basis Data

Contoh :
a. Jika ingin menambah data NIP dan nama seorang pegawai ke dalam tabel
pegawai maka dapat dilakukan dengan sintaks berikut:
INSERT INTO pegawai (NIP, nama)
VALUES ('1234','Rika Andara');
b. Jika ingin menambah data lengkap seorang pegawai ke dalam tabel
pegawai maka dapat dilakukan dengan sintaks berikut:
INSERT INTO pegawai (NIP, nama,gaji,tgl_lahir)
VALUES ('1235','Ratna S',5000000 ,'1990-05-15');
Atau bisa juga
INSERT INTO pegawai
VALUES ('1235','Ratna S',5000000,'1990-05-15');
c. Jika ingin menambahkan data lengkap dengan urutan yang tidak sesuai
kolom tabel maka tidak boleh langsung melompat ke VALUES setelah
INSERT INTO :
INSERT INTO pegawai (NIP, tgl_lahir,gaji, nama)
VALUES ('1236','1992-08-24', 4000000,'Rudi Hardy');
d. Jika ingin menambahkan beberapa data sekaligus secara lengkap, dapat
dilakukan juga dengan cara:
INSERT INTO pegawai (NIP, nama,gaji,tgl_lahir)
VALUES ('1237','Budi Karya',5500000 ,'1991-05-17'),
('1238','Ria Tanaya',6000000 ,'1991-11-07'),
('1239','Eddy Santoso',5500000 ,'1991-05-27');

Catatan :
- Untuk keamanan dalam pengolahan tipe data tanggal, agar
menghindari kesalahan format maka gunakanlah format (YYYY-
MM-dd) atau tahun-bulan-hari. Misalnya 25 Agustus 2019 ditulis
2019-08-25
- Untuk data bertipe number (INT, FLOAT dan sebagainya dapat
ditulis dengan atau tanpa tanda petik tunggal)

4. Perintah UPDATE
Perintah ini digunakan untuk memperbarui atau mengubah data. Bentuk
perintah ini adalah sebagai berikut:
UPDATE nama_tabel
SET kolom1 = nilai1, kolom2 = nilai2, …., kolom_n = nilai_n
WHERE <syarat>;

Catatan:
Sintaks WHERE tidak harus selalu ditulis dan perintah UPDATE tetap
bisa berjalan tanpa error, namun hal ini akan mengubah seluruh data
di dalam tabel.

Contoh:

54
Basis Data

a. Jika ingin mengubah data semua pegawai menjadi bergaji 5000000 maka
dapat dilakukan dengan sintaks berikut:
UPDATE pegawai
SET gaji = 5000000;
b. Jika ingin megubah gaji pegawai dengan NIP 1234 menjadi sebesar
6000000 maka dapat dilakukan dengan sintaks berikut:
UPDATE pegawai
SET gaji = 6000000
WHERE NIP = '1234'
c. Jika ingin mengubah data pegawai yang gajinya 6000000 menjadi
bernama Indra dan gaji barunya menjadi 6500000, maka dapat
dilakukan dengan sintaks:
UPDATE pegawai
SET nama='Indra', gaji = 6500000
WHERE gaji = 6000000;

5. Perintah DELETE
Perintah ini digunakan untuk menghapus data di dalam tabel. Adapun bentuk
perintah ini adalah sebagai berikut:
DELETE FROM nama_tabel
WHERE <syarat>
Catatan:
Sintaks WHERE tidak harus selalu ditulis dan perintah DELETE tetap
bisa berjalan tanpa error, namun hal ini akan menghapus seluruh data
di dalam tabel.

Contoh:
a. Jika ingin menghapus data pegawai yang memiliki nama Indra maka
dapat dilakukan dengan sintaks berikut:
DELETE FROM pegawai
WHERE nama= 'Indra';
b. Jika ingin menghapus semua data pegawai dapat dilakukan dengan
sintaks berikut:
DELETE FROM pegawai;

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
Lakukanlah langkah-langkah berikut ini:
1. Buka XAMPP Control Panel dan Start MySQL
2. Jika Anda ingin menggunakan phpMyAdmin, start juga Apache

55
Basis Data

3. Bukalah phpMyAdmin atau SQLYog


4. Gunakan database tutorial1 yang sudah dikerjakan pada Job Sheet 3.

5. Isikan data ruangan ke dalam tabel ruangan dengan beberapa data


berikut:

Catatan:
Kolom kode_ruang tidak perlu diisi karena tipe datanya adalah
INT AUTO_INCREMENT, jadi otomatis terisi.

Jangan lupa eksekusi dengan blok kemudian tekan F9, sehingga query
akan dieksekusi dan Anda mendapatkan perintah berhasil sebagai
berikut:

Arti pesan :
1. Sukses dan tanpa error (1 success, 0 errors)
2. Ada 4 data yang disimpan (4 rows affected)

6. Tampilkan data pada tabel ruangan dengan mengeksekusi perintah


berikut:

56
Basis Data

7. Tambahkanlah data nim dan nama mahasiswa ke dalam tabel


mahasiswa dengan mengeksekusi perintah berikut:

8. Tampilkan data mahasiswa dengan mengeksekusi perintah berikut:

9. Tambahkan beberapa data berikut ke dalam tabel mahasiswa:

10. Tampilkan data mahasiswa

11. Lakukan perubahan nama ruangan yang awalnya jaringan menjadi


jarkom

57
Basis Data

1 row(s) affected berarti ada satu data berubah

12. Ubahlah data mahasiswa dengan NIM 1913190001 menjadi lahir


tanggal 20 April 2000, gaji orang tua 9000000 dan ruang piket di
ruang berkode 3

13. Hapuslah data mahasiswa bernama Saraswati

14. Simpanlah semua query yang sudah Anda ketik!

58
Basis Data

H. Evaluasi
Buatlah sebuah database dengan format nama : jobsheet4_nim. Kemudian buatlah
sebuah tabel yang terdiri dari minimal 6 kolom. Lalu lakukan beberapa hal berikut:
1. Tambahkan 10 buah data ke dalam tabel tersebut
2. Tampilkan hasil penambahan data
3. Buatlah contoh perubahan 3 buah data
4. Tampilkan hasil setiap perubahan
5. Buatlah contoh penghapusan 2 buah data
6. Tampilkan hasil setiap perubahan

Kerjakan semua tugas tersebut dengan perintah DDL dan DML, simpan hasil DDL
dan DML Anda ke dalam sebuah file berekstensi .sql dengan format nama
jobsheet4_nim.sql.

59
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL Job Sheet 5
Jurusan : Teknik Elektro
Waktu : 4 x 50 Menit

Filter Data
Kelas/Sem : IIIB/3
Pertemuan 17 dan 18
Th Ajaran : 2021/2022

Job Sheet 5

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu melakukan
pemrosesan Query Lanjut untuk melakukan pencarian data

C. Indikator
1. Mahasiswa mampu menggunakan klausa WHERE untuk melakukan
filter data
2. Mahasiswa mampu menggunakan operator perbadingan di dalam
klausa WHERE
3. Mahasiswa mampu menggunakan operator logika untuk filter dengan
kriteria lebih daripada satu
4. Mahasiswa mampu menggunakan operator LIKE untuk filter data
berupa teks
5. Mahasiswa mampu menggunakan klausa ORDER BY untuk pengurutan
data

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web Server
dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
1. Filter Data
Filter data digunakan untuk menampilkan data tertentu. Filter data
diperlukan karena seringkali data di dalam tabel berjumlah banyak dan user
hanya ingin melihat data tertentu saja. Misalnya user hanya ingin melihat pegawai
perempuan saja, user hanya ingin melihat pegawai dengan gaji lebih daripada 10
juta. Filter data menggunakan klausa WHERE yang mana klausa WHERE
diletakkan setelah FROM. Bentuk umum klausa WHERE adalah sebagai berikut:
SELECT kolom1, kolom2,…, kolom_n

60
Basis Data

FROM nama_tabel
WHERE <syarat>
Tabel berikut bernama tabel pegawai dan akan digunakan sebagai contoh
untuk teori DML di jobsheet ini pada pembahasan berikutnya.
Tabel pegawai
Field Tipe Data Keterangan
NIP CHAR(4) PRIMARY KEY, NOT NULL
Nama VARCHAR(40)
Gaji INT
Tgl_lahir DATE

Contoh: Jika ingin menampilkan pegawai dengan NIP 1234 maka dapat
dilakukan dengan sintaks :
SELECT * FROM pegawai
WHERE NIP = '1234';

2. Operator Perbandingan
Dalam melakukan filter dengan WHERE, terdapat syarat yang harus
dituliskan. Penulisan syarat ini menggunakan operator perbandingan yaitu:
Operator Arti
= Sama dengan
<> Tidak sama dengan
< Lebih kecil dari
> Lebih besar dari
<= Lebih kecil atau sama dengan
>= Lebih besar atau sama dengan

Contoh penggunaan operator tersebut dapat dilihat dalam contoh-conoth


berikut:
1. Menampilkan pegawai bernama Ika Rahayu
SELECT * FROM pegawai
WHERE nama = 'Ika Rahayu';
2. Menampilkan pegawai dengan gaji lebih dari 3 juta
SELECT * FROM pegawai
WHERE gaji > 3000000
3. Menampilkan NIP dan nama pegawai yang lahir tanggal 14 Mei 2001
SELECT NIP, nama FROM pegawai
WHERE tgl_lahir = '2001-05-14';
4. Menampilkan nama pegawai yang tidak lahir di tanggal 5 Maret 2000
SELECT nama FROM pegawai
WHERE tgl_lahir <> '2000-03-05';

61
Basis Data

3. Operator Logika
Syarat pada klausa WHERE bisa juga berupa syarat yang kompleks atau lebih
daripada satu. Untuk mengatasi hal ini maka diperlukan operator logika sebagai
berikut:
a. AND : Operator untuk menampung kriteria, di mana dua buah kriteria
harus dipenuhi
b. OR : Operator untuk menampung kriteria, dimana salah satu atau kedua
kriteria harus dipenuhi.
c. NOT : merupakan operator membalik nilai kebenaran kriteria

Penggunaan operator logika dapat dilihat pada contoh berikut:


a. Menampilkan data pegawai yang tidak bernama Hapsari Dewi
SELECT * FROM pegawai
WHERE NOT (nama = 'Hapsari');
Atau jika tidak menggunakan operator logika NOT juga dapat dilakukan
dengan
SELECT * FROM pegawai
WHERE nama <> 'Hapsari';
b. Menampilkan nama pegawai yang lahir di tanggal 18 Mei 2001 dan bergaji
lebih daripada 2000000
SELECT nama FROM pegawai
WHERE tgl_lahir = '2001-05-18' AND gaji > 2000000;
c. Menampilkan nama pegawai yang gajinya antara 3 juta hingga 5 juta
SELECT nama FROM pegawai
WHERE gaji >= 3000000 AND gaji <= 5000000;

Catatan :
Untuk data rentang (interval), selain bisa menggunakan operator AND
seperti di atas, juga bisa menggunakan BETWEEN dan AND

SELECT nama FROM pegawai


WHERE gaji BETWEEN 3000000 AND 5000000;

d. Menampilkan data pegawai yang bernama Rika, Riyan dan Hanif


SELECT * FROM pegawai
WHERE nama = 'Rika' OR nama = 'Riyan' OR nama = 'Hanif';

Catatan :
Meskipun pada soal diminta Rika, Riyan dan Hanif, namun secara
logika, operator AND tidak bisa digunakan karena tidak mungkin ada
satu orang bernama Rika, Riyan sekaligus Hanif. Operator yang tepat
adalah menggunakan OR, agar setiap orang yang bernama Rika, Riyan
ataupun Hanif akan tampil.
Untuk operator OR yang menghubungkan kriteria dengan kolom yang
sama bisa diganti dengan IN

62
Basis Data

SELECT * FROM pegawai


WHERE nama IN ('Rika', 'Riyan', 'Hanif');
e. Menampilkan data pegawai yang namanya Hanif atau lahir tanggal 2 Mei
2000
SELECT * FROM pegawai
WHERE nama = 'Hanif' OR tgl_lahir = '2000-05-02';

Catatan :
Untuk kasus OR di atas, tidak bisa menggunakan IN karena kriteria
melibatkan 2 kolom yang berbeda yaitu nama dan tgl_lahir.

4. Operator LIKE
Operator LIKE dapat digunakan untuk melakukan filter data pada data
yang bertipe teks/string. Misalnya jika ingin mencari nama pegawai yang
berisi kata Ida, atau diawali kata Wayan dan lain sebagainya. Bentuk dari
operator LIKE ini adalah sebagai berikut:
SELECT kolom1, kolom2, …, kolom_n
FROM nama_tabel
WHERE kolom LIKE '…..';

Penggunaan operator LIKE biasanya digabungkan dengan tanda :


a. Underscore (_) : yang dapat mewakili tepat 1 karakter bebas
b. Persen (%) : yang dapat mewakili nol hingga tak hingga karakter
bebas
Contoh penggunaan operator LIKE dapat dilihat pada contoh-contoh
berikut :
a. Menampilkan pegawai yang namanya berisi kata Ika
SELECT * FROM pegawai
WHERE nama LIKE '%Ika%';
b. Menampilkan pegawai yang namanya diawali kata Wayan dan lahir
tanggal 13 April 2000
SELECT * FROM pegawai
WHERE nama LIKE 'Wayan%' AND tgl_lahir = '2000-04-13';
c. Menampilkan pegawai yang namanya diakhiri kata Wijaya
SELECT * FROM pegawai
WHERE nama LIKE '%Wijaya';
d. Menampilkan nama pegawai yang karakter kedua NIP-nya adalah angka 3
SELECT nama FROM pegawai
WHERE NIP LIKE '_3%';

5. Pengurutan Data
Untuk hasil filter data yang banyak, kadangkala dibutuhkan pengurutan
data. Pengurutan data bisa dilakukan dengan klausa ORDER BY. Klausa ini
diletakkan pada bagian akhir perintah SQL. Bentuk umum ORDER BY adalah
sebagai berikut:
SELECT kolom1, kolom2, …, kolom_n

63
Basis Data

FROM nama_tabel
WHERE kolom LIKE '…..'
ORDER BY kolom1 ASC/DESC, kolom2 ASC/DESC, …., kolom_n ASC/DESC;

Keterangan:
a. Pengurutan bisa dilakukan dengan satu atau lebih kolom
b. ASC : artinya ascending atau pengurutan menaik (dapat juga tidak
dituliskan dalam SQL)
c. DESC : artinya descending atau pengurutan menurun (harus
dituliskan dalam SQL)

Penggunaan pengurutan dapat dilihat pada contoh berikut:


a. Tampilkan data semua pegawai dan urutkan berdasarkan nama dari A-Z
SELECT * FROM pegawai
ORDER BY nama;

Atau
SELECT * FROM pegawai
ORDER BY nama ASC;

b. Tampilkan data pegawai yang gajinya antara 3 sampai 6 juta, urutkan


berdasarkan gaji dari tinggi ke rendah kemudian berdasarkan nama dari
A-Z
SELECT * FROM pegawai
WHERE gaji BETWEEN 3000000 AND 6000000
ORDER BY gaji DESC, nama;

c. Tampilkan nama pegawai dan urutkan berdasarkan tanggal lahir dari usia
termuda hingga tertua
SELECT nama FROM pegawai
ORDER BY tgl_lahir DESC;

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
Ikuti langkah-langkah kerja berikut:
1. Buka XAMPP Control Panel dan Start MySQL
2. Jika Anda ingin menggunakan phpMyAdmin, start juga Apache
3. Bukalah phpMyAdmin atau SQLYog

64
Basis Data

4. Gunakan database tutorial1 yang sudah dikerjakan pada Job Sheet 4.

5. Tampilkan semua data ruangan yang diawali kata RPL :

6. Tampilkan semua mahasiswa yang lahir antara 1 Januari 2000 hingga 31


Desember 2001

7. Tampilkan mahasiswa yang namanya berisi kata Sari

8. Tampilkan mahasiswa yang gaji orang tuanya antara 8 juta hingga 11 juta
dan tidak lahir di tanggal 1 Maret 2000. Urutkan hasilnya dari gaji
terendah ke tertinggi

65
Basis Data

9. Tampilkan nama mahasiswa yang karakter ke 3 dan 4 adalah 20

Hasilnya adalah kosong karena tidak ada data mahasiswa dengan NIM
berupa angka 20 pada karakter ke-3 dan 4

H. Evaluasi
1. Gunakan DDL dan buatlah database bernama jobsheet5_nim
2. Gunakan DDL untuk membuat sebuah tabel kegiatan dengan struktur
sebagai berikut:
Field Tipe Data Keterangan
Id_kegiatan INT PRIMARY KEY, AUTO_INCREMENT
Nama_kegiatan VARCHAR(100)
Ketua_panitia VARCHAR(40)
Jumlah_panitia TINYINT
Jumlah_peserta SMALLINT
Lokasi_kegiatan VARCHAR(50)
Jumlah_dana INT
Tanggal_mulai DATE
Tanggal_selesai DATE

3. Isikan 10 buah data berikut dengan DML

66
Basis Data

4. Tampilkan kegiatan yang diketuai oleh Sintya Waluyo


5. Tampilkan nama kegiatan, jumlah dana yang dananya antara 50 juta
hingga 150 juta, lalu urutkan berdasarkan besarnya dana dari besar ke
kecil
6. Tampilkan data kegiatan yang berlokasi di Denpasar, Badung dan Ubud
dan urutkan berdasarkan dananya dari kecil ke besar, lalu berdasarkan
nama dari A-Z
7. Tampilkan data kegiatan yang jumlah pesertanya melebihi 100 orang dan
tidak diselenggarakan di Denpasar
8. Tampilkan data kegiatan yang dimulai pada tanggal 19 Februari 2018 dan
jumlah panitianya tidak kurang daripada 30
9. Tampilkan data kegiatan yang namanya berisi kata Woman, dengan dana
antara 5 juta hingga 100 juta dan dimulai setelah 1 Januari 2019
10. Tampilkan nama kegiatan, nama ketua panitia, jumlah panitia, lokasi dan
jumlah peserta dari kegiatan yang jumlah panitianya antara 20 sampai 50
dengan jumlah peserta lebih daripada 100 orang dan dilaksanakan di
Singaraja dan Badung. Urutkan berdasarkan lokasi dari A-Z kemudian
urutkan berdasarkan jumlah peserta dari terbanyak ke yang paling sedikit
11. Simpan sintaks DDL dan DML yang sudah Anda tulis di dalam file dengan
format nama jobsheet5_nim.sql

67
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Job Sheet 6
Bidang Studi : TRPL
Jurusan : Teknik Elektro
Waktu : 2 x 50 Menit
Fungsi Agregat
Kelas/Sem : IIIB/3
Pertemuan 19
Th Ajaran : 2021/2022

Job Sheet 6

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu
menggunakan fungsi agregat untuk mengolah data berkelompok

C. Indikator
1. Mahasiswa mampu menggunakan fungsi agregat
2. Mahasiswa mampu melakukan pengelompokkan data berdasarkan
keperluan
3. Mahasiswa mampu membangun ekspresi SQL yang melibatkan field hasil
kalkulasi
D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web Server
dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
1. Fungsi Agregat
Fungsi agregat merupakan fungsi yang melakukan pemrosesan pada
sekelompok data numerik (kecuali COUNT) dan mengembalikan sebuah nilai
tunggal. Fungsi agregat terdiri dari:
a) SUM : digunakan untuk menjumlahkan sekelompok data
b) COUNT : digunakan untuk melakukan perhitungan jumlah data
c) AVG : digunakan untuk melakukan perhitungan rata-rata sekelompok
data
d) MAX : digunakan untuk mendapatkan nilai terbesar dari sekelompok data
e) MIN : digunakan untuk mendapatkan nilai terkecil dari sekelompok data

Fungsi agregat biasanya digunakan bersama dengan klausa GROUP BY,


untuk melakukan pengelompokkan data berdasarkan pada field yang terdapat

68
Basis Data

di dalam GROUP BY. Bentuk umum SQL dengan fungsi agregat adalah sebagai
berikut:
SELECT kolom1, …, kolom_n, fungsi_agregat1(field1),…,
fungsi_agregat_n(field_n)
FROM nama_tabel
WHERE <syarat> -- jika ada
GROUP BY kolom1, …, kolom_n;

Contoh-contoh berikutnya akan menggunakan tabel pegawai berikut:

Penggunaan fungsi agregat dapat dilihat pada contoh-contoh berikut:


a) Tampilkan jumlah pegawai yang bekerja pada setiap departemen
SELECT departemen, COUNT(NIP) AS jumlah_pegawai
FROM pegawai
GROUP BY departemen;

Keterangan :
- AS digunakan sebagai alias untuk memberi nama kolom agar lebih
mudah dimengerti oleh pembaca informasi hasil SQL
- Jika tidak menggunakan GROUP BY maka data hanya akan
menampilkan departmen yang dibaca paling atas yaitu Keuangan dan
jumlahnya adalah 6 yaitu jumlah semua data. Oleh sebab itu penting
melakukan GROUP BY agar data dikelompokkan per departemen
b) Tampilkan jumlah pegawai dari setiap kota
SELECT kota, COUNT(NIP) AS jumlah_pegawai
FROM pegawai
GROUP BY kota;
c) Tampilkan rata-rata gaji per department
SELECT departemen, AVG(gaji) AS rata_gaji
FROM pegawai
GROUP BY departemen;
d) Tampilkan jumlah gaji yang harus dibayarkan pada departemen
Akuntansi
SELECT departemen, SUM(gaji) AS total_gaji
FROM pegawai
WHERE departemen = 'Akuntansi '
GROUP BY departemen;
e) Tampilkan gaji terbesar dan terkecil dari setiap departemen

69
Basis Data

SELECT departemen, MAX(gaji) AS gaji_terbesar, MIN(gaji) AS gaji_terkecil


FROM pegawai
GROUP BY departemen;

2. Klausa HAVING
Terdapat klausa tambahan yang biasanya muncul saat penggunaan fungsi
agregat, yaitu klausa HAVING. HAVING memiliki fungsi yang sama dengan
WHERE, yaitu untuk melakukan filter. Perbedaannya adalah HAVING khusus
digunakan untuk melakukan filter pada data yang memuat fungsi agregat di
dalamnya, sedangkan WHERE adalah untuk sisanya. Bentuk pernyataan SQL
dengan fungsi agregat adalah sebagai berikut:

SELECT kolom1, …, kolom_n, fungsi_agregat1(field1),…,


fungsi_agregat_n(field_n)
FROM nama_tabel
WHERE <syarat> -- jika ada
GROUP BY kolom1, …, kolom_n
HAVING <syarat dengan agregat>;

Contoh penggunaan klausa HAVING dapat dilihat sebagai berikut:


a) Tampilkan nama kota dan jumlah pegawainya, tampilkan yang jumlah
pegawainya lebih daripada satu orang
SELECT kota, COUNT(NIP) AS jumlah_pegawai
FROM pegawai
GROUP BY kota
HAVING COUNT(NIP) > 1;
b) Tampilkan nama departemen yang rata-rata gajinya melebihi 4 juta
SELECT departemen, AVG(gaji) AS rata_gaji
FROM pegawai
GROUP BY departemen
HAVING AVG(gaji) AS rata_gaji > 4000000;

3. Field Hasil Kalkulasi


Field kalkulasi sebenarnya bukan merupakan fungsi atau bagian dari
fungsi agregat. Field kalkulasi merupakan hasil perhitungan atau atribut
turunan. Field kalkulasi melibatkan operasi artitmatik seperti penjumlahan,
pengurangan, perkalian dan pembagian. Field kalkulasi bisa berada di bagian
SELECT ataupun WHERE. Contoh field kalkulasi dapat dilihat sebagai berikut:
a) Tampilkanlah nama pegawai, gaji pegawai, pajak, dan gaji bersih pegawai,
jika diketahui pajak adalah 5% dari gajinya
SELECT nama, gaji, gaji * 5/100 AS pajak, gaji – (gaji*5/100) AS gaji_bersih
FROM pegawai;
b) Tampilkanlah gaji tahunan yang harus dibayar perusahaan per
departemen.
SELECT departemen, SUM(gaji*12) AS total_gaji_tahunan

70
Basis Data

FROM pegawai
GROUP BY departemen;

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
Ikutilah langkah-langkah kerja berikut:
1. Buka XAMPP Control Panel dan Start MySQL
2. Jika Anda ingin menggunakan phpMyAdmin, start juga Apache
3. Bukalah phpMyAdmin atau SQLYog
4. Gunakan database jobsheet6 yang sudah dikerjakan pada Evaluasi Job
Sheet 5
5. Menampilkan rata-rata dana per kegiatan

6. Menampilkan jumlah kegiatan per lokasi, namun jangan tampilkan lokasi


Ubud

71
Basis Data

7. Menampilkan rata-rata jumlah peserta, minimal peserta dan maksimal


peserta dari setiap lokasi, namun tidak termasuk kegiatan yang berisi kata
Woman.

8. Menampilkan rasio antara jumlah peserta dan panitia dari setiap


id_kegiatan

9. Menampilkan total dana kegiatan di Denpasar yang dimulai pada tahun


2018

72
Basis Data

H. Evaluasi
1. Buatalah database jobsheet6_nim dengan DDL
2. Buatlah sebuah tabel nilai berikut dengan DDL
Field Tipe Data Keterangan
NIM CHAR(4) PRIMARY KEY
Nama_mhs VARCHAR(60)
Kode_matkul CHAR(7) PRIMARY KEY
Nama_matkul VARCHAR(60)
Nilai_uts FLOAT
Nilai_uas FLOAT
Nilai_quiz FLOAT

3. Isikan 10 buah data bebas ke dalam tabel dengan DML


4. Tampilkan nama mahasiswa, nilai UTS, UAS, Quiz dan nilai akhir. Nilai
akhir dapat dihitung dari 20% nilai quiz, 35% nilai UTS dan 45% nilai UAS
untuk mata kuliah bernama Basis Data
5. Tampilkan nilai tertinggi pada setiap matakuliah
6. Tampilkan jumlah mahasiswa yang mendapatkan nilai akhir di bawah 70
pada setiap matakuliah
7. Tampilkan rata-rata nilai nilai akhir untuk setiap mahasiswa
8. Tampilkan jumlah matakuliah yang diikuti oleh setiap mahasiswa
9. Simpan semua perintah SQL yang sudah Anda buat ke dalam file dengan
format nama jobsheet6_nim.sql

73
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Job Sheet 7 Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL
Waktu : 2 x 50 Menit
Jurusan : Teknik Elektro Built-In Function
Kelas/Sem : IIIB/3
Pertemuan 20
Th Ajaran : 2021/2022

Job Sheet 7

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu
menggunakan fungsi-fungsi bawaan pada MySQL untuk mempermudah
beberapa pemrosesan data sesuai dengan tipenya

C. Indikator
1. Mahasiswa mampu menggunakan fungsi-fungsi bawaan pada MySQL

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web Server
dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
MySQL menyediakan banyak built-in function. Built-in function
merupakan fungsi-fungsi yang disediakan oleh MySQL untuk mempermudah
manipulasi data yang akan ditampilkan kepada pengguna. Misalnya jika
pengguna ingin menghitung umur dari tanggal lahir seseorang, maka hanya
perlu menggunakan fungsi DATE_DIFF antara tanggal sekarang dengan
tanggal lahirnya. Modul ini akan membahas beberapa fungsi umum yang
sering digunakan. Untuk fungsi yang lebih lengkap dapat dilihat pada
dokumentasi MySQL.

1. Fungsi String
a. CONCAT : digunakan untuk menggabungkan beberapa string/teks.
String atau teks dalam hal ini dapat berupa statis text atau field yang
bertipe teks.
Contoh :

74
Basis Data

SELECT CONCAT("SQL ", "Tutorial ", "is ", "fun!") AS gabungan_kata;


Hasilnya : SQL Tutorial is fun!
b. CONCAT_WS : digunakan untuk menggabungkan beberapa string/teks
dengan tanda pemisah sesuai dengan yang didefinisikan
Contoh :
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!") AS
gabungan_kata; Hasilnya : SQL-Tutorial-is-fun!
c. CHAR_LENGTH : digunakan untuk menghitung panjang suatu teks
Contoh :
SELECT CHAR_LENGTH("SQL Tutorial") AS LengthOfString; Hasilnya :
12
d. FORMAT : digunakan untuk mrlakukan pemformatan pada suatu angka
agar ditampilkan dengan pemisah ribuan dengan jumlah digit di
belakang koma sesuai dengan yang didefiniskan.
Contoh :
SELECT FORMAT(250500.5634, 2) AS angka; → untuk memformat
angka dengan pemisah ribuan dg 2 angka pembulatan. Hasilnya
250,500.56
e. INSTR : untuk menemukan posisi sebuah karakter pada string tertentu.
Contoh :
SELECT INSTR("W3Schools.com", "3") AS posisi; Hasilnya : 2 (angka 3
ditemukan pada huruf ke-2)
f. LCASE : untuk mengubah seluruh karakter dalam string menjadi huruf
kecil.
Contoh :
SELECT LCASE("SQL Tutorial is FUN!"); Hasilnya : sql tutorial is fun!
g. UCASE : untuk mengubah seluruh karakter dalam string menjadi huruf
kapital.
Contoh :
SELECT UCASE("SQL Tutorial is FUN!"); Hasilnya : SQL TUTORIAL IS
FUN!
h. LEFT : untuk menampilkan beberapa karakter dari kiri dengan panjang
sesuai dengan yang didefiniskan.
Contoh :
SELECT LEFT("SQL Tutorial", 3) AS kiri; Hasil : SQL
i. MID : untuk menampilkan substring mulai dari karakter tertentu
(sesuai nilai parameter yang didefinisikan) dengan panjang sesuai nilai
parameter yang didefinisikan.
Contoh :
SELECT MID("SQL Tutorial", 5, 3) AS tengah; Hasil : Tut
j. RIGHT : untuk menampilkan beberapa karakter di sebelah kanan
sepanjang nilai yang didefinisikan
Contoh :
SELECT RIGHT("SQL Tutorial is cool", 4) AS ExtractString; Hasil : cool

75
Basis Data

k. REPLACE : untuk mengganti suatu sub string dengan pola string yang
baru.
Contoh :
SELECT REPLACE("SQL Tutorial", "SQL", "HTML"); Hasil : HTML
Tutorial
l. STRCMP : melakukan perbandingan dari dua buah string
Contoh :
SELECT STRCMP("SQL Tutorial", "SQL Tutorial"); → membandingkan
string. Jika sama maka hasilnya 0, jika tidak sama maka bukan 0. Hasil :
0 (karena sama)
m. SUBSTR : menampilkan substring pada string tertentu dimulai dari
karakter tertentu sesuai nilai parameter, dan sepanjang nilai yang
dinyatakan dalam parameter. Fungsinya sama dengan MID
Contoh :
SELECT SUBSTR("SQL Tutorial", 5, 3) AS sub_kalimat; →untuk
mengambil karakter mulai dr 5 sebanyak 3 (seperti MID). Hasil : Tut
n. TRIM : menghapus semua spasi di sisi kiri dan kanan suatu string
Contoh :
SELECT TRIM(" SQL Tutorial ") AS hasil; Hasil : SQL Tutorial

2. Fungsi Matematika
a. ABS : mengembalikan nilai absolut (positif) dari suatu nilai
Contoh :
SELECT ABS(-243.5); Hasil:243.5
b. CEIL : mengembalikan nilai pembulatan ke atas dalam bentuk bilangan
bulat
Contoh :
SELECT CEIL(25.75); Hasil : 26
c. FLOOR : mengembalikan nilai pembulatan ke bawah dalam bentuk
bilangan bulat
Contoh :
SELECT FLOOR(25.75); Hasil : 25
d. ROUND : mengembalikan hasil pembulatan bilangan ke nilai yang
terdekat dengan jumlah digit di belakang koma sesuai dengan
parameter yang didefinisikan
Contoh :
SELECT ROUND(135.375, 2); Hasil : 135.38
e. DIV : mengembalikan hasil pembagian berupa bilangan bulat dengan
pembulatan ke bawah
Contoh :
SELECT 10 DIV 6; Hasil : 1
f. GREATEST : mengembalikan nilai terbesar dari suatu deret bilangan
yang dimasukkan ke dalam parameter
Contoh :
SELECT GREATEST(3, 12, 34, 8, 25); Hasil : 34

76
Basis Data

g. LEAST : mengembalikan nilai terkecil dari suatu deret bilangan yang


dimasukkan ke dalam parameter
Contoh :
SELECT LEAST(3, 12, 34, 8, 25); Hasil : 3
h. MOD : mengembalikan sisa hasil pembagian
Contoh :
SELECT MOD(18, 4); Hasil : 2
i. POW : mengembalikan hasil perpangkatan bilangan
Contoh :
SELECT POW(4, 3); →perpangkatan 4 pangkat 3. Hasil : 64
j. SQRT : mengembalikan akar dari suatu bilangan
Contoh :
SELECT SQRT(64); Hasil : 8

3. Fungsi Tanggal
a. ADDDATE : menampilkan hasil berupa tanggal sesuai dengan interval
yang diinputkan. Interval yang digunakan biasanya sebagai berikut:
• SECOND : detik
• MINUTE : menit
• HOUR : jam
• DAY : hari
• WEEK : minggu
• MONTH : bulan
• YEAR : tahun
Contoh:
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY); Pada contoh
akan ditambahkan 10 hari. Hasil 2017-06-25.
b. DATE_ADD : memiliki fungsi yang sama dengan ADDDATE
Contoh :
SELECT DATE_ADD("2017-06-15", INTERVAL 10 DAY); Hasil 2017-06-
25.
c. CURDATE : menampilkan tanggal saat ini
Contoh :
SELECT CURDATE();
d. CURTIME : menampilkan jam saat ini
Contoh :
SELECT CURTIME();
e. NOW : menampilkan waktu saat ini (tanggal dan jam sampai detik)
Contoh :
SELECT NOW();
f. CURRENT_TIMESTAMP : menampilkan tanggal dan waktu hari ini,
sama seperti NOW
Contoh :
SELECT CURRENT_TIMESTAMP();
g. DATE : menampilkan bagian tanggal dari suatu timestamp.

77
Basis Data

Contoh :
SELECT DATE("2017-06-15 09:08:40"); → mengambil tanggal saja.
Hasil : 2017-06-15
h. DATEDIFF : menghitung selisih tanggal dalam satuan hari
Contoh :
SELECT DATEDIFF("2017-06-25", "2017-06-15"); → menghitung
selisih tanggal dalam hari. Hasil 10
i. DATE_SUB : mengurangi tanggal dengan interval tertentu. Interval yang
digunakan sama seperti pada DATE_ADD
Contoh :
SELECT DATE_SUB("2017-06-15", INTERVAL 10 DAY); Hasil 2017-06-
05
j. DAY : mengambil bagian hari pada suatu tanggal
Contoh :
SELECT DAY("2017-06-15"); →mengambil bagian hari pada suatu
tanggal. Hasil: 15
k. DAYNAME : menampilkan nama hari dari tanggal tertentu
Contoh :
SELECT DAYNAME("2018-04-27"); Hasil : Friday
l. DAYOFWEEK : menampilkan urutan hari dalam satu minggu dari
tanggal, dengan perhitungan bahwa Minggu adalah hari ke-1.
Contoh :
SELECT DAYOFWEEK("2018-04-27"); Hasil → 6 (karena Jumat adalah
hari ke-6 dalam sebuah minggu)
m. DAYOFYEAR : menghitung urutan hari dalam satu tahun
Contoh :
DAYOFYEAR("2017-02-15"); Hasil : 46 karena tanggal 15 Febrari
adalah hari 46 dalam tahun 2017
n. MONTH : mengambil bagian bulan pada suatu tanggal
Contoh :
SELECT MONTH("2017-06-15"); Hasil : 06
o. MONTHNAME : menampilkan nama bulan dari suatu tanggal
Contoh :
SELECT MONTHNAME("2017-06-15"); Hasil: June
p. YEAR : mengambil bagian tahun pada suatu tanggal
Contoh :
SELECT YEAR("2017-06-15"); Hasil : 2017
q. DATE_FORMAT : menampilkan tanggal dengan format tertentu agar
lebih mudah dimengerti oleh pengguna awam
Format yang biasanya digunakan adalah sebagai berikut :
• %Y : 4 digit tahun
• %y : 2 digit tahun
• %M : nama bulan
• %m : bulan 01-12
• %c : bulan 1-12

78
Basis Data

• %d : tanggal 01-31
• %e : tanggal 1-31
Contoh :
SELECT DATE_FORMAT("2017-06-15", "%Y"); → memformat sebuah
tanggal agar tampilannya sesuai kebutuhan. Hasil : 2017

SELECT DATE_FORMAT("2017-06-15", "%e %M %Y"); → hasil : 15


June 2017

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
Ikutilah langkah-langkah kerja berikut:
1. Buka XAMPP Control Panel dan Start MySQL
2. Jika Anda ingin menggunakan phpMyAdmin, start juga Apache
3. Bukalah phpMyAdmin atau SQLYog
4. Buatlah database latihan_jobsheet7

5. Buatlah tabel seperti berikut:

6. Isilah dengan data seperti berikut:

79
Basis Data

7. Menampilkan nama depan dan belakang dalam satu kolom

8. Menampilkan nama depan dan panjang karakternya

9. Menampilkan gaji dengan pemisah ribuan

80
Basis Data

10. Menampilkan rata-rata gaji yang dibulatkan ke atas

11. Menampilkan rata-rata gaji yang dibulatkan ke bilangan terdekat

12. Menampilkan lama masa kerja pegawai

13. Menampilkan tanggal masuk pegawai dalam format seperti : 1 April 2018

81
Basis Data

H. Evaluasi
1. Buatlah database dengan nama jobsheet7_nim dengan DDL
2. Buatlah tabel konsultasi dengan struktur tabel berikut:
Field Tipe Data Keterangan
Id_konsultasi INT PRIMARY KEY
AUTO_INCREMENT
Nama_client VARCHAR(60)
Gelar_depan VARCHAR(10)
Gelar_belakang VARCHAR(10)
Tgl_konsultasi DATE
Biaya_konsul_perjam INT
Lama_konsultasi TINYINT

3. Isilah data bebas sebanyak 10 buah data dengan DML


4. Buat SQL untuk menampilkan nama klient dengan gelar depan, diikuti
nama, kemudian diikuti gelar belakang. Pisahkan dengan spasi.
5. Buatlah SQL untuk menampilkan nama client dengan tanggal
konsultasinya berformat day lalu diikuti nama bulan dan kemudian diikuti
tahun. Tampilkan hanya yang lama konsultasinya melebihi 2 jam
6. Buatlah SQL untuk menampilkan nama client dengan biaya konsultasi
total, biaya didapatkan dari biaya konsul per jam dikalikan dengan lama
konsul. Berikan pemisah ribuan ke total biayanya!
7. Buatlah SQL untuk menampilkan jumlah client, total biaya konsul terbesar
(lengkapi dengan pemisah ribuan)
8. Buatlah SQL untuk menampilkan rata-rata lamanya konsultasi, lakukan
pembulatan ke nilai terdekat dengan nol angka di belakang koma
9. Buatlah SQL untuk menampilkan nama klient dan sudah berapa lama klien
tersebut melakukan konsultasinya (dalam hari). Misalnya seorang klient
konsultasi tanggal 17 Maret 2019, sedangkan hari ini adalah 30 Maret
2019. Maka waktu konsul adalah 13 hari lalu.
10. Simpan pekerjaan Anda dengan nama jobsheet7_nim.sql

82
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL Job Sheet 8
Waktu : 4 x 50 Menit
Jurusan : Teknik Elektro JOIN & UNION
Kelas/Sem : IIIB/3
Pertemuan 21 dan 22
Th Ajaran : 2021/2022

Job Sheet 8

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa mampu memahami konsep dan
menggunakan Multitable-Query

C. Indikator
1. Mahasiswa memahami perbedaan dari setiap bentuk JOIN
2. Mahasiswa mampu melakukan manipulasi data dari beberapa tabel
dengan menggunakan bentuk JOIN yang sesuai.
D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web Server
dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
Database terdiri dari tabel-tabel yang saling terelasi. Kebutuhan informasi
pengguna akhir lebih sering melibatkan beberapa tabel dibandingkan hanya
satu tabel saja. Untuk itu sangat penting sekali untuk bisa membuat perintah
pengambilan data dari beberapa tabel sesuai dengan kriteria dari pengguna.
Untuk mengambil data dari beberapa tabel bisa digunakan JOIN. Terdapat
beberapa jenis JOIN, dimana masing-masing memiliki kegunaan yang
berbeda-beda. Agar dapat memanfaatkan jenis-jenis JOIN dengan tepat, maka
pemahaman terhadap masing-masing jenis JOIN sangat penting sekali.
Join digunakan untuk menggabungkan 2 buah tabel. Dalam database
relasional, bekerja dengan banyak tabel sangat seringkali dibutuhkan dalam
manipulasi data. Untuk mengambil data dari beberapa tabel, bisa digunakan
JOIN. JOIN akan menggabungkan data dari dua buah tabel dan membentuk
sebuah relasi, relasi inilah yang kemudian bisa dijoinkan lagi dengan tabel
yang lainnya.

83
Basis Data

Terdapat beberapa jenis JOIN :


1. INNER JOIN
INNER JOIN digunakan untuk menampilkan data dari dua tabel, dimana
data yang ditampilkan adalah data yang beririsan, artinya data ada di kedua
tabel. Ilustrasinya dapat dilihat pada gambar berikut, dimana dari dua buah
himpunan akan dihasilkan data yang beririsan saja atau data yang sama.

Bentuk :
SELECT kolom1, kolom2,…, kolom_n
FROM tabel1 INNER JOIN tabel2
ON tabel1.kolom_a = tabel2.kolom_b

Keterangan:
Kolom_a dan kolom_b merupakan kolom-kolom yang merelasikan kedua tabel.
Nama kolom bisa berbeda, namun tipe data harus sama.

2. LEFT OUTER JOIN


LEFT OUTER JOIN akan menampilkan semua data dari tabel di sebelah kiri
pernyataan JOIN, dan data yang beririsan saja dari tabel sebelah kanan.
Apabila terdapat record yang tidak memiliki pasangan dari tabel di sebelah
kiri, maka akan dipasangkan dengan NULL. Ilustrasinya dapat dilihat pada
gambar berikut, dimana dari dua buah himpunan akan dihasilkan seluruh data
pada tabel/himpunan yang disebutkan di sebelah kiri dan hanya data yang
sama pada tabel di sebelah kanan.

Bentuk :
SELECT kolom1, kolom2,…, kolom_n
FROM tabel1 LEFT JOIN tabel2
ON tabel1.kolom_a = tabel2.kolom_b

Keterangan:

84
Basis Data

Kolom_a dan kolom_b merupakan kolom-kolom yang merelasikan kedua tabel.


Nama kolom bisa berbeda, namun tipe data harus sama.

3. RIGHT OUTER JOIN


RIGHT OUTER JOIN memiliki fungsi yang sama dengan LEFT OUTER JOIN.
Bedanya, pada RIGHT OUTER JOIN akan menampilkan semua data di sebelah
kanan pernyataan JOIN, dan hanya data yang beririsan untuk tabel di sebelah
kiri pernyataan JOIN. Ilustrasinya dapat dilihat pada gambar berikut, dimana
berkebalikan dengan left outer join.

Bentuk :
SELECT kolom1, kolom2,…, kolom_n
FROM tabel1 RIGHT JOIN tabel2
ON tabel1.kolom_a = tabel2.kolom_b

Keterangan:
Kolom_a dan kolom_b merupakan kolom-kolom yang merelasikan kedua tabel.
Nama kolom bisa berbeda, namun tipe data harus sama.

5. NATURAL JOIN
Natural join sebenarnya menghasilkan data yang sama dengan inner join.
Penggunaan natural join yaitu tanpa adanya kata kunci ON dan kedua tabel
yang dijoinkan harus memiliki sebuah kolom dengan nama dan tipe yang
sama.
Bentuk :
SELECT kolom1, kolom2,…, kolom_n
FROM tabel1 JOIN tabel2

Contoh
Tabel mahasiswa Tabel hobby
NIM Nama NIM Hobby
1 Teta 2 Menulis
2 Yota 2 Menggambar
3 Eta 4 Mengamati

85
Basis Data

Berikut ini adalah hasil eksekusi jenis-jenis JOIN

INNER JOIN :hanya menghasilkan NIM yang sama (ada di kedua tabel) yaitu
mahasiswa dengan NIM 2

SELECT *
FROM mahasiswa INNER JOIN hobby
ON mahasiswa.NIM=hobby.NIM

NIM Nama NIM Hobby


2 Yota 2 Menulis
2 Yota 2 Menggambar

LEFT OUTER JOIN : menghasilkan seluruh data dari tabel mahasiswa (di kiri
pernyataan JOIN), meskipun NIM-nya tidak terdapat pada tabel hobby. Untuk
mahasiswa yang tidak dicatat pada tabel hobby, akan diisi NULL

SELECT *
FROM mahasiswa LEFT JOIN hobby
ON mahasiswa.NIM=hobby.NIM

NIM Nama NIM Hobby


1 Teta NULL NULL
2 Yota 2 Menulis
2 Yota 2 Menggambar
3 Eta NULL NULL

RIGHT OUTER JOIN: menghasilkan seluruh data dari tabel hobby (di kanan
pernyataan JOIN), meskipun NIM-nya tidak terdapat pada tabel mahasiswa.
Untuk NIM yang tidak dicatat pada tabel mahasiswa, akan diisi NULL

SELECT *
FROM mahasiswa RIGHT JOIN hobby
ON mahasiswa.NIM=hobby.NIM

NIM Nama NIM Hobby


2 Yota 2 Menulis
2 Yota 2 Menggambar
NULL NULL 4 Mengamati

NATURAL JOIN : sama seperti INNER JOIN, namun kolom yang berelasi harus
memiliki nama yang sama.

SELECT *
FROM mahasiswa JOIN hobby

86
Basis Data

NIM Nama NIM Hobby


2 Yota 2 Menulis
2 Yota 2 Menggambar

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
1. Buatlah database bernama jobsheet8_nim dengan tabel-tabel berikut
(Anda bebas menggunakan wizard atau DDL).

2. Isikan data berikut ke tabel jurusan

3. Isikan data berikut ke tabel mahasiswa

4. Isikan data berikut ke tabel matakuliah

87
Basis Data

5. Isikan data berikut ke tabel nilai

6. Tampilkan nama mahasiswa dan jurusannya!

7. Tampilkan nama mahasiswa dan nilainya. Tampilkan hanya untuk


matakuliah Basis Data!

88
Basis Data

Perhatikan bahwa untuk menampilkan data tersebut diperlukan 3 buah


tabel sesuai dengan relasi pada diagram yang diberikan. Maka dari itu
ketiga tabel tersebut harus dijoinkan. Join bisa dimulai dari nilai dengan
mahasiswa kemudian ke matakuliah, atau dari nilai k matakuliah
kemudian ke mahasiswa. Anda tidak bisa menjoinkan mahasiswa dengan
matakuliah secara langsung, karena tidak terdapat relasi langsung dari
matakuliah ke mahasiswa.

8. Tampilkan nama dan rata-rata nilai dari setiap mahasiswa, urutkan


berdasarkan rata-ratanya dari besar ke kecil!

9. Tampilkan nama seluruh matakuliah dan nama mahasiswa yang


mengambilnya (termasuk matakuliah yang tidak diambil oleh
mahasiswa)!

89
Basis Data

10. Tampilkan nama mahasiswa, nama matakuliah dan nilai, untuk


mahasiswa pada perkuliahan Matematika dan Bahasa Inggris. Lalu
urutkan per matakuliah A-Z, kemudian urutkan nama mahasiswa A-Z,
kemudian urutkan lagi berdasarkan nilai dari besar ke kecil!

11. Tampilkan jumlah SKS yang diambil setiap mahasiswa!

90
Basis Data

G. Evaluasi
1. Buatlah database perusahaan dengan tabel-tabel terelasi seperti berikut:

2. Silakan isikan data pada setiap tabel, isilah dengan data bebas, dimana
setiap tabel dapat diisi dengan minimal 4 buah data.
3. Buatlah perintah SQL untuk menampilkan data-data yang diperlukan pada
soal berikut! (Karena isian data bebas dan berbeda pada setiap orang,
hasil eksekusi query mungkin berbeda dan mungkin kosong. Hal tersebut
tidak masalah, karena yang akan dicek adalah kebenaran perintah SQL-
nya)
a. Tampilkan data nama project dan di cabang mana saja project
tersebut berada!
b. Tampilkan jumlah project yang dimiliki setiap cabang, lalu urutkan
berdasarkan jumlah project dari kecil ke besar!
c. Tampilkan nama-nama pegawai yang mengerjakan project dengan
nama berisi kata Jembatan dan dengan dana melebihi 1Milyar!

91
Basis Data

d. Tampilkan jumlah jam kerja per pegawai, per project untuk cabang
Denpasar. Urutkan berdasarkan cabang A-Z, lalu nama pegawai A-Z!
e. Tampilan jumlah anak yang dimiliki oleh setiap pegawai! Tampilkan
termasuk yang jumlah anaknya nol! Anak bisa dicek berdasarkan
hubungan!
f. Tampilkan nama pegawai yang bekerja pada project yang berisi kata
gedung dan memiliki pengalaman berisi kata gedung!
g. Tampilkan no_peg, nama pegawai yang mengerjakan project dengan
dana antara 100juta hingga 500juta dan berlokasi di Gianyar.
Tampilkan data yang sama hanya satu kali saja!
h. Tampilkan nama cabang, kontak, nama projct untuk setiap project
yang dikerjakan oleh pegawsi berinisial Gede!
i. Tampilkan anggota keluarga dan nama pegawai dari pegawai dengan
nama berisi kata Indra, Indro dan Indri!
j. Tampilkan jumlah pegawai yang bekerja pada setiap project!

92
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL Job Sheet 9
Waktu : 4 x 50 Menit
Jurusan : Teknik Elektro Sub Query
Kelas/Sem : IIIB/3
Pertemuan 22 dan 23
Th Ajaran : 2021/2022

Job Sheet 9

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu
menggunakan sub query.

C. Indikator
1. Mahasiswa mampu memahami penggunaan klausa-klausa umum dalam
sub query
2. Mahasiswa mampu memanipulasi data dengan sub query

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web Server
dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
Subquery berarti query di dalam query. Dengan menggunakan subquery,
hasil query akan menjadi bagian dari query lain. Dalam sub query, akan ada
main query dan sub query. Ilustrasinya dapat dilihat sebagai berikut:

Subquery ini dapat berlangsung dalam klausa-klausa berikut:


1. Klausa SELECT
2. Klausa FROM

93
Basis Data

3. Klausa WHERE
Subquery bisa berada atau bersarang di dalam statement SELECT,
INSERT, UPDATE, atau DELETE atau di dalam subquery yang lainnya.
Kebanyakan subquery biasanya ditambahkan di dalam klausa WHERE.
Ada dua tipe subquery yaitu:
1. Single-row sub query : dimana sub query hanya menghasilkan
satu baris data saja. Ada beberapa operator yang digunakan
pada tipe ini yaitu: =, <, <=, >, >=, <>
2. Multi-row sub query : dimana sub query menghasilkan
beberapa baris data. Ada beberapa operator yang digunakan
untuk tipe ini yaitu : IN, SOME, ANY, ALL.

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
1. Buatlah database bernama jobsheet9_nim, lalu tambahkan tabel-tabel
berikut:

2. Isikan data seperti berikut:


Tabel rating

94
Basis Data

Tabel posisi

Tabel pemain_cadangan

Tabel pemain_utama

3. Berikut contoh sub query di dalam SELECT, dimana akan menampilkan


jumlah pemain cadangan dan jumlah pemain utama

95
Basis Data

4. Contoh berikut menampilkan nama dan nomor punggung pemain utama


dengan rating selain 1. Dalam hal ini, sub query diletakkan pada klausa
FROM. Sebenarnya hal ini juga dapat dilakukan tanpa adanya sub query.

5. Contoh berikut merupakan sub query di dalam FROM, untuk


menampilkan rata-rata total gaji yang dibayarkan pada pemain utama per
posisinya. Ini tentu berbeda dengan rata-rata dari gaji semua
pemain_utama.

6. Berikut merupakan contoh single-row sub query di dalam WHERE, yang


menampilkan data pemain utama yang posisinya bukan gelandang. Hal ini
juga bisa dilakukan dengan perintah INNER JOIN.

96
Basis Data

7. Berikut ini merupakan contoh penggunaan klausa IN. Klausa IN akan


mengembalikan data yang nilainya sama dengan kriteria-kriteria di dalam
IN. Dalam hal ini akan ditampilkan nama pemain yang posisinya bukan
kiper. Sub query menghasilkan jawaban : bek, gelandang, penyerang.
Sehingga yang ditampilkan adalah nama pemain dengan posisi bek,
gelandang dan penyerang. Hal ini juga bisa dilakukan dengan perintah
INNER JOIN.

Coba perhatikan hasil eksekusi sub query-nya:

97
Basis Data

Dengan demikian data yang akan ditampilkan adalah data nama pemain
dengan posisi 2, 3 dan 4

8. Berikut merupakan contoh penggunaan NOT IN, dimana akan ditampilkan


nama pemain utama yang ratingnya tidak berawalan baik. Hasil dari sub
query adalah semua rating berawalan kata Baik, sedangkan karena
operator dari query utama adalah NOT IN, maka yang ditampilkan adalah
yang tidak dihasilkan oleh sub query.

Perhatikan hasil sub query adalah sebagai berikut, maka yang akan
ditampilkan oleh query utama adalah semua pemain utama dengan rating
bukan 4 dan 5.

98
Basis Data

9. Berikut adalah contoh penggunaan klausa ANY. ANY biasanya digunakan


dengan operator perbandingan berada di depannya. Dalam contoh ini
akan menampilkan pemain cadangan dengan rating yang lebih tinggi dari
sembarang (salah satu) pemain utama dengan posisi 3.

Hasil dari sub query adalah 3 dan 5, sehingga jika ada pemain cadangan
yang memiliki rating 4 atau 5 akan ditampilkan, karena 4 dan 5 lebih besar
daripada 3. Penggunaan ANY tidak mengharuskan hasil lebih besar dari
semua hasil subquery.

10. Berikut adalah contoh penggunaan ANY dengan operator =


Di sini akan ditampilkan nama pemain utama yang memiliki rating di atas
3.

99
Basis Data

Hasil dari sub query adalah 4 dan 5, sehingga akan ditampilkan pemain
utama dengan rating 4 dan 5. Penggunaan =ANY memiliki makna yang
sama dengan klausa IN.

11. Berikut ini adalah contoh penggunaan SOME. SOME memiliki makna yang
sama dengan ANY.

12. Berikut ini adalah contoh penggunaan ALL. ALL dapat digunakan dengan
operator perbandingan di depannya. OR bermakna bahwa semua hasil di
dalam sub query harus dipenuhi tanpa terkecuali.

100
Basis Data

Hasil dari sub query adalah:

Karena hasil sub query adalah 4 dan 5, maka data pemain utama yang
dihasilkan adalah pemain utama dengan rating di bawah 4 dan di bawah
5, yaitu 1, 2 atau 3.

13. Berikut merupakan contoh lain penggunaan ALL yang ditempel dengan
operator <>.

Hasil dari sub query adalah rating pemain utama yang posisinya 3, yaitu
ratin 3 dan 5. Dengan demkian maka query utama akan menampilkan
pemain cadangan yang ratingnya tidak sama dengan 3 dan tidak sama
dengan 5, sehingga yang ditampilkan hanya pemain dengan rating 2 saja,
karena pada tabel cadangan adanya rating 2, 3 dan 5 (coba lihat isi tabel
pemain_cadangan).

101
Basis Data

Penggunaan <>ALL memiliki makna yang sama dengan NOT IN

14. Tampilkan data pemain cadangan yang gajinya di atas rata-rata.

15. Tampilkan pemain cadangan yang gajinya bukan gaji terkecil

H. Evaluasi
Buatlah database dengan nama jobsheet9_tugas_NIM. Lalu buatlah minimal 3
tabel yang saling terelasi. Isikan data ke dalam tabel-tabel Anda. Buatlah 2
contoh penggunaan subquery dengan operator perbandingan, 1 contoh
penggunaan ANY, 1 contoh penggunaan IN, 1 contoh penggunaan some dan 1
contoh penggunaan ALL.

102
Basis Data

103
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL Job Sheet 10
Waktu : 4 x 50 Menit
Jurusan : Teknik Elektro View
Kelas/Sem : IIIB/3
Pertemuan 25 dan 26
Th Ajaran : 2021/2022

Job Sheet 10

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu
menggunakan view.

C. Indikator
1. Mahasiswa mampu membuat view
D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web
Server dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
View merupakan virtual tabel yang menampilkan hasil dari perintah
SELECT yang dituliskan pada saat pembuatannya. View mirip seperti sebuah
tabel, di mana view berisi kolom dan baris data. Meskipun terlihat sama,
namun tidak seperti tabel, view tidak benar-benar menyimpan data. Data yang
ditampilkan oleh view sebenarnya berasal dari satu atau beberapa tabel yang
ada di dalam database. Penggunaan klausa WHERE, JOIN atau lainnya dapat
digunakan pada sebuah view, dengan cara yang sama seperti pada sebuah
tabel.
Cara pembuatan sebuah view adalah sebagai berikut:
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Cara pengubahan sebuah view adalah sebagai berikut:


ALTER VIEW view_name AS
SELECT column1, column2, ...

104
Basis Data

FROM table_name
WHERE condition;

Cara penghapusan sebuah view adalah sebagai berikut:


DROP VIEW view_name;

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
1. Gunakan database job sheet 8 untuk latihan dan bukalah query editor baru
2. Ketikkan perintah berikut untuk membuat view jurusan_mhs

3. Ketikkan perintah berikut untuk melihat data pada view jurusan_mhs

4. Ketikkan perintah berikut untuk mengubah view jurusan_mhs

5. Ketikkan perintah berikut untuk melihat data pada view jurusan_mhs


setelah diubah

6. Ketikkan perintah berikut untuk menghapus view jurusan_mhs

7. Ketikkan perintah berikut untuk melihat data pada view jurusan_mhs


setelah proses penghapusan dan jelaskan mengapa hasilnya demikian!

105
Basis Data

H. Evaluasi
Buatlah view untuk semua soal pada job sheet 8 evaluasi nomor 3!

106
Basis Data

107
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL Job Sheet 11
Waktu : 4 x 50 Menit
Jurusan : Teknik Elektro Stored Procedure
Kelas/Sem : IIIB/3
Pertemuan 27 dan 28
Th Ajaran : 2021/2022

Job Sheet 11

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu
menggunakan procedure dan fungsi.

C. Indikator
1. Mahasiswa mampu membuat procedure dan fungsi
2. Mahasiswa mampu memanggil procedure dan fungsi

D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web
Server dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
Stored procedure merupakan perintah-perintah yang telah dibuat
sebelumnya dan nantinya bisa dipanggil, sehingga perintah-perintah tersebut
dapat digunakan berulang-ulang. Apabila ada perintah SQL yang seringkali
digunakan berulang-ulang, maka ada baiknya dibuatkan prosedur, sehingga
lebih menghemat waktu penulisan perintah. Sama halnya dengan prosedur
pada bahasa pemrograman, prosedur dalam SQL juga dapat berisi parameter.
Cara pembuatan sebuah prosedur adalah sebagai berikut:
CREATE PROCEDURE procedure_name (paramater jika ada)
sql_statement

Cara menghapus sebuah prosedur adalah sebagai berikut:


DROP PROCEDURE procedure_name;

Cara pengubahan sebuah prosedur adalah sebagai berikut:


DROP PROCEDURE procedure_name;

108
Basis Data

CREATE PROCEDURE procedure_name (paramater jika ada)


sql_statement

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
1. Gunakan database job sheet 8 untuk latihan dan bukalah query editor baru
2. Ketikkan perintah berikut untuk membuat stored procedure untuk
menambahkan data mahasiswa

Keterangan :
• Delimiter adalah akhir dari sebuah perintah dalam SQL. Dalam
sebuah prosedur, seringkali ada banyak perintah, dan harus
diakhiri oleh delimiter yaitu semicolon (;) sebagai delimiter default,
oleh sebab itu, maka untuk mengakhiri prosedur, perlu dibuatkan
delimiter baru, misalnya tanda dolar (bisa juga tanda lain seperti $$
atau //)
• Sebelum membuat prosedur, set dulu delimiter dengan perintah
DELIMITER $ (pada baris 1), lalu kembalikan delimiter dengan
perintah DELIMITER ; (pada baris 9)
• Prosedur di atas memiliki 4 buah paramater
• Parameter disesuaikan dengan kebutuhan, misalnya jika ingin
menginput seluruh kolom pada mahasiswa, dan seluruh kolom
diinput oleh pengguna, maka jumlah paramter adalah 4 buah
dengan tipe data sesuai dengan tipe setiap kolom yang mau
ditambahkan

3. Ketikkan perintah berikut untuk mengeksekusi prosedur (memanggil)

109
Basis Data

Coba perhatikan, apakah terjadi error? Jika iya, maka jelaskan mengapa!
4. Ketikkan perintah berikut untuk mengubah prosedur
sp_INSERT_mahasiswa

5. Ketikkan kembali perintah nomor 3 dan perhatikan apakah ada error!

6. Ketikkan perintah berikut untuk melihat apakah data berhasil


ditambahkan

7. Ketikkan perintah berikut untuk membuat prosedur pencarian data


mahasiswa berdasarkan nim

8. Ketikkan perintah berikut untuk mengeksekusi prosedur pencarian nim

9. Ketikkan perintah berikut untuk membuat prosedur menampilkan data


jurusan

10. Ketikkan perintah berikut untuk mengeksekusi prosedur show jurusan

110
Basis Data

11. Ketikkan perintah berikut untuk membuat fungsi yang akan


menerjemahkan nilai angka ke dalam nilai huruf

12. Ketikkan perintah berikut untuk memanggil fungsi penerjemah nilai angka

H. Evaluasi
Gunakan database pada soal evaluasi job sheet 8 untuk mengerjakan soal-soal
berikut:
1. Buatlah prosedur untuk menambahkan data ke dalam tabel pegawai!
2. Buatlah prosedur untuk mengubah nama pegawai berdasarkan pada nip-
nya!
3. Buatlah prosedur untuk menampilkan jumlah keluarga yang dimiliki oleh
setiap pegawai!

111
Basis Data

4. Buatlah prosedur untuk menampilkan jumlah proyek yang dikerjakan oleh


setiap pegawai pada cabang tertentu (sesuai input parameter)!
5. Buatlah sebuah fungsi untuk menampilkan status dana dari suatu proyek.
Status dana dihitung sebagai berikut:
Dana >10M : besar
Dana 5M-10M : menengah
Dana 1M- <5M : kecil
Dana <1M : mikro

Fungsi akan mengembalikan status dana

6. Tampilkan nama project, dana dan status dananya. Tampilkan status dana
dengan memanggil fungsi yang dibuat pada soal nomor 5

112
Basis Data

113
Basis Data

POLITEKNIK NEGERI Dosen Pengampu :


BALI Putu Indah Ciptayani, M.Cs
Bidang Studi : TRPL Job Sheet 11
Waktu : 4 x 50 Menit
Jurusan : Teknik Elektro Trigger
Kelas/Sem : IIIB/3
Pertemuan 29 dan 30
Th Ajaran : 2021/2022

Job Sheet 12

A. Standar Kompetensi
Mahasiswa mampu merancangkan basis data relasional dan menggunakan
bahasa basis data dalam pengelolaannya

B. Kompetensi Dasar
Setelah mempelajari materi ini, mahasiswa diharapkan mampu
menggunakan trigger

C. Indikator
1. Mahasiswa mampu menggunakan trigger
D. Peralatan
1. Seperangkat computer yang sudah terinstal MySQL, Apache Web Server
dan browser atau SQLYog
2. Buku Ajar
3. Job sheet
4. Kertas A4 dan tinta printer untuk mencetak diagram pada praktikum

E. Teori
Trigger merupakan sekumpulan aksi yang dijalankan secara otomatis
ketika sebuah operasi tertentu dilakukan pada tabel. Operasi yang dimaksud
misalnya INSERT, UPDATE atau DELETE data pada tabel tertentu. Trigger
sangat berguna pada aksi-aksi seperti memastikan aturan, melakukan validasi
atau mencatat log.
Perintah untuk membuat trigger adalah sebagai berikut:

114
Basis Data

Keterangan :
trigger_time : kapan trigger akan dijalankan. Ada 2 jenis time yaitu : BEFORE
dan AFTER. Tentu saja ini mengindikasikan trigger akan
dijalankan sebelum atau sesudah terjadinya perubahan pada
tabel.
trigger_event : jenis operasi apa yang akan membuat trigger dijalankan.
Operasi yang dimaksud bisa INSERT, UPDATE atau DELETE.
table_name : nama tabel yang akan dimodifikasi oleh operasi pada
trigger_event. Trigger hanya bisa dibuat pada tabel permanen,
bukan temporary table ataupun view.
trigger_body : perintah SQL yang akan dilakukan saat trigger berjalan

F. Keselamatan Kerja
1. Ikuti langkah kerja yang ada pada job sheet
2. Perhatikan keamanan instalasi listrik saat menghidupkan dan
mematikan computer
3. Pastikan lingkungan kerja (meja, kursi dan computer) bersih, baik
sebelum maupun sesudah penggunaan
4. Jika ada hal yang kurang jelas, tanyakan kepada dosen pengampu

G. Langkah Kerja
1. Bukalah aplikasi SQLYog
2. Buat database northwind dengan langkah berikut:
3. Lakukan import pada file northwind.sql yang diberikan oleh pengampu
mata kuliah Anda, dengan mengikuti langkah berikut:

2 3

4. Klik tombol dengan tiga buah tanda titik

115
Basis Data

5. Cari direktori penyimpanan file northwind.sql, lalu pilih file dan klik
Open

6. Klik Execute

116
Basis Data

7. Anda akan memiliki database northwind lengkap dengan tabel-tabelnya


sekaligus isian datanya, dimana relasi antar tabelnya ditunjukkan oleh
gambar berikut:

8. Ketikkan perintah berikut untuk membuat trigger yang berfungsi


mengurangi stok barang pada saat terjadi transaksi penjualan barang

117
Basis Data

Keterangan :
NEW : menunjukkan item yang baru saja diisi. Dalam contoh di atas
adalah kolom Quantity yang baru saja diisi ke dalam tabel order details
dan productID yang baru diisi ke dalam tabel order details

Selain NEW, ada juga istilah OLD. OLD mengacu pada data lama, misalnya
kolom lama yang akan diubah atau dihapus.

9. Ketikkan perintah SQL berikut untuk mengetahui stok barang saat ini

Pastikan Anda mengingat berapa stoknya

10. Ketikkan perintah SQL berikut untuk menambah sebuah transaksi


penjualan barang

11. Eksekusi kembali perintah SQL pada soal 9, dan perhatikan apakah stok
barang berkode 1 telah berkurang sebanyak 2 buah!

H. Evaluasi
1. Buatlah trigger untuk menangani perubahan stok product apabila terjadi
pengubahan data pada order details!
2. Buatlah trigger untuk menangani perubahan stok product apabila terjadi
penghapusan data pada order details!
3. Buatlah sebuah tabel bernama log_shippers dengan kolom-kolom sebagai
berikut:
ID INT AUTO INCREMENT, ShipperID INT, waktu DATETIME, aksi
VARCHAR(20)

4. Buatlah trigger pada tabel shipper untuk menangani aksi penambahan


data pada tabel shippers. Adapun yang terjadi setelah penambahan data
adalah penambahan sebuah baris data ke dalam tabel log_shippers
dengan isian shipperID sesuai data yang disisipkan, waktu berisi waktu
saat insert data dan aksi berisi nilai TAMBAH DATA
5. Buatlah trigger pada tabel shipper untuk menangani aksi pengubahan
data pada tabel shippers. Adapun yang terjadi setelah pengubahan data
adalah penambahan sebuah baris data ke dalam tabel log_shippers
dengan isian shipperID sesuai data yang diubah, waktu berisi waktu saat
ubah data dan aksi berisi nilai UBAH DATA
6. Buatlah trigger pada tabel shipper untuk menangani aksi penghapusan
data pada tabel shippers. Adapun yang terjadi setelah penghapusan data
adalah penambahan sebuah baris data ke dalam tabel log_shippers

118
Basis Data

dengan isian shipperID sesuai data yang dihapus, waktu berisi waktu saat
hapus data dan aksi berisi nilai HAPUS DATA

119

Anda mungkin juga menyukai