Anda di halaman 1dari 15

Tugas Personal ke-2

(Minggu 7 / Sesi 11)

Sebuah system informasi mengenai buku tamu dibuat oleh perusahaan consultant di Kota J.
pada design databasenya menggunakan class diagram sebagai berikut ini:

Setelah dianalisis ulang ternyata desain tersebut masih belum normal, cara pembuktian bahwa
design tersebut belum normal bisa menggunakan sifat dari 3 anomali yang terjadi yaitu
insertion anomaly, update anomali dan deletion anomaly. Anda bisa melakukan percobaan
sebagai berikut:

1. Siapkan dua jenis data satu untuk input dan satu lagi untuk update atau delete untuk
setiap tabel.

Introduction to Database System


Jawaban :
Berikut data yang sudah diinsertkan kedalam tabel ruang.

Berikut data yang sudah diinsertkan kedalam tabel bagian.

Berikut data yang sudah diinsertkan kedalam tabel level.

Berikut data yang sudah diinsertkan kedalam tabel tamu.

Introduction to Database System


2. Insert dua buah data pada tabel ruang, bagian dan level.
Jawaban :
2.1. Melakukan insert pada tabel ruang.
INSERT INTO `ruang` (`id_ruang`,
`nama_ruang`) VALUES ('RU3', 'Ruang IT'),
('RU4', 'Ruang SDM');

2.2. Melakukan insert pada tabel bagian.


INSERT INTO `bagian` (`id_bagian`,
`nama_bagian`) VALUES ('BGN7', 'IT'), ('BGN8',
'SPI');

2.3. Melakukan insert pada tabel levels.


