Anda di halaman 1dari 8

LAPORAN BASIS DATA II

“Tugas Project Final”

OLEH :

RINY YUSTICA DEWI (D42116010)


DIKI SISWANTO (D42116316)
ANDI AMELIA RAMADANTI (D42116518)

DEPARTEMEN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS HASANUDDIN
2018
Hotel Management System Database

Database yang hendak dirancang adalah sistem manajemen hotel, khususnya terkait
dengan proses reservasi atau pemesanan kamar hotel oleh tamu atau pelanggan.
Alur yang harus dilalui dalam melakukan reservasi kamar oleh tamu atau pelanggan
adalah sebagai berikut:
1. Tamu yang hendak memesan kamar, memilih tipe kamar yang diinginkan;
2. Resepsionis akan mengecek apakah tipe kamar yang diinginkan tersedia atau tidak;
3. Setelah itu, tamu mengisi data diri;
4. Tamu memilih tanggal checkin dan tanggal checkout serta menyebutkan jumlah orang
yang akan menginap (jumlah orang dewasa dan anak-anak).
5. Kemudian tamu membayar biaya inap sesuai dengan tipe kamar yang dipilih.

Berdasarkan alur bisnis serta use case di atas, rancangan basis data yang akan dibuat
adalah sebagai berikut.

1. Tabel-tabel yang digunakan


- guests
Kolom Tipe
guest_id INT PK
first_name VARCHAR(100)
last_name VARCHAR(100)
address VARCHAR(1000)
email VARCHAR(100)
phone VARCHAR(100)
city VARCHAR(100)
country VARCHAR(100)

- rooms
Kolom Tipe
room_id INT PK
room_type_id INT FK
room_status_id INT FK

- room_statuses
Kolom Tipe
room_status_id INT PK
room_status_name VARCHAR(100)

- room_types
Kolom Tipe
room_type_id INT PK
room_type_name VARCHAR(100)
base_price MEDIUM INT

- reservations
Kolom Tipe
reservation_id INT PK
guest_id INT FK
room_id INT FK
reservation_date DATE
check_in_date DATE
check_out_date DATE
adult INT
children INT

- payments
Kolom Tipe
payment_id INT PK
guest_id INT FK
reservation_id INT FK
first_name VARCHAR(100)
last_name VARCHAR(100)

2. Relationship
Adapun hubungan antar tabel dapat dilihat pada gambar di bawah ini:
Berdasarkan tabel tabel di atas, kita dapat membuat entity relationship diagram
sebagai berikut.
1. Entity
 Guest
 Room
 Payment
 Room type
 Room status

2. Relationship
Entity Relationship Entity Cardinality Ratio
Guest Reserve Room M:N
Guest Make Payment 1:1
Room Has Room type N:1
Room Has Room status N:1

3. Entity Relationship Diagram

Entity Relationship Diagram yang dibuat berfokus sesuai use case atau alur
bisnis yang telah didefinisikan sebelumnya. Entity yang dipilih hanya entity yang
terlibat dalam alur proses yang ada. Entity tersebut adalah entity guest, room,
room_status, room_type, dan payment. Adapun relationship yang terjadi antara
lain relasi reserve antara guest dengan room, relasi make antara guest dengan
payment, relasi has antara room dengan room type, dan relasi has antara room
dengan room status.

Alasan memilih rancangan tersebut yaitu karena rancangan ER Diagram di


atas cukup memenuhi use case yang kami buat. Selain itu, rancangan yang dibuat
mewakili proses atau alur bisnis yang sebenarnya.
LOGIKA DATABASE YANG DITERAPKAN

 View
View yang ingin dibuat adalah reservation_view dan berisi kolom sebagai berikut

reservation_id guest_name room_type_name price charge_total check_in_date check_out_date payment

Perintah logika view yang digunakan untuk membuat view tabel di atas, yaitu
(MySQL/MariaDB query).

CREATE OR REPLACE VIEW reservations_view


AS
SELECT r.reservation_id, CONCAT(g.first_name, ‘ ’,
g.last_name) AS guest_name, (SELECT rt.room_type_name FROM
room_types rt WHERE rm.room_type_id = rt.room_type_id) AS
room_type_name, (SELECT rt.base_price FROM room_types rt
WHERE rm.room_type_id = rt.room_type_id) AS price, (SELECT
rt.base_price*DATEDIFF(r.check_in_date, r.check_out_date)
FROM room_types rt WHERE rm.room_type_id = rt.room_type_id)
AS charge_total, r.check_in_date, r.check_out_date, (SELECT
COUNT(*) FROM payments p WHERE p.reservation_id =
r.reservation_id) AS payment
FROM
reservations r, guests g, rooms rm
WHERE
g.guest_id = r.guest_id AND r.room_id = rm.room_id;
// end of query

Kami membuat view reservations_view di atas karena kami ingin memiliki tabel yang
berisi detail dari tiap transaksi pemesanan kamar hotel yang berhasil dilakukan. Transaksi
dianggap berhasil jika tamu telah melakukan pembayaran pada saat memesan kamar tersebut
sesuai tipe kamar yang tamu inginkan.

 Stored Procedure
Stored procedure yang kami gunakan bernama payment_check()
Dengan perintah sebagai berikut.

DELIMITER //
CREATE PROCEDURE payment_check(IN r_id INT)
BEGIN
SELECT COUNT(*) AS payment_status FROM payments WHERE
reservation_id = r_id;
END;
//
DELIMITER;

Kami membuat stored procedure di atas agar dapat digunakan untuk mengetahui apakah
sebuah data pemesanan kamar hotel telah dibayar atau belum. Procedure di atas
membutuhkan 1 buah parameter yaitu reservation_id yang ingin dicek status pembayarannya.

 Trigger
Adapun Trigger yang kami buat bernama update_room_status.

DELIMITER //
CREATE OR REPLACE TRIGGER update_room_status
AFTER INSERT ON reservations
FOR EACH ROW
BEGIN
UPDATE rooms SET room_status_id = 2
WHERE room_id = NEW.room_id;
END;
//
DELIMITER ;

Kami membuat trigger di atas agar ketika terjadi transaksi pemesanan kamar hotel, kamar
yang nantinya dipilih oleh tamu akan diubah statusnya menjadi booked. Trigger terjadi
apabila pada tabel reservations terdapat penambahan entry baru di dalamnya.

Ket. Dari 5 pilihan logika database yang tersedia, kami memilih 3 diantaranya untuk
diterapkan dalam rancangan database yang kami buat yaitu logika view, stored procedure, dan
trigger.

Implementasi rancangan dan pengujian untuk tiap logika DB yang kami buat dengan
menggunakan DBMS MySQL/MariaDB

 View
Pengujian view dengan melakukan perintah query menggunakan command prompt
Tampilan view yang ada di phpmyAdmin

 Stored Procedure
Pengujian stored procedure dengan melakukan perintah query menggunakan command
prompt

Tampilan stored procedure yang ada di phpmyAdmin


 Trigger
Pengujian trigger dengan melakukan perintah query menggunakan command prompt

Tampilan trigger yang ada di phpmyAdmin

Anda mungkin juga menyukai