Anda di halaman 1dari 30

“ PERANCANGAN SISTEM BASIS DATA PADA RESTORAN RATU

AYU ”

Disusun Untuk Memenuhi Tugas Mata Kuliah Administrasi Basis Data

Dosen Pengampu : Efrans Christian, S.T.,M.T

Disusun Oleh :

Kelompok 3 :

1 Dina Meiliana 203020503041


.
2 Oktaviani Enjela Putri 203020503047
.
3 Cinthya Angelina 203020503048
.
4 Andy Setiawan 203030503073
.
5 Muhammad Rizal Firmansyah 203030503079
.

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK

UNIVERSITAS PALANGKA RAYA

2023

I. DESKRIPSI OBJEK BISNIS


Skenario :
“Restoran “Ratu Ayu” setiap hari melayani pemesanan makan oleh customer.
Restoran ini bertemakan western yang menyediakan makanan dan minuman
khas luar negeri yang tentunya masih masuk dalam lidah masyarakat Indonesia.
Makanan dan minuman ini disimpan dalam buku menu. Customer melakukan
pemesanan pada kasir, kemudian kasir akan menghitung total pembayaran dan
memberikan nomor meja.Selanjutnya, customer melakukan pembayaran ketika
sudah mendapatkan nomor meja. Dari pembayaran ini, customer akan
mendapatkan bukti pembayaran.

II. PROSES BISNIS


Berikut merupakan proses bisnis di Restoran Delicious Food.
Gambar 1. Flowchart Proses Bisnis Restoran Ratu Ayu
Proses bisnis dari Restoran “Ratu Ayu” yaitu, diawali dengan customer
melakukan pemesanan makanan.Data pemesanan milik customer akan disimpan
kedalam database. Berdasarkan data pemesanan tersebut, kasir akan
menjumlahkan total harga yang perlu dibayarkan oleh customer dan kasir akan
memberikan total harga pembayaran milik customer tersebut beserta nomor meja
yang akan ditempati oleh customer untuk menikmati pesanan makanan dan
minuman miliknya tersebut. Setelah mendapatkan total harga pembayaran dan
nomor meja, customer akan melakukan pembayaran. Data pembayaran milik
customer akan disimpan kedalam database, berdasarkan data tersebut, akan
diberikan bukti pembayaran oleh kasir kepada customer.

III. ATURAN BISIS DAN ERD


Berikut merupakan aturan bisnis dan ERD Database Restoran “Ratu Ayu”.
Terdapat tiga buah entitas yaitu Entitas Customer,Entitas Kasir, dan Entitas
Transaksi.
“Setiap Transaksi Harus Dilakukan Oleh Satu dan Hanya Satu Customer”
“Setiap Customer Dapat Melakukan Satu dan Hanya Satu Transaksi”
“Setiap Transaksi Harus Dikelola Oleh Satu dan Hanya Satu Kasir”
“Setiap Kasir Mungkin Mengelola Satu atau Lebih Transaksi”

Gambar 2. Rancangan Awal ERD Database Restoran Ratu Ayu


Di Entitas Customer terdapat 4 buah atribut, yaitu atribut id_customer,
nama_customer, no_telp, dan email, dimana id_customer berperan sebagai
primary key. Di Entitas Transaksi terdapat 5 buah atribut yaitu atribut
no_transaksi, nama_menu, harga, kategori, dan deskripsi. Atribut no_transaksi
berperan sebagai primary key. Kemudian, di Entitas Kasir terdapat 2 buah
atribut, yaitu atribut id_kasir dan nama_customer. Hubungan antara ketiga
entitas tersebut adalah one to one antara entitas customer dan transaksi,
kemudian many to one antara entitas transaksi dan kasir. 1 kali transaksi akan
dilakukan oleh 1 orang customer atau 1 customer akan melakukan 1 transaksi.
Dimana 1 orang customer wajib melakukan 1 kali transaksi, namun 1 kali
transaksi tidak wajib dilakukan oleh 1 orang customer. 1 Kali transaksi akan
dikelola oleh 1 orang kasir, namun 1 orang kasir dapat mengelola satu atau lebih
transaksi. Dimana 1 kali transaksi wajib dikelola oleh 1 orang kasir atau 1 kasir
wajib mengelola 1 kali transaksi, namun 1 orang kasir juga dapat mengelola
lebih dari 1 transaksi.
Pada entitas transaksi, atribut didalamnya masih belum dalam bentuk normal
karena atribut didalamnya masih kompleks. Hal ini bisa menyebabkan data
didalam database mengalami redudansi, maka dari itu perlu dilakukan
normalisasi.
IV. NORMALISASI
Diketahui salah satu dari tiga buah entitas tersebut masih belum dalam bentuk
normal, hal ini karena atribut didalam entitas tersebut masih kompleks. Atribut
yang kompleks dapat menyebabkan redudansi data, sehingga perlu dilakukan
proses normalisasi pada entitas agar menjadi bentuk normal agar terhindar dari
dari berbagai anomali data. Berikut merupakan proses normalisasi.
1. Bentuk Normal Pertama (1NF)