INSERT INTO `levels` (`id_level`,
`levels`, `keterangan`) VALUES ('LV7',
'General Manager', 'Aktif'), ('LV8', 'Vice
President', 'Tidak Aktif');

3. Insert 6 buah data pada pegawai.


Jawaban :
INSERT INTO `pegawai` (`id_pegawai`, `nama_pegawai`, `alamat_email`,
`password`, `handphone`, `alamat`, `status`, `id_level`, `id_bagian`, `id_ruang`)
VALUES ('PG5', 'thika', 'thika@binus.ac.id', 'XXXXXXXX', '6281248905559', '
Yogyakarta Yogyakarta', 'Sudah Menikah', 'LV2', 'BGN2', 'RU2'),('PG6', 'titan',

Introduction to Database System


'titan@binus.ac.id', 'XXXXXXXX', '6281248905560', ' Jakarta Jakarta', 'Sudah
Menikah', 'LV4', 'BGN1', 'RU1'),('PG7', 'faniru', 'faniru@binus.ac.id', 'XXXXXXXX',
'6281248905561', ' Jakarta Jakarta', 'Sudah Menikah', 'LV4', 'BGN2', 'RU2'),('PG8',
'siti', 'siti@binus.ac.id', 'XXXXXXXX', '6281248905562', ' Jakarta Jakarta', 'Sudah
Menikah', 'LV1', 'BGN2', 'RU2'),('PG9', 'agus', 'agus@binus.ac.id', 'XXXXXXXX',
'6281248905563', ' Jakarta Jakarta', 'Sudah Menikah', 'LV5', 'BGN3', 'RU3');

4. Tampilkan hasilnya, secara keseluruhan.


Jawaban : Terlampir pada nomor 3.
5. Gunakan join untuk memperlihatkan isi data secara baik tanpa adanya foreign key.
Jawaban :
Untuk menggabungkan kolom dari beberapa tabel pegawai, ruang, level dan bagian ke
tabel hasil yang dimaksud, perlu menggunakan operasi gabungan SQL yang
menggabungkan informasi dari ke empat tabel tersebut diatas dengan membentuk
pasangan baris terkait dari empat tabel diatas. Pasangan baris yang membentuk tabel
gabungan adalah kolom yang cocok dengan masing-masing tabel yang lainnya dengan
nilai yang sama seperti id_bagian dari tabel pegawai dengan id_bagian pada tabel
bagian. Berikut operasi gabungan dengan melakukan inner join dari tabel pegawai
terhadap tabel bagian, ruang dan levels.
SELECT pegawai.id_pegawai, pegawai.nama_pegawai, pegawai.status, bagian.nama_bagian,l

evels.levels,ruang.nama_ruang FROM (((pegawai INNER JOIN bagian ON pegawai.id_bagian =

bagian.id_bagian) INNER JOIN levels ON pegawai.id_level = levels.id_level) INNER JOIN


ruang ON pegawai.id_ruang = ruang.id_ruang)

Introduction to Database System


6. Update data pada tabel ruang, bagian dan level.
Jawaban :
6.1. Melakukan update pada tabel bagian.

UPDATE `bagian` SET `nama_bagian` = 'Niaga


Pelayanan' WHERE `bagian`.`id_bagian` =
'BGN1'; UPDATE `bagian` SET `nama_bagian`
= 'Keuangan
Akuntansi' WHERE `bagian`.`id_bagian` =
'BGN2';

6.2. Melakukan update pada tabel ruang.


UPDATE `ruang` SET `nama_ruang` = 'Ruang
Niaga
Pelayanan' WHERE `ruang`.`id_ruang` = 'RU1';
UPDATE `ruang` SET `nama_ruang` = 'Ruang
Keuangan
Akuntansi' WHERE `ruang`.`id_ruang` = 'RU2';

Introduction to Database System


6.3. Melakukan update pada tabel levels.

UPDATE `levels` SET `levels` =


'Fungsional
I' WHERE `levels`.`id_level` =
'LV1'; UPDATE `levels` SET `l
evels` = 'SPV
Dasar' WHERE `levels`.`id_leve
l` = 'LV2';

7. Gunakan join untuk memperlihatkan isi data secara baik tanpa adanya foreign key.
Jawaban :
Melakukan inner join percobaan ke dua setelah dilakukan update pada tabel bagian,
ruang dan level.
SELECT pegawai.id_pegawai, pegawai.nama_pegawai, pegawai.status, bagi
an.nama_bagian,levels.levels,ruang.nama_ruang FROM (((pegawai INNER J
OIN bagian ON pegawai.id_bagian = bagian.id_bagian) INNER JOIN levels
ON pegawai.id_level = levels.id_level) INNER JOIN ruang ON pegawai.i
d_ruang = ruang.id_ruang)

8. Hapus salah salah satu data pada pegawai.


Jawaban :
8.1. Menampilkan data pegawai sebelum dilakukan penghapusan.
SELECT * FROM `pegawai

Introduction to Database System


8.2. Melakukan penghapusan data pegawai dengan id_pegawai PG3 dan
menampilkan data pegawai setelah dilakukan penghapusan.

DELETE FROM `pegawai` WHERE `pegawai`.`id_pegawai` = 'PG3'

SELECT * FROM `pegawai

9. Lakukan analisis apakah ada pengaruh atau tidak terhadap tabel ruang, bagian dan level.
Jawaban :
9.1. Melakukan pengecekan terhadap tabel ruang, tabel bagian, tabel levels.

Tabel ruang Tabel bagian

Introduction to Database System


Tabel level

Pada saat dilakukan operasi gabungan inner join pertama dan ke dua id_pegawai,
nama_bagian, levels, nama_ruang, id_pegawai digunakan sebagai data patokan/unique. Ketika
dilakukan inner join maka hasilnya dapat dilihat pada jawaban nomor 5, namun jika
id_pegawai dilakukan update dan delete dengan posisi foreign key yaitu id_bagian, id_levels,
id ruang yang masih berkaitan maka perintah update dan delete tersebut akan gagal. Berbeda
apabila id_pegawai tersebut dilaukan penghapusan dengan posisi foreign key yang tidak pada
posisi running maka perintah hapus tersebut berhasil dilakukan.

10. Ulangi langkah tersebut sehingga setiap tabel benar-benar normal.


Jawaban :
Relasi pegawai, ruang, level, dan bagian tersebut sudah dalam keadaan normal bentuk
ke 3 karena tidak adanya ketergantungan transitif. Karena sudah dilakukan perubahan
sejak awal pada pembuatan tabel pegawai yang terdapat duplicate field pada id_level.

11. Jika terjadi perubahan gambarkan perubahannya dan tuliskan SQL DDL yang baru
berdasarkan perubahan desain class diagram yang telah dilakukan.
Jawaban :
11.1. Perubahan duplicate id_levelpada tabel pegawai dan diganti dengan id_ruang.
Pada saat dilakukan pembuatan tabel pegawai seperti class diagram diatas
Ketika akan di eksekusi perintah create tabel akan gagal karena adanya duplicate pada
field id_level. Sehingga dilakukan perubahan DDL sebagai berikut :

Introduction to Database System


CREATE TABLE pegawai (id_pegawai varchar(10) NOT NULL
AUTO_INCREMENT, nama_pegawai varchar(20) NOT NULL, alamat_email
varchar(30) NOT NULL, password varchar(20) NOT NULL, handphone varchar(15)
NOT NULL, alamat varchar(50) NOT NULL, status varchar(10) NOT NULL,
id_levels varchar(10) NOT NULL, id_bagian varchar(10) NOT NULL, id_ruang
varchar(10) NOT NULL, PRIMARY KEY (`id_pegawai`(10)));

11.2. Perubahan nama tabel dan filed level dengan ditambahkan akhiran -s menjadi
levels.
Pada SQL level merupakan sebuah perintah Query sehingga apabila pada pembuatan
tabel level tidak ditambahkan dengan akhiran -s maka pada saat dilakukan query akan
memunculkan hasil yang berbeda.
CREATE TABLE levels (id_level varchar(10) NOT NULL AUTO_INCREMENT,
levels varchar(20) NOT NULL, keterangan varchar(50) NOT NULL, PRIMARY KEY
(`id_level`(10)));

11.3. Penghapusan nama_pegawai pada tabel tamu.

Karena pada tabel tamu sudah terdapat id_pegawai sebagai foreign key terhadap Primay
key id_pegawai pada tabel pegawai. Field nama_pegawai pada tabel tamu
menyebabkan redudansi data apabila tidak dilakukan penghapusan.

ALTER TABLE `tamu` DROP `nama_pegawai`;

Introduction to Database System


Tabel Hasil Query Select pada Tabel Tamu

12. Tuliskan SQL DML untuk setiap tabel class diagram baru.
Jawaban :
Data Manipulation Language atau yang biasanya disingkat DML merupakan perintah
yang digunakan untuk melakukan manipulasi data.
Perintah DML terbagi ke dalam empat jenis yaitu sebagai berikut :
1. SELECT berfungsi untuk menampilkan data dari database.
2. INSERT berfungsi untuk menambahakan data dari tabel pada database.
3. UPDATE berfungsi untuk merubah data dari tabel pada database.
4. DELETE berfungsi untuk menghapus data dari tabel pada database.

12.1. Berikut perintah DML SELECT pada tabel pegawai


SELECT * FROM `pegawai`

Tabel hasil Query DML SELECT pada tabel pegawai

Introduction to Database System


12.2. Berikut perintah DML INSERT pada tabel pegawai

INSERT INTO `pegawai` (`id_pegawai`, `nama_pegawai`, `alamat_email`, `password`, `hand

phone`, `alamat`, `status`, `id_level`, `id_bagian`, `id_ruang`) VALUES ('PG2', 'Muha

mmad Ikhwan', 'muh.ikhwan@binus.ac.id', 'XXXXXXXX', '6281248905556', 'Nogopuro

Sleman', 'Belum Menikah', 'LV1', 'BGN1', 'RU1')

Tabel hasil Query DML INSERT pada tabel pegawai

12.3. Berikut perintah DML UPDATE pada tabel Pegawai

UPDATE `pegawai` SET `nama_pegawai` = 'Sonny Aji

Arbinta', `alamat_email` = 'sonny.aji.arbinta@binus.ac.id', `handphone` = '6212345678

91' WHERE `pegawai`.`id_pegawai` = 'PG1';

Tabel hasil Query DML UPDATE pada tabel pegawai

Introduction to Database System


12.4. Berikut perintah DML DELETE pada tabel Pegawai

DELETE FROM `pegawai` WHERE `pegawai`.`id_pegawai` = 'PG9';

12.5. Perintah DML SELECT, INSERT, UPDATE pada tabel bagian, ruang, dan
levels sama dengan jawaban pada nomor 1,2, dan 6.

13. Tuliskan SQL untuk pembuatan laporan jika terdiri dari nama tamu, jumlah tamu, nama
institusi, nama pegawai dan bagian pegawai, detail keperluan, notulen, berdasarkan
bagian pegawai.
Jawaban :
SELECT tamu.nama_tamu, tamu.jumlah_tamu, tamu.nama_instansi, pegawai.nama_pegawai, ba

gian.nama_bagian, tamu.detail_keperluan, tamu.notulen FROM (((tamu INNER JOIN pegawai

ON tamu.id_pegawai = pegawai.id_pegawai)
INNER JOIN bagian ON pegawai.id_bagian = bagian.id_bagian) WHERE nama_bagian ="Niaga
Pelayanan"

Berikut tampilan hasil query yang terdiri dari nama tamu, jumlah tamu, nama institusi,
nama pegawai dan bagian pegawai, detail keperluan, notulen, berdasarkan bagian
pegawai.

Tabel Query Inner Join

Introduction to Database System


14. Tuliskan SQL untuk pembuatan laporan jika terdiri dari nama tamu, jumlah tamu, nama
institusi, nama pegawai dan bagian pegawai, detail keperluan, notulen, berdasarkan
keperluan.
Jawaban :

SELECT tamu.nama_tamu, tamu.jumlah_tamu, tamu.nama_instansi, pegawai.nama_pegawai, ba

gian.nama_bagian, tamu.detail_keperluan, tamu.notulen FROM ((tamu INNER JOIN pegawai

ON tamu.id_pegawai = pegawai.id_pegawai) INNER JOIN bagian ON pegawai.id_bagian = bagi


an.id_bagian) WHERE keperluan ="Konsultasi"

Berikut tampilan hasil query yang terdiri dari nama tamu, jumlah tamu, nama institusi,
nama pegawai dan bagian pegawai, detail keperluan, notulen, berdasarkan keperluan
“Konsultasi”.

Introduction to Database System


15. Dari no 13 dan 14 buatlah grafik laporannya berdasarkan SQL pada no. 13 dan 14
menggunakan XML atau XML Query.
Jawaban :
15.1. Berikut tampilan eksekusi pada XML Mysql untuk nomor soal 13 hasil query
yang terdiri dari nama tamu, jumlah tamu, nama institusi, nama pegawai dan bagian
pegawai, detail keperluan, notulen, berdasarkan nama_bagian pegawai.

Introduction to Database System


15.2. Berikut tampilan eksekusi pada XML Mysql untuk nomor soal 14 hasil query
yang terdiri dari nama tamu, jumlah tamu, nama institusi, nama pegawai dan bagian
pegawai, detail keperluan, notulen, berdasarkan keperluan.

Referensi :

1. Lectur Note
2. https://www.w3schools.com/

---oOo---

Introduction to Database System

Anda mungkin juga menyukai