• Tidak ada hasil yang ditemukan

Penjelasan Studi Kasus Kapal Laut

Bab 9. Studi Kasus

A. Penjelasan Studi Kasus Kapal Laut

Pada bab ini dibuat sebuah studi kasus dimana pada operasional sebuah kapal laut terdapat nama kapal laut pada tabel kapal, biodata singkat nahkoda pada tabel nahkoda, sekilas training nahkoda pada tabel training. Ketiga tabel diatas merupakan tabel master sebagai tabel utama yang diakses oleh tabel lain dalam sebuah relasi.

Selanjutnya terdapat tabel job sebagai tabel yang menyimpan jadwal nahkoda berlayar dengan kapal tertentu. Tabel tutor training merupakan tabel yang berisi daftar nahkoda senior yang berhak memberikan training pada nahkoda junior. Tabel mengikuti_training merupakan tabel yang menyimpan jadwal nahkoda junior yang mengikuti training

Gambar 9 Desain database kapal_laut

B. DDL Kapal Laut

create database kapal_laut;

use kapal_laut;

# TABEL NAHKODA create table nahkoda ( id_nahkoda int (3) not null, nama_nahkoda char(15) not null, rating int (2),

umur int (2),

PRIMARY KEY (id_nahkoda) );

show tables;

desc nahkoda;

insert into nahkoda values ('22', 'Mulyadi','7','45');

insert into nahkoda values ('29', 'Antoni','1','28');

insert into nahkoda values ('31', 'Eko Lelono','8','55');

insert into nahkoda values ('32', 'Mike','8','35');

insert into nahkoda values ('58', 'Lewis','8','44');

insert into nahkoda values ('64', 'Saputro','9','63');

insert into nahkoda values ('71', 'Eka Hadi','3','29');

insert into nahkoda values ('74', 'Dede H','3','30');

insert into nahkoda values ('85', 'Hanan S','5','37');

insert into nahkoda values ('95', 'Surendra','5','35');

select * from nahkoda;

# TABEL KAPAL create table kapal ( id_kapal int (3) not null, nama_kapal char(15) not null, warna_kapal char (10),

PRIMARY KEY (id_kapal) );

show tables;

desc kapal;

insert into kapal values ('101', 'Jaya Loka','Merah');

insert into kapal values ('102', 'Jaya Loka','Biru');

insert into kapal values ('103', 'Makmur Abadi','Hijau');

#TABEL JOB create table job (

id_nahkoda int (3) not null, id_kapal int (3) not null, tanggal date,

PRIMARY KEY (id_nahkoda,id_kapal) );

show tables;

desc job;

insert into job values ('22','101','2016-9-5');

insert into job values ('22','102','2016-9-8');

insert into job values ('22','103','2016-9-15');

insert into job values ('22','104','2016-9-20');

insert into job values ('31','102','2016-10-8');

insert into job values ('31','103','2016-10-15');

insert into job values ('31','104','2016-10-2');

insert into job values ('64','101','2016-10-5');

insert into job values ('64','102','2016-11-8');

insert into job values ('74','103','2016-11-15');

insert into job values ('29','104','2016-11-20');

insert into job values ('32','101','2016-11-5');

insert into job values ('58','104','2016-12-20');

insert into job values ('85','102','2016-12-8');

insert into job values ('85','103','2016-12-15');

insert into job values ('95','101','2016-12-5');

select * from job;

#TABEL training create table training (

id_training char (5) not null, nama_training char(40) not null, PRIMARY KEY (id_training) );

show tables;

desc training;

insert into training values ('TN_01','Training Nahkoda Muda');

insert into training values ('TN_02','Training Manajemen Kapal');

insert into training values ('TN_03','Training Mesin Kapal');

insert into training values ('TN_04','Training Nahkoda Menengah');

insert into training values ('TN_05','Training Nahkoda Mahir');

select * from training;

#TABEL mengikuti_training create table mengikuti_training ( id_training char (5) not null, id_nahkoda int (3) not null,

PRIMARY KEY (id_training,id_nahkoda) );

show tables;

desc mengikuti_training;

insert into mengikuti_training values ('TN_01','29');

insert into mengikuti_training values ('TN_02','29');

insert into mengikuti_training values ('TN_03','29');

insert into mengikuti_training values ('TN_02','71');

insert into mengikuti_training values ('TN_03','71');

