Anda di halaman 1dari 80

TUGAS KELOMPOK BASIS DATA LANJUT

”LAPORAN PROJECT TENGAH SEMESTER BASIS DATA LANJUT”

DOSEN PENGAMPU:
I Made Putrama, S.T.,M.Tech.

Oleh:

I Gede Riyan Ardi Darmawan (1815091037)


Ni Putu Dena Kristy Andiani (1815091021)
Kadek Wawan Yudayana (1815091061)

Sistem Informasi
3A

PROGRAM STUDI SISTEM INFORMASI


FAKULTAS TEKNIK DAN KEJURUAN
UNIVERSITAS PENDIDIKAN GANESHA
TAHUN AKADEMIK 2018/2019
TUGAS KELOMPOK BASIS DATA LANJUT

Mata Kuliah : Basis Data Lanjut

Kode Mata Kuliah : SIF 1325-BDL

SKS : 3 SKS

Dosen Pengempu : I Made Putrama, S.T.,M.Tech


Instruksi :
A. Menggunakan Database yang dirancang berdasarkan Studi Kasus yang diberikan
(Perusahaan XYZ), buatlah Database Object berikut ini:
1) Views
a. View yang dapat menampilkan data Pembelian dengan informasi berikut ini:
• Nama Pembelian
• Nama Pemasok
• Jumlah Total Pembelian, Persediaan, Barang Terjual
• Tanggal Pembelian
b. View yang dapat menampilkan data Item Barang yang dibeli dengan informasi
berikut ini:
• Nama Item Barang
• Harga Item Barang dari Pemasok
• Tanggal Beli, Tanggal Terima, dan Jumlah Item Barang yang dibeli dari
Pemasok
c. View yang dapat menampilkan data Penjualan dengan informasi berikut ini:
• Nama Penjualan
• Nama Pelanggan
• Jumlah Total Penjualan, Persediaan, Barang Terjual
• Tanggal Penjualan
d. View yang dapat menampilkan data Item Barang yang dijual dengan informasi
berikut ini:
• Nama Item Barang
• Harga, Tanggal dan Jumlah Item Barang yang dibeli Pelanggan
2) Store Functions
a. Buatlah sebuah Store Function untuk mengkalkulasi Jumlah Total yang diperlukan
View 1(a)
b. Buatlah sebuah Store Function untuk men-generate Running Number untuk Kode
pada tabel Barang
Contoh:
Kode Barang
B000000001
B000000004
B000000005
B000000007
Untuk menghasilkan Kode berikutnya, maka Store Function harus
mempunyai catatan tentang running number yang digunakan oleh tabel Barang.
Untuk itu, buatlah Temporary Tabel dengan nama autoidtabel berikut ini:

nama_tabel id_terakhir id_terhapus


Barang B000000007 B000000002, B000000003,
B000000006

Store Function yang Anda buat harus dapat melakukan hal berikut ini:
a) Cek apakah ada nama_tabel = ‘barang’ di tabel autoidtabel:
Jika Tidak ada, generate sebuah Kode <kode_baru> untuk tabel Barang lalu
lakukan insert di tabel autoidtabel.
Jika Ada, cek apakah ada nilai pada kolom id_terhapus.
Jika Ada, ambil satu nilai (terpisah dengan ‘,’) dan update isi dari kolom
id_terhapus = id_terhapus – (nilai id yang diambil)
Jika Tidak ada, update id_terakhir = <kode_baru> where nama_tabel =
‘barang’
3) Store Procedures
a. Buatlah sebuah Store Procedure yang dapat menampilkan View 1(a) dengan input
paramater:
• Nama Barang
• Nama Pemasok
• Tanggal Pembelian (dari – sampai)
b. Store Procedure 3(a) harus memanfaatkan Store Function pada instruksi ke-2
c. Buatlah sebuah Store Procedure yang dapat menampilkan View 1(b) dengan input
parameter ID Pembelian
4) Triggers
a. Buatlah sebuah Trigger untuk menginputkan data berikut ini secara otomatis
pada tabel Pembelian, Barang dan Penjualan:
• Created_Dt
b. Buatlah sebuah Trigger untuk mengenerate otomatis ID Tabel barang dan
melakukan insert ke tabel Barang

B. Buatlah sebuah dokumen yang merupakan Spesifikasi Sistem Database yang dibuat
meliputi:
1) ERD dan Kamus Data nya
2) Tabel-tabel lengkap dengan relasi nya
3) Kumpulan DB Script yang dibuat
4) Instruksi untuk melakukan Ekskusi mulai dari awal sampai akhir
5) Database Object yang dibuat dan contoh hasil ekskusinya

Jawab :
B.
1. ERD dan Kamus Data
Kamus Data:

Pengguna :{id, username, password, tgl_login_terakhir, id_kateg_pengguna,


id_karyawan}.

Penjualan :{id, id_karyawan, id_pelanggan, id_alamat_penjualan, total_harga,


total_jumlah}.

Alamat :{id, alamat, kode_kecamatan, kode_kabupaten, kode_provinsi,


kode_negara}.

PenjualanBarang :{id_penjualan, kode_barang, id_satuan, harga_jual, jumlah_jual}.

KategoriPengguna :{id,kategori}.

Satuan :{id,nama,deskripsi}.

PembelianBarang :{kode_barang, id_pembelian, id_satuan, harga_beli, jumlah_beli}.

Pemasok :{id, nama, id_alamat}.

Pembelian :{id, id_pemasok, total_biaya, total_jumlah, id_karyawan,


id_alamat_pengiriman}.

Karyawan :{id, nama, tgl_lahir, id_alamat}.

Pelanggan :{id, naama, id_alamat}.

Gudang :{kode, nama, deskripsi, id_alamat, id_cabang}.

CabangUsaha :{id, nama_cabang, id_alamat}.

Lantai :{kode, deskripsi, kode_gudang, id_cabang, nama}.

Rak :{kode, deskripsi, kode_lantai, kode_gudang, id_cabang, nama}.

Kabupaten :{kode, nama, deskripsi, kode_provinsi, kode_negara}.

Kecamatan :{kode, nama, deskripsi, kode_kabupaten, kode_provinsi,


kode_negara}.

Hakakses :{id, hak_akses, deskripsi, id_kateg_pengguna}.

Barang :{kode, nama, total_persediaan, total_pembelian, total_penjualan,


deskripsi, kode_unit, kode_rak, kode_lantai, kode_gudang, id_cabang}.
Unit :{kode, deskripsi, kode_rak, kode_rantai, kode_gudang, id_cabang,
nama}.

Provinsi :{kode, nama, deskripsi, kode_negara}.

Negara :{kode,nama,deskripsi}.
2. Tabel-Tabel dan Relasinya (RAT)
3. DB Script
4. Instruksi untuk melakukan Eksekusi mulai dari awal sampai akhir

-- phpMyAdmin SQL Dump

-- version 4.9.1

-- https://www.phpmyadmin.net/

--

-- Host: localhost

-- Generation Time: Nov 15, 2019 at 02:36 PM

-- Server version: 10.4.8-MariaDB

-- PHP Version: 7.1.32

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

SET AUTOCOMMIT = 0;

START TRANSACTION;

SET time_zone = "+00:00";

/*!40101 SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET
@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET
@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8mb4 */;


--

-- Database: `tugasfix`

--

DELIMITER $$

--

-- Procedures

--

CREATE DEFINER=`root`@`localhost` PROCEDURE `Procedure_pembelian` (IN


`input_barang` VARCHAR(45), IN `input_pemasok` VARCHAR(45), IN
`input_tanggal` DATE) NO SQL

BEGIN

SELECT * FROM views_pembelian

WHERE

Nama_Barang LIKE input_barang

OR

Nama_Pemasok LIKE input_pemasok

OR

Tanggal_Pembelian LIKE input_tanggal;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `temptable` (IN `ind`


INT(1), IN `kode` CHAR(10), IN `tname` VARCHAR(100)) BEGIN

declare tid int(11);

declare tterakhir int(11);


declare tterhapus varchar(100);

select id, id_terakhir, id_terhapus into tid, tterakhir, tterhapus from autoidtable
where nama_table = tname;

-- delete

if (ind = -1) then

begin

if length(tterhapus) > 0 then

set tterhapus = concat(tterhapus, ';', kode);

else

set tterhapus = kode;

end if;

update autoidtable set id_terhapus = tterhapus where nama_table = tname


and id = tid;

end;

-- update

elseif length(tid) > 0 then

-- only update if new id > id terakhir

update autoidtable set id_terakhir = cast(kode as signed int) where


nama_table = tname and id = tid

and cast(kode as signed int) = (id_terakhir + 1);

-- insert

else

insert into autoidtable (nama_table, id_terakhir) values (tname, cast(kode as


signed int));
end if;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `upsertTempTable` (IN `ind`


INT(1), IN `kode` VARCHAR(100), IN `tname` VARCHAR(100)) BEGIN

declare tid int(11);

declare tterakhir int(11);