Customer
id_customer nama_customer no_telp email
       

Tabel 1. Tabel Customer

Transaksi
no_transaksi nama_menu harga kategori deskripsi

Tabel 2. Tabel Transaksi

Kasir
Id_kasir nama_kasir

Tabel 3. Tabel Kasir

Bentuk diatas adalah bentuk normal pertama atau 1NF. Pada bagian
diatas diketahui tidak ada lagi atribut multi nilai pada masing-masing entitas.
Atribut-atribut yang ada pada masing-masing entitas sudah bernilai tunggal.
Namun, masih belum normal karena atribut didalamnya masih kompleks,
terkhususnya pada entitas transaksi. Sehingga perlu dilakukan normalisasi
bentuk kedua atau 2NF.

2. Bentuk Normal Kedua (2NF)

Customer
id_customer nama_customer no_telp email
       

Tabel 4. Tabel Customer


Transaksi
no_transaksi nama_kasir total_pembayaran tanggal id_customer kode_menu
           

Tabel 5. Tabel Transaksi

Kasir
Id_kasir nama_kasir

Tabel 6. Tabel Kasir

Menu
kode_menu nama_menu harga kategori ingridients
         

Tabel 7. Tabel Menu

Proses normalisasi kedua dilakukan dengan memecah kembali atribut


pada entitas transaksi. Diketahui pada bentuk normal pertama untuk entitas
Transaksi, terlihat adanya pelanggaran functional dependency , dimana
terdapat atribut yang bukan kunci bergantung dengan atribut primary
key.Atribut ini adalah atribut no_transaksi dengan atribut kode_menu,
nama_menu, harga, kategori, dan deskripsi.

Atribut kode_menu, nama_menu, harga, kategori, dan deskripsi memiliki


ketergantungan fungsional dengan atribut no_transaksi, karena untuk satu
no_transaksi hanya diperoleh satu kode_menu, satu nama_menu, satu harga,
satu kategori, dan satu data deskripsi. Tetapi tidak sebaliknya. Atribut
no_transaksi tidak memiliki ketergantungan fungsional pada atribut
kode_menu, nama_menu, harga, kategori, dan deskripsi, karena satu data
pada atribut kode_menu, nama_menu, harga, kategori, dan ingredients dapat
dipesan oleh beberapa customer sehingga dapat memperoleh beberapa
no_transaksi. Maka dari itu, atribut yang ada di entitas transaksi dipecah
kembali dan dipisahkan kedalam entitas baru, yaitu entitas menu. Atribut
pada entitas menu dapat dilihat pada tabel 7. Kemudian, pada entitas transaksi
ditambahkan atribut id_customer, dan tetap juga terdapat atribut kode_menu
yang bertujuan agar entitas customer dan entitas menu dapat terhubung di
entitas transaksi. Hasil dari normalisasi kedua (2NF) dapat terlihat pada tabel
4, 5, 6, dan 7
3. Bentuk Normal Ketiga (3NF)
Pada hasil normalisasi bentuk kedua yang mana menghasilkan entitas
baru yaitu entitas menu yang dipecah dari entitas transaksi. Namun, ternyata
masih terdapat permasalahan pada Entitas Transaksi, dimana pada Entitas
Transaksi diketahui dapat menyebabkan adanya multivalue pada atribut
no_transaksi. Hal ini disebabkan karena sebelumnya diketahui bahwa satu
kali transaksi bisa memiliki banyak menu, sedangkan pada tabel transaksi
yang ada satu kali transaksi hanya memiliki satu menu saja, jika terdapat
lebih dari satu menu pada satu kali akan menyebakan adanya data record
lebih dari satu dengan nomor transaksi yang sama. Padahal, nomor transaksi
merupakan primary key yang tidak boleh ada duplikasi.Berdasarkan hal
tersebut, dilakukan pemecahan kembali pada Entitas Transaksi,membuat
entitas baru yang bernama Entitas Detail Pemesanan yang mana pada tabel ini
dapat menyimpan lebih dari 1 menu yang berbeda dengan nomor transaksi
yang sama. Entitas Detail Pemesanan memiliki 5 buah atribut yaitu, id_detail,
no_transaksi, kode_menu,jumlah_beli,dan jumlah_harga.id_detail berperan
sebagai primary key , no_transaksi dan kode_menu berperan sebagai foreign
key yang berfungsi agar Entitas Transaksi dan Entitas Menu terhubung
kedalam Entitas Detail Pemesanan. Kemudian, pada Entitas Transaksi tersisa
3 atribut saja yaitu no_transaksi, id_customer, id_kasir. Berikut ini
merupakan hasil dari normalisasi bentuk ketiga.

