Silakan blok/select tabel di bawah ini, salin (Ctrl+C), dan tempel (Ctrl+V) langsung ke Microsoft Word.
Kamus data menjelaskan secara rinci spesifikasi teknis dari setiap tabel yang digunakan dalam sistem E-Ticketing Bus Online, meliputi nama kolom, tipe data, kunci (key), serta keterangan fungsinya.
Tabel ini digunakan untuk menyimpan seluruh data pengguna aplikasi yang terbagi menjadi tiga peran utama (*customer*, *admin*, *petugas*), serta kru bus (*driver* dan *conductor*).
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik untuk setiap pengguna |
| name | VARCHAR(100) | - | Nama lengkap pengguna |
| VARCHAR(100) | Unique | Alamat email unik untuk login | |
| phone | VARCHAR(20) | - | Nomor telepon aktif pengguna |
| password | VARCHAR(255) | - | Kata sandi pengguna yang di-hash dengan BCrypt |
| role | ENUM('customer', 'admin', 'petugas') | - | Hak akses sistem (default: 'customer') |
| bus_id | INT(11) unsigned | FK (buses.id) | Afiliasi bus untuk kru (Null jika bukan kru) |
| crew_role | ENUM('staff', 'driver_1', 'driver_2', 'conductor') | - | Peran spesifik kru bus (default: 'staff') |
| created_at | DATETIME | - | Tanggal dan waktu akun didaftarkan |
| updated_at | DATETIME | - | Tanggal dan waktu data akun diperbarui |
Tabel ini digunakan untuk menyimpan informasi armada bus PO Bus yang dimiliki.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik untuk setiap armada bus |
| code | VARCHAR(20) | - | Kode identifikasi bus (misal: PO-001) |
| name | VARCHAR(100) | - | Nama atau lambung bus |
| type | VARCHAR(50) | - | Tipe kelas bus (misal: Eksekutif, Ekonomi) |
| seat_layout | JSON | - | Struktur tata letak denah kursi bus |
| total_seats | INT(11) | - | Kapasitas total kursi bus |
| created_at | DATETIME | - | Tanggal dan waktu armada bus ditambahkan |
| updated_at | DATETIME | - | Tanggal dan waktu data armada diperbarui |
Tabel ini digunakan untuk menyimpan data rute perjalanan atau trayek antarkota yang dilayani.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik untuk setiap rute |
| origin | VARCHAR(100) | - | Terminal/Kota asal keberangkatan |
| destination | VARCHAR(100) | - | Terminal/Kota tujuan akhir perjalanan |
| distance_km | DECIMAL(8,2) | - | Jarak tempuh rute dalam satuan kilometer |
| estimated_duration | INT(11) | - | Estimasi durasi perjalanan (dalam menit) |
| created_at | DATETIME | - | Tanggal dan waktu rute ditambahkan |
| updated_at | DATETIME | - | Tanggal dan waktu data rute diperbarui |
Tabel ini digunakan untuk menyimpan jadwal keberangkatan bus beserta penetapan kru bus yang bertugas dan harga tiket.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik untuk setiap jadwal perjalanan |
| route_id | INT(11) unsigned | FK (routes.id) | Rute perjalanan yang ditempuh |
| bus_id | INT(11) unsigned | FK (buses.id) | Armada bus yang ditugaskan |
| departure_time | DATETIME | - | Tanggal dan jam keberangkatan bus |
| arrival_time | DATETIME | - | Estimasi tanggal dan jam kedatangan |
| price | DECIMAL(10,2) | - | Harga dasar tiket per kursi |
| status | ENUM('scheduled', 'ongoing', 'completed', 'cancelled') | - | Status operasional jadwal (default: 'scheduled') |
| driver_1_id | INT(11) unsigned | FK (users.id) | ID Supir Utama (driver 1) yang bertugas |
| driver_2_id | INT(11) unsigned | FK (users.id) | ID Supir Cadangan (driver 2) jika ada |
| conductor_id | INT(11) unsigned | FK (users.id) | ID Kondektur yang bertugas |
| created_at | DATETIME | - | Tanggal dan waktu jadwal dibuat |
| updated_at | DATETIME | - | Tanggal dan waktu jadwal diperbarui |
Tabel ini digunakan untuk menyimpan data voucher promo diskon yang dapat diklaim saat checkout tiket.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik untuk setiap promo |
| code | VARCHAR(30) | Unique | Kode promo/kupon unik (misal: MUDIKAMAN) |
| discount_type | ENUM('percent', 'fixed') | - | Jenis diskon (persentase atau nominal tetap) |
| discount_value | DECIMAL(10,2) | - | Nilai potongan harga |
| valid_from | DATE | - | Batas awal tanggal kupon aktif |
| valid_until | DATE | - | Batas akhir tanggal kupon aktif |
| usage_limit | INT(11) | - | Kuota batas maksimum penggunaan kupon |
| created_at | DATETIME | - | Tanggal dan waktu promo dibuat |
| updated_at | DATETIME | - | Tanggal dan waktu promo diperbarui |
Tabel ini digunakan untuk menyimpan data transaksi reservasi tiket bus oleh customer.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik untuk setiap booking |
| booking_code | VARCHAR(20) | Unique | Kode unik invoice pemesanan |
| user_id | INT(11) unsigned | FK (users.id) | ID customer yang melakukan reservasi |
| schedule_id | INT(11) unsigned | FK (schedules.id) | ID jadwal perjalanan yang dipesan |
| total_price | DECIMAL(10,2) | - | Total tagihan akhir setelah potongan diskon |
| payment_status | ENUM('pending', 'paid', 'failed', 'refunded') | - | Status transaksi pembayaran (default: 'pending') |
| booking_status | ENUM('active', 'completed', 'cancelled') | - | Status keaktifan reservasi (default: 'active') |
| created_at | DATETIME | - | Tanggal dan waktu pesanan dibuat |
| updated_at | DATETIME | - | Tanggal dan waktu data pesanan diperbarui |
Tabel ini digunakan untuk mencatat detail manifest nama penumpang beserta alokasi nomor kursi yang dipilih pada setiap transaksi booking.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik baris manifest kursi |
| booking_id | INT(11) unsigned | FK (bookings.id) | Referensi ke transaksi booking induk |
| seat_number | VARCHAR(10) | - | Nomor kursi yang dipesan (misal: 1A, 2B) |
| passenger_name | VARCHAR(100) | - | Nama penumpang yang menempati kursi tersebut |
Tabel ini menyimpan detail transaksi pembayaran digital dari payment gateway Midtrans.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik transaksi pembayaran |
| booking_id | INT(11) unsigned | FK (bookings.id) | ID booking yang dibayar |
| method | VARCHAR(50) | - | Metode pembayaran (misal: bank_transfer, qris) |
| amount | DECIMAL(10,2) | - | Jumlah nominal pembayaran yang disetor |
| transaction_id | VARCHAR(100) | - | ID transaksi resmi dari Midtrans |
| status | ENUM('pending', 'success', 'failed') | - | Status pelunasan pembayaran (default: 'pending') |
| paid_at | DATETIME | - | Waktu tepat transaksi terbayar lunas |
Tabel ini mencatat tiket elektronik penumpang yang diterbitkan otomatis setelah pembayaran lunas beserta log scanner boarding petugas.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik tiket elektronik |
| booking_id | INT(11) unsigned | FK (bookings.id) | ID booking transaksi asal |
| qr_code | VARCHAR(255) | - | Data token enkripsi untuk QR Code e-ticket |
| status | ENUM('issued', 'boarded', 'expired') | - | Status boarding tiket (default: 'issued') |
| scanned_by | INT(11) unsigned | FK (users.id) | ID petugas scanner yang memindai tiket |
| scanned_at | DATETIME | - | Tanggal dan waktu pemindaian boarding |
| issued_at | DATETIME | - | Tanggal dan waktu tiket diterbitkan |
Tabel ini digunakan untuk menyimpan rating, ulasan perjalanan, dan hasil analisis sentimen AI dari penumpang.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik data ulasan |
| booking_id | INT(11) unsigned | FK (bookings.id) | ID transaksi perjalanan terkait |
| user_id | INT(11) unsigned | FK (users.id) | ID customer pemberi ulasan |
| rating | TINYINT(4) | - | Skor penilaian (rating 1-5 bintang) |
| comment | TEXT | - | Isi pesan ulasan tertulis dari customer |
| sentiment | ENUM('positive', 'neutral', 'negative') | - | Klasifikasi sentimen otomatis berbasis Gemini AI |
| created_at | DATETIME | - | Tanggal dan waktu ulasan dikirim |
| updated_at | DATETIME | - | Tanggal dan waktu ulasan diperbarui |
Tabel ini menyimpan data log riwayat komunikasi asisten chatbot rekomendasi perjalanan bus berbasis Gemini AI.
| Nama Kolom | Tipe Data | Kunci | Keterangan |
|---|---|---|---|
| id | INT(11) unsigned | PK, Auto Increment | ID unik log pesan chat |
| user_id | INT(11) unsigned | FK (users.id) | ID customer pengirim chat (Null jika guest) |
| session_id | VARCHAR(50) | - | Sesi identifikasi obrolan chat |
| message | TEXT | - | Pesan teks pertanyaan dari pengguna |
| response | TEXT | - | Jawaban teks balasan dari chatbot Gemini AI |
| created_at | DATETIME | - | Tanggal dan waktu pesan dikirim |
| updated_at | DATETIME | - | Tanggal dan waktu data log diperbarui |