Anda mungkin telah menyewa mobil pada liburan terakhir Anda. Anda memesan mobil Anda secara online, dan kemudian mengambilnya dari lokasi yang ditentukan setelah membayar semua biaya yang telah disepakati sebelumnya. Setelah selesai, Anda mengembalikannya ke agen dan mungkin membayar beberapa biaya tambahan. Pernahkah Anda berpikir tentang sistem yang membuat semua ini terjadi? Dalam artikel ini, kita akan melihat model data untuk sistem rental mobil.
Mengapa Membuat Model Data Rental Mobil Lain?
Saya ingin merancang model data dari sistem yang berfungsi penuh untuk perusahaan persewaan mobil internasional. Perusahaan menyimpan kendaraan untuk disewa di berbagai segmen (mini, ekonomi, menengah, SUV, kargo dan limusin). Ini mengoperasikan operasinya dari berbagai kota di berbagai negara. Perusahaan mengizinkan pelanggannya untuk menyewa mobil dari satu lokasi (lokasi penjemputan) dan menurunkannya di lokasi lain (lokasi pengantaran).
Pada titik ini, mari kita lihat artikel sebelumnya yang menjelaskan model perusahaan rental mobil sederhana. Model ini melayani semua layanan dasar yang ditawarkan oleh perusahaan rental mobil.
Sebelum kita menambahkan fungsi baru, saya ingin memasukkan beberapa perubahan kecil ke dalam model ini, yaitu:
- Menambahkan
city
sebagai kolom dilocation
tabel, dan menghapus tabel kota sama sekali. -
Menambahkan satu kolom tambahan,
zip
(seperti dalam kode ZIP, atau kode pos), dilocation
meja. Sistem ini akan mengidentifikasi lokasi pengambilan/pengantaran dengan kode posnya. Ada banyak negara di mana kode ZIP adalah nomor alfanumerik, jadi saya akan menyimpan kolom ini sebagai kolom varchar. -
Menambahkan
driving license issue date
kepadacustomer
meja. Ada beberapa negara di mana batas kecepatan maksimum bergantung pada kapan lisensi dikeluarkan untuk pengemudi. - Mengganti nama
category
tabel kecar_category
, yang menjelaskan kontennya dengan lebih tepat. - Menyimpan informasi penerbangan pelanggan jika lokasi penjemputan di dekat bandara. Hal ini memungkinkan sistem untuk membuat perubahan yang sesuai pada permintaan reservasi pelanggan jika terjadi penundaan atau pembatalan penerbangan. Untuk melakukan ini, saya menambahkan tabel lain yang disebut
flight_detail
dan hubungkan kereservation
meja.
Menambahkan Informasi Faktur Pelanggan
Untuk pembuatan faktur, kita perlu menyimpan nilai sewa untuk setiap item inventaris, termasuk mobil dan peralatan. Biaya sewa ditetapkan untuk setiap kategori, karena proses reservasi berkaitan dengan kategori daripada mobil individu.
Izinkan saya menambahkan rental_value
di car_category
dan equipment_category
tabel.
Pada baris yang sama, harus ada beberapa biaya yang terkait dengan asuransi. Biaya ini ditentukan oleh perusahaan asuransi. Untuk saat ini, saya akan menambahkan satu kolom lagi, biaya, di insurance
tabel.
Untuk faktur, saya membuat tabel terpisah untuk menyimpan semua detail faktur. Dengan cara ini, detail yang sama ini dapat dengan mudah diambil kapan pun dibutuhkan. Karena penghitungan nilai ini agak rumit, saya tidak akan mengulanginya lagi dan lagi untuk faktur. Saya akan menambahkan satu tabel, yaitu rental_invoice
, yang terutama terkait dengan rental
meja.
rental_invoice
tabel berisi kolom berikut:
id
– kunci utama tabel ini.rental_id
– kunci utamarental
meja. Saya akan menambahkan satu batasan unik pada kolom ini:hanya boleh ada satu catatan untuk setiap rental.car_rent
– Kolom ini menandakan biaya sewa kendaraan yang disewa.-
Biaya ini dapat ditentukan dengan menggunakan SQL berikut:
select a.rental_value from car_category a, car b, rental c where c.car_id = b.car_id and b.category_id = a.id and c.id =
; equipment_rent_total
– Kolom ini menunjukkan jumlah biaya untuk setiap peralatan yang disewakan kepada pelanggan-
Total biaya dapat ditentukan dengan menggunakan SQL berikut:
select sum(a.rental_value) from equipment_category a, equipment b, car_equipment c, car d, rental e where a.id = b.equipment_category_id and b.id = c.equipment_id and c.car_id = d.id and d.id = e.car_id and e.id =
; -
insurance_cost_total
– Kolom ini untuk total biaya asuransi nasabah. Ini dapat ditentukan dengan menggunakan SQL berikutselect sum(a.cost) from insurance a, rental_insurance b, rental c where a.id = b.insurance_id and b.rental_id = c.id and c.id =
; service_tax
danVAT
– Seperti namanya, kolom ini menyimpan nilai untuk pajak layanan dan PPN yang berlaku.-
total_amount_payable
– Kolom ini akan berisi nilai dari total jumlah tagihan. Ini akan menjadi jumlah kolom berikut:total_amount_payable =car_rent + equipment_rent_total + insurance_cost_total
-
waiver_amount
dannet_amount_payable
– Kolom ini menyimpan nilai untuk jumlah pengabaian (jika ada) dan jumlah bersih yang harus dibayar untuk pembayaran.waiver_amount
adalah berapa banyak yang akan dibebaskan dari total faktur. Ini biasanya digunakan ketika perusahaan rental menawarkan diskon kepada pelanggan. Rumus untuk menentukannet_amount_payable
terlihat seperti ini:net_amount_payable =total_amount_payable – waiver_amount
Inventaris Seluler – Untuk perusahaan rental mobil, persediaannya selalu mobile karena berpindah dari satu lokasi ke lokasi lain. Jika Anda melihat kotak centang yang mengatakan 'kembali ke lokasi yang berbeda?' saat Anda memesan mobil secara online, Anda telah melihatnya beraksi. Sistem memperlakukan permintaan Anda sedikit berbeda jika lokasi pengembalian TIDAK sama dengan lokasi pengambilan. Sistem selalu melacak inventarisnya saat disewakan dan dikembalikan.
Misalnya, satu pelanggan menyewa mobil dari Chicago, mengonfirmasi bahwa lokasi pengantaran akan berbeda, dan berkendara ke tujuannya di Saint Louis. Jelas, dia akan menurunkan mobil di lokasi perusahaan Saint Louis. Dalam hal ini, segera setelah dia mengemudikan mobil dari lokasi Chicago, bagian inventaris ini tidak lagi terikat pada kantor itu. Mobil akan didaftarkan lagi, kali ini ke kantor Saint Louis, segera setelah dia selesai melakukannya.
Untuk menggabungkan mekanisme ini, saya akan menambahkan satu kolom, yaitu current_location_id
, di car
tabel serta equipment
meja. Kolom ini hanya menampung ID lokasi yang valid dari location
tabel.
Jadi, dengan contoh di atas, lokasi awal mobil adalah Chicago; akan diupdate setelah pelanggan mengembalikan mobil ke kantor tujuan.
Menyiapkan Opsi Pengisian Bahan Bakar
Sebagian besar perusahaan persewaan mobil memberikan jenis opsi pengisian bahan bakar berikut:- Maju Servis Bahan Bakar – pelanggan membayar tangki bahan bakar penuh di muka, dan mengembalikan mobil dengan tangki kosong.
- Biaya Layanan Bahan Bakar – pelanggan mendapatkan mobil dengan tangki bahan bakar penuh, tetapi membayarnya berdasarkan penggunaan bahan bakar.
- Swalayan Bahan Bakar – pelanggan menerima mobil dengan tangki bahan bakar penuh dan mengembalikan mobil dengan tangki penuh. Ini adalah opsi yang paling banyak diterima dari ketiganya.
Di sini, kami tidak mempermasalahkan opsi mana yang dipilih pelanggan. Yang kami inginkan adalah mendaftarkan pilihan mereka saat memproses permintaan sewa.
Untuk memenuhi kebutuhan ini, saya akan menambahkan satu tabel, fuel_option
, yang menyimpan semua opsi yang memungkinkan untuk mengisi bahan bakar mobil. Harus ada pemetaan satu-ke-satu antara permintaan sewa dan fuel_option
, karena pelanggan diminta untuk memilih salah satu pada saat memesan sewa.
Model Data Penyewaan Mobil Terakhir
Di banyak daerah, perusahaan persewaan mobil beralih ke penggunaan pengalaman persewaan mandiri tanpa kunci untuk pelanggan mereka. Mereka tidak ingin membuat pelanggan mereka menunggu di konter hanya untuk menyelesaikan dokumen dan mengambil kunci mobil. Dapatkah model data kami saat ini memenuhi persyaratan seperti itu? Perubahan apa yang diperlukan dalam model data kami untuk mewujudkannya?
Apakah Anda memiliki pemikiran tentang model data sewa mobil kami? Mari kita mulai diskusi! Jangan ragu untuk membagikan masukan Anda di bagian komentar.