{"id":25155212,"url":"https://github.com/listiangr/hotel_management_database_system","last_synced_at":"2025-04-03T11:17:16.061Z","repository":{"id":271738530,"uuid":"911630713","full_name":"listiangr/Hotel_Management_Database_System","owner":"listiangr","description":"Proyek ini bertujuan untuk mendesain dan mengimplementasikan database relasional untuk sistem reservasi hotel yang efisien, dengan tujuan mempermudah pengelolaan data tamu, pemesanan, kamar, pembayaran, dan ulasan.","archived":false,"fork":false,"pushed_at":"2025-01-09T15:13:34.000Z","size":2517,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T00:41:17.402Z","etag":null,"topics":["database-management","hotel-management-system","mysql","phpmyadmin","relational-databases","sql"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/listiangr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-03T13:25:31.000Z","updated_at":"2025-01-09T15:13:37.000Z","dependencies_parsed_at":"2025-01-09T16:25:28.258Z","dependency_job_id":"a725fafb-7a99-4988-8085-3d2ae8a0e45a","html_url":"https://github.com/listiangr/Hotel_Management_Database_System","commit_stats":null,"previous_names":["listiangr/hotel_booking_database_system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/listiangr%2FHotel_Management_Database_System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/listiangr%2FHotel_Management_Database_System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/listiangr%2FHotel_Management_Database_System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/listiangr%2FHotel_Management_Database_System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/listiangr","download_url":"https://codeload.github.com/listiangr/Hotel_Management_Database_System/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246989754,"owners_count":20865331,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database-management","hotel-management-system","mysql","phpmyadmin","relational-databases","sql"],"created_at":"2025-02-09T00:40:55.403Z","updated_at":"2025-04-03T11:17:16.044Z","avatar_url":"https://github.com/listiangr.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hotel Management Database System\n\n## 📄 Overview\n\nProyek ini bertujuan untuk mendesain dan mengimplementasikan database relasional untuk sistem reservasi hotel yang efisien, dengan tujuan mempermudah pengelolaan data tamu, pemesanan, kamar, pembayaran, dan ulasan. Sistem ini dirancang untuk meningkatkan efisiensi operasional hotel, meminimalkan kesalahan manual, dan memberikan pengalaman yang lebih baik bagi tamu melalui pengelolaan data yang terpusat dan terorganisir.\n\n**Fitur Utama:**\n- **Pengelolaan Data Tamu:** Menyimpan informasi tamu seperti nama, kontak, dan alamat.\n- **Sistem Pemesanan:** Mengelola data pemesanan, jadwal check-in/out, dan status reservasi.\n- **Manajemen Kamar:** Memantau ketersediaan kamar dan harga sesuai jenisnya.\n- **Pelacakan Pembayaran:** Mencatat transaksi pembayaran dengan berbagai metode.\n- **Ulasan Tamu:** Merekam rating dan komentar tamu untuk evaluasi layanan.\n\n---\n\n## 📂 Folder Structure \n\n`Case Study/`\n- `case_study.sql`: Contoh query SQL yang digunakan dalam proyek ini.\n\n`Database/`\n- `hotel_management.sql`: Skrip lengkap untuk membuat dan mengisi database.\n\n`Images/`\n- `erd_image.png`: Entity Relationship Diagram (ERD) sistem hotel.\n- `database_schema.png`: Skema database dengan tabel dan relasi.\n- `select_all_guest.png`: Hasil query menampilkan semua tamu.\n- `select_available_room.png`: Hasil query kamar yang tersedia.\n- `select_payment_credit.png`: Hasil query pembayaran dengan kartu kredit.\n- `select_review_hotel.png`: Hasil query ulasan hotel.\n\n`README.md`: Dokumentasi proyek Hotel Booking Database System.\n\n---\n\n## 🛠️ Tools \u0026 Technologies\n\n- `MySQL`: Sistem manajemen database relasional untuk menyimpan data dan menjalankan query SQL.\n- `SQL`: Bahasa yang digunakan untuk berinteraksi dengan database. \n- `XAMPP`: Paket perangkat lunak untuk menjalankan server lokal dengan Apache, MySQL/MariaDB, PHP.\n- `phpMyAdmin`: Antarmuka berbasis web untuk mengelola database MySQL/MariaDB secara visual.\n\n---\n\n## 🔑 Database Structure\n\n### Entity Relationship Diagram (ERD)\n\n![Entity Relationship Diagram](https://github.com/listiangr/Hotel_Booking_Database_System/blob/main/Images/erd_image.png)\n\n### Database Schema\n\n![Database Schema](https://github.com/listiangr/Hotel_Booking_Database_System/blob/main/Images/database_schema.png)\n\n### Database Table\n\n#### Guests Table\n\n\u003e Tabel berisi informasi lengkap dari tamu hotel.\n\n| **Kolom**              | **Deskripsi**                                        |\n|------------------------|------------------------------------------------------|\n| `id`                   | ID unik untuk setiap tamu                            |\n| `name`                 | Nama lengkap tamu hotel                              |\n| `gender`               | Jenis kelamin tamu -\u003e Female, Male                   |\n| `phone`                | Nomor telepon tamu hotel                             |\n| `email`                | Alamat email tamu hotel                              |\n| `address`              | Alamat rumah lengkap tamu hotel                      |\n\n#### Rooms Table\n\n\u003e Tabel berisi informasi kamar yang ada pada hotel. \n\n| **Kolom**              | **Deskripsi**                                        |\n|------------------------|------------------------------------------------------|\n| `id`                   | ID unik untuk setiap kamar hotel                     |\n| `floor`                | Data nomor lantai pada hotel                         |\n| `room_number`          | Data Nomor kamar hotel                               |\n| `room_type`            | Jenis kamar hotel (Standard, Superior, Suite)        |\n| `price_night`          | Harga kamar hotel untuk satu malam                   |\n| `status`               | Status ketersedian kamar (Available, Occupied)        |\n\n#### Bookings Table\n\n\u003e Tabel berisi informasi pemesanan hotel yang dilakukan oleh tamu. \n\n| **Kolom**              | **Deskripsi**                                        |\n|------------------------|------------------------------------------------------|\n| `id`                   | ID unik untuk setiap pemesanan kamar                 |\n| `guest_id`             | ID yang merujuk pada data tamu (Tabel Guests)        |\n| `booking_date`         | Tanggal saat booking dibuat                          |\n| `booking_code`         | Kode booking hotel yang bersifat unik                |\n| `status`               | Status booking (Completed, Ongoing, Upcoming)        |\n\n#### Details Table\n\n\u003e Tabel berisi informasi lebih rinci terkait pemesanan kamar hotel. \n\n| **Kolom**              | **Deskripsi**                                        |\n|------------------------|------------------------------------------------------|\n| `id`                   | ID unik untuk setiap detail pemesanan                |\n| `booking_id`           | ID yang merujuk pada data booking (Tabel Bookings)   |\n| `room_id`              | ID yang merujuk pada data kamar (Tabel Rooms)        |\n| `check_in`             | Tanggal mulai menginap di hotel                      |\n| `check_out`            | Tanggal selesai menginap di hotel                    |\n| `price_total`          | Total harga (lama menginap * harga sewa kamar)       |\n\n#### Payments Table\n\n\u003e Tabel berisi informasi riwayat pembayaran setelah kamar dipesan.  \n\n| **Kolom**              | **Deskripsi**                                        |\n|------------------------|------------------------------------------------------|\n| `id`                   | ID unik untuk setiap pembayaran                      |\n| `booking_id`           | ID yang merujuk pada data booking (Tabel Bookings)   |\n| `amount_paid`          | Total harga yang dibayarkan                          |\n| `method`               | Metode pembayaran (Bank Transfer, Credit Card, Digital Wallet) |\n| `status`               | Status pembayaran (Paid, Pending, Cancelled)         |\n\n#### Reviews Table\n\n\u003e Tabel berisi ulasan yang diberikan oleh tamu setelah selesai menginap.  \n\n| **Kolom**              | **Deskripsi**                                        |\n|------------------------|------------------------------------------------------|\n| `id`                   | ID unik untuk setiap ulasan yang ditulis             |\n| `booking_id`           | ID yang merujuk pada data booking (Tabel Bookings)   |\n| `rating`               | Rating ulasan skala 1 - 5                            |\n| `comment`              | Komentar terkait pengalaman booking hotel            |\n\n### Data Relationship\n\n`Guests and Bookings`\n\u003e Tabel Guests memiliki hubungan satu ke banyak (one-to-many) dengan tabel Bookings. Setiap tamu (guest) dapat membuat beberapa pemesanan (bookings). Relasi ini dihubungkan melalui kolom guest_id pada tabel Bookings, yang merujuk pada kolom id di tabel Guests\n\n`Rooms and Details`\n\u003e Tabel Rooms memiliki hubungan satu ke banyak (one-to-many) dengan tabel Details. Satu kamar dapat digunakan dalam beberapa pemesanan (details), namun untuk waktu yang berbeda. Relasi ini dihubungkan melalui kolom room_id pada tabel Details, yang merujuk pada kolom id di tabel Rooms.\n\n`Bookings and Details`\n\u003e Tabel Bookings memiliki hubungan satu ke banyak (one-to-many) dengan tabel Details. Satu pemesanan dapat mencakup beberapa kamar. Relasi ini dihubungkan melalui kolom booking_id pada tabel Details, yang merujuk pada kolom id di tabel Bookings. \n\n`Bookings and Payments`\n\u003e Tabel Bookings memiliki hubungan satu ke satu (one-to-one) dengan tabel Payments. Setiap pemesanan memiliki satu pembayaran yang tercatat. Relasi ini dihubungkan melalui kolom booking_id pada tabel Payments, yang merujuk pada kolom id di tabel Bookings.\n\n`Bookings and Reviews` \n\u003e Tabel Bookings memiliki hubungan satu ke satu (one-to-one) dengan tabel Reviews. Setiap pemesanan yang selesai dapat memiliki satu ulasan dari tamu. Relasi ini dihubungkan melalui kolom booking_id pada tabel Reviews, yang merujuk pada kolom id di tabel Bookings.\n\n--- \n\n## 💻 SQL Query\n\n### 1. Create Database\n\u003e Query sql untuk membuat database dengan nama hotel_database\n```sql\nCREATE DATABASE hotel_management;\n```\n\n### 2. Create Table \n\u003e Query sql untuk membuat tabel guests, tabel lain dapat dilihat di `Database/hotel_management.sql`\n```sql\nCREATE TABLE guests (\n  id INT AUTO_INCREMENT PRIMARY KEY,\n  name VARCHAR(255) NOT NULL,\n  gender ENUM('Male', 'Female') NOT NULL,\n  phone VARCHAR(255) NOT NULL,\n  email VARCHAR(255) NOT NULL,\n  address VARCHAR(255) NOT NULL\n);\n```\n\n### 3. Insert Table\n\u003e Query sql untuk mengisi tabel guest, tabel lain dapat dilihat di `Database/hotel_management.sql`\n```sql\nINSERT INTO guests (name, gender, phone, email, address)\nVALUES\n  ('James Smith', 'Male', '+1-214-555-1234', 'james.smith87@gmail.com', '2984 Elm St, Dallas, Texas'),\n  ('Emma Johnson', 'Female', '+1-310-555-5678', 'emma.johnson45@yahoo.com', '6721 Maple Ave, Los Angeles, California'),\n  ('Olivia Davis', 'Female', '+1-206-555-2345', 'olivia.davis29@yahoo.com', '4829 Pine St, Seattle, Washington'),\n  ('Michael Brown', 'Male', '+1-512-555-9876', 'michael.brown32@gmail.com', '8143 Oak Dr, Austin, Texas'),\n  ('Ava Wilson', 'Female', '+1-281-555-3456', 'ava.wilson98@gmail.com', '9356 Main St, Houston, Texas'),\n  ('William Miller', 'Male', '+1-646-555-8765', 'william.miller61@gmail.com', '7543 Broadway, New York, New York'),\n  ('Ethan Moore', 'Male', '+1-408-555-4567', 'ethan.moore11@yahoo.com', '5431 Silicon Blvd, San Jose, California'),\n  ('Sophia Taylor', 'Female', '+1-425-555-5678', 'sophia.taylor73@gmail.com', '8765 Lakeview Dr, Bellevue, Washington'),\n  ('Alexander Anderson', 'Male', '+1-718-555-6789', 'alexander.anderson12@yahoo.com', '2349 Queens Blvd, Queens, New York'),\n  ('Isabella Thomas', 'Female', '+1-210-555-7890', 'isabella.thomas42@gmail.com', '6512 Alamo St, San Antonio, Texas'),\n  ('Mia White', 'Female', '+1-360-555-9012', 'mia.white84@yahoo.com', '3921 Evergreen Way, Tacoma, Washington'),\n  ('Matthew Harris', 'Male', '+1-212-555-0123', 'matthew.harris76@gmail.com', '2483 Park Ave, Manhattan, New York'),\n  ('Amelia Martin', 'Female', '+1-512-555-1234', 'amelia.martin33@yahoo.com', '7421 Congress Ave, Austin, Texas'),\n  ('Lucas Thompson', 'Male', '+1-925-555-2345', 'lucas.thompson57@gmail.com', '9832 Walnut Blvd, Berkeley, California'),\n  ('Daniel Jackson', 'Male', '+1-909-555-8901', 'daniel.jackson25@gmail.com', '8769 Citrus Ave, Riverside, California');\n```\n\n### 4. Select Table\n\n\u003e Query untuk menampilkan semua data atau informasi tamu hotel\n```sql\nSELECT * FROM Guests;\n```\n![All Guest](https://github.com/listiangr/Hotel_Booking_Database_System/blob/main/Images/select_all_guest.png)\n\n\u003e Query untuk menampilkan semua kamar yang tersedia dengan harga per malam di bawah $300\n```sql\nSELECT * FROM Rooms\nWHERE\n  status = 'Available' AND\n  price_night \u003c 200;\n```\n![Available Room](https://github.com/listiangr/Hotel_Booking_Database_System/blob/main/Images/select_available_room.png)\n\n\u003e Query untuk menampilkan pembayaran yang menggunakan credit card dan jumlah pembayarn di atas $2000\n```sql\nSELECT * FROM Payments\nWHERE\n  method = 'Credit Card' AND\n  amount_paid \u003e 300; \n```\n![Payment Credit](https://github.com/listiangr/Hotel_Booking_Database_System/blob/main/Images/select_payment_credit.png)\n\n\u003e Query untuk menampilkan ulasan booking yang meliputi nama tamu, kode booking, rating, ulasan\n```sql\nSELECT\n  Guests.name AS guest_name,\n  Bookings.booking_code,\n  Reviews.rating,\n  Reviews.comment\nFROM\n  Guests\nJOIN\n  Bookings ON Guests.id = Bookings.guest_id\nJOIN\n  Reviews ON Bookings.id = Reviews.booking_id; \n```\n![Hotel Review](https://github.com/listiangr/Hotel_Booking_Database_System/blob/main/Images/select_review_hotel.png)\n\n---\n\n## 📚 Case Study\n\nStudi kasus yang akan dibahas adalah proses reservasi kamar hotel oleh seorang tamu yang mencakup seluruh tahapan dalam proses booking, mulai dari pengecekan ketersediaan kamar, registrasi tamu, pencatatan booking, pembayaran, hingga ulasan. Setiap langkah akan dijelaskan secara rinci untuk memberikan gambaran bagiamana sistem manajemen hotel bekerja.  \n\n\u003e John Doe ingin memesan kamar di The Urban Hotel untuk liburan bersama keluarganya. Ia membutuhkan dua kamar, satu untuk dirinya dan istrinya, serta satu lagi untuk kedua anak mereka. John memesan kamar tipe Suite dan tipe Superior melalui sistem online. Booking dilakukan pada tanggal 2024-12-07, dengan rencana check-in pada 2024-12-08 dan check-out pada 2024-12-10 (2 malam). Setelah pembayaran dilakukan menggunakan kartu kredit, John dan keluarganya menginap sesuai jadwal. Setelah check-out, John memberikan ulasan positif tentang pengalaman menginapnya.\n\n### 1. Room Availability Check \n\u003e Proses pertama adalah memastikan ketersediaan kamar tipe Suite dan Superior yang akan dipesan oleh John Doe. Sistem akan mencari kamar dengan status \"Available\" untuk memastikan kamar tersebut siap digunakan.\n```sql\nSELECT * FROM Rooms \nWHERE\n  room_type IN ('Suite', 'Superior') AND\n  status = 'Available';\n```\n\n### 2. Guest Registration \n\u003e Karena ini adalah pertama kalinya John Doe menginap di The Urban Hotel, proses registrasi dilakukan untuk mencatat informasi pribadi tamu ke dalam sistem manajemen hotel. Hal ini memastikan data tamu tersimpan dengan lengkap untuk memudahkan pelayanan di masa mendatang. \n```sql\nINSERT INTO Guests (name, gender, phone, email, address)\nVALUE\n  ('John Doe', 'Male', '+1-123-456-7890', 'john.doe@example.com', '9555 Main Street, Manhattan, New York');\n```\n\n### 3. Room Booking\n\u003e Setelah registrasi selesai, John melanjutkan proses pemesanan dua kamar yang diinginkannya. Sistem mencatat data pemesanan, termasuk tipe kamar, kode booking, serta tanggal check-in dan check-out, untuk memastikan akurasi informasi selama masa inap tamu.\n```sql\nINSERT INTO `bookings` (`guest_id`, `booking_date`, `booking_code`, `status`) \nVALUE\n  (16, '2024-12-07', 'BKG20241207005', 'Upcoming');\n```\n```sql\nINSERT INTO `details` (`booking_id`, `room_id`, `check_in`, `check_out`, `price_total`) \nVALUES\n  (16, 20, '2024-12-08', '2024-12-10', 500),\n  (16, 21, '2024-12-08', '2024-12-10', 900);\n```\n\n### 4. Payment Detail\n\u003e Setelah proses reservasi selesai, rincian pembayaran dicatat, termasuk metode pembayaran yang dipilih John Doe, yaitu transfer bank. Status pembayaran pada awalnya ditetapkan sebagai \"Pending\" hingga pembayaran selesai diverifikasi oleh sistem. \n```sql\nINSERT INTO `payments` (`booking_id`, `amount_paid`, `method`, `status`) \nVALUE\n  (16, 1400, 'Bank Transfer', 'Pending');\n```\n\n### 5. Update Room Status\n\u003e Setelah kamar dipesan dan pembayaran terverifikasi, status kamar diperbarui menjadi \"Occupied\" untuk memastikan tidak dapat dipesan oleh tamu lain selama periode inap yang telah ditentukan.\n```sql\nUPDATE rooms\nSET\n  status = 'Occupied'\nWHERE\n  id IN (20, 21); \n```\n\n### 6. Update Payment\n\u003e Setelah John menyelesaikan pembayaran penuh, status pembayaran diperbarui dari \"Pending\" menjadi \"Paid.\" Hal ini memastikan bahwa semua transaksi keuangan terkait reservasi telah diselesaikan dengan baik.\n```sql\nUPDATE payments\nSET\n  status = 'Paid'\nWHERE\n  id = 16; \n```\n\n### 7. Finalizing Booking \u0026 Room Status\n\u003e Setelah masa inap selesai, status pemesanan diubah menjadi \"Completed\" untuk menunjukkan bahwa reservasi telah selesai. Status kamar juga diperbarui menjadi \"Available,\" sehingga kamar tersebut dapat dipesan kembali oleh tamu lain.\n```sql\nUPDATE bookings, rooms\nSET\n  bookings.status = 'Completed',\n  rooms.status = 'Available'\nWHERE\n  bookings.id = 16 AND\n  rooms.id IN (20, 21);\n```\n\n### 8. Guest Review\n\u003e Sebagai langkah terakhir, John memberikan ulasan terkait pengalamannya menginap di The Urban Hotel. Dalam ulasannya, ia memberikan rating tertinggi, yaitu 5 bintang, dan menyebutkan bahwa hotel ini memiliki fasilitas yang luar biasa serta layanan yang sangat memuaskan.\n```sql\nINSERT INTO `reviews` (`booking_id`, `rating`, `comment`)\nVALUE\n  (16, '5', 'Amazing hotel, I love it.');\n```\n---\n\n## 🚀 How to Run\n\n1. Clone repository `git clone https://github.com/listiangr/Hotel_Booking_Database_System.git`\n2. Import database\n   - Buka **phpMyAdmin** atau aplikasi database lain yang Anda gunakan.\n   - Import file `Database/hotel_management.sql` ke dalam database. \n3. Coba Case Study\n   - Anda dapat langsung mengimpor file `Case Study/case_study.sql` ke dalam database atau menjalankan query yang ada satu per satu.\n5. Selesai!\n   - Anda siap untuk mulai mengeksplorasi dan melakukan eksperimen lebih lanjut dengan sistem database pemesanan hotel ini.\n\n---\n\n## 📌 Conclusion\n\nImplementasi sistem manajemen database hotel ini terbukti efektif dalam meningkatkan efisiensi operasional. Pengelolaan data tamu, pemesanan, pembayaran, dan ulasan dapat dilakukan dengan lebih terstruktur melalui tabel-tabel yang terorganisir. Sistem ini memungkinkan pelacakan informasi tamu, pemantauan ketersediaan kamar, pencatatan pembayaran, serta pengelolaan feedback tamu dengan mudah dan akurat. Secara keseluruhan, penerapan database ini membantu mengurangi kesalahan manual, mempercepat proses administratif, dan memberikan wawasan berharga untuk pengembangan hotel.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flistiangr%2Fhotel_management_database_system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flistiangr%2Fhotel_management_database_system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flistiangr%2Fhotel_management_database_system/lists"}