AYU ”
Disusun Oleh :
Kelompok 3 :
2023
Customer
id_customer nama_customer no_telp email
Transaksi
no_transaksi nama_menu harga kategori deskripsi
Kasir
Id_kasir nama_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.
Customer
id_customer nama_customer no_telp email
Kasir
Id_kasir nama_kasir
Menu
kode_menu nama_menu harga kategori ingridients
Customer
emai
id_customer nama_customer no_telp l
Tabel 8. Tabel Customer
Transaksi
no_transaksi id_customer id_kasir
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 :
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
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 :
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
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 :
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 :
Bagian diatas merupaka query atau perintah untuk menunjukkan daftar hak
akses yang dimiliki oleh Pengguna Admin.
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.
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.
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 ;
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 ;
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 ;
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 ;
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 ;
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 ;
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 ;
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 ;
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.
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 ;
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 ;
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 ;
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 ;
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 ;