A. Studi Kasus
Sebuah restoran modern ingin meningkatkan efisiensi operasional dengan membangun sistem manajemen berbasis data untuk mempermudah proses reservasi meja, manajemen pelanggan, tugas staff, dan pencatatan pembayaran. Sistem ini diharapkan dapat mencatat data reservasi secara akurat, mengelola alokasi meja, serta memonitor pembayaran secara real-time.Â
B. Rancangan ERD
Rancangan ERD dibuat menggunak aplikasi yEd yang dapat dilihat pada gambar 1 berikut:
Berikut adalah penjelasan mengenai relasi antara entitas Pelanggan, Staff, Reservasi, Meja, dan Pembayaran dalam sebuah sistem manajemen restoran, misalnya:
1. Entitas dan Relasi
a. Pelanggan
Atribut utama: ID_Pelanggan, Nama, Kontak, Email.
Pelanggan dapat melakukan reservasi.
Relasi: Satu pelanggan dapat membuat satu atau lebih reservasi, tetapi satu reservasi hanya dapat dilakukan oleh satu pelanggan. (One-to-Many).
b. Staff
Atribut utama: ID_Staff, Nama, Posisi.
Staff bertugas mengelola reservasi dan memastikan pembayaran selesai.
Relasi:
Satu reservasi dapat dikelola oleh satu atau lebih staff (misalnya: pelayan dan manajer). (One-to-Many).
Dalam implementasi, hubungan ini dapat menggunakan entitas penghubung seperti "Tugas_Staff" untuk mendetailkan tugas setiap staff dalam setiap reservasi.
c. Reservasi
Atribut utama: ID_Reservasi, Tanggal, Waktu, Status.
Relasi:
Reservasi dibuat oleh pelanggan (hubungan dengan entitas Pelanggan).
Reservasi juga berhubungan dengan entitas Meja, di mana satu reservasi dapat mencakup satu atau lebih meja yang dicadangkan. (Many-to-Many).
Reservasi dapat menghasilkan pembayaran (hubungan dengan entitas Pembayaran). Satu reservasi biasanya menghasilkan satu pembayaran. (One-to-One).
d. Meja
Atribut utama: ID_Meja, Kapasitas, Status.
Meja adalah bagian dari reservasi.
Relasi:
Satu meja dapat dicadangkan untuk banyak reservasi (misalnya, pada waktu berbeda). (One-to-Many).
Hubungan ini sering diimplementasikan menggunakan entitas penghubung seperti "Detail_Reservasi".
e. Pembayaran
Atribut utama: ID_Pembayaran, Metode, Jumlah.
Pembayaran adalah hasil akhir dari proses reservasi.
Relasi:
Satu reservasi menghasilkan satu pembayaran, tetapi pembayaran harus terkait dengan pelanggan yang melakukan reservasi. (One-to-One).
Pembayaran juga dapat dicatat oleh staff tertentu, terutama jika ada proses manual. (One-to-Many atau Many-to-Many).
C. Perancangan EERD
Berikut adalah perancangan EERD menggunakan MySQL Workbench yang dapat dilihat pada gambar 2 berikut:
Deskripsi EERD:
a. Atribut Pelanggan:
id_pelanggan : INT(11), NOT NULL, digunakan sebagai kunci utama.
nama : VARCHAR(45), NULL, menyimpan nama pelanggan.
telp : VARCHAR(45), NULL, menyimpan nomor telepon pelanggan.
Deskripsi: Tabel ini menyimpan informasi pelanggan yang melakukan reservasi.
b. Atribut Staff:
id_staff : INT(11), NOT NULL, digunakan sebagai kunci utama.
nama : VARCHAR(45), NULL, menyimpan nama staff.
peran : VARCHAR(45), NULL, menyimpan peran atau posisi kerja staff.
Deskripsi: Tabel ini mencatat informasi mengenai staff restoran.
c. Atribut Meja:
id_meja : INT(11), NOT NULL, digunakan sebagai kunci utama.
kapasitas : INT(11), NULL, menyimpan kapasitas meja (jumlah kursi).
status : ENUM('kosong', 'terisi'), NULL, menyimpan status meja.
Deskripsi: Tabel ini mengelola informasi mengenai meja yang tersedia.
d. Atribut Reservasi:
id_reservasi : INT(11), NOT NULL, digunakan sebagai kunci utama.
waktu_reservasi : DATE, NULL, menyimpan tanggal reservasi.
slot_reservasi : VARCHAR(45), NULL, menyimpan slot waktu reservasi.
status : ENUM('dikonfirmasi', 'dibatalkan', 'selesai'), NULL, menyimpan status reservasi.
meja_id_meja : INT(11), NOT NULL, foreign key ke id_meja di tabel Meja.
pelanggan_id_pelanggan : INT(11), NOT NULL, foreign key ke id_pelanggan di tabel Pelanggan.
staff_id_staff1 : INT(11), NOT NULL, foreign key ke id_staff di tabel Staff.
Deskripsi: Tabel ini mengelola data reservasi dari pelanggan.
e. Atribut Pembayaran:
id_pembayaran : INT(11), NOT NULL, digunakan sebagai kunci utama.
jumlah : INT(11), NULL, menyimpan jumlah pembayaran.
metode_pembayaran : VARCHAR(45), NULL, menyimpan metode pembayaran (contoh: tunai, kartu).
reservasi_id_reservasi1 : INT(11), NOT NULL, foreign key ke id_reservasi di tabel Reservasi.
Deskripsi: Tabel ini mencatat informasi pembayaran yang terkait dengan reservasi pelanggan.
Relasi Antar-Tabel:
- Relasi Pelanggan - Reservasi: pelanggan_id_pelanggan di tabel Reservasi adalah foreign key yang menghubungkan ke id_pelanggan di tabel Pelanggan.
- Relasi Staff - Reservasi: staff_id_staff1 di tabel Reservasi adalah foreign key yang menghubungkan ke id_staff di tabel Staff.
- Relasi Meja - Reservasi: meja_id_meja di tabel Reservasi adalah foreign key yang menghubungkan ke id_meja di tabel Meja.
- Relasi Reservasi - Pembayaran: reservasi_id_reservasi1 di tabel Pembayaran adalah foreign key yang menghubungkan ke id_reservasi di tabel Reservasi.
D. Pembuatan Aplikasi
Setelah perancangan ERD dan EERD selesai, tahap berikutnya adalah mengimplementasikan desain tersebut ke dalam aplikasi berbasis web. Untuk proses ini, digunakan Yii Framework, salah satu framework PHP yang terkenal karena kemampuannya mempermudah pengembangan aplikasi melalui fitur bawaan seperti CRUD (Create, Read, Update, Delete).
Yii Framework menawarkan fitur scaffolding yang memungkinkan pengembang menghasilkan kode dasar dengan cepat untuk mengelola setiap entitas yang telah dirancang dalam ERD. Fitur ini sangat berguna dalam mempercepat proses pengembangan, terutama untuk aplikasi yang memiliki banyak entitas dan relasi antar tabel, seperti aplikasi manajemen reservasi restoran.
Berikut adalah langkah-langkah yang diperlukan untuk membuat CRUD bagi setiap entitas, mulai dari instalasi hingga pengelolaan data dalam modul yang relevan.
Setelah menyelesaikan perancangan ERD, langkah selanjutnya adalah mengembangkan aplikasi berbasis Yii Framework. Berikut adalah panduan pembuatan CRUD untuk entitas dalam aplikasi restoran ini.
Langkah 1: Instalasi Yii Framework
Langkah awal adalah menginstal Yii Framework jika belum tersedia di sistem. Anda dapat mengunduhnya melalui Composer dengan perintah berikut:
composer create-project --prefer-dist yiisoft/yii2-app-advanced restoran
Setelah instalasi selesai, masuk ke direktori proyek dengan perintah berikut:
cd restoran
Langkah 2: Membuat Model Menggunakan Gii
Setelah aplikasi terinstal, langkah berikutnya adalah membuat model untuk setiap tabel database menggunakan Gii, alat generator bawaan Yii Framework yang dapat menghasilkan model, controller, dan view secara otomatis.
Sebagai contoh, untuk membuat model Reservasi:
- Akses URL Gii di browser: http://localhost/restoran/index.php?r=gii.
- Pilih opsi "Model Generator" dan masukkan nama tabel serta nama kelas model, misalnya "Reservasi" untuk tabel reservasi.
- Klik "Preview", lalu pilih "Generate" untuk membuat model.
- Ulangi proses ini untuk tabel lain, seperti meja, menu, pelanggan, pembayaran, dan staff.
Langkah 3: Membuat CRUD Menggunakan Gii
Setelah model dibuat, Anda dapat melanjutkan dengan membuat CRUD (Create, Read, Update, Delete) untuk setiap entitas menggunakan Gii.
Langkah-langkahnya:
- Akses URL Gii di browser: http://localhost/restoran/index.php?r=gii/crud.
- Pilih model yang telah dibuat (misalnya Reservasi) dan tentukan nama controller, seperti ReservasiController.
- Klik "Preview", lalu pilih "Generate".
- Proses ini akan menghasilkan controller dan view untuk fitur CRUD Reservasi. Ulangi langkah ini untuk entitas lainnya, seperti meja, menu, pelanggan, pembayaran, dan staff.
Langkah 4: Menambahkan Menu Navigasi di Dashboard
Agar pengguna dapat dengan mudah mengakses berbagai fitur, tambahkan menu navigasi pada dashboard di file views/layouts/main.php.
Langkah 5: Menjalankan Aplikasi
Untuk menjalankan aplikasi, gunakan perintah berikut:
php yii serve
Setelah itu, aplikasi dapat diakses melalui browser di alamat: http://localhost:8080.
Kesimpulan
Artikel ini membahas cara membangun aplikasi manajemen reservasi restoran berbasis web menggunakan Yii Framework. Dimulai dari merancang ERD, pembuatan model, controller, dan view menggunakan alat generator Gii, hingga menambahkan menu navigasi pada dashboard. Dengan langkah-langkah ini, Anda dapat membangun aplikasi yang memudahkan pengelolaan reservasi meja, menu, pelanggan, pembayaran, dan staff di restoran.
Untuk video tutorial-nya dapat dilihat pada link YouTube berikut:
Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H