insert into mengikuti_training values ('TN_05','85');

insert into mengikuti_training values ('TN_05','95');

select * from mengikuti_training;

C. DML Kapal Laut

1. Database KAPAL_LAUT

Tabel 10 Tabel isi dari entitas Nahkoda Tabel : Nahkoda

id_nahkoda nama_nahkoda rating umur

22 Mulyadi 7 45

29 Antoni 1 28

31 Eko Lelono 8 55

32 Mike 8 35

58 Lewis 8 44

64 Saputro 9 63

71 Eka Hadi 3 29

74 Dede H 3 30

85 Hanan S 5 37

95 Surendra 5 35

Tabel 11 Tabel isi dari entitas Kapal Tabel : Kapal

id_kapal nama_kapal warna_kapal

101 Jaya Loka Merah

102 Jaya Loka Biru

103 Makmur Abadi Hijau 104 Bintang Ufuk Hijau 105 Bintang Ufuk Merah

Tabel 12 Tabel isi dari entitas Job Tabel : Job

id_nahkoda nama_kapal tanggal

22 101 2016-9-5

Tabel 13 Tabel isi dari entitas Mengikuti_training Tabel : Mengikuti_training

id_training id_nahkoda

TN_01 29

Tabel 14 Tabel isi dari entitas Training TABEL : Training

id_training nama_training TN_01 Training Nahkoda Muda TN_02 Training Manajemen Kapal TN_03 Training Mesin Kapal

TN_04 Training Nahkoda Menengah TN_05 Training Nahkoda Mahir

2. Query Nahkoda

a. Usia Nahkoda tertua yang tersimpan dalam database select max(umur) from nahkoda;

id_nahkoda nama_nahkoda rating umur

64 Saputro 9 63

b. Nahkoda dengan ID tertinggi yang tersimpan dalam database

Select max(id_nahkoda) from nahkoda;

id_nahkoda nama_nahkoda rating umur

95 Surendra 5 35

c. Jumlah Nahkoda yang terdaftar dalam database select count(*) from nahkoda;

10

d. Nahkoda yang memiliki "di" dalam namanya

Select*from nahkoda where nama_nahkoda like '%di%';

id_nahkoda nama_nahkoda rating umur

22 Mulyadi 7 45

71 Eka Hadi 3 29

e. Nahkoda yang memiliki huruf E dalam namanya Select*from nahkoda where nama_nahkoda like '%E%';

id_nahkoda nama_nahkoda rating umur

f. Nahkoda yang mendekati masa pensiun (>=58 tahun) Select * from nahkoda where umur >=58;

id_nahkoda nama_nahkoda rating umur

64 Saputro 9 63

g. Nahkoda muda yang baru bergabung (antara 23 sampai 35 tahun)

SELECT * from nahkoda where umur between 23 and 35;

id_nahkoda nama_nahkoda rating umur

29 Antoni 1 28

32 Mike 8 35

71 Eka Hadi 3 29

74 Dede H 3 30

95 Surendra 5 35

h. Nahkoda dengan prestasi baik (rating >=7) Select * from nahkoda where rating >=7;

id_nahkoda nama_nahkoda rating umur

22 Mulyadi 7 45

31 Eko Lelono 8 55

32 Mike 8 35

58 Lewis 8 44

64 Saputro 9 63

i. Nahkoda muda butuh training (umur<=35 tahun dan rating<=2)

id_nahkoda nama_nahkoda rating umur

32 Mike 8 35

j. Nahkoda muda butuh training (umur<=35 tahun dan rating<=2)

Select * from nahkoda where umur <= 35 and rating <= 2;

id_nahkoda nama_nahkoda rating umur

29 Antoni 1 28

k. Rating terendah nahkoda yang disimpan dalam database select min(rating) from nahkoda;

1

l. Rating tertinggi nahkoda yang disimpan dalam database select max(rating) from nahkoda;

9

m. Nahkoda yang berumur 36 sampai dengan 54 tahun SELECT id_nahkoda, nama_nahkoda, umur

from nahkoda where umur between 36 and 54;

id_nahkoda nama_nahkoda usia_nahkoda

22 Mulyadi 45

58 Lewis 44

85 Hanan S 37

n. Nahkoda dengan rasio baik (perbandingan umur dan rating <=10)

select * from nahkoda

having umur/rating<=10;

