Anda di halaman 1dari 8

Tugas Kelompok ke-1

Minggu ke 2

2502163474 - Muhammad Caesar Resya Xavier


2502158013 - Anisa Budi Arthati
2502166311 - Juli Yanti
2502164382 - Ayunda Hafshah
2502166135 - Muhammad Fadli Rahman Fauzan

CV. IT Global mendapat proyek membuat Sistem Informasi Perhotelan yang akan digunakan
pada sebuah hotel bintang lima. Sistem informasi tersebut nantinya akan digunakan untuk
membantu manajemen hotel baik dalam kegiatan sehari-hari maupun dalam pembuatan laporan
bulanan. Kegiatan manajemen hotel salah satunya meliputi transaksi sewa kamar. Hal yang
menjadi tugas kelompok adalah:
• Buatlah tabel relasi
• Pelanggan yang terdiri dari identitas pelanggan, nama pelanggan, jenis kelamin
pelanggan, alamat pelanggan, email pelanggan, telepon pelanggan
• Jenis kamar yang terdiri dari identitas jenis kamar, jenis kamar, fasilitas, tarif sewa kamar
• Kamar yang terdiri dari identitas jenis kamar, identitas kamar, jenis kamar, status kamar
• Tentukan candidate key dan primary key dari ketiga tabel relasi diatas

Tabel "Pelanggan":
indentitas pelanggan Nama pelanggan jeni kelamin alamat pelanggan email pelanggan telepon pelanggan

PK

Tabel "Jenis Kamar":


indentitas Jenis Kamar jennis kamar fasilitas tarif sewa kamar

PK

Tabel "Kamar":
indentitas Kamar indentitas jenis kamar jenis kamar status kamar

PK FK(Jenis Kamar)

Keterangan:
- PK: Primary Key
- FK: Foreign Key

Tabel "Pelanggan" memiliki kolom Identitas Pelanggan sebagai Primary Key (PK), yang
digunakan untuk mengidentifikasi setiap pelanggan secara unik. Nama Pelanggan, Jenis
Kelamin, Alamat Pelanggan, Email Pelanggan, dan Telepon Pelanggan adalah atribut-atribut data
lainnya dalam tabel ini.

Tabel "Jenis Kamar" memiliki kolom Identitas Jenis Kamar sebagai Primary Key (PK), yang
digunakan untuk mengidentifikasi jenis kamar secara unik. Jenis Kamar, Fasilitas, dan Tarif
Sewa Kamar adalah atribut-atribut data lainnya dalam tabel ini.

Tabel "Kamar" memiliki kolom Identitas Kamar sebagai Primary Key (PK), yang digunakan
untuk mengidentifikasi setiap kamar secara unik. Kolom Identitas Jenis Kamar merupakan
Foreign Key (FK) yang mengacu pada kolom Identitas Jenis Kamar dalam tabel "Jenis Kamar".
Jenis Kamar dan Status Kamar adalah atribut-atribut data lainnya dalam tabel ini.

Opsi lain untuk membuat tabel relasi untuk soal no 1 dengan versi diagram entities relational

Catatan:
setiap room_type bisa memilik banyak (one to many) room_availability
• Setelah tiga tabel relasi pada nomor 1 selesai dibuat, tugas kelompok selanjutnya adalah
membuat tabel relasi pemesanan, status checkin_checkout, dan pembayaran. Masing-masing
tabel relasi minimal mempunyai empat atribut. Tuliskan juga primary key dan foreign key.

Catatan: Tabel Relasi terlampir (dalam format draw.io) untuk melanjutkan jawaban soal 1
(opsi 1)

• a. Tulislah perintah untuk membuat keenam tabel relasi yang sudah kelompok buat pada no
1 dan 2, lengkap dengan tipe data masing-masing atribut kemudian tunjukkan hasil
tabelnya yang sudah terisi minimal 6 data

Catatan: database untuk tugas yang dibuat adalah MYSQL via hosting (PHPMyAdmin) (untuk
jawaban opsi 1)

• Tabel Customers
CREATE TABLE Customers (

customer_id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(255) NOT NULL,

gender ENUM('f', 'm') NOT NULL,

address VARCHAR(255) NOT NULL,

email VARCHAR(255) NOT NULL UNIQUE,

phone VARCHAR(255) NOT NULL,

id_card_num VARCHAR(255) NOT NULL UNIQUE

);

INSERT INTO Customers (name, gender, address, email, phone, id_card_num)

VALUES

('John Doe', 'm', '123 Main Street', 'john.doe@example.com', '1234567890', 'ABC123'),


('Jane Smith', 'f', '456 Elm Street', 'jane.smith@example.com', '9876543210', 'DEF456'),

('Michael Johnson', 'm', '789 Oak Avenue', 'michael.johnson@example.com', '4567890123', 'GHI789'),

('Emily Davis', 'f', '321 Pine Road', 'emily.davis@example.com', '0123456789', 'JKL012'),

('David Wilson', 'm', '654 Cedar Lane', 'david.wilson@example.com', '9870123456', 'MNO345'),

('Sarah Anderson', 'f', '987 Birch Drive', 'sarah.anderson@example.com', '5678901234', 'PQR678');

• Tabel Room_Type
CREATE TABLE Room_Type (

room_type_id INT AUTO_INCREMENT PRIMARY KEY,

room_type VARCHAR(255) NOT NULL,

facilities VARCHAR(255) NOT NULL,

room_charge_per_night INT NOT NULL

);

INSERT INTO Room_Type (room_type, facilities, room_charge_per_night)