declare tterhapus varchar(100);

select id, id_terakhir, id_terhapus into tid, tterakhir, tterhapus from autoidtabel
where nama_table = tname;

-- delete

if (ind = -1) then

begin

if length(tterhapus) > 0 then

set tterhapus = concat(tterhapus, ';', kode);

else

set tterhapus = kode;

end if;

update autoidtabel set id_terhapus = tterhapus where nama_table = tname


and id = tid;

end;

-- update

elseif length(tid) > 0 then

-- only update if new id > id terakhir


update autoidtabel set id_terakhir = cast(kode as signed int) where
nama_table = tname and id = tid

and cast(kode as signed int) = (id_terakhir + 1);

-- insert

else

insert into autoidtabel (nama_table, id_terakhir) values (tname, cast(kode as


signed int));

end if;

END$$

--

-- Functions

--

CREATE DEFINER=`root`@`localhost` FUNCTION `getNewID` (`ntable`


VARCHAR(50)) RETURNS VARCHAR(10) CHARSET utf8 BEGIN

declare strid varchar(10);

declare finished int default false;

declare tid int(11);

declare tterakhir int(11);

declare tterhapus varchar(100);

declare curtemp cursor for select id, id_terakhir, id_terhapus from autoidtabel
where nama_table = ntable;

declare continue handler for NOT FOUND set finished = true;

open curtemp;
getData: loop

fetch curtemp into tid, tterakhir, tterhapus;

if finished then leave getData; end if;

-- take one from id_terhapus

if length(tterhapus) > 0 then

begin

set strid = SUBSTRING_INDEX(tterhapus, ";", 1);

-- remove the existing one

update autoidtabel set id_terhapus = substring(id_terhapus,

length(substring_index(id_terhapus, ';', 1))+2,

length(id_terhapus))

where nama_table = ntable;

end;

elseif tterakhir >= 0 then

-- take and inrement

begin

set tterakhir = tterakhir + 1;

set strid = tterakhir;

end;

-- insert a new one

else

begin
set tterakhir = 1;

insert into autoidtabel (id_terakhir) values (tterakhir);

set strid = tterakhir;

end;

end if;

end loop getData;

close curtemp;

return strid;

END$$

CREATE DEFINER=`root`@`localhost` FUNCTION `HITUNG_PERSEDIAAN`


(`id` INT) RETURNS INT(11) BEGIN

DECLARE v1 INT;

DECLARE v2 INT;

SELECT SUM(Pembelian.total_jumlah) INTO v1 FROM Pembelian WHERE


`Pembelian`.`id_pemasok` = `id`;

SELECT SUM(Penjualan.total_jumlah) INTO v2 FROM

Penjualan INNER JOIN PenjualanBarang ON PenjualanBarang.id_penjualan =

Penjualan.id

INNER JOIN Barang ON PenjualanBarang.kode_barang = Barang.kode

INNER JOIN PembelianBarang ON PembelianBarang.kode_barang =


Barang.kode

INNER JOIN Pembelian ON PembelianBarang.id_pembelian = Pembelian.id


INNER JOIN Pemasok ON Pembelian.id_pemasok = Pemasok.id

WHERE `Pembelian`.`id_pemasok` = `id`;

RETURN (v2-v1);

END$$

DELIMITER ;

-- --------------------------------------------------------

--

-- Table structure for table `Alamat`

--