id_nahkoda nama_nahkoda rating umur

o. Tampilkan data nahkoda tertua yang disimpan di databaseselect * from nahkoda

where umur IN (select max(umur) from select * from nahkoda

where umur >=ALL (select umur from nahkoda);

id_nahkoda nama_nahkoda rating umur

64 Saputro 9 63

p. Data Nahkoda yang tidak dapat job select * from nahkoda

where id_nahkoda NOT IN (select id_nahkoda from job);

id_nahkoda nama_nahkoda rating umur

71 Eka Hadi 3 29

q. Data Kapal yang mendapat job dan tersimpan dalam database

select * from kapal

where id_kapal IN (select id_kapal from job);

id_kapal nama_kapal warna_kapal

101 Jaya Loka Merah

102 Jaya Loka Biru

r. Data Kapal yang tidak mendapat job select * from kapal

where id_kapal NOT IN (select id_kapal from job);

s. Tampilkan data nahkoda dan jobnya diurutkan id_nahkoda

select * from nahkoda

where id_nahkoda IN (select distinct(id_nahkoda) from job);

id_nahkoda nama_nahkoda rating umur

22 Mulyadi 7 45

t. Tampilkan data nahkoda dan jobnya diurutkan rating select rating, id_nahkoda, nama_nahkoda,umur

from nahkoda

where id_nahkoda IN (select id_nahkoda from job) ORDER BY rating desc;

rating id_nahkoda nama_nahkoda umur

9 64 Saputro 63

id_kapal nama_kapal warna_kapal

101 Jaya Loka Merah

3. Query Kapal

a. Jumlah Nahkoda yang terdaftar dalam database dengan nama alias Jumlah_Nahkoda

select count(*) AS Jumlah_Nahkoda from kapal;

b. Jumlah kapal berwarna hijau

select count(*) from kapal where warna_kapal='Hijau';

2

c. Jumlah kapal JAYA LOKA

select count(*) from kapal where nama_kapal='Jaya Loka';

2

d. Tampilkan data kapal BINTANG UFUK

select * from kapal where nama_kapal='Bintang Ufuk';

e. tampilkan id_kapal untuk kapal MAKMUR ABADI select id_kapal from kapal where nama_kapal='Makmur Abadi';

f. Tampilkan nama kapal yang tersimpan dalam database select distinct(nama_kapal) from kapal;

Jumlah_Nahkoda 5

id_kapal nama_kapal warna_kapal 104 Bintang Ufuk Hijau

105 Bintang Ufuk Merah

id_kapal 103

nama_kapal Jaya Loka

g. Tampilkan warna kapal yang ada pada database select distinct(warna_kapal) from kapal;

4. Query Job

a. Nahkoda paling banyak job

SELECT id_nahkoda, count(*) as masing2 From job

GROUP BY id_nahkoda;

id_nahkoda masing2

22 4

b. Nahkoda yang dapat job paling banyak SELECT id_nahkoda, count(*) as 'masing2'

from job

GROUP BY id_nahkoda ORDER BY 'masing2' ASC LIMIT 1;

id_nahkoda masing2

22 4

c. Jumlah job yang tersimpan dalam database select id_nahkoda from nahkoda

where id_nahkoda IN (select id_nahkoda from job);

warna_kapal Merah

Biru Hijau

id_nahkoda

d. Jumlah job yang tersimpan dalam database dengan nama alias Banyak_job

select count(*) AS banyak_job from job;

banyak_job 16

e. Kapal yang mendapat job dan tersimpan dalam database select distinct(nama_kapal) from kapal

where id_kapal IN (select id_kapal from job);

nama_kapal Jaya Loka Makmur Abadi Bintang Ufuk

f. Menampilkan job sesuai urutan tanggal job tersebut, khusus yang dilaksanakan bulan september

select tanggal, id_nahkoda, id_kapal from job

ORDER BY tanggal ASC LIMIT 4;

tanggal id_nahkoda id_kapal

2016-9-5 22 101

2016-9-8 22 102

2016-9-15 22 103

2016-9-20 22 104

2016-12-5 95 101

2016-12-8 85 102

2016-12-15 85 103

2016-12-20 58 104

2016-11-5 32 101

2016-11-8 64 102

2016-11-15 74 103

2016-11-20 29 104

2016-10-5 64 101

2016-10-8 31 102

2016-10-15 31 103

2016-10-20 31 104

5. Query Join

a. Data Nahkoda sesuai job per tanggal nya

select b.tanggal,a.id_nahkoda, a.nama_nahkoda, a.rating, a.umur

from nahkoda a, job b

where a.id_nahkoda=b.id_nahkoda;

tanggal id_nahkoda nama_nahkoda rating umur

05/09/2016 22 Mulyadi 7 45

08/09/2016 22 Mulyadi 7 45

15/09/2016 22 Mulyadi 7 45

20/09/2016 22 Mulyadi 7 45

20/11/2016 29 Antoni 1 28

08/10/2016 31 Eko Lelono 8 55

15/10/2016 31 Eko Lelono 8 55

02/10/2016 31 Eko Lelono 8 55

05/11/2016 32 Mike 8 35

20/12/2016 58 Lewis 8 44

05/10/2016 64 Saputro 9 63

08/11/2016 64 Saputro 9 63

15/11/2016 74 Dede H 3 30

08/12/2016 85 Hanan S 5 37

15/12/2016 85 Hanan S 5 37

05/12/2016 95 Surendra 5 35

b. Data Kapal yang mendapat job dan tersimpan dalam database diurutkan pada tanggal job nya

select b.tanggal, a.id_kapal, a.nama_kapal, a.warna_kapal from kapal a, job b

where a.id_kapal=b.id_kapal ORDER BY tanggal;

tanggal id_kapal nama_kapal warna_kapal 20/09/2016 104 Bintang

Ufuk Hijau

02/10/2016 104 Bintang

Ufuk Hijau 20/11/2016 104 Bintang

Ufuk Hijau 20/12/2016 104 Bintang

Ufuk Hijau

c. Tampilkan data kapal yang berlayar 15 september 2016 select b.tanggal, a.id_kapal, a.nama_kapal, a.warna_kapal from kapal a, job b

where a.id_kapal=b.id_kapal AND tanggal ='2016-9-5';

tanggal id_kapal nama_kapal warna_kapal 05/09/2016 101 Jaya Loka Merah

d. Tampilkan record pada tabel job yang nahkodanya memiliki rating 9 ?

select b.tanggal,a.id_nahkoda, a.nama_nahkoda from nahkoda a, job b

tanggal id_nahkoda nama_nahkoda

05/10/2016 64 Saputro

08/11/2016 64 Saputro

e. Tampilkan job yang nahkodanya memiliki rating 7 sampai 9 diurutkan dari tanggal terlama

select b.*

from nahkoda a, job b

where a.id_nahkoda=b.id_nahkoda AND a.rating BETWEEN 7 AND 9

order by tanggal asc;

id_nahkoda id_kapal tanggal

22 101 05/09/2016

f. Tampilkan data peserta training beserta nama training yang tersimpan di database

select b.id_nahkoda, c.nama_nahkoda, a.nama_training from training a, mengikuti_training b, nahkoda c where a.id_training=b.training,

b.id_nahkoda=c.id_nahkoda ;

id_nahkoda nama_nahkoda nama_training

29 Antoni Training Nahkoda

Muda

29 Antoni Training Manajemen Kapal

71 Eka Hadi Training Manajemen Kapal

29 Antoni Training Mesin Kapal 71 Eka Hadi Training Mesin Kapal 85 Hanan S Training Nahkoda

Mahir

95 Surendra Training Nahkoda Mahir

g. Data Nahkoda yang berlayar pada bulan November select b.tanggal,a.id_nahkoda, a.nama_nahkoda from nahkoda a, job b

where a.id_nahkoda=b.id_nahkoda LIMIT 4;

tanggal id_nahkoda nama_nahkoda rating umur

05/09/2016 22 Mulyadi 7 45

08/09/2016 22 Mulyadi 7 45

15/09/2016 22 Mulyadi 7 45

20/09/2016 22 Mulyadi 7 45

h. Tampilkan id_nahkoda yang mengikuti training dan nama_training yang diikuti

SELECT mengikuti_training.id_nahkoda, training.nama_training

FROM training RIGHT JOIN mengikuti_training

ON training.id_training=mengikuti_training.id_training;

id_nahkoda nama_training 29 Training Nahkoda Muda 29 Training Manajemen Kapal 71 Training Manajemen Kapal 29 Training Mesin Kapal 71 Training Mesin Kapal

i. Data Nahkoda keseluruhan agar terlihat Nahkoda yang tidak mendapat job

select job.tanggal,nahkoda.id_nahkoda,

nahkoda.nama_nahkoda, nahkoda.rating, nahkoda.umur from nahkoda LEFT JOIN job

ON nahkoda.id_nahkoda=job.id_nahkoda;

tanggal id_nahkoda nama_nahkoda rating umur

05/09/2016 22 Mulyadi 7 45

08/09/2016 22 Mulyadi 7 45

15/09/2016 22 Mulyadi 7 45

20/09/2016 22 Mulyadi 7 45

20/11/2016 29 Antoni 1 28

08/10/2016 31 Eko Lelono 8 55

15/10/2016 31 Eko Lelono 8 55

02/10/2016 31 Eko Lelono 8 55

05/11/2016 32 Mike 8 35

20/12/2016 58 Lewis 8 44

05/10/2016 64 Saputro 9 63

08/11/2016 64 Saputro 9 63

NULL 71 Eka Hadi 3 29

15/11/2016 74 Dede H 3 30

08/12/2016 85 Hanan S 5 37

15/12/2016 85 Hanan S 5 37

05/12/2016 95 Surendra 5 35

D. DML Nested Soal Kapal Laut

1. Tampilkan data kapal yang berlayar yang berwarna hijau ! select * from kapal where id_kapal in (select id_kapal from job where warna_kapal ='hijau');

id_kapal nama_kapal warna_kapal 103 Makmur Abadi Hijau

104 Bintang Ufuk Hijau

2. Tampilkan rata rata umur nahkoda yang tidak mengikuti training dengan nama alias 'Rata-Rata Umur Nahkoda yg Tidak Training'!

select avg(umur) as 'Rata-Rata Umur Nahkoda yg Tidak Training' from nahkoda where id_nahkoda not in (select id_nahkoda from mengikuti_training);

Rata-Rata Umur Nahkoda yg Tidak Training 45.3333

3. Tampilkan data nahkoda yang mengikuti training dengan umur nahkoda > 25 !

select * from nahkoda where id_nahkoda in (select id_nahkoda from mengikuti_training where umur>25);

id_nahkoda nama_nahkoda rating umur

29 Antoni 1 28

71 Eka Hadi 3 29

85 Hanan S 5 37

95 Surendra 5 35

4. Tampilkan nama training yang diikuti nahkoda dengan id training antara TN_02 sampai TN_04 !

select nama_training from training where id_training in (select id_training from mengikuti_training where id_training between 'TN_02' and 'TN_04');

nama_training Training Manajemen Kapal Training Mesin Kapal

5. Tampilkan nama kapal dan warna kapal yang berlayar dibulan oktober dengan nama alias 'Nama Kapal yg Berlayar Bulan 10'!

select nama_kapal,warna_kapal from kapal where id_kapal in (select id_kapal from job where tanggal like '%-10-%');

nama_kapal warna_kapal

Jaya Loka Merah

Jaya Loka Biru

Makmur Abadi Hijau

Bintang Ufuk Hijau

(Cheung and Babin, 2006; Simarmata and Paryudi, 2006; Lotfy, El Tazi and El Gamal, 2016; Kroenke et al., 2017; Vajirakachorn and Chongwatpol, 2017)

Daftar Pustaka

Cheung, W. and Babin, G. (2006) ‘A metadatabase-enabled executive information system (Part A): A flexible and adaptable architecture’, Decision Support Systems, 42(3), pp. 1589–1598. doi:

10.1016/j.dss.2006.01.005.

Kroenke, D. M. et al. (2017) Database Concept. Eight Edit. Hoboken, New Jersey: Pearson.

Lotfy, A., El Tazi, N. and El Gamal, N. (2016) ‘SCI-F: Social-corporate data integration framework’, ACM International Conference Proceeding Series, 11-13-July, pp. 328–333. doi: 10.1145/2938503.2938505.

Simarmata, J. and Paryudi, I. (2006) Basis Data.

Vajirakachorn, T. and Chongwatpol, J. (2017) ‘Application of business intelligence in the tourism industry: A case study of a local food festival in Thailand’, Tourism Management Perspectives, 23, pp. 75–86. doi:

10.1016/j.tmp.2017.05.003.

Dokumen terkait