VALUES

('single', 'Wi-Fi, TV, air conditioning', 100),

('double', 'Wi-Fi, TV, air conditioning, minibar', 150),

('family', 'Wi-Fi, TV, air conditioning, kitchenette', 200);

• Tabel Room_Availability
CREATE TABLE Room_Availability (

room_id INT AUTO_INCREMENT PRIMARY KEY,

rtype_id INT,

room_name VARCHAR(255) NOT NULL,

floor INT NOT NULL,

room_status ENUM('t', 'f') NOT NULL,

FOREIGN KEY (rtype_id) REFERENCES Room_Type (room_type_id)

);
INSERT INTO Room_Availability (rtype_id, room_name, floor, room_status)

VALUES

(1, 'Rose', 1, 't'),

(2, 'Tulip', 2, 't'),

(1, 'Lily', 2, 'f'),

(3, 'Daisy', 1, 't'),

(2, 'Sunflower', 3, 't'),

(3, 'Orchid', 2, 'f'),

(1, 'Carnation', 3, 't'),

(2, 'Daffodil', 1, 'f'),

(3, 'Hyacinth', 3, 't'),

(1, 'Peony', 2, 't');

• Tabel Orders
CREATE TABLE Orders (

order_id INT AUTO_INCREMENT PRIMARY KEY,

cust_id INT,

room_avail_id INT,

total_night INT NOT NULL,

total_room_price INT NOT NULL,

total_addon_price INT,

FOREIGN KEY (cust_id) REFERENCES Customers (customer_id),

FOREIGN KEY (room_avail_id) REFERENCES Room_Availability (room_id)

);

INSERT INTO Orders (cust_id, room_avail_id, total_night, total_room_price, total_addon_price)

VALUES

(1, 1, 3, 300, 50),

(2, 2, 2, 250, 0),

(3, 3, 5, 500, 100),

(4, 4, 1, 100, 20),


(5, 5, 4, 400, 0),

(6, 6, 2, 200, 30),

(1, 7, 3, 300, 50),

(2, 8, 2, 250, 0),

(3, 9, 5, 500, 100),

(4, 10, 1, 100, 20);

• Tabel Customers_CheckStatus
CREATE TABLE Customers_CheckStatus (

cust_checkstatus_id INT AUTO_INCREMENT PRIMARY KEY,

cust_order_id INT,

checkin_date DATE,

checkout_date DATE,

check_status ENUM('in', 'out', 'late'),

FOREIGN KEY (cust_order_id) REFERENCES Orders (order_id)

);

INSERT INTO Customers_CheckStatus (cust_order_id, checkin_date, checkout_date, check_status)

VALUES

(1, '2023-06-01', '2023-06-04', 'out'),

(2, '2023-06-02', '2023-06-04', 'out'),

(3, '2023-06-03', '2023-06-08', 'out'),

(4, '2023-06-04', '2023-06-05', 'out'),

(5, '2023-06-05', '2023-06-09', 'out'),

(6, '2023-06-06', '2023-06-08', 'out'),

(7, '2023-06-07', '2023-06-10', 'out'),

(8, '2023-06-08', '2023-06-10', 'out'),

(9, '2023-06-09', '2023-06-14', 'out'),

(10, '2023-06-10', '2023-06-11', 'out');

• Tabel Payments
CREATE TABLE Payments (

payment_id INT AUTO_INCREMENT PRIMARY KEY,

cust_order_id INT,

payment_status ENUM('paid', 'not-paid') NOT NULL,

payment_method VARCHAR(255) NOT NULL,

payment_card VARCHAR(255),

FOREIGN KEY (cust_order_id) REFERENCES Orders (order_id)

);

INSERT INTO Payments (cust_order_id, payment_status, payment_method, payment_card)

VALUES

(1, 'paid', 'credit card', '4111111111111111'),

(2, 'paid', 'cash', NULL),

(3, 'not-paid', 'debit card', '5105105105105100'),

(4, 'paid', 'credit card', '6011000990139424'),

(5, 'not-paid', 'cash', NULL),

(6, 'paid', 'debit card', '3530111333300000'),

(7, 'not-paid', 'credit card', '5555555555554444'),

(8, 'paid', 'cash', NULL),

(9, 'not-paid', 'debit card', '3566002020360505'),

(10, 'paid', 'credit card', '378282246310005');

b. Gunakan perintah untuk menambah data sehingga setiap tabel sekarang mempunyai 10
data (telah dijawab di bagian a, total 10 data)

Hasil dalam bentuk screenshot table dalam database


• Tuliskan query untuk menampilkan
• Semua pelanggan yang menyewa kamar single
SELECT *

FROM Customers AS c

JOIN Orders AS o ON c.customer_id = o.cust_id

JOIN Room_Availability AS ra ON o.room_avail_id = ra.room_id

JOIN Room_Type AS rt ON ra.rtype_id = rt.room_type_id

WHERE rt.room_type = 'single';

• Jumlah pelanggan yang melakukan pemesanan lebih dari 3 hari


SELECT COUNT(*) AS Total_Customers

FROM Orders

WHERE total_night > 3;

• Tanggal pemesanan pada bulan Januari 2022


SELECT *

FROM Orders

WHERE DATEPART(month, checkin_date) = 1 AND DATEPART(year, checkin_date) = 2022;

• Pelanggan yang mempunyai awalan nama huruf tertentu (sesuaikan dengan data yang
digunakan oleh kelompok)
SELECT *

FROM Customers

WHERE name LIKE 'A%';

Anda mungkin juga menyukai