CREATE TABLE `Alamat` (

`id` int(11) NOT NULL,

`alamat` varchar(45) NOT NULL,

`kode_kecamatan` char(10) DEFAULT NULL,

`kode_kabupaten` char(10) DEFAULT NULL,

`kode_provinsi` char(10) NOT NULL,

`kode_negara` char(10) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Alamat`


--

INSERT INTO `Alamat` (`id`, `alamat`, `kode_kecamatan`, `kode_kabupaten`,


`kode_provinsi`, `kode_negara`) VALUES

(1, 'Jalan Desa Kalibukbuk-Anturan', 'Kec01', 'Kab01', 'Provinsi01', 'Negara01'),

(2, 'Jalan Desa Tejakula', 'Kec02', 'Kab01', 'Provinsi01', 'Negara01'),

(3, 'Jalan Desa Kaliasem', 'Kec03', 'Kab01', 'Provinsi01', 'Negara01'),

(4, 'Jalan Seririt- Singaraja', 'Kec04', 'Kab01', 'Provinsi01', 'Negara01');

-- --------------------------------------------------------

--

-- Table structure for table `Barang`

--

CREATE TABLE `Barang` (

`kode` char(10) NOT NULL,

`nama` varchar(45) NOT NULL,

`total_persediaan` int(11) DEFAULT NULL,

`total_pembelian` int(11) DEFAULT NULL,

`total_penjualan` int(11) DEFAULT NULL,

`deskripsi` varchar(500) DEFAULT NULL,

`kode_unit` char(10) DEFAULT NULL,

`kode_rak` char(10) DEFAULT NULL,

`kode_lantai` char(10) DEFAULT NULL,


`kode_gudang` char(10) DEFAULT NULL,

`id_cabang` int(11) DEFAULT NULL,

`created_dt` datetime NOT NULL,

`updated_dt` datetime NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Barang`

--

INSERT INTO `Barang` (`kode`, `nama`, `total_persediaan`, `total_pembelian`,


`total_penjualan`, `deskripsi`, `kode_unit`, `kode_rak`, `kode_lantai`, `kode_gudang`,
`id_cabang`, `created_dt`, `updated_dt`) VALUES

('B6', 'kapal', 1, 1, 1, 'kapal laut', 'Unit01', 'Rak01', 'Lantai01', 'Gudang01', 1,


'2019-11-15 16:54:52', '2019-11-14 00:00:00'),

('Barang01', 'Aqua Gelas', 100, 50, 20, 'Aqua Gelas Laku 10 Dus', 'Unit01', 'Rak01',
'Lantai01', 'Gudang01', 1, '0000-00-00 00:00:00', '2019-10-24 00:00:00'),

('Barang02', 'Laptop Asus ROG', 50, 5, 20, 'Laptop Asus ROG Laku 13', 'Unit02',
'Rak02', 'Lantai02', 'Gudang01', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),

('Barang03', 'Gas LPG', 100, 50, 10, 'Gas LPG Laku 50', 'Unit03', 'Rak03', 'Lantai03',
'Gudang02', 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),

('Barang04', 'Kipas Angin', 30, 10, 10, 'Kipas Angin Laku 5', 'Unit04', 'Rak04',
'Lantai04', 'Gudang02', 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00');

--

-- Triggers `Barang`
--

DELIMITER $$

CREATE TRIGGER `barang_AFTER_INSERT` AFTER INSERT ON `Barang`


FOR EACH ROW BEGIN

declare kode varchar(10);

set kode = substring(new.kode, 2, length(new.kode));

call tugasfix.upsertTempTable(0, kode, 'barang');

END

$$

DELIMITER ;

DELIMITER $$

CREATE TRIGGER `barang_BEFORE_DELETE` BEFORE DELETE ON `Barang`


FOR EACH ROW BEGIN

call tugasfix.upsertTempTable(-1, old.kode, 'barang');

END

$$

DELIMITER ;

DELIMITER $$

CREATE TRIGGER `barang_BEFORE_INSERT` BEFORE INSERT ON `Barang`


FOR EACH ROW BEGIN

declare kode varchar(10);

SET NEW.created_dt = CURRENT_TIMESTAMP();

set kode = getNewID('Barang');

if left(kode, 1) <> 'B' then


set kode = concat("B", LPAD(kode, 1, "0"));

end if;

set new.kode = kode;

END

$$

DELIMITER ;

-- --------------------------------------------------------

--

-- Table structure for table `CabangUsaha`

--

CREATE TABLE `CabangUsaha` (

`id` int(11) NOT NULL,

`nama_cabang` varchar(45) NOT NULL,

`id_alamat` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `CabangUsaha`

--
INSERT INTO `CabangUsaha` (`id`, `nama_cabang`, `id_alamat`) VALUES

(1, 'Cabang Usaha 01', 1),

(2, 'Cabang Usaha 02', 4);

-- --------------------------------------------------------

--

-- Table structure for table `Gudang`

--

CREATE TABLE `Gudang` (

`kode` char(10) NOT NULL,

`nama` varchar(45) NOT NULL,

`deskripsi` varchar(45) NOT NULL,

`id_alamat` int(11) NOT NULL,

`id_cabang` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Gudang`

--

INSERT INTO `Gudang` (`kode`, `nama`, `deskripsi`, `id_alamat`, `id_cabang`)


VALUES

('Gudang01', 'Gudang A', 'Gudang Utama I', 3, 1),


('Gudang02', 'Gudang B', 'Gudang Utama II', 2, 2),

('Gudang03', 'Gudang C', 'Gudang Cadangan', 2, 2),

('Gudang04', 'Gudang D', 'Gudang Cadangan', 3, 1);

-- --------------------------------------------------------

--

-- Table structure for table `HakAkses`

--

CREATE TABLE `HakAkses` (

`id` int(11) NOT NULL,

`hak_akses` varchar(45) DEFAULT NULL,

`deskripsi` varchar(45) DEFAULT NULL,

`id_kateg_pengguna` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `HakAkses`

--

INSERT INTO `HakAkses` (`id`, `hak_akses`, `deskripsi`, `id_kateg_pengguna`)


VALUES

(1, 'Hak Akses Karyawan', 'Mendapat Informasi Barang', 1),

(2, 'Hak Akses Customer', 'Berbelanja', 2),


(3, 'Hak Akses Admin', 'Mampu Melakukan Kegiatan Administrasi Data', 3),

(4, 'Hak Akses Owner', 'Dapat Melakukan Semua Hal', 4);

-- --------------------------------------------------------

--

-- Table structure for table `Kabupaten`

--

CREATE TABLE `Kabupaten` (

`kode` char(10) NOT NULL,

`nama` varchar(45) NOT NULL,

`deskripsi` varchar(45) DEFAULT NULL,

`kode_provinsi` char(10) NOT NULL,

`kode_negara` char(10) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Kabupaten`

--

INSERT INTO `Kabupaten` (`kode`, `nama`, `deskripsi`, `kode_provinsi`,


`kode_negara`) VALUES

('Kab01', 'Buleleng', 'Bali Utara', 'Provinsi01', 'Negara01'),

('Kab02', 'Kota Denpasar', 'Bali Selatan', 'Provinsi01', 'Negara01'),


('Kab03', 'Klungkung', 'Bali Tengah', 'Provinsi01', 'Negara01'),

('Kab04', 'Bangli', 'Bali Tengah', 'Provinsi01', 'Negara01');

-- --------------------------------------------------------

--

-- Table structure for table `Karyawan`

--

CREATE TABLE `Karyawan` (

`id` int(11) NOT NULL,

`nama` varchar(45) NOT NULL,

`tgl_lahir` date NOT NULL,

`id_alamat` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Karyawan`

--

INSERT INTO `Karyawan` (`id`, `nama`, `tgl_lahir`, `id_alamat`) VALUES

(1, 'Putu Abraham', '2019-10-01', 2),

(2, 'Komang Kangin Kauh', '2019-10-02', 2);


-- --------------------------------------------------------

--

-- Table structure for table `KategoriPengguna`

--

CREATE TABLE `KategoriPengguna` (

`id` int(11) NOT NULL,

`kategori` varchar(45) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `KategoriPengguna`

--

INSERT INTO `KategoriPengguna` (`id`, `kategori`) VALUES

(1, 'Karyawan'),

(2, 'Customer'),

(3, 'Admin'),

(4, 'Owner');

-- --------------------------------------------------------

--
-- Table structure for table `Kecamatan`

--

CREATE TABLE `Kecamatan` (

`kode` char(10) NOT NULL,

`nama` varchar(45) NOT NULL,

`deskripsi` varchar(45) DEFAULT NULL,

`kode_kabupaten` char(10) NOT NULL,

`kode_provinsi` char(10) NOT NULL,

`kode_negara` char(10) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Kecamatan`

--

INSERT INTO `Kecamatan` (`kode`, `nama`, `deskripsi`, `kode_kabupaten`,


`kode_provinsi`, `kode_negara`) VALUES

('Kec01', 'Buleleng', 'Kecamatan Buleleng', 'Kab01', 'Provinsi01', 'Negara01'),

('Kec02', 'Tejakula', 'Kecamatan Tejakula', 'Kab01', 'Provinsi01', 'Negara01'),

('Kec03', 'Banjar', 'Kecamatan Banjar', 'Kab01', 'Provinsi01', 'Negara01'),

('Kec04', 'Seririt', 'Kecamatan Seririt', 'Kab01', 'Provinsi01', 'Negara01');

-- --------------------------------------------------------
--

-- Table structure for table `Lantai`

--

CREATE TABLE `Lantai` (

`kode` char(10) NOT NULL,

`deskripsi` varchar(45) NOT NULL,

`kode_gudang` char(10) NOT NULL,

`id_cabang` int(11) NOT NULL,

`nama` varchar(45) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Lantai`

--

INSERT INTO `Lantai` (`kode`, `deskripsi`, `kode_gudang`, `id_cabang`, `nama`)


VALUES

('Lantai01', 'Lantai Pertama', 'Gudang01', 1, 'Gudang A'),

('Lantai02', 'Lantai Kedua', 'Gudang01', 1, 'Gudang A'),

('Lantai03', 'Lantai Pertama', 'Gudang02', 2, 'Gudang B'),

('Lantai04', 'Lantai Kedua', 'Gudang02', 2, 'Gudang B'),

('Lantai05', 'Lantai Pertama dan Terakhir', 'Gudang03', 2, 'Gudang C'),

('Lantai06', 'Lantai Pertama dan Terakhir', 'Gudang04', 1, 'Gudang D');


-- --------------------------------------------------------

--

-- Table structure for table `Negara`

--

CREATE TABLE `Negara` (

`kode` char(10) NOT NULL,

`nama` varchar(45) NOT NULL,

`deskripsi` varchar(45) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Negara`

--

INSERT INTO `Negara` (`kode`, `nama`, `deskripsi`) VALUES

('Negara01', 'Indonesia', 'Terletak di Benua Asia'),

('Negara02', 'Jepang', 'Terletak di Benua Asia'),

('Negara03', 'Amerika', 'Terletak di Benua Amerika');

-- --------------------------------------------------------

--
-- Table structure for table `Pelanggan`

--

CREATE TABLE `Pelanggan` (

`id` int(11) NOT NULL,

`nama` varchar(45) DEFAULT NULL,

`id_alamat` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Pelanggan`

--

INSERT INTO `Pelanggan` (`id`, `nama`, `id_alamat`) VALUES

(1, 'Putu Customer', 3),

(2, 'Ketut Pelanggan Rage', 4),

(3, 'Komang Customer Pelanggan', 1);

-- --------------------------------------------------------

--

-- Table structure for table `Pemasok`

--
CREATE TABLE `Pemasok` (

`id` int(11) NOT NULL,

`nama` varchar(45) NOT NULL,

`id_alamat` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Pemasok`

--

INSERT INTO `Pemasok` (`id`, `nama`, `id_alamat`) VALUES

(1, 'PT Harapan Kita', 3),

(2, 'PT Kangin Kauh Sejahtera', 2),

(3, 'PT Kaje Kelod Damai', 2);

-- --------------------------------------------------------

--

-- Table structure for table `Pembelian`

--

CREATE TABLE `Pembelian` (

`id` int(11) NOT NULL,

`id_pemasok` int(11) NOT NULL,


`total_biaya` float NOT NULL,

`total_jumlah` int(11) NOT NULL,

`id_karyawan` int(11) NOT NULL,

`created_by` int(11) NOT NULL,

`updated_by` int(11) DEFAULT NULL,

`created_dt` datetime NOT NULL,

`updated_dt` datetime DEFAULT NULL,

`id_alamat_pengiriman` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Pembelian`

--

INSERT INTO `Pembelian` (`id`, `id_pemasok`, `total_biaya`, `total_jumlah`,


`id_karyawan`, `created_by`, `updated_by`, `created_dt`, `updated_dt`,
`id_alamat_pengiriman`) VALUES

(1, 1, 200000, 4, 2, 3, 3, '2019-10-08 00:00:00', '2019-10-09 00:00:00', 3),

(2, 1, 250000, 50, 1, 3, 3, '2019-10-09 00:00:00', '2019-10-18 00:00:00', 2),

(3, 3, 150000, 20, 2, 3, 3, '2019-10-03 00:00:00', '2019-10-11 00:00:00', 3),

(4, 3, 100000, 25, 1, 3, 3, '2019-10-03 00:00:00', '2019-10-02 00:00:00', 1),

(5, 2, 150000, 25, 2, 3, 3, '2019-10-29 00:00:00', '2019-10-31 00:00:00', 2),

(6, 2, 150000, 23, 1, 3, 3, '2019-10-21 04:16:29', '2019-10-24 00:00:00', 2),

(7, 1, 200000, 10, 2, 3, 3, '2019-10-21 09:25:25', '2019-10-24 00:00:00', 2),

(10, 1, 10000, 10, 2, 2, 2, '2019-10-30 19:36:32', '2019-10-31 00:00:00', 3);


--

-- Triggers `Pembelian`

--

DELIMITER $$

CREATE TRIGGER `Pembelian_BEFORE_INSERT` BEFORE INSERT ON


`Pembelian` FOR EACH ROW BEGIN

SET NEW.created_dt = CURRENT_TIMESTAMP();

END

$$

DELIMITER ;

-- --------------------------------------------------------

--

-- Table structure for table `PembelianBarang`

--

CREATE TABLE `PembelianBarang` (

`kode_barang` char(10) NOT NULL,

`id_pembelian` int(11) NOT NULL,

`id_satuan` int(11) NOT NULL,

`harga_beli` float NOT NULL,

`jumlah_beli` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--

-- Dumping data for table `PembelianBarang`

--

INSERT INTO `PembelianBarang` (`kode_barang`, `id_pembelian`, `id_satuan`,


`harga_beli`, `jumlah_beli`) VALUES

('Barang01', 1, 1, 50000, 2),

('Barang01', 3, 4, 7500, 20),

('Barang02', 1, 1, 50000, 2),

('Barang02', 4, 4, 4000, 25),

('Barang03', 2, 3, 3000, 20),

('Barang03', 5, 4, 6000, 25),

('Barang04', 2, 4, 3000, 30),

('Barang04', 6, 4, 6521, 23);

-- --------------------------------------------------------

--

-- Table structure for table `Pengguna`

--

CREATE TABLE `Pengguna` (

`id` int(11) NOT NULL,

`username` char(10) NOT NULL,


`password` char(10) NOT NULL,

`tgl_login_terakhir` datetime DEFAULT NULL,

`id_kateg_pengguna` int(11) NOT NULL,

`id_karyawan` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Pengguna`

--

INSERT INTO `Pengguna` (`id`, `username`, `password`, `tgl_login_terakhir`,


`id_kateg_pengguna`, `id_karyawan`) VALUES

(1, 'karyawan1', '1234', '2019-10-01 00:00:00', 1, 2),

(2, 'customer1', '1234', '2019-10-02 00:00:00', 2, 2),

(3, 'admin1', '1234', '2019-10-10 00:00:00', 3, 1),

(4, 'owner', '1234', '2019-10-31 00:00:00', 4, 1);

-- --------------------------------------------------------

--

-- Table structure for table `Penjualan`

--

CREATE TABLE `Penjualan` (

`id` int(11) NOT NULL,


`id_karyawan` int(11) NOT NULL,

`id_pelanggan` int(11) NOT NULL,

`created_by` int(11) NOT NULL,

`updated_by` int(11) DEFAULT NULL,

`created_dt` datetime NOT NULL,

`updated_dt` datetime DEFAULT NULL,

`id_alamat_penjualan` int(11) NOT NULL,

`total_harga` float DEFAULT NULL,

`total_jumlah` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Penjualan`

--

INSERT INTO `Penjualan` (`id`, `id_karyawan`, `id_pelanggan`, `created_by`,


`updated_by`, `created_dt`, `updated_dt`, `id_alamat_penjualan`, `total_harga`,
`total_jumlah`) VALUES

(1, 2, 2, 3, 3, '2019-10-01 00:00:00', '2019-10-02 00:00:00', 1, 100000, 20),

(2, 1, 3, 3, 3, '2019-10-30 00:00:00', '2019-10-31 00:00:00', 3, 140000, 40),

(3, 2, 3, 3, 3, '2019-10-22 08:41:15', '2019-10-31 00:00:00', 3, 200000, 10);

--

-- Triggers `Penjualan`

--
DELIMITER $$

CREATE TRIGGER `Penjualan_BEFORE_INSERT` BEFORE INSERT ON


`Penjualan` FOR EACH ROW BEGIN

SET NEW.created_dt = CURRENT_TIMESTAMP();

END

$$

DELIMITER ;

-- --------------------------------------------------------

--

-- Table structure for table `PenjualanBarang`

--

CREATE TABLE `PenjualanBarang` (

`id_penjualan` int(11) NOT NULL,

`kode_barang` char(10) NOT NULL,

`id_satuan` int(11) NOT NULL,

`harga_jual` float NOT NULL,

`jumlah_jual` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `PenjualanBarang`

--
INSERT INTO `PenjualanBarang` (`id_penjualan`, `kode_barang`, `id_satuan`,
`harga_jual`, `jumlah_jual`) VALUES

(1, 'Barang01', 4, 5000, 20),

(2, 'Barang02', 4, 4000, 20),

(2, 'Barang03', 4, 3000, 10),

(2, 'Barang04', 4, 3000, 10);

-- --------------------------------------------------------

--

-- Table structure for table `Provinsi`

--

CREATE TABLE `Provinsi` (

`kode` char(10) NOT NULL,

`nama` varchar(45) NOT NULL,

`deskripsi` varchar(45) DEFAULT NULL,

`kode_negara` char(10) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Provinsi`

--
INSERT INTO `Provinsi` (`kode`, `nama`, `deskripsi`, `kode_negara`) VALUES

('Provinsi01', 'Bali', 'Daerah Waktu Indonesia Tengah', 'Negara01'),

('Provinsi02', 'Jawa Timur', 'Daerah Waktu Indonesia Barat', 'Negara01'),

('Provinsi03', 'Jawa Tengah', 'Daerah Waktu Indonesia Barat', 'Negara01'),

('Provinsi04', 'Papua', 'Daerah Waktu Indonesia Timur', 'Negara01');

-- --------------------------------------------------------

--

-- Table structure for table `Rak`

--

CREATE TABLE `Rak` (

`kode` char(10) NOT NULL,

`deskripsi` varchar(45) NOT NULL,

`kode_lantai` char(10) NOT NULL,

`kode_gudang` char(10) NOT NULL,

`id_cabang` int(11) NOT NULL,

`nama` varchar(45) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Rak`

--
INSERT INTO `Rak` (`kode`, `deskripsi`, `kode_lantai`, `kode_gudang`, `id_cabang`,
`nama`) VALUES

('Rak01', 'Rak Pertama', 'Lantai01', 'Gudang01', 1, 'Rak Utama'),

('Rak02', 'Rak Kedua', 'Lantai02', 'Gudang01', 1, 'Rak Utama'),

('Rak03', 'Rak Pertama', 'Lantai03', 'Gudang02', 2, 'Rak Utama'),

('Rak04', 'Rak Kedua', 'Lantai04', 'Gudang02', 2, 'Rak Utama'),

('Rak05', 'Rak Pertama dan Terakhir', 'Lantai05', 'Gudang03', 2, 'Rak Utama'),

('Rak06', 'Rak Pertama dan Terakhir', 'Lantai06', 'Gudang04', 1, 'Rak Utama');

-- --------------------------------------------------------

--

-- Table structure for table `Satuan`

--

CREATE TABLE `Satuan` (

`id` int(11) NOT NULL,

`nama` varchar(45) NOT NULL,

`deskripsi` varchar(45) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Dumping data for table `Satuan`

--
INSERT INTO `Satuan` (`id`, `nama`, `deskripsi`) VALUES

(1, 'Dus', 'Satuan Dus'),

(2, 'Karung', 'Satuan Karung'),

(3, 'Biji', 'Satuan Biji'),

(4, 'Buah', 'Satuan Buah'),

(5, 'Paket', 'Satuan Paket');

-- --------------------------------------------------------

--

-- Table structure for table `Unit`

--

CREATE TABLE `Unit` (

`kode` char(10) NOT NULL,

`deskripsi` varchar(45) NOT NULL,

`kode_rak` char(10) NOT NULL,

`kode_lantai` char(10) NOT NULL,

`kode_gudang` char(10) NOT NULL,

`id_cabang` int(11) NOT NULL,

`nama` varchar(45) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--

-- Dumping data for table `Unit`

--

INSERT INTO `Unit` (`kode`, `deskripsi`, `kode_rak`, `kode_lantai`, `kode_gudang`,


`id_cabang`, `nama`) VALUES

('Unit01', 'Unit Pertama', 'Rak01', 'Lantai01', 'Gudang01', 1, 'Rak Utama'),

('Unit02', 'Unit Pertama', 'Rak02', 'Lantai02', 'Gudang01', 1, 'Rak Utama'),

('Unit03', 'Unit Pertama', 'Rak03', 'Lantai03', 'Gudang02', 2, 'Rak Utama'),

('Unit04', 'Unit Pertama', 'Rak04', 'Lantai04', 'Gudang02', 2, 'Rak Utama'),

('Unit05', 'Unit Pertama', 'Rak05', 'Lantai05', 'Gudang03', 2, 'Rak Utama'),

('Unit06', 'Unit Pertama', 'Rak06', 'Lantai06', 'Gudang04', 1, 'Rak Utama');

-- --------------------------------------------------------

--

-- Stand-in structure for view `views_pembelian`

-- (See below for the actual view)

--

CREATE TABLE `views_pembelian` (

`Nama_Pembelian` int(11)

,`Nama_Pemasok` varchar(45)

,`Nama_Barang` varchar(45)

,`Jumlah_Total_Pembelian` int(11)

,`Jumlah_Total_Penjualan` int(11)
,`total_persediaan` int(11)

,`Tanggal_Pembelian` datetime

);

-- --------------------------------------------------------

--

-- Stand-in structure for view `view_item_barang`

-- (See below for the actual view)

--

CREATE TABLE `view_item_barang` (

`id_pembelian` int(11)

,`Nama_Barang` varchar(45)

,`Harga_Item_Barang` float

,`Nama_Pemasok` varchar(45)

,`Tanggal_Beli` datetime

,`Tanggal_Terima` datetime

,`Jumlah_Pembelian_Item` int(11)

);

-- --------------------------------------------------------

--

-- Stand-in structure for view `view_penjualan`


-- (See below for the actual view)

--

CREATE TABLE `view_penjualan` (

`Nama_Penjualan` int(11)

,`Nama_Pelanggan` varchar(45)

,`Jumlah_Total_Penjualan` int(11)

,`Persediaan_Barang` int(11)

,`Barang_Terjual` int(11)

,`Tanggal_Penjualan` datetime

,`Nama_Karyawan` varchar(45)

);

-- --------------------------------------------------------

--

-- Stand-in structure for view `view_penjualan_barang`

-- (See below for the actual view)

--

CREATE TABLE `view_penjualan_barang` (

`Nama_Item_Barang` varchar(45)

,`Harga_Barang` float

,`Tanggal_Pesan` datetime

,`Tanggal_Terima` datetime

,`Jumlah_Item_Dibeli_Pelanggan` int(11)
);

-- --------------------------------------------------------

--

-- Structure for view `views_pembelian`

--

DROP TABLE IF EXISTS `views_pembelian`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL


SECURITY DEFINER VIEW `views_pembelian` AS select `Pembelian`.`id` AS
`Nama_Pembelian`,`Pemasok`.`nama` AS `Nama_Pemasok`,`Barang`.`nama` AS
`Nama_Barang`,`Pembelian`.`total_jumlah` AS
`Jumlah_Total_Pembelian`,`Penjualan`.`total_jumlah` AS
`Jumlah_Total_Penjualan`,`HITUNG_PERSEDIAAN`(`Pemasok`.`id`) AS
`total_persediaan`,`Pembelian`.`created_dt` AS `Tanggal_Pembelian` from
(((((`PembelianBarang` join `Pembelian` on(`PembelianBarang`.`id_pembelian` =
`Pembelian`.`id`)) join `Pemasok` on(`Pembelian`.`id_pemasok` = `Pemasok`.`id`))
join `Barang` on(`PembelianBarang`.`kode_barang` = `Barang`.`kode`)) join
`PenjualanBarang` on(`PenjualanBarang`.`kode_barang` = `Barang`.`kode`)) join
`Penjualan` on(`PenjualanBarang`.`id_penjualan` = `Penjualan`.`id`)) group by
`Pembelian`.`id` ;

-- --------------------------------------------------------

--

-- Structure for view `view_item_barang`

--
DROP TABLE IF EXISTS `view_item_barang`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL


SECURITY DEFINER VIEW `view_item_barang` AS select
`PembelianBarang`.`id_pembelian` AS `id_pembelian`,`Barang`.`nama` AS
`Nama_Barang`,`PembelianBarang`.`harga_beli` AS
`Harga_Item_Barang`,`Pemasok`.`nama` AS
`Nama_Pemasok`,`Pembelian`.`created_dt` AS
`Tanggal_Beli`,`Pembelian`.`updated_dt` AS
`Tanggal_Terima`,`PembelianBarang`.`jumlah_beli` AS `Jumlah_Pembelian_Item`
from (((`Barang` join `PembelianBarang` on(`Barang`.`kode` =
`PembelianBarang`.`kode_barang`)) join `Pembelian`
on(`PembelianBarang`.`id_pembelian` = `Pembelian`.`id`)) join `Pemasok`
on(`Pembelian`.`id_pemasok` = `Pemasok`.`id`)) ;

-- --------------------------------------------------------

--

-- Structure for view `view_penjualan`

--

DROP TABLE IF EXISTS `view_penjualan`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL


SECURITY DEFINER VIEW `view_penjualan` AS select `Penjualan`.`id` AS
`Nama_Penjualan`,`Pelanggan`.`nama` AS
`Nama_Pelanggan`,`Penjualan`.`total_jumlah` AS
`Jumlah_Total_Penjualan`,`Barang`.`total_persediaan` AS
`Persediaan_Barang`,`Barang`.`total_penjualan` AS
`Barang_Terjual`,`Penjualan`.`created_dt` AS
`Tanggal_Penjualan`,`Karyawan`.`nama` AS `Nama_Karyawan` from ((((`Penjualan`
join `PenjualanBarang` on(`Penjualan`.`id` = `PenjualanBarang`.`id_penjualan`)) join
`Barang` on(`PenjualanBarang`.`kode_barang` = `Barang`.`kode`)) join `Pelanggan`
on(`Penjualan`.`id_pelanggan` = `Pelanggan`.`id`)) join `Karyawan`
on(`Penjualan`.`id_karyawan` = `Karyawan`.`id`)) ;

-- --------------------------------------------------------

--

-- Structure for view `view_penjualan_barang`

--

DROP TABLE IF EXISTS `view_penjualan_barang`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL


SECURITY DEFINER VIEW `view_penjualan_barang` AS select
`Barang`.`nama` AS `Nama_Item_Barang`,`PenjualanBarang`.`harga_jual` AS
`Harga_Barang`,`Penjualan`.`created_dt` AS
`Tanggal_Pesan`,`Penjualan`.`updated_dt` AS
`Tanggal_Terima`,`PenjualanBarang`.`jumlah_jual` AS
`Jumlah_Item_Dibeli_Pelanggan` from ((`Barang` join `PenjualanBarang`
on(`Barang`.`kode` = `PenjualanBarang`.`kode_barang`)) join `Penjualan`
on(`PenjualanBarang`.`id_penjualan` = `Penjualan`.`id`)) ;

--

-- Indexes for dumped tables

--

--
-- Indexes for table `Alamat`

--

ALTER TABLE `Alamat`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_Alamat_Kecamatan1_idx`


(`kode_kecamatan`,`kode_kabupaten`,`kode_provinsi`,`kode_negara`);

--

-- Indexes for table `Barang`

--

ALTER TABLE `Barang`

ADD PRIMARY KEY (`kode`),

ADD KEY `fk_Barang_Unit1_idx`


(`kode_unit`,`kode_rak`,`kode_lantai`,`kode_gudang`,`id_cabang`);

--

-- Indexes for table `CabangUsaha`

--

ALTER TABLE `CabangUsaha`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_CabangUsaha_Alamat1_idx` (`id_alamat`);

--

-- Indexes for table `Gudang`

--
ALTER TABLE `Gudang`

ADD PRIMARY KEY (`kode`,`id_cabang`),

ADD KEY `fk_Gudang_Alamat1_idx` (`id_alamat`),

ADD KEY `fk_Gudang_CabangUsaha1_idx` (`id_cabang`);

--

-- Indexes for table `HakAkses`

--

ALTER TABLE `HakAkses`

ADD PRIMARY KEY (`id`,`id_kateg_pengguna`),

ADD KEY `fk_HakAkses_KategoriPengguna1_idx` (`id_kateg_pengguna`);

--

-- Indexes for table `Kabupaten`

--

ALTER TABLE `Kabupaten`

ADD PRIMARY KEY (`kode`,`kode_provinsi`,`kode_negara`),

ADD KEY `fk_Kabupaten_Provinsi1_idx` (`kode_provinsi`,`kode_negara`);

--

-- Indexes for table `Karyawan`

--

ALTER TABLE `Karyawan`

ADD PRIMARY KEY (`id`),


ADD KEY `fk_Karyawan_Alamat1_idx` (`id_alamat`);

--

-- Indexes for table `KategoriPengguna`

--

ALTER TABLE `KategoriPengguna`

ADD PRIMARY KEY (`id`);

--

-- Indexes for table `Kecamatan`

--

ALTER TABLE `Kecamatan`

ADD PRIMARY KEY (`kode`,`kode_kabupaten`,`kode_provinsi`,`kode_negara`),

ADD KEY `fk_Kecamatan_Kabupaten1_idx`


(`kode_kabupaten`,`kode_provinsi`,`kode_negara`);

--

-- Indexes for table `Lantai`

--

ALTER TABLE `Lantai`

ADD PRIMARY KEY (`kode`,`kode_gudang`,`id_cabang`),

ADD KEY `fk_Lantai_Gudang1_idx` (`kode_gudang`,`id_cabang`);

--

-- Indexes for table `Negara`


--

ALTER TABLE `Negara`

ADD PRIMARY KEY (`kode`);

--

-- Indexes for table `Pelanggan`

--

ALTER TABLE `Pelanggan`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_Pelanggan_Alamat1_idx` (`id_alamat`);

--

-- Indexes for table `Pemasok`

--

ALTER TABLE `Pemasok`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_Pemasok_Alamat1_idx` (`id_alamat`);

--

-- Indexes for table `Pembelian`

--

ALTER TABLE `Pembelian`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_Suplai_Pemasok_idx` (`id_pemasok`),


ADD KEY `fk_Suplai_Karyawan1_idx` (`id_karyawan`),

ADD KEY `fk_Suplai_Pengguna1_idx` (`created_by`),

ADD KEY `fk_Suplai_Pengguna2_idx` (`updated_by`),

ADD KEY `fk_Pembelian_Alamat1_idx` (`id_alamat_pengiriman`);

--

-- Indexes for table `PembelianBarang`

--

ALTER TABLE `PembelianBarang`

ADD PRIMARY KEY (`kode_barang`,`id_pembelian`,`id_satuan`),

ADD KEY `fk_Barang_has_Pembelian_Pembelian1_idx` (`id_pembelian`),

ADD KEY `fk_Barang_has_Pembelian_Barang1_idx` (`kode_barang`),

ADD KEY `fk_PembelianBarang_Satuan1_idx` (`id_satuan`);

--

-- Indexes for table `Pengguna`

--

ALTER TABLE `Pengguna`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_Pengguna_KategoriPengguna1_idx` (`id_kateg_pengguna`),

ADD KEY `fk_Pengguna_Karyawan1_idx` (`id_karyawan`);

--

-- Indexes for table `Penjualan`


--

ALTER TABLE `Penjualan`

ADD PRIMARY KEY (`id`),

ADD KEY `fk_Pembelian_Karyawan1_idx` (`id_karyawan`),

ADD KEY `fk_Pembelian_Pelanggan1_idx` (`id_pelanggan`),

ADD KEY `fk_Penjualan_Pengguna1_idx` (`created_by`),

ADD KEY `fk_Penjualan_Pengguna2_idx` (`updated_by`),

ADD KEY `fk_Penjualan_Alamat1_idx` (`id_alamat_penjualan`);

--

-- Indexes for table `PenjualanBarang`

--

ALTER TABLE `PenjualanBarang`

ADD PRIMARY KEY (`id_penjualan`,`kode_barang`,`id_satuan`),

ADD KEY `fk_Penjualan_has_Barang_Barang1_idx` (`kode_barang`),

ADD KEY `fk_Penjualan_has_Barang_Penjualan1_idx` (`id_penjualan`),

ADD KEY `fk_Penjualan_Barang_Satuan1_idx` (`id_satuan`);

--

-- Indexes for table `Provinsi`

--

ALTER TABLE `Provinsi`

ADD PRIMARY KEY (`kode`,`kode_negara`),

ADD KEY `fk_Provinsi_Negara1_idx` (`kode_negara`);


--

-- Indexes for table `Rak`

--

ALTER TABLE `Rak`

ADD PRIMARY KEY (`kode`,`kode_lantai`,`kode_gudang`,`id_cabang`),

ADD KEY `fk_Rak_Lantai1_idx` (`kode_lantai`,`kode_gudang`,`id_cabang`);

--

-- Indexes for table `Satuan`

--

ALTER TABLE `Satuan`

ADD PRIMARY KEY (`id`);

--

-- Indexes for table `Unit`

--

ALTER TABLE `Unit`

ADD PRIMARY KEY


(`kode`,`kode_rak`,`kode_lantai`,`kode_gudang`,`id_cabang`),

ADD KEY `fk_Unit_Rak1_idx`


(`kode_rak`,`kode_lantai`,`kode_gudang`,`id_cabang`);

--

-- AUTO_INCREMENT for dumped tables


--

--

-- AUTO_INCREMENT for table `Alamat`

--

ALTER TABLE `Alamat`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=5;

--

-- AUTO_INCREMENT for table `CabangUsaha`

--

ALTER TABLE `CabangUsaha`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=3;

--

-- AUTO_INCREMENT for table `HakAkses`

--

ALTER TABLE `HakAkses`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=5;

--

-- AUTO_INCREMENT for table `Karyawan`


--

ALTER TABLE `Karyawan`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=3;

--

-- AUTO_INCREMENT for table `KategoriPengguna`

--

ALTER TABLE `KategoriPengguna`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=5;

--

-- AUTO_INCREMENT for table `Pelanggan`

--

ALTER TABLE `Pelanggan`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=4;

--

-- AUTO_INCREMENT for table `Pemasok`

--

ALTER TABLE `Pemasok`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=4;
--

-- AUTO_INCREMENT for table `Pembelian`

--

ALTER TABLE `Pembelian`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=11;

--

-- AUTO_INCREMENT for table `Pengguna`

--

ALTER TABLE `Pengguna`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=5;

--

-- AUTO_INCREMENT for table `Penjualan`

--

ALTER TABLE `Penjualan`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=4;

--

-- AUTO_INCREMENT for table `PenjualanBarang`

--
ALTER TABLE `PenjualanBarang`

MODIFY `id_penjualan` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=3;

--

-- AUTO_INCREMENT for table `Satuan`

--

ALTER TABLE `Satuan`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,


AUTO_INCREMENT=6;

--

-- Constraints for dumped tables

--

--

-- Constraints for table `Alamat`

--

ALTER TABLE `Alamat`

ADD CONSTRAINT `fk_Alamat_Kecamatan1` FOREIGN KEY


(`kode_kecamatan`,`kode_kabupaten`,`kode_provinsi`,`kode_negara`)
REFERENCES `Kecamatan` (`kode`, `kode_kabupaten`, `kode_provinsi`,
`kode_negara`) ON DELETE NO ACTION ON UPDATE NO ACTION;

--

-- Constraints for table `Barang`


--

ALTER TABLE `Barang`

ADD CONSTRAINT `fk_Barang_Unit1` FOREIGN KEY


(`kode_unit`,`kode_rak`,`kode_lantai`,`kode_gudang`,`id_cabang`) REFERENCES
`Unit` (`kode`, `kode_rak`, `kode_lantai`, `kode_gudang`, `id_cabang`) ON DELETE
NO ACTION ON UPDATE NO ACTION;

--

-- Constraints for table `CabangUsaha`

--

ALTER TABLE `CabangUsaha`

ADD CONSTRAINT `fk_CabangUsaha_Alamat1` FOREIGN KEY (`id_alamat`)


REFERENCES `Alamat` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `Gudang`

--

ALTER TABLE `Gudang`

ADD CONSTRAINT `fk_Gudang_Alamat1` FOREIGN KEY (`id_alamat`)


REFERENCES `Alamat` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION,

ADD CONSTRAINT `fk_Gudang_CabangUsaha1` FOREIGN KEY (`id_cabang`)


REFERENCES `CabangUsaha` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--
-- Constraints for table `HakAkses`

--

ALTER TABLE `HakAkses`

ADD CONSTRAINT `fk_HakAkses_KategoriPengguna1` FOREIGN KEY


(`id_kateg_pengguna`) REFERENCES `KategoriPengguna` (`id`) ON DELETE NO
ACTION ON UPDATE NO ACTION;

--

-- Constraints for table `Kabupaten`

--

ALTER TABLE `Kabupaten`

ADD CONSTRAINT `fk_Kabupaten_Provinsi1` FOREIGN KEY


(`kode_provinsi`,`kode_negara`) REFERENCES `Provinsi` (`kode`, `kode_negara`)
ON DELETE NO ACTION ON UPDATE NO ACTION;

--

-- Constraints for table `Karyawan`

--

ALTER TABLE `Karyawan`

ADD CONSTRAINT `fk_Karyawan_Alamat1` FOREIGN KEY (`id_alamat`)


REFERENCES `Alamat` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `Kecamatan`

--
ALTER TABLE `Kecamatan`

ADD CONSTRAINT `fk_Kecamatan_Kabupaten1` FOREIGN KEY


(`kode_kabupaten`,`kode_provinsi`,`kode_negara`) REFERENCES `Kabupaten`
(`kode`, `kode_provinsi`, `kode_negara`) ON DELETE NO ACTION ON UPDATE
NO ACTION;

--

-- Constraints for table `Lantai`

--

ALTER TABLE `Lantai`

ADD CONSTRAINT `fk_Lantai_Gudang1` FOREIGN KEY


(`kode_gudang`,`id_cabang`) REFERENCES `Gudang` (`kode`, `id_cabang`) ON
DELETE NO ACTION ON UPDATE NO ACTION;

--

-- Constraints for table `Pelanggan`

--

ALTER TABLE `Pelanggan`

ADD CONSTRAINT `fk_Pelanggan_Alamat1` FOREIGN KEY (`id_alamat`)


REFERENCES `Alamat` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `Pemasok`

--

ALTER TABLE `Pemasok`


ADD CONSTRAINT `fk_Pemasok_Alamat1` FOREIGN KEY (`id_alamat`)
REFERENCES `Alamat` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `Pembelian`

--

ALTER TABLE `Pembelian`

ADD CONSTRAINT `fk_Pembelian_Alamat1` FOREIGN KEY


(`id_alamat_pengiriman`) REFERENCES `Alamat` (`id`) ON DELETE NO ACTION
ON UPDATE NO ACTION,

ADD CONSTRAINT `fk_Suplai_Karyawan1` FOREIGN KEY (`id_karyawan`)


REFERENCES `Karyawan` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION,

ADD CONSTRAINT `fk_Suplai_Pemasok` FOREIGN KEY (`id_pemasok`)


REFERENCES `Pemasok` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION,

ADD CONSTRAINT `fk_Suplai_Pengguna1` FOREIGN KEY (`created_by`)


REFERENCES `Pengguna` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION,

ADD CONSTRAINT `fk_Suplai_Pengguna2` FOREIGN KEY (`updated_by`)


REFERENCES `Pengguna` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `PembelianBarang`

--

ALTER TABLE `PembelianBarang`


ADD CONSTRAINT `fk_Barang_has_Pembelian_Barang1` FOREIGN KEY
(`kode_barang`) REFERENCES `Barang` (`kode`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

ADD CONSTRAINT `fk_Barang_has_Pembelian_Pembelian1` FOREIGN KEY


(`id_pembelian`) REFERENCES `Pembelian` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

ADD CONSTRAINT `fk_PembelianBarang_Satuan1` FOREIGN KEY


(`id_satuan`) REFERENCES `Satuan` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

--

-- Constraints for table `Pengguna`

--

ALTER TABLE `Pengguna`

ADD CONSTRAINT `fk_Pengguna_Karyawan1` FOREIGN KEY


(`id_karyawan`) REFERENCES `Karyawan` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

ADD CONSTRAINT `fk_Pengguna_KategoriPengguna1` FOREIGN KEY


(`id_kateg_pengguna`) REFERENCES `KategoriPengguna` (`id`) ON DELETE NO
ACTION ON UPDATE NO ACTION;

--

-- Constraints for table `Penjualan`

--

ALTER TABLE `Penjualan`

ADD CONSTRAINT `fk_Pembelian_Karyawan1` FOREIGN KEY


(`id_karyawan`) REFERENCES `Karyawan` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION,
ADD CONSTRAINT `fk_Pembelian_Pelanggan1` FOREIGN KEY
(`id_pelanggan`) REFERENCES `Pelanggan` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

ADD CONSTRAINT `fk_Penjualan_Alamat1` FOREIGN KEY


(`id_alamat_penjualan`) REFERENCES `Alamat` (`id`) ON DELETE NO ACTION
ON UPDATE NO ACTION,

ADD CONSTRAINT `fk_Penjualan_Pengguna1` FOREIGN KEY (`created_by`)


REFERENCES `Pengguna` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION,

ADD CONSTRAINT `fk_Penjualan_Pengguna2` FOREIGN KEY (`updated_by`)


REFERENCES `Pengguna` (`id`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `PenjualanBarang`

--

ALTER TABLE `PenjualanBarang`

ADD CONSTRAINT `fk_Penjualan_Barang_Satuan1` FOREIGN KEY


(`id_satuan`) REFERENCES `Satuan` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

ADD CONSTRAINT `fk_Penjualan_has_Barang_Barang1` FOREIGN KEY


(`kode_barang`) REFERENCES `Barang` (`kode`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

ADD CONSTRAINT `fk_Penjualan_has_Barang_Penjualan1` FOREIGN KEY


(`id_penjualan`) REFERENCES `Penjualan` (`id`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

--
-- Constraints for table `Provinsi`

--

ALTER TABLE `Provinsi`

ADD CONSTRAINT `fk_Provinsi_Negara1` FOREIGN KEY (`kode_negara`)


REFERENCES `Negara` (`kode`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `Rak`

--

ALTER TABLE `Rak`

ADD CONSTRAINT `fk_Rak_Lantai1` FOREIGN KEY


(`kode_lantai`,`kode_gudang`,`id_cabang`) REFERENCES `Lantai` (`kode`,
`kode_gudang`, `id_cabang`) ON DELETE NO ACTION ON UPDATE NO
ACTION;

--

-- Constraints for table `Unit`

--

ALTER TABLE `Unit`

ADD CONSTRAINT `fk_Unit_Rak1` FOREIGN KEY


(`kode_rak`,`kode_lantai`,`kode_gudang`,`id_cabang`) REFERENCES `Rak` (`kode`,
`kode_lantai`, `kode_gudang`, `id_cabang`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

COMMIT;
/*!40101 SET
CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET
CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET
COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

5. Database Object yang dibuat dan contoh hasil eksekusinya

A. VIEW

View adalah perintah query yang disimpan pada database dengan suatu nama
tertentu, sehingga bisa digunakan setiap saat untuk melihat data tanpa menuliskan
ulang query tersebut. Views dapat dikatakan sebagai suatu tampilan tabel virtual
yaitu bentuk representasi data yang dapat dibuat dengan melibatkan data yang ada
pada satu atau beberapa tabel.

Views Data Pembelian

CREATE

ALGORITHM = UNDEFINED

DEFINER = `root`@`localhost`

SQL SECURITY DEFINER

VIEW `tugasfix`.`views_pembelian` AS

SELECT

`tugasfix`.`Pembelian`.`id` AS `Nama_Pembelian`,

`tugasfix`.`Pemasok`.`nama` AS `Nama_Pemasok`,

`tugasfix`.`Barang`.`nama` AS `Nama_Barang`,

`tugasfix`.`Pembelian`.`total_jumlah` AS `Jumlah_Total_Pembelian`,
`tugasfix`.`Penjualan`.`total_jumlah` AS `Jumlah_Total_Penjualan`,

`tugasfix`.`Pembelian`.`created_dt` AS `Tanggal_Pembelian`

FROM

(((((`tugasfix`.`PembelianBarang`

JOIN `tugasfix`.`Pembelian` ON
(`tugasfix`.`PembelianBarang`.`id_pembelian` = `tugasfix`.`Pembelian`.`id`))

JOIN `tugasfix`.`Pemasok` ON (`tugasfix`.`Pembelian`.`id_pemasok` =


`tugasfix`.`Pemasok`.`id`))

JOIN `tugasfix`.`Barang` ON (`tugasfix`.`PembelianBarang`.`kode_barang`


= `tugasfix`.`Barang`.`kode`))

JOIN `tugasfix`.`PenjualanBarang` ON
(`tugasfix`.`PenjualanBarang`.`kode_barang` = `tugasfix`.`Barang`.`kode`))

JOIN `tugasfix`.`Penjualan` ON
(`tugasfix`.`PenjualanBarang`.`id_penjualan` = `tugasfix`.`Penjualan`.`id`))

GROUP BY `tugasfix`.`Pembelian`.`id`

Hasil Views Pembelian

Views Item Barang

CREATE

ALGORITHM = UNDEFINED

DEFINER = `root`@`localhost`

SQL SECURITY DEFINER


VIEW `tugasfix`.`view_item_barang` AS

SELECT

`tugasfix`.`PembelianBarang`.`id_pembelian` AS `id_pembelian`,

`tugasfix`.`Barang`.`nama` AS `Nama_Barang`,

`tugasfix`.`PembelianBarang`.`harga_beli` AS `Harga_Item_Barang`,

`tugasfix`.`Pemasok`.`nama` AS `Nama_Pemasok`,

`tugasfix`.`Pembelian`.`created_dt` AS `Tanggal_Beli`,

`tugasfix`.`Pembelian`.`updated_dt` AS `Tanggal_Terima`,

`tugasfix`.`PembelianBarang`.`jumlah_beli` AS `Jumlah_Pembelian_Item`

FROM

(((`tugasfix`.`Barang`

JOIN `tugasfix`.`PembelianBarang` ON (`tugasfix`.`Barang`.`kode` =


`tugasfix`.`PembelianBarang`.`kode_barang`))

JOIN `tugasfix`.`Pembelian` ON
(`tugasfix`.`PembelianBarang`.`id_pembelian` = `tugasfix`.`Pembelian`.`id`))

JOIN `tugasfix`.`Pemasok` ON (`tugasfix`.`Pembelian`.`id_pemasok` =


`tugasfix`.`Pemasok`.`id`))

GROUP BY `tugasfix`.`Pembelian`.`id`

Hasil Views Item Barang

Views Penjualan
CREATE

ALGORITHM = UNDEFINED

DEFINER = `root`@`localhost`

SQL SECURITY DEFINER

VIEW `tugasfix`.`view_penjualan` AS

SELECT

`tugasfix`.`Penjualan`.`id` AS `Nama_Penjualan`,

`tugasfix`.`Pelanggan`.`nama` AS `Nama_Pelanggan`,

`tugasfix`.`Penjualan`.`total_jumlah` AS `Jumlah_Total_Penjualan`,

`tugasfix`.`Barang`.`total_persediaan` AS `Persediaan_Barang`,

`tugasfix`.`Barang`.`total_penjualan` AS `Barang_Terjual`,

`tugasfix`.`Penjualan`.`created_dt` AS `Tanggal_Penjualan`,

`tugasfix`.`Karyawan`.`nama` AS `Nama_Karyawan`

FROM

((((`tugasfix`.`Penjualan`

JOIN `tugasfix`.`PenjualanBarang` ON (`tugasfix`.`Penjualan`.`id` =


`tugasfix`.`PenjualanBarang`.`id_penjualan`))

JOIN `tugasfix`.`Barang` ON (`tugasfix`.`PenjualanBarang`.`kode_barang`


= `tugasfix`.`Barang`.`kode`))

JOIN `tugasfix`.`Pelanggan` ON (`tugasfix`.`Penjualan`.`id_pelanggan` =


`tugasfix`.`Pelanggan`.`id`))

JOIN `tugasfix`.`Karyawan` ON (`tugasfix`.`Penjualan`.`id_karyawan` =


`tugasfix`.`Karyawan`.`id`))

GROUP BY `tugasfix`.`Penjualan`.`id`

Hasil Views Penjualan


Views Data Item Barang

CREATE

ALGORITHM = UNDEFINED

DEFINER = `root`@`localhost`

SQL SECURITY DEFINER

VIEW `tugasfix`.`view_penjualan_barang` AS

SELECT

`tugasfix`.`Barang`.`nama` AS `Nama_Item_Barang`,

`tugasfix`.`PenjualanBarang`.`harga_jual` AS `Harga_Barang`,

`tugasfix`.`Penjualan`.`created_dt` AS `Tanggal_Pesan`,

`tugasfix`.`Penjualan`.`updated_dt` AS `Tanggal_Terima`,

`tugasfix`.`PenjualanBarang`.`jumlah_jual` AS
`Jumlah_Item_Dibeli_Pelanggan`

FROM

((`tugasfix`.`Barang`

JOIN `tugasfix`.`PenjualanBarang` ON (`tugasfix`.`Barang`.`kode` =


`tugasfix`.`PenjualanBarang`.`kode_barang`))

JOIN `tugasfix`.`Penjualan` ON
(`tugasfix`.`PenjualanBarang`.`id_penjualan` = `tugasfix`.`Penjualan`.`id`))

GROUP BY `tugasfix`.`Penjualan`.`id`

Hasil Views Data Item Barang


B. Stored Function

Dalam database server ada 2 kategori fungsi: (1) fungsi aggregate adlah
fungsi-fungsi bawaan yang terdapat pada sistem database tersebut, (2) fungsi
yang diciptakan oleh user sendiri. Pada bagian ini akan dibahas tentang cara
menciptakan, dan menggunakan fungsi yang dibuat oleh user sendiri. Cara kerja
store function hampir sama dengan stored procedure, namun sebuah fungsi
mengembalikan sebuah nilai balik melalui perintah return. Sintaks yang
digunakan untuk membuat store function.

Stored Function Mengkalkulasi Jumlah Total

CREATE DEFINER=`root`@`localhost` FUNCTION


`HITUNG_PERSEDIAAN`(`id` INT) RETURNS int(11)

BEGIN

DECLARE v1 INT;

DECLARE v2 INT;

SELECT SUM(Pembelian.total_jumlah) INTO v1 FROM Pembelian


WHERE `Pembelian`.`id_pemasok` = `id`;

SELECT SUM(Penjualan.total_jumlah) INTO v2 FROM

Penjualan INNER JOIN PenjualanBarang ON PenjualanBarang.id_penjualan


=

Penjualan.id

INNER JOIN Barang ON PenjualanBarang.kode_barang = Barang.kode

INNER JOIN PembelianBarang ON PembelianBarang.kode_barang =


Barang.kode

INNER JOIN Pembelian ON PembelianBarang.id_pembelian = Pembelian.id


INNER JOIN Pemasok ON Pembelian.id_pemasok = Pemasok.id

WHERE `Pembelian`.`id_pemasok` = `id`;

RETURN (v2-v1);

END

Hasil Store Function Mengkalkulasi Jumlah Total

Stored Function 2(b)

CREATE DEFINER=`root`@`localhost` FUNCTION `getNewID`(`ntable`


VARCHAR(50)) RETURNS varchar(10) CHARSET utf8

BEGIN

declare strid varchar(10);

declare finished int default false;

declare tid int(11);

declare tterakhir int(11);

declare tterhapus varchar(100);

declare curtemp cursor for select id, id_terakhir, id_terhapus from autoidtabel
where nama_table = ntable;

declare continue handler for NOT FOUND set finished = true;

open curtemp;
getData: loop

fetch curtemp into tid, tterakhir, tterhapus;

if finished then leave getData; end if;

-- take one from id_terhapus

if length(tterhapus) > 0 then

begin

set strid = SUBSTRING_INDEX(tterhapus, ";", 1);

-- remove the existing one

update autoidtabel set id_terhapus = substring(id_terhapus,

length(substring_index(id_terhapus, ';', 1))+2,

length(id_terhapus))

where nama_table = ntable;

end;

elseif tterakhir >= 0 then

-- take and inrement

begin

set tterakhir = tterakhir + 1;

set strid = tterakhir;

end;

-- insert a new one

else

begin

set tterakhir = 1;
insert into autoidtabel (id_terakhir) values (tterakhir);

set strid = tterakhir;

end;

end if;

end loop getData;

close curtemp;

return strid;

END

Hasil Stored Function 2(b)

C. PROCEDURE

Stored Procedure adlah sebuah prosedur layaknya subprogram (subrutin) di


dalam bahasa pemrograman regular yang tersimpan di dalam katalog basis data.
Store prosedur berisi sekumpulan pernyataan SQL yang ditunjukan untuk
melaksanakan tugas tertentu dan letaknya ada pada server. Subprogram ini dapat
dipanggil oleh client sedangkanpengeksekusiannya dilakukan pada server.

Store Procedure Menampilkan Views 1(a) (3a dan 3b)


CREATE DEFINER=`root`@`localhost` PROCEDURE
`Procedure_pembelian`(IN `input_barang` VARCHAR(45), IN `input_pemasok`
VARCHAR(45), IN `input_tanggal` DATE)

NO SQL

BEGIN

SELECT * FROM views_pembelian

WHERE

Nama_Barang LIKE input_barang

OR

Nama_Pemasok LIKE input_pemasok

OR

Tanggal_Pembelian LIKE input_tanggal;

END

Hasil Procedure Menampilkan Views 1(a)

Store Procedure Menampilkan Views 1(b)

CREATE DEFINER=`root`@`localhost` PROCEDURE `upsertTempTable`(IN


`ind` INT(1), IN `kode` VARCHAR(100), IN `tname` VARCHAR(100))
BEGIN

declare tid int(11);

declare tterakhir int(11);

declare tterhapus varchar(100);

select id, id_terakhir, id_terhapus into tid, tterakhir, tterhapus from


autoidtabel where nama_table = tname;

-- delete

if (ind = -1) then

begin

if length(tterhapus) > 0 then

set tterhapus = concat(tterhapus, ';', kode);

else

set tterhapus = kode;

end if;

update autoidtabel set id_terhapus = tterhapus where nama_table =


tname and id = tid;

end;

-- update

elseif length(tid) > 0 then

-- only update if new id > id terakhir

update autoidtabel set id_terakhir = cast(kode as signed int) where


nama_table = tname and id = tid

and cast(kode as signed int) = (id_terakhir + 1);

-- insert
else

insert into autoidtabel (nama_table, id_terakhir) values (tname, cast(kode


as signed int));

end if;

END

Hasil Procedure Menampilkan Views 1(b)

D. Trigger

Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang
terjadi jika terjadi perubahan pada suatu row akibat eksekusi pernyataan INSERT,
UPDATE, DELETE. Trigger ditujukan untuk menjaga konsistensi data. Sebagai
contoh, ketika sebuah record data pada tabel resep dihapus, trigger dapat diatur
agar data pembayaran dari resep yang bersangkutan yang terdapat pada tabel
pembayaran ikut terhapus.

Trigger 4(a)

BEGIN

SET NEW.created_dt = CURRENT_TIMESTAMP();

END
Hasil Trigger 4(a)

Trigger 4(b)

Barang_Before_INSERT

CREATE DEFINER=`root`@`localhost` TRIGGER


`barang_BEFORE_INSERT` BEFORE INSERT ON `Barang` FOR EACH ROW
BEGIN

declare kode varchar(10);

SET NEW.created_dt = CURRENT_TIMESTAMP();

set kode = getNewID('Barang');

if left(kode, 1) <> 'B' then

set kode = concat("B", LPAD(kode, 1, "0"));

end if;

set new.kode = kode;

END

Barang_After_INSERT
CREATE DEFINER=`root`@`localhost` TRIGGER `barang_AFTER_INSERT`
AFTER INSERT ON `Barang` FOR EACH ROW BEGIN

declare kode varchar(10);

set kode = substring(new.kode, 2, length(new.kode));

call tugasfix.upsertTempTable(0, kode, 'barang');

END

Barang_Before_DELETE

CREATE DEFINER=`root`@`localhost` TRIGGER


`barang_BEFORE_DELETE` BEFORE DELETE ON `Barang` FOR EACH ROW
BEGIN

call tugasfix.upsertTempTable(-1, old.kode, 'barang');

END

Hasil Triggers 4(b)

Kondisi Awal tabel autoidtabel

Mengisi data barang tanpa memasukkan id dan tanggalnya


Hasil setelah data diinputkan pada tabel barang

Kondisi akhir di tabel autoidtabel

Anda mungkin juga menyukai