Customer
emai
id_customer nama_customer no_telp l
       
Tabel 8. Tabel Customer

Transaksi
no_transaksi id_customer id_kasir
   

Tabel 9. Tabel Transaksi

Menu
kode_menu nama_menu harga Kategori deskripsi

         
Tabel 10. Tabel Menu
Kasir
id_kasir nama_kasir

   
Tabel 11. Tabel Kasir

Detail_Transaksi
no_transaks kode_me jumlah_b Jumlah_har
id_detail i nu eli ga

         
Tabel 12. Tabel Menu

Hasil Akhir :

Kemudian, direpresentasikan kedalam ERD maka sebagai berikut.

ERD sebelum dilakukan normalisasi :


Gambar 3. Rancangan Awal ERD Database Restoran Ratu Ayu

ERD sesudah dilakukan normalisasi :

Gambar 4. Rancangan Final ERD Database Restoran Ratu Ayu

Setelah dilakukan normalisasi sampai dengan bentuk normal ketiga


(3NF), maka pada database yang awalnya hanya berisi 3 buah entitas saja,
kini sudah betambah menjadi 5 buah, yaitu entitas customer, entitas menu,
entitas kasir, entitas transaksi, dan entitas detail transaksi. Entias customer
dan entitas kasir saling berelasi melalui entitas transaksi, kemudian entitas
transaksi dan entitas menu saling berelasi melalui entitas detail transaksi.
Adapun kardinalitas antara masing-masiang entitas yaitu,

1. Entitas Customer dan Entitas Transaksi memiliki hubungan kardinalitas


one to one. Hubungan dari entitas transaksi menuju entitas customer
bersifat mandatory , dan hubungan dari entitas customer menuju entitas
transaksi bersifat opsional. Dimana 1 customer dapat melakukan 1 kali
transaksi namun tidak wajib dilakukan dan 1 kali transaksi dapat dan
wajib dilakukan oleh 1 customer.
2. Entitas Kasir dan Entitas Transaksi memiliki hubungan kardinalitas one
to many. Hubungan dari entitas transaksi menuju entitas kasir bersifat
mandatory, sebaliknya hubungan dari entitas menu menuju entitas
transaksi bersifat opsional. 1 kali transaksi wajib dikelola oleh 1 orang
kasir, namun 1 orang kasir dapat mengelola lebih dari 1 transaksi.
3. Entitas Transaksi dan Entitas Detail Transaksi memiliki hubungan
kardinalitas one to many. Hubungan dari Entitas Transaksi menuju
Entitas Detail Transaksi bersifat mandatory, sebaliknya hubungan dari
Entitas Detail Transaksi menuju Entitas Transaksi bersifat opsional. 1
kali transaksi wajib memiliki 1 buah detail transaksi, namun lebih dari 1
buah detail transaksi dapat dimiliki lebih dari 1 transaksi.
4. Entitas Detail Transaksi memiliki hubungan one to may. Hubungan dari
entitas menu menuju entitas detail pemesanan bersifat mandatory,
sebaliknya hubungan dari entitas detail transaksi menuju entitas menu
bersifat opsional. 1 buah menu wajib dimiliki oleh 1 buah detail
pemesanan, namun 1 buah detail pemesanan dapat memiliki satu atau
lebih menu.

V. Desain Database
Berikut merupakan Desain Database milik Restoran Ratu Ayu. Berdasarkan
ERD yang sudah dibuat sebelumnya, pada Database Restoran Ratu Ayu
terdapat 5 buah tabel dengan penjelasan detail tiap-tiap tabel adalah sebagai
berikut.
1. Tabel Customer

Customer
Nama Kolom Tipe Data Panjang Data Keterangan
id_customer int 10 Primary Key
nama_customer varchar 50  Not Null
no_telp char 13  Not Null
email varchar 50  Not Null

