OLEH :
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.
- 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
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.
View
View yang ingin dibuat adalah reservation_view dan berisi kolom sebagai berikut
Perintah logika view yang digunakan untuk membuat view tabel di atas, yaitu
(MySQL/MariaDB 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