STUSI KASUS
Seorang pengusaha ingin membuat sebuah toko rental mobil yang akan di beri nama Rental99, yang beralamat di Kambu, Jalan Asnawa, no.11 dengan nomor telepon 082345878821. Rental ini memiliki banyak mobil dengan kode mobil, jenis mobil yang beragam, tahun keluarnya, dan harga sewa. Pada saat ingin menyewa costumer akan di minta untuk memasukkan nomor ktp mereka, nama, nomor hp aktif dan alamat lalu costumer akan memilih jenis mobil yang ingin di sewa, tanggal mulai menyewa dan tanggal pengembalian. Pengusaha ini menetapkan denda apabila costumer mengembalikan mobil yang mereka sewa lebih dari satu hari, dengan nominal denda perharinya adalah Rp. 20.000,00.
PERANCANGAN ERD
Entitas dan Atributnya
- Rental99
- Atribut:
- no_hp (Nomor telepon dari rental)
- alamat (Alamat dari rental)
- Mobil
- Atribut:
- kode_mobil (Primary key, kode unik untuk mobil)
- jenis_mobil (Tipe atau jenis mobil, seperti sedan, SUV, dll.)
- tahun (Tahun pembuatan mobil)
- harga_sewa (Harga sewa per hari untuk mobil)
- Customer
- Atribut:
- no_ktp (Primary key, nomor KTP sebagai identitas unik customer)
- nama (Nama customer)
- kontak (Nomor telepon atau kontak customer)
- alamat (Alamat customer)
- Sewa
- Atribut:
- id_sewa (Primary key, kode unik untuk transaksi sewa)
- tgl_sewa (Tanggal mulai sewa)
- tgl_kembali (Tanggal pengembalian mobil)
- denda (Jumlah denda jika ada keterlambatan)
- kode_mobil (Foreign key, referensi ke entitas Mobil)
- no_ktp (Foreign key, referensi ke entitas Customer)
Relasi
- Rental99 - Mobil
- Relasi: Memiliki
- Kardinalitas: Satu Rental99 dapat memiliki banyak mobil, tetapi satu mobil hanya dimiliki oleh satu Rental99.
- Mobil - Sewa
- Relasi: Terkait dengan
- Kardinalitas: Satu mobil dapat disewa dalam beberapa transaksi, tetapi satu transaksi hanya melibatkan satu mobil.
- Customer - Sewa
- Relasi: Melakukan
- Kardinalitas: Satu customer dapat melakukan beberapa transaksi sewa, tetapi satu transaksi sewa hanya dilakukan oleh satu customer.
Kunci Utama dan Kunci Asing
- Kunci Utama (Primary Key): Rental99: Tidak disebutkan secara eksplisit, tetapi diasumsikan entitas ini hanya satu sehingga tidak memerlukan primary key.
- kode_mobil di entitas Mobil.
- no_ktp di entitas Customer.
- id_sewa di entitas Sewa.
- Kunci Asing (Foreign Key):
- kode_mobil di entitas Sewa mengacu ke entitas Mobil.
- no_ktp di entitas Sewa mengacu ke entitas Customer.
PERANCANGAN EERD
Tabel dan Atributnya
- Tabel mobil
- Atribut:
- kode_mobil (Primary Key, tipe INT): Kode unik untuk setiap mobil.
- jenis_mobil (VARCHAR(45)): Jenis atau tipe mobil (contoh: sedan, SUV, dll.).
- tahun_mobil (YEAR): Tahun pembuatan mobil.
- harga_sewa (INT): Harga sewa mobil per hari.
- Deskripsi: Tabel ini menyimpan informasi tentang mobil yang tersedia untuk disewa.
- Atribut:
- Tabel sewa
- Atribut:
- id_sewa (Primary Key, tipe INT): ID unik untuk setiap transaksi sewa.
- mobil_kode_mobil (Foreign Key, tipe INT): Referensi ke kode_mobil di tabel mobil.
- COSTUMER_no_ktp (Foreign Key, tipe INT): Referensi ke no_ktp di tabel COSTUMER.
- tgl_sewa (DATE): Tanggal mulai sewa.
- tgl_kembali (DATE): Tanggal pengembalian mobil.
- denda (VARCHAR(45)): Besarnya denda jika ada keterlambatan.
- total_bayar (VARCHAR(45)): Total pembayaran untuk transaksi sewa.
- Deskripsi: Tabel ini mencatat detail transaksi sewa yang dilakukan oleh pelanggan.
- Atribut:
- Tabel COSTUMER
- Atribut:
- no_ktp (Primary Key, tipe INT): Nomor KTP unik untuk setiap pelanggan.
- nama (VARCHAR(45)): Nama pelanggan.
- alamat (VARCHAR(100)): Alamat pelanggan.
- kontak (VARCHAR(45)): Nomor telepon atau kontak pelanggan.
- Deskripsi: Tabel ini menyimpan data pelanggan yang melakukan transaksi sewa.
- Atribut:
Relasi
- Relasi antara mobil dan sewa
- Relasi: One-to-Many
- Deskripsi:
- Satu mobil (mobil.kode_mobil) dapat terkait dengan banyak transaksi sewa di tabel sewa melalui atribut mobil_kode_mobil.
- Artinya, satu mobil bisa disewa lebih dari sekali pada waktu yang berbeda.
- Relasi antara COSTUMER dan sewa
- Relasi: One-to-Many
- Deskripsi:
- Satu pelanggan (COSTUMER.no_ktp) dapat terkait dengan banyak transaksi sewa di tabel sewa melalui atribut COSTUMER_no_ktp.
- Artinya, satu pelanggan bisa melakukan lebih dari satu transaksi sewa.
Kunci Utama dan Kunci Asing
- Kunci Utama (Primary Key):
- kode_mobil di tabel mobil.
- id_sewa di tabel sewa.
- no_ktp di tabel COSTUMER.
- Kunci Asing (Foreign Key):
- mobil_kode_mobil di tabel sewa merujuk ke kode_mobil di tabel mobil.
- COSTUMER_no_ktp di tabel sewa merujuk ke no_ktp di tabel COSTUMER.
IMPLEMENTASI MYSQL
-- Membuat database
CREATE DATABASE rental_mobil;
-- Menggunakan database yang baru dibuat
USE rental_mobil;
-- Membuat tabel mobil
CREATE TABLE mobil (
  kode_mobil INT PRIMARY KEY,
  jenis_mobil VARCHAR(45) NOT NULL,
  tahun_mobil YEAR NOT NULL,
  harga_sewa INT NOT NULL
);
-- Membuat tabel COSTUMER
CREATE TABLE COSTUMER (
  no_ktp INT PRIMARY KEY,
  nama VARCHAR(45) NOT NULL,
  alamat VARCHAR(100),
  kontak VARCHAR(45)
);
-- Membuat tabel sewa
CREATE TABLE sewa (
  id_sewa INT PRIMARY KEY,
  mobil_kode_mobil INT NOT NULL,
  COSTUMER_no_ktp INT NOT NULL,
  tgl_sewa DATE NOT NULL,
  tgl_kembali DATE,
  denda INT DEFAULT 0,
  total_bayar INT DEFAULT 0,
  FOREIGN KEY (mobil_kode_mobil) REFERENCES mobil(kode_mobil),
  FOREIGN KEY (COSTUMER_no_ktp) REFERENCES COSTUMER(no_ktp)
);
Penjelasan
- Membuat Database dan Menggunakan Database:
- Query CREATE DATABASE rental_mobil membuat database bernama rental_mobil.
- Query USE rental_mobil memastikan bahwa semua tabel yang dibuat akan masuk ke database tersebut.
- Tabel mobil:
- kode_mobil sebagai Primary Key untuk memastikan kode unik untuk setiap mobil.
- jenis_mobil, tahun_mobil, dan harga_sewa untuk menyimpan informasi terkait mobil.
- Tabel COSTUMER:
- no_ktp sebagai Primary Key untuk memastikan setiap pelanggan memiliki identitas unik.
- nama, alamat, dan kontak untuk menyimpan data pelanggan.
- Tabel sewa:
- id_sewa sebagai Primary Key untuk identifikasi unik setiap transaksi sewa.
- mobil_kode_mobil dan COSTUMER_no_ktp sebagai Foreign Key yang menghubungkan tabel sewa ke tabel mobil dan COSTUMER.
- tgl_sewa dan tgl_kembali untuk mencatat durasi sewa.
- denda dan total_bayar untuk menyimpan informasi terkait pembayaran transaksi.
DATABASE
- Database rental99
- Tabel Costumer
- Tabel Mobil
- Tabel Sewa
APLIKASI
1. Membuat file penghubung antara aplikasi dengan database yang kita sudah buat.
contoh:Â
APLIKASI
File : db_conection.php :
<?php
// Ganti dengan kredensial yang benar
$host = 'localhost'; Â // Host MySQL (biasanya localhost)
$username = 'root'; Â Â // Username MySQL (default: root)
$password = ''; Â Â Â Â // Password MySQL (default: kosong)
$dbname = 'rental99'; // Nama database Anda
// Membuat koneksi ke database
$koneksi = new mysqli($host, $username, $password, $dbname);
// Cek apakah koneksi berhasil
if ($koneksi->connect_error) {
  die("Koneksi gagal: " . $koneksi->connect_error);
}
?>
2. Membuat kode aplikasi kemudian menggunakan file db_conection.php sebagai penghubung program aplikasi yang akan kita buat ke database
perintah :
// Menghubungkan ke database
include("../includes/db_connection.php");
3. Testing aplikasi
- Daftar Costumer
- sewa mobil
Untuk lebih memahami langkah-langkahnya anda dapat menonton video berikut :
Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H