Adapun Query yang digunakan untuk membuat tabel customer adalah


sebagai berikut :

CREATE TABLE Customer (


id_customer INT (10) NOT NULL,
nama_customer VARCHAR (50) NOT NULL,
no_telp CHAR (13) NOT NULL,
email VARCHAR (50) NOT NULL,
PRIMARY KEY (id_customer));

2. Tabel Kasir

Kasir
Nama Kolom Tipe Data Panjang Data Keterangan
id_kasir int 10 Primary Key
nama_kasir varchar 50  

Adapun Query yang digunakan untuk membuat tabel kasir adalah sebagai
berikut :

CREATE TABLE Kasir (


id_kasir INT (10) NOT NULL,
nama_kasir VARCHAR (50) NOT NULL,
PRIMARY KEY (id_kasir));

3. Tabel Transaksi
Transaksi
Nama Kolom Tipe Data Panjang Data Keterangan
no_transaksi int 10 Primary Key
id_customer int 10 Foreign Key
id_kasir int 10 Foreign Key 

Adapun Query yang digunakan untuk membuat tabel transaksi adalah


sebagai berikut :

CREATE TABLE Transaksi (


no_transaksi INT (10) NOT NULL,
id_customer INT (10) NOT NULL,
id_kasir INT (10) NOT NULL,
PRIMARY KEY (no_transaksi),
FOREIGN KEY (id_customer) REFERENCES Customer
(id_customer),
FOREIGN KEY (id_kasir) REFERENCES Kasir (id_kasir));

4. Tabel Menu

Transaksi
Nama Kolom Tipe Data Panjang Data Keterangan
kode_menu char 8 Primary Key
nama_menu varchar 50  Not Null
harga int 10  Not Null
kategori varchar 50  Not Null
deskripsi varchar 100  Not Null

Adapun Query yang digunakan untuk membuat tabel menu adalah sebagai
berikut :

CREATE TABLE Menu (


kode_menu CHAR (8) NOT NULL,
nama_menu VARCHAR (50) NOT NULL,
harga INT (10) NOT NULL,
kategori VARCHAR (50) NOT NULL,
deskripsi VARCHAR (100) NOT NULL,
PRIMARY KEY (kode_menu));

5. Tabel Detail Transaksi

Transaksi
Nama Kolom Tipe Data Panjang Data Keterangan
id_detail int 10 Primary Key
no_transaksi int 10 Foreign Key
kode_menu char 8 Foreign Key
jumlah_beli int 4  
jumlah_harga Int 9  

Adapun Query yang digunakan untuk membuat tabel kasir adalah sebagai
berikut :

CREATE TABLE Detail_Transaksi (


id_detail INT (10) NOT NULL,
no_transaksi INT (10) NOT NULL,
kode_menu CHAR (8) NOT NULL,
jumlah_beli INT (4) NOT NULL,
jumlah_harga INT (9) NOT NULL,
PRIMARY KEY (id_detail),
FOREIGN KEY (no_transaksi) REFERENCES Transaksi
(no_transaksi),
FOREIGN KEY (kode_menu) REFERENCES Menu
(kode_menu));

VI. Mekanisme Keamanan

Terdapat 3 pengguna yaitu Admin, Manajer dan Kasir yang dapat


mengakses basis data db_ratuayu. Berikut ini matriks CRUD masing –
masing pengguna terhadap data, yaitu sebagai berikut :

Pemakai Admin Manajer Kasir


Data
Customer CRUD R CRUD
Transaksi CRUD R CRUD
Kasir CRUD R R
Detail_transaksi CRUD R CRUD
Menu CRUD R R

1. Pengaturan Hak Akses untuk Pengguna Admin


a. Create user Admin

CREATE USER '`admin'@'localhost' IDENTIFIED BY 'kelompok 3';


Bagian diatas merupakan query atau perintah untuk membuat user baru
yang bernama “admin” dengan password “kelompok 3”.

b. Menetapkan hak akses dengan menggunakan GRANT

GRANT SELECT, INSERT, UPDATE, DELETE ON


db_ratuayu.customer TO
'admin'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON
db_ratuayu.transaksi TO
'admin'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON db_ratuayu.kasir
TO
'admin'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON
db_ratuayu.detail_transaksi TO
'admin'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON db_ratuayu.menu
TO
'admin'@'localhost';
Bagian diatas merupakan query atau perintah untuk menetapkan hak akses
untuk pengguna admin. Admin dapat melakukan CRUD
(Create,Read.Update,dan Delete) pada tabel customer, tabel kasir, tabel
menu, tabel transaksi, dan tabel detail transaksi.

