Adapun Tabel yang dibuat untuk database penyewaan kontainer di PT. Guna Sejahtera ini adalah :
1. Tabel Pelanggan {no_pelanggan, nama_pelanggan, perusahaan, alamat, no_telp}
2. Tabel Kontainer {no_kontainer, jenis, ukuran , harga}
3. Tabel Penerima {no_penerima, nama_penerima, perusahaan, alamat, no_telp}
4. Tabel Penyewaan {no_sewa, tgl_sewa, tujuan, nama_barang, no_pelanggan, no_kontainer}
5. Tabel Pembayaran {no_invoice, tgl_bayar, tgl_kembali, no_sewa, no_pelanggan, no_penerima,
no_kontainer, qty, total}
6. Tabel Pengembalian {no_kembali, no_invoice, no_sewa, no_pelanggan, no_kontainer,
tgl_keterlambatan ,denda}
Adapun View yang dibuat untuk database penyewaan kontainer di PT. Guna Sejahtera ini adalah :
1. View kontainer yang tersedia.
2. View pengembalian kontainer yang terlambat
3. View laporan pembayaran
Adapun Stored Procedure untuk database penyewaan kontainer di PT. Guna Sejahtera ini adalah :
1. Stored Procedure untuk penambahan data container
2. Stored Procedure untuk menghitung total pembayaran
3. Stored Procedure untuk mem Validasi id pelanggan yang baru
4. Stored Procedure untuk mencari pelanggan berdasarkan nomor pelanggan/id pelanggan
5. Stored Procedure untuk mencari kontainer berdasarkan nomor kontainer/id kontainer
6. Stored Procedure untuk mencari data penyewaan kontrainer berdasarkan no pembayaran
Adapun Stored Function untuk database penyewaan kontainer di PT. Guna Sejahtera ini adalah :
1. Stored Function untuk menghitung total jumlah yang melakukan transaksi pembayaran.
2. Stored Function untuk menghitung total jumlah kontainer pada tabel kontainer.
3. Stored Function untuk menghitung total jumlah pengembalian kontainer pada tabel
pengembalian.
Adapun Trigger untuk database penyewaan kontainer di PT. Guna Sejahtera ini adalah :
Adapun Sequence dan Synonym untuk database penyewaan kontainer di PT. Guna Sejahtera ini adalah :
1. Membuat sequence pada tabel penyewaan untuk no_sewa
2. Membuat synonym pada tabel penyewaan agar lebih dipersingkat menjadi tabel sewa
Skema Relasi :
Struktur Tabel :
1. Tabel Pelanggan
2. Tabel Kontainer
3. Tabel Penerima
4. Tabel Penyewaan
5. Tabel Pembayaran
SELECT *
FROM pelanggan ;
2. Tabel Kontainer
Tabel Kontainer {no_kontainer, jenis, ukuran , harga}
CREATE TABLE kontainer
( no_kontainer CHAR(5)
CONSTRAINT kon_no_kontainer PRIMARY KEY
, jenis VARCHAR2(25)
CONSTRAINT kon_jenis NOT NULL
, ukuran NUMBER(5)
CONSTRAINT kon_ukuran NOT NULL
, harga NUMBER(15)
CONSTRAINT kon_harga NOT NULL
, status VARCHAR2(20)
CONSTRAINT kon_status NOT NULL
);
SELECT *
FROM kontainer ;
3. Tabel Penerima
Tabel Penerima {no_penerima, nama_penerima, perusahaan, alamat, no_telp}
CREATE TABLE penerima
( no_penerima CHAR(5)
CONSTRAINT pen_no_penerima PRIMARY KEY
, nama_penerima VARCHAR2(25)
CONSTRAINT pen_nama_penerima NOT NULL
, perusahaan VARCHAR2(25)
, alamat VARCHAR2(25)
, no_telp VARCHAR2(20)
);
SELECT *
FROM kontainer ;
4. Tabel Penyewaan
Tabel Penyewaan {no_sewa, tgl_sewa, tujuan, nama_barang, no_pelanggan, no_kontainer}
CREATE TABLE penyewaan
( no_sewa CHAR(5)
CONSTRAINT sewa_no_kontainer PRIMARY KEY
, tgl_sewa DATE NOT NULL
, tujuan VARCHAR2(30)
CONSTRAINT sewa_tujuan NOT NULL
, nama_barang VARCHAR2(25)
CONSTRAINT sewa_nama_barang NOT NULL
, no_pelanggan CHAR(5) NOT NULL
, no_kontainer CHAR(5) NOT NULL
, CONSTRAINT sewa_no_pel_fk
FOREIGN KEY(no_pelanggan)
REFERENCES pelanggan(no_pelanggan)
, CONSTRAINT sewa_no_kon_fk
FOREIGN KEY(no_kontainer)
REFERENCES kontainer(no_kontainer)
);
INSERT INTO penyewaan
(no_sewa, tgl_sewa, tujuan, nama_barang, no_pelanggan,
no_kontainer)
VALUES
('S0001',(to_date('2017/01/30 09:00:00', 'yyyy/mm/dd
hh24:mi:ss')),'Surabaya','Food Cargo','P0001','K0004');
SELECT *
FROM penyewaan ;
5. Tabel Pembayaran
Tabel Pembayaran {no_invoice, tgl_bayar, tgl_kembali, no_sewa, no_pelanggan, no_penerima,
no_kontainer, qty, total}
SELECT *
FROM pembayaran ;
6. Tabel Pengembalian
Tabel Pengembalian {no_kembali, no_invoice, no_sewa, no_pelanggan, no_kontainer,
tgl_keterlambatan ,denda}
SELECT *
FROM pengembalian ;
B. Create View
1. View tabel kontainer dengan status status tersedia
CREATE OR REPLACE VIEW vu_lihatkontainer AS
SELECT * FROM kontainer WHERE status = 'Tersedia' ;
CREATE OR REPLACE
PROCEDURE validasi_no_pelanggan(vno_pel pelanggan.no_pelanggan%TYPE
)
IS
vpelanggan pelanggan.no_pelanggan%TYPE;
BEGIN
BEGIN
SELECT no_pelanggan INTO vpelanggan FROM pelanggan WHERE
no_pelanggan = vno_pel;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vpelanggan := NULL;
END;
IS
BEGIN
select nama_pelanggan,perusahaan,alamat,no_telp into vNAMA,vPRHS,
vALAMAT,vTELEPON from pelanggan where no_pelanggan= vID;
end SPCARIPENYEWA;
/
IS
BEGIN
select jenis,ukuran,harga,status into vJENIS,vUKURAN, vHARGA,vSTATUS
from kontainer where no_kontainer= vID;
end SPCARIKONTAINER
;
/
D. STORED FUNCTION
1. Stored Function untuk menghitung total jumlah yang melakukan transaksi pembayaran pada tabel
pembayaran
CREATE OR REPLACE FUNCTION totaltransaksi
RETURN NUMBER IS
total NUMBER(3) := 0;
BEGIN
SELECT count(*) into total
FROM pembayaran;
RETURN total;
END;
--call function
DECLARE
2. Stored Function untuk menghitung total jumlah kontainer pada tabel kontainer
CREATE OR REPLACE FUNCTION totalkontainer
RETURN NUMBER
IS
total number(3) := 0;
BEGIN
SELECT count(*) into total
FROM kontainer;
return total;
END;
--call function
DECLARE
3. Stored Function untuk menghitung total jumlah pengembalian container pada tabel
pengembalian.
CREATE OR REPLACE FUNCTION totalpengembalian
RETURN NUMBER
IS
total number(3) := 0;
BEGIN
SELECT count(*) into total
FROM pengembalian;
return total;
END;
--call function
DECLARE
E. TRIGGER
1. Trigger dijalankan apabila terjadi proses insert pada tabel penyewaan
CREATE OR REPLACE TRIGGER set\\elah_insert_table_penyewaan
AFTER INSERT ON PENYEWAAN
FOR EACH ROW
BEGIN
F. SEQUENCE, SYNONYM
1. Membuat sequence pada tabel penyewaan untuk no_sewa.
CREATE SEQUENCE no_sewa
MINVALUE 1
MAXVALUE 123
START WITH 1
INCREMENT BY 1;
2. Membuat synonym pada tabel penyewaan agar lebih dipersingkat menjadi tabel sewa.
Create Synonym Sewa
FOR UAS.penyewaan ;