Kelima tabel dalam diagram ini adalah tabel utama. Rancangan database ini tidak
memerlukan tabel tambahan untuk menghubungkan antara tabel yang satu dengan yang
lain. Relasi antar tabel cukup digambarkan dengan menggunakan foreign key di antara
tabel yang saling berhubungan. Contohnya pada relasi antara tabel mobil dan merk,
primary key dari tabel merk (kolom idmerk) akan dijadikan sebagai foreign key di tabel
mobil (kolom merk_idmerk). Sehingga dapat diketahui sebuah mobil memiliki merk
apa.
2) Tabel merk
3) Tabel mobil
4) Tabel sopir
5) Tabel transaksi
5) Tabel transaksi
CREATE TABLE `transaksi` (
`pelanggan_noktp` CHAR(5) NOT NULL,
`mobil_platnomor` CHAR(9) NOT NULL,
`sopir_noktp` CHAR(5) NOT NULL,
`tanggal` DATETIME NOT NULL,
`ratingsopir` INT NOT NULL,
`ratingmobil` INT NOT NULL,
CONSTRAINT `fk_transaksimobil_pelanggan1`
FOREIGN KEY (`pelanggan_noktp`)
REFERENCES `pelanggan` (`noktp`),
CONSTRAINT `fk_transaksimobil_mobil1`
FOREIGN KEY (`mobil_platnomor`)
REFERENCES `mobil` (`platnomor`),
CONSTRAINT `fk_transaksimobil_sopir1`
FOREIGN KEY (`sopir_noktp`)
REFERENCES `sopir` (`noktp`)
);
5) Menampilkan nama pelanggan, nama sopir, dan mobil yang digunakan berdasarkan
tanggal rental.
Fitur ini dibuat menggunakan procedure dengan sql sebagai berikut:
DELIMITER //
CREATE PROCEDURE cek_rental(_date INT)
BEGIN
SELECT pelanggan.nama AS 'nama pelanggan', sopir.nama AS
'nama sopir', mobil_platnomor AS 'plat nomor', DATE(tanggal)
AS 'tanggal' FROM pelanggan, sopir, transaksi
WHERE pelanggan.noktp=transaksi.pelanggan_noktp
AND sopir.noktp=transaksi.sopir_noktp
AND DAY(tanggal)=_date;
END
//
DELIMITER ;
RETURNS INT
BEGIN
DECLARE jumlah INT;
RETURN jumlah;
END
//
DELIMITER ;
10) Menampilkan platnomor dan merk mobil yang dipinjam berdasarkan pelanggan.
Fungsi ini dibuat menggunakan procedure dengan sql sebagai berikut:
DELIMITER //
CREATE PROCEDURE cari_mobil_dirental(_noktp CHAR(5))
BEGIN
SELECT noktp, namamerk, platnomor, tanggal FROM pelanggan,
transaksi, mobil, merk WHERE noktp=transaksi.pelanggan_noktp
AND transaksi.mobil_platnomor=mobil.platnomor AND
mobil.merk_idmerk=merk.idmerk AND noktp LIKE
CONCAT('%',_noktp,'%') ORDER BY tanggal;
END
//
DELIMITER ;
Contoh pemanggilan procedure untuk menampilkan platnomor dan merk mobil
yang dipinjam berdasarkan pelanggan:
11) Menampilkan ratingsopir yang diberikan pelanggan berdasarkan noktp sopir.
Fitur ini dibuat menggunakan procedure dengan sql sebagai berikut:
DELIMITER //
CREATE PROCEDURE cek_rating_sopir(_noktp CHAR(5))
BEGIN
SELECT sopir.noktp, pelanggan.nama AS 'nama pelanggan',
ratingsopir FROM pelanggan, transaksi, sopir WHERE
pelanggan.noktp=transaksi.pelanggan_noktp AND
sopir.noktp=transaksi.sopir_noktp AND sopir_noktp LIKE
CONCAT('%',_noktp,'%') ORDER BY ratingsopir DESC;
END
//
DELIMITER ;
Contoh pemangilan procedure untuk menampilkan ratingsopir yang diberikan
pelanggan berdasarkan noktp sopir:
12) Menampilkan rata-rata ratingsopir berdasarkan nama sopir.
Fitur ini dibuat menggunakan function dengan sql sebagai berikut:
DELIMITER //
CREATE FUNCTION rata2_rating_sopir(_nama VARCHAR(45))
RETURNS FLOAT
BEGIN
DECLARE rating FLOAT;
SELECT AVG(ratingsopir) INTO rating FROM transaksi, sopir
WHERE sopir.noktp=transaksi.sopir_noktp AND nama LIKE
CONCAT('%',_nama,'%');
RETURN rating;
END
//
DELIMITER ;