c. Menampilkan hak akses yang dibuat

SHOW GRANTS FOR 'admin'@'localhost';

Bagian diatas merupaka query atau perintah untuk menunjukkan daftar hak
akses yang dimiliki oleh Pengguna Admin.

2. Pengaturan Hak Akses untuk Pengguna Manajer


a. Create user Manajer

CREATE USER '`manajer'@'localhost' IDENTIFIED BY 'kelompok 3';


Bagian diatas merupakan query atau perintah untuk membuat user baru
yang bernama “manajer” dengan password “kelompok 3”.

b. Menetapkan hak akses dengan menggunakan GRANT

GRANT SELECT ON db_ratuayu.customer TO 'manajer'@'localhost';


GRANT SELECT ON db_ratuayu.transaksi TO 'manajer'@'localhost';
GRANT SELECT ON db_ratuayu.kasir TO 'manajer'@'localhost';
GRANT SELECT ON db_ratuayu.detail_transaksi TO
'manajer'@'localhost';
GRANT SELECT ON db_ratuayu.menu TO 'manajer'@'localhost';

Bagian diatas merupakan query atau perintah untuk menetapkan hak akses
untuk pengguna manajer. Manajer dapat melakukan R (Read) pada tabel
customer, tabel kasir, tabel menu, tabel transaksi, dan tabel detail
transaksi.

c. Menampilkan hak akses yang dibuat

SHOW GRANTS FOR 'manajer'@'localhost';


Bagian diatas merupaka query atau perintah untuk menunjukkan daftar hak
akses yang dimiliki oleh Pengguna Manajer.

3. Pengaturan Hak Akses untuk Pengguna Kasir


a. Create user Kasir

CREATE USER 'kasir'@'localhost' IDENTIFIED BY 'kelompok 3';


Bagian diatas merupakan query atau perintah untuk membuat user baru
yang bernama “kasir” dengan password “kelompok 3”.

b. Menetapkan hak akses dengan menggunakan GRANT

GRANT SELECT, INSERT, UPDATE, DELETE ON


db_ratuayu.customer TO
'kasir'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON
db_ratuayu.transaksi TO
'kasir'@'localhost';
GRANT SELECT ON db_ratuayu.kasir TO 'kasir'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON
db_ratuayu.detail_transaksi TO 'kasir'@'localhost';
GRANT SELECT ON db_ratuayu.menu TO 'kasir'@'localhost';

Bagian diatas merupakan query atau perintah untuk menetapkan hak akses
untuk pengguna kasir. Kasir dapat melakukan CRUD
(Create,Read,Update,dan Delete) pada tabel customer, transaksi, dan
detail transaksi. Kasir hanya dapat melakukan R (Read) pada tabel kasir
dan tabel menu.

c. Menampilkan hak akses yang dibuat

SHOW GRANTS FOR 'kasir'@'localhost';


Bagian diatas merupaka query atau perintah untuk menunjukkan daftar hak
akses yang dimiliki oleh Pengguna Kasir.
VII. Store Procedure, Function, dan Trigger
1. Store Procedure
a. Insert Customer

DELIMITER $$
CREATE
PROCEDURE `db_ratuayu`.`tambah_customer`(
`id_customernya` INT(10),
`nama_customernya` VARCHAR(50),
`no_telpnya` CHAR(13),
`emailnya` VARCHAR(50)
)
BEGIN
INSERT INTO customer (id_customer,
nama_customer, no_telp, email)
VALUES (id_customernya, nama_customernya,
no_telpnya, emailnya);
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure insert customer.


Semua perintah untuk menginputkan data kedalam tabel customer
disimpan kedalam store procedure diatas. Sehingga ketika ingin
menginputkan data kedalam tabel customer,maka tinggal memasukkan
data inputan saja sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Insert_Customer(‘ ’)”, dan data
akan tertambah otomatis kedalam tabel customer.

b. Update Customer

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `update_customer`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`update_customer`(
IN `id_costumer` INT(10),
IN `nama_costumer` VARCHAR(50),
IN `no_telp` CHAR (13),
IN `email` VARCHAR (50)
)
BEGIN
UPDATE detail_transaksi
SET
nama_costumer=namacostumer,no_telp=notelp,email=email1
WHERE id_costumer=idcostumer;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure update pada


tabel customer. Query atau perintah untuk mengubah data kedalam
tabel customer disimpan kedalam store procedure diatas. Sehingga
ketika ingin mengubah data kedalam tabel customer, tinggal
memasukkan nomor id customer yang ingin diubah datanya beserta
dengan data terbaru sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Update_Customer(‘’)” dan data
akan otomatis berganti dengan data yang baru.

c. Delete Customer

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `delete_customer`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`delete_customer`(IN `idcustomer` INT(10))
BEGIN
DELETE FROM customer WHERE idcustomer=id_customer;
END$$
DELIMITER ;
Bagian diatas merupakan query untuk store procedure delete pada tabel
customer. Query atau perintah untuk menghapus data yang ada didalam
tabel customer disimpan kedalam store procedure diatas. Sehingga
ketika ingin menghapus data didalam tabel customer, tinggal
memasukkan nomor id customer saja sebagai parameter dalam
procedure tersebut yang dipanggil menggunakan query “CALL
Delete_Customer(‘’)” , dan data dengan nomor id customer tersebut
akan terhapus.

d. Insert Kasir

DELIMITER $$
CREATE
PROCEDURE `db_ratuayu`.`tambah_kasir`(
`id_kasirnya` INT(10),
`nama_kasirnya` VARCHAR(50)
)
BEGIN
INSERT INTO kasir (id_kasir, nama_kasir)
VALUES (id_kasirnya, nama_kasirnya);
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure insert kasir.


Semua perintah untuk menginputkan data kedalam tabel kasir disimpan
kedalam store procedure diatas. Sehingga ketika ingin menginputkan
data kedalam tabel kasir, maka tinggal memasukkan data yang ingin
diinputkan saja sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Insert_Kasir(‘ ’)”, dan data
tersebut akan secara otomatis langsung tersimpan kedalam tabel kasir.

e. Update Kasir
DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `update_kasir`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`update_kasir`(
IN `id_kasir` INT(10),
IN `nama_kasir` VARCHAR(50)
)
BEGIN
UPDATE kasir
SET
nama_kasir=namakasir
WHERE id_kasir=idkasir;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure update pada


tabel kasir. Query atau perintah untuk mengubah data didalam tabel
kasir disimpan kedalam store procedure diatas. Sehingga ketika ingin
mengubah data kedalam tabel kasir, tinggal memasukkan nomor id
kasir yang ingin diubah datanya beserta dengan data terbaru saja
sebagai parameter dalam procedure tersebut yang dipanggil
menggunakan query “CALL Update_Kasir(‘’)”, maka data dengan
nomor id kasir tersebut akan otomatis berganti.

f. Delete Kasir

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `delete_kasir`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`delete_kasir`(IN `idkasir` INT(10))
BEGIN
DELETE FROM kasir WHERE idkasir=id_kasir;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure delete pada tabel
kasir. Query atau perintah untuk menghapus data yang ada didalam
tabel kasir disimpan kedalam store procedure diatas. Sehingga ketika
ingin menghapus data didalam tabel kasir, tinggal memasukkan nomor
id kasir saja sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Delete_Kasir(‘’)”, dan data
dengan nomor id kasir tersebut akan terhapus.

g. Insert Menu

DELIMITER $$
CREATE
PROCEDURE `db_ratuayu`.`tambah_menu`(
`kode_menunya` CHAR(8),
`nama_menunya` VARCHAR(50),
`harganya` INT(10),
`kategorinya` VARCHAR(50),
`deskripsinya` VARCHAR(100) )
BEGIN
INSERT INTO menu (kode_menu, nama_menu, harga,
kategori, deskripsi)
VALUES (kode_menunya, nama_menunya, harganya,
kategorinya, deskripsinya);
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure insert menu.


Semua perintah untuk menginputkan data kedalam tabel menu disimpan
kedalam store procedure diatas. Sehingga ketika ingin menginputkan
data kedalam tabel menu, tinggal memasukkan data yang akan
diinputkan saja sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Insert_Menu(‘’)”, dan data akan
otomatis tersimpan kedalam tabel menu.

h. Update Menu

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `update_menu`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`update_menu`(
IN `kode_menu` CHAR(8),
IN `nama_menu` VARCHAR(50),
IN `harga` INT(10),
IN `kategori` VARCHAR(50),
IN `deskripsi` VARCHAR (100)
)
BEGIN
UPDATE menu
SET
nama_menu=nama_menu,
harga=harga1,kategori=kategori1,deskripsi=deskripsi1
WHERE kode_menu=kodemenu;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure update pada


tabel menu. Query atau perintah untuk mengubah data didalam tabel
menu disimpan kedalam store procedure diatas. Sehingga ketika ingin
mengubah data kedalam tabel menu, tinggal memasukkan nomor kode
menu yang ingin diubah datanya beserta dengan data terbaru saja
sebagai parameter dalam procedure tersebut yang dipanggil
menggunakan query “CALL Update_Menu(‘’)”, maka data menu
dengan nomor kode menu tersebut akan otomatis berganti.

i. Delete Menu

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `delete_menu`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`delete_menu`(IN `kodemenu` CHAR(8))
BEGIN
DELETE FROM menu WHERE kodemenu=kode_menu;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure delete pada tabel
menu. Query atau perintah untuk menghapus data yang ada didalam
tabel menu disimpan kedalam store procedure diatas. Sehingga ketika
ingin menghapus data didalam tabel menu, tinggal memasukkan nomor
kode menu saja sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Delete_Menu(‘’)”, dan data
dengan nomor kode menu tersebut akan terhapus.

j. Insert Transaksi

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `delete_transaksi`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`delate_transaksi`(IN `notransaksi` INT(10))
BEGIN
DELETE FROM transaksi WHERE notransaksi=no_transaksi;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure insert transaksi.


Semua perintah untuk menginputkan data kedalam tabel menu disimpan
kedalam store procedure diatas. Sehingga ketika ingin menginputkan
data kedalam tabel menu, tinggal memasukkan data yang akan
diinputkan saja sebagai parameter dalam procedure tersebut yang
dipanggil menggunakan query “CALL Insert_Transaksi(‘’)”, dan data
akan otomatis tersimpan kedalam tabel transaksi.

k. Update Transaksi

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `update_transaksi`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`update_transaksi`(
IN `no_transaksi` INT(10),
IN `id_costumer` INT(10),
IN `id_kasur` INT(10)
)
BEGIN
UPDATE transaksi
SET
id_costumer=idcostumer, id_kasur=idkasur
WHERE no_transaksi=notransaksi;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure update pada


tabel transaksi. Query atau perintah untuk mengubah data didalam tabel
transaksi disimpan kedalam store procedure diatas. Sehingga ketika
ingin mengubah data kedalam tabel transaksi, tinggal memasukkan
nomor transaksi yang ingin diubah datanya beserta dengan data terbaru
saja sebagai parameter dalam procedure tersebut yang dipanggil
menggunakan query “CALL Update_Transaksi(‘’)”, maka data
transaksi dengan nomor transaksi tersebut akan otomatis berganti.

l. Delete Transaksi

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `delete_transaksi`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`delete_transaksi`(IN `notransaksi` INT(10))
BEGIN
DELETE FROM transaksi WHERE notransaksi=no_transaksi;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure delete pada tabel
transaksi. Query atau perintah untuk menghapus data yang ada didalam
tabel transaksi disimpan kedalam store procedure diatas. Sehingga
ketika ingin menghapus data didalam tabel transaksi, tinggal
memasukkan nomor transaksi saja sebagai parameter dalam procedure
tersebut yang dipanggil menggunakan query “CALL
Delete_Transaksi(‘’)”, dan data dengan nomor transaksi tersebut akan
terhapus.

m. Insert Detail Transaksi

DELIMITER $$
CREATE
PROCEDURE `db_ratuayu`.`tambah_detail_transaksi`(
`id_detailnya` INT(10),
`no_transaksinya` INT(10),
`kode_menunya` CHAR(8),
`jumlah_belinya` INT(4),
`jumlah_harganya` INT(9)
)
BEGIN
INSERT INTO detail_transaksi (id_detail, no_transaksi,
kode_menu, jumlah_beli, jumlah_harga)
VALUES (id_detailnya, no_transaksinya, kode_menunya,
jumlah_belinya, jumlah_harganya);
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure insert detail


transaksi. Semua perintah untuk menginputkan data kedalam tabel
detail transaksi disimpan kedalam store procedure diatas. Sehingga
ketika ingin menginputkan data kedalam tabel detail transaksi, tinggal
memasukkan data yang akan diinputkan saja sebagai parameter dalam
procedure tersebut yang dipanggil menggunakan query “CALL
Insert_Detail_Transaksi(‘’)”, dan data akan otomatis tersimpan kedalam
tabel detail transaksi.

n. Update Detail Transaksi

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `delete_detail_transaksi`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`delete_detail_transaksi`(IN `iddetail` INT(10))
BEGIN
DELETE FROM detail_transaksi WHERE
iddetail=id_detail;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure update pada


tabel detail transaksi. Query atau perintah untuk mengubah data
didalam tabel transaksi disimpan kedalam store procedure diatas.
Sehingga ketika ingin mengubah data kedalam tabel transaksi, tinggal
memasukkan nomor id detail transaksi yang ingin diubah datanya
beserta dengan data terbaru saja sebagai parameter dalam procedure
tersebut yang dipanggil menggunakan query “CALL
Update_Detail_Transaksi(‘’)”, maka data detail transaksi dengan nomor
id detail transaksi tersebut akan otomatis berganti.

o. Delete Detail Transaksi

DELIMITER $$
USE `db_ratuayu`$$
DROP PROCEDURE IF EXISTS `update_detail_transaksi`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE
`update_detail_transaksi`(
IN `id_detail` INT(10),
IN `no_transaksi` INT(10),
IN `kode_menu` CHAR (8),
IN `jumlah_beli` INT (4),
IN `jumlah_harga` INT (9)
)
BEGIN
UPDATE detail_transaksi
SET

id_detail=iddetail,no_transaksi=notransaksi,kode_menu=kodemenu,
jumlah_beli=jumlahbeli,jumlah_harga=jumlahharga
WHERE id_detail=iddetail;
END$$
DELIMITER ;

Bagian diatas merupakan query untuk store procedure delete pada tabel
detail transaksi. Query atau perintah untuk menghapus data yang ada
didalam tabel detail transaksi disimpan kedalam store procedure diatas.
Sehingga ketika ingin menghapus data didalam tabel transaksi, tinggal
memasukkan nomor transaksi saja sebagai parameter dalam procedure
tersebut yang dipanggil menggunakan query “CALL
Delete_Detail_Transaksi(‘’)”, dan data dengan nomor transaksi tersebut
akan terhapus.

2. Function
a. Jumlah Harga

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `db_ratuayu`.`total_harga`(nomor_transaksi INT(10))
RETURNS INT(9)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA |
MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
DECLARE total INT(9);
SELECT SUM(jumlah_harga) INTO total FROM
detail_transaksi
WHERE no_transaksi = nomor_transaksi;
RETURN total;
END$$

DELIMITER ;

Query atau perintah diatas merupakan function yang digunakan


didalam database milik Restoran Ratu Ayu. Fungsi diatas merupakan
fungsi untuk menghitung total jumlah harga menu yang dipesan. Fungsi
diatas akan berjalan menghitung harga menu secara otomatis yang ada
di dalam data record berdasarkan harga menu yang ada di dalam tabel
menu, nantinya akan di hitung pada tabel detail_transaksi berdasarkan
id_detail, no_transaksi dan kode_menu.

b. Jumlah Beli

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `db_ratuayu`.`total_beli`(nomor_transaksi INT(10))
RETURNS INT(4)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA |
MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
DECLARE total INT(9);
SELECT SUM(jumlah_beli) INTO total FROM
detail_transaksi
WHERE no_transaksi = nomor_transaksi;
RETURN total;
END$$

DELIMITER ;

Query atau perintah diatas merupakan function yang digunakan


didalam database milik Restoran Ratu Ayu. Fungsi diatas merupakan
fungsi untuk menghitung total jumlah beli menu yang dipesan. Fungsi
diatas akan berjalan menghitung jumlah beli menu yang di pesan secara
otomatis ke dalam data record berdasarkan berapa item yang dipesan di
dalam tabel menu, nantinya akan di hitung pada tabel detail_transaksi
berdasarkan id_detail, no_transaksi dan kode_menu.

3. Trigger
a. Trigger Delete Customer

DELIMITER $$
CREATE
TRIGGER `db_ratuayu`.`trigger_delete_customer` AFTER DELETE
ON `db_ratuayu`.`transaksi`
FOR EACH ROW BEGIN
DELETE FROM customer WHERE id_customer =
OLD.id_customer;
END$$
DELIMITER ;

Berikut merupakan trigger yang diterapkan didalam database milik


Restoran Ratu Ayu. Trigger berlaku jika pemesanan tidak jadi dilakukan
(customer tidak jadi memesan menu). Jika customer telah memesan menu
maka trigger tidak dapat berjalan, karena terdapat constraint antara tabel
transaksi dan tabel detail_transaksi.

Anda mungkin juga menyukai