Anda di halaman 1dari 14

LAPORAN WORKSHOP BASIS DATA LANJUT

Progress Project Capstone WBDL

Dosen/PLP :
Dini Nurmalasari, S.T.,M.T
Asmarini, S.Tr.Kom

Anggota Kelompok :
1.Alfi Fikri Putra Saldan
2.Daffa Maulana Shoufi
3.Efa Jelyanti Sihombing
4.M.Gilang Rio Pratama
5.Michael Wijaya Nanpa

PRODI TEKNIK INFORMATIKA


JURUSAN TEKNOLOGI INFORMASI

1 | Workshop Basis Data Lanjut


Progress Project Capstone WBDL
A. Business Process

1. Si pelanggan / customer datang ke cafe dan setelah melihat daftar menu dan minuman
serta harga yang sudah ada di web dia akan memesan makanan/minuman yang dia pesa.
2. Kemudian si kasir akan menginputkan pesanan si customer dengan nama dan alamat
nya
3. Setelah penginputan pesanan lalu si kasir akan membacakan total yang harus di bayar,
kemudian si customer membayar dan si kasir akan menginputkan besar bayaran dan jika
ada kembalian,Kemudian akan mengeluarkan output berupa struk belanjaannya,yang
kemudian di berikan kepada customer.
4. Untuk si admin dapat melihat dan melakukan aksi edit,tambah,hapus data data yang
ada di sistem.
5. Si admin melakukan login terlebih dahulu dan bertugas pada bagian penambahan
barang dan bahan yang masuk sesuai kebutuhan si cafe
6. Owner dapat melakukan login dan hanya dapat melihat data data yang ada di sistem
saja dan tidak dapat melakukan aksi aksi seperti edit,hapus,tambah dll,ketika sudah
selesai dengan kegiatannya si owner dapat melakukan logout
7. Customer hanya dapat melihat bagian menu serta beranda dari si sistem cafe 'ZAYN
COFFEE N SNCAK'

2 | Workshop Basis Data Lanjut


2. ERD

3 | Workshop Basis Data Lanjut


4 | Workshop Basis Data Lanjut
3. Syntax Query DDL
Query Penjelasan

Create Database ZaynCoffe ; Fungsi dari syntax disamping adalah membuat


database baru yang berisi tabel tabel yang akan kita
buat nantinya.

CREATE TABLE `admin` ( Syntax di samping ini merupakan syntax untuk


`id_admin` int(11) NOT NULL, membuat tabel dengan nama admin,dimana tabel admin
`nm_admin` varchar(255) NOT NULL, ini menampung informasi dari si admin.
`alamat_admin` text NOT NULL, Dengan primary key nya yaitu si ‘id_admin’
`telepon` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`gambar` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci;

ALTER TABLE `admin`


ADD PRIMARY KEY (`id_admin`);

ALTER TABLE `admin`


MODIFY `id_admin` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=2;

CREATE TABLE `cafe` ( Syntax di samping berfungsi untuk membuat tabel yang
`id_cafe` int(11) NOT NULL, diberi nama ‘cafe’ dimana tabel ini memiliki primary
`nama_cafe` varchar(255) NOT NULL, key ‘ id_cafe’
`alamat_cafe` text NOT NULL, Tabel ‘cafe’ ini tidak ber-relasi ke tabel manapun dan
`tlp` varchar(255) NOT NULL, hanya terbuat khusus di luar seluruh relasi tabel yang
`nama_pemilik` varchar(255) NOT NULL ada
) ENGINE=InnoDB DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci;

ALTER TABLE `cafe`


ADD PRIMARY KEY (`id_cafe`);
ALTER TABLE `cafe`

MODIFY `id_cafe` int(11) NOT NULL


AUTO_INCREMENT, AUTO_INCREMENT=2;

5 | Workshop Basis Data Lanjut


CREATE TABLE `kategori` ( Syntax disamping ini merupakan syntax untuk
`id_kategori` int(11) NOT NULL, membuat tabel dengan nama ‘ kategori’ dimana tabel
`nama_kategori` varchar(255) NOT NULL, kategori ini memiliki rpimary key dengan nama ‘ id
`tgl_input` varchar(255) NOT NULL _kategory.
) ENGINE=InnoDB DEFAULT CHARSET=latin1 Tabel kategori ini nantinya akan ber-relasi ke tabel
COLLATE=latin1_swedish_ci; menu dimana nantinya si kategoori mengisi kolom
yang ada di tabel ‘ menu’
ALTER TABLE `kategori`
ADD PRIMARY KEY (`id_kategori`);

ALTER TABLE `kategori`


MODIFY `id_kategori` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=14;

CREATE TABLE `login` ( Syntax di samping digunakan untuk


`id_login` int(11) NOT NULL, menciptakan/membentuk tabel dengan nama ‘login’
`user` varchar(255) NOT NULL, dimana tabel login ini memiliki primary_key yaitu
`pass` char(32) NOT NULL, ‘id_login’.
`id_admin` int(11) NOT NULL Tabel login ini ber relasi ke tabel admin,dimana yang
) ENGINE=InnoDB DEFAULT CHARSET=latin1 melakukan login nanti akan di proses.
COLLATE=latin1_swedish_ci;

ALTER TABLE `login`


ADD PRIMARY KEY (`id_login`),
ADD KEY `id_member` (`id_admin`);

ALTER TABLE `login`


MODIFY `id_login` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=2;
ALTER TABLE `login`

ADD CONSTRAINT `login_ibfk_1` FOREIGN KEY


(`id_admin`) REFERENCES `admin` (`id_admin`);
COMMIT;
CREATE TABLE `menu` (
`id` int(11) NOT NULL,
`id_menu` varchar(255) NOT NULL,
`id_kategori` int(11) NOT NULL,
`nama_menu` text NOT NULL,
`harga` varchar(255) NOT NULL,
`stok` text NOT NULL,

6 | Workshop Basis Data Lanjut


`tgl_input` timestamp(6) NOT NULL DEFAULT
current_timestamp(6) ON UPDATE
current_timestamp(6),
`tgl_update` timestamp(6) NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci;

ALTER TABLE `menu`


ADD PRIMARY KEY (`id`);

ALTER TABLE `menu`


MODIFY `id` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=22;

CREATE TABLE `nota` ( Syntax di samping dibuat untuk menciptakan tabel


`id_nota` int(11) NOT NULL, dengan nama ‘ nota ‘ dimana nota ini memiliki primary
`id_menu` varchar(255) NOT NULL, key dengan nmaa ‘ id_nota’.
`id_admin` int(11) NOT NULL, Tabel nota ini nantinya akan ber-relasi ke tabel ‘admin’
`jumlah` varchar(255) NOT NULL, dan ‘menu’ dimana nama relasi ke - dua dua nya tabel
`total` varchar(255) NOT NULL, tersebut diberi nama catat,dengan jenis relasi nya yaitu
`tanggal_input` varchar(255) NOT NULL, ada one to many,optional one,one to one.
`periode` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci;

ALTER TABLE `nota`


ADD PRIMARY KEY (`id_nota`);

ALTER TABLE `nota`


MODIFY `id_nota` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=16;

CREATE TABLE `penjualan` ( Syntax di samping merupakan syntax untuk membuat


`id_penjualan` int(11) NOT NULL, tabel dengan nama ‘penjualan’ dimana si tabel
`id_menu` varchar(255) NOT NULL, penjualan ini memiliki primary_key yaitu ‘
`id_admin` int(11) NOT NULL, id_penjualan’.
`jumlah` varchar(255) NOT NULL, Tabel penjualan ber-relasi ke tabel admin dan
`total` varchar(255) NOT NULL, menu,karena dia adalah admin oleh sebab itu dia
`tanggal_input` varchar(255) NOT NULL memiliki hak untuk mengubah data data yang ada di
) ENGINE=InnoDB DEFAULT CHARSET=latin1 tabel admin dan menu.
COLLATE=latin1_swedish_ci;

7 | Workshop Basis Data Lanjut


ALTER TABLE `penjualan`
ADD PRIMARY KEY (`id_penjualan`);

ALTER TABLE `penjualan`


MODIFY `id_penjualan` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=20;

CREATE TABLE `supplier` ( Syntax di samping berfungsi untuk membuat sebuah


`id` int(11) NOT NULL, tabel dengan nama ‘ supplier’ dimana tabel supplier ini
`id_supplier` varchar(255) NOT NULL, memiliki primary key yaitu ‘id_supplier’.
`nama_supplier` varchar(255) NOT NULL,
`kontak` int(11) NOT NULL,
`alamat_supplier` varchar(255) NOT NULL,
`harga_beli` int(11) NOT NULL,
`bahan` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;

ALTER TABLE `supplier`


ADD PRIMARY KEY (`id`);

ALTER TABLE `supplier`


MODIFY `id` int(11) NOT NULL
AUTO_INCREMENT, AUTO_INCREMENT=7;

4. Syntax Query DML


Query Penjelasan

INSERT INTO `admin` (`id_admin`, `nm_admin`, Syntax di samping merupakan syntax untuk mengisi /
`alamat_admin`, `telepon`, `email`, `gambar`) VALUES memasukkan data ke dalam tabel yang sudah
(1, 'Spiderman', 'Jl.Taman Sari', '082236552144', dibentuk sebelumnya,seperti pada tabel admin,kolom
'Spidey@gmail.com', '1689397377homem aranha.jpg'); yang tersedia yaitu ada 5 kolom,oleh sebab itu setiap
kolomnya akan diisi dengan syntax dml.

INSERT INTO `cafe` (`id_cafe`, `nama_cafe`, Syntax di samping merupakan syntax yang berfungsi
`alamat_cafe`, `tlp`, `nama_pemilik`) VALUES untuk mengisi/memasukkan data ke dalam tabel yang
sudah di buat sebelumnya,seperti tabel cafe berisikan

8 | Workshop Basis Data Lanjut


(1, 'Zayn Coffee', 'Jl.Umban Sari', '082277334455', kolom kolom dimana kolom kolom itulah yang akan
'Dini Nurmalasari'); di isi dengan syntax syntax dml disamping

INSERT INTO `kategori` (`id_kategori`, Syntax di samping merupakan syntax untuk mengisi /
`nama_kategori`, `tgl_input`) VALUES memasukkan data ke dalam tabel yang sudah
(12, 'Makanan', '14 July 2023, 20:16'), dibentuk sebelumnya,seperti pada tabel
(13, 'Minuman', '14 July 2023, 20:16'); kategori,kolom yang tersedia yaitu ada 3 kolom,oleh
sebab itu setiap kolomnya akan diisi dengan syntax
dml.

INSERT INTO `login` (`id_login`, `user`, `pass`, Syntax di samping merupakan syntax untuk mengisi /
`id_admin`) VALUES memasukkan data ke dalam tabel yang sudah
(1, 'admin', '202cb962ac59075b964b07152d234b70', 1), dibentuk sebelumnya yang kemudian akan diisi
(2, 'owner', '202cb962ac59075b964b07152d234b70', 1); dengan syntax insert disamping

INSERT INTO `menu` (`id`, `id_menu`, `id_kategori`, Syntax di samping merupakan syntax untuk mengisi
`nama_menu`, `harga`, `stok`, `tgl_input`, `tgl_update`) kolom kolom yang ada pada tabel menu
VALUES
(13, 'MN001', 12, 'Bakso Aci', '20000', '15', '0000-00-00
00:00:00.000000', NULL),
(14, 'MN002', 12, 'Pancake', '20000', '15', '0000-00-00
00:00:00.000000', NULL),
(15, 'MN003', 12, 'Tahu Gejrot', '20000', '15',
'0000-00-00 00:00:00.000000', NULL),
(16, 'MN004', 12, 'Gyoza', '25000', '10', '0000-00-00
00:00:00.000000', NULL),
(17, 'MN005', 12, 'Dimsum', '25000', '10', '0000-00-00
00:00:00.000000', NULL),
(18, 'MN006', 12, 'Bakso Tahu', '15000', '10',
'0000-00-00 00:00:00.000000', NULL),
(19, 'MN007', 13, 'Caffe Aren', '15000', '10',
'0000-00-00 00:00:00.000000', NULL),
(20, 'MN008', 0, 'Caffe Latte', '15000', '10', '0000-00-00
00:00:00.000000', NULL),
(21, 'MN009', 13, 'Jelly Caffe', '20000', '10',
'0000-00-00 00:00:00.000000', NULL);

9 | Workshop Basis Data Lanjut


INSERT INTO `nota` (`id_nota`, `id_menu`, Syntax di samping merupakan syntax untuk mengisi
`id_admin`, `jumlah`, `total`, `tanggal_input`, `periode`) kolom kolom yang ada pada tabel nota
VALUES
(14, 'MN001', 1, '2', '40000', '18 July 2023, 15:12',
'07-2023'),
(15, 'MN002', 1, '4', '60000', '18 July 2023, 15:12',
'07-2023');

INSERT INTO `penjualan` (`id_penjualan`, `id_menu`, Syntax di samping merupakan syntax untuk mengisi
`id_admin`, `jumlah`, `total`, `tanggal_input`) VALUES kolom kolom yang ada pada tabel penjualan
(18, 'MN001', 1, '2', '40000', '18 July 2023, 15:12'),
(19, 'MN002', 1, '4', '60000', '18 July 2023, 15:12');

INSERT INTO `supplier` (`id`, `id_supplier`, Syntax di samping merupakan syntax untuk mengisi
`nama_supplier`, `kontak`, `alamat_supplier`, kolom kolom yang ada pada tabel supplier
`harga_beli`, `bahan`) VALUES
(6, 'SP001', 'UD BERKAH BAHARI', 2147483647,
'Jl.Umban Sari', 350000, 'Cabai');
select admin.*, login.user, login.pass Syntax di samping merupakan , bagian SELECT
from admin inner join login on digunakan untuk memilih kolom dari tabel 'admin'
admin.id_admin = login.id_admin dan 'login'. Dengan menggunakan 'admin.*', dengan
where user =? and pass = md5(?)'; memilih semua kolom dari tabel 'admin'. Selain itu,
juga memilih kolom 'user' dan 'pass' dari tabel 'login'.
bagian dari pernyataan INNER JOIN. dibuatnya
INNER JOIN antara tabel 'admin' dan 'login'
berdasarkan kondisi bahwa 'id_admin' dalam tabel
'admin' sama dengan 'id_admin' dalam tabel 'login'.
"select admin.*, login.* Syntax di samping menampilkan kolom kolom yang
from admin inner join ada di tabel admin dan juga login,pada bagian inner
login on admin.id_admin = login.id_admin"; join nya itu terjadi penggabungan antara tabel admin
dan login dimana penggabungannya berdasarkan nilai
yang sama saha,arti nya nilai yang ada di tabel
tertentu/relasi
select admin.*, login.* Syntax di samping menampilkan kolom kolom yang
from admin inner join ada di tabel admin dan juga login,pada bagian inner
login on admin.id_admin = login.id_admin join nya itu terjadi penggabungan antara tabel admin
where admin.id_admin= ?"; dan login dimana pemilihan kolomnya berdasarkan
id_admin

10 | Workshop Basis Data Lanjut


select*from cafe where id_cafe='1' Syntax di samping ini merupakan syntax untuk
menampilkan seluruh isi dari tabel cafe dimana
id_cafe = ‘1’.
select menu.*, kategori.id_kategori, Bagian ini menentukan kolom-kolom yang akan
kategori.nama_kategori dipilih dari tabel 'menu' dan 'kategori'. Dengan
from menu inner join menggunakan 'menu.*', kita memilih semua kolom
kategori on menu.id_kategori = dari tabel 'menu'. Selain itu, juga memilih kolom
'id_kategori' dan 'nama_kategori' dari tabel 'kategori'.
kategori.id_kategori
FROM menu yang dapat menentukan bahwa kita
ORDER BY id DESC akan menggunakan tabel 'menu' dalam query.
INNER JOIN kategori ON menu.id_kategori =
kategori.id_kategori

Pada bagian INNER JOIN antara tabel 'menu' dan


'kategori'. Kita menggabungkan tabel 'menu' dan
'kategori' berdasarkan kesamaan nilai pada kolom
'id_kategori' dari kedua tabel. Dengan demikian,
baris-baris yang memiliki nilai yang sama pada kolom
'id_kategori' di kedua tabel akan digabungkan dalam
hasil query.
ORDER BY menu.id DESC

Ini mengurutkan hasil query berdasarkan kolom 'id'


dari tabel 'menu' secara menurun (descending order).
'DESC' menunjukkan bahwa hasil akan diurutkan dari
nilai tertinggi hingga terendah berdasarkan kolom 'id'.
select menu.*, kategori.id_kategori, Untuk bagian pertama ini menentukan kolom-kolom
kategori.nama_kategori yang akan dipilih dari tabel 'menu' dan 'kategori'.
from menu inner join Dengan menggunakan 'menu.*', kita memilih semua
kategori on menu.id_kategori = kolom dari tabel 'menu'. Selain itu, kita juga memilih
kolom 'id_kategori' dan 'nama_kategori' dari tabel
kategori.id_kategori
'kategori'.
where stok <= 3 FROM menu
ORDER BY id DESC
yang dapat menentukan bahwa kita akan
menggunakan tabel 'menu' dalam query.
INNER JOIN kategori ON menu.id_kategori =
kategori.id_kategori

Bagian ini mendefinisikan operasi INNER JOIN


antara tabel 'menu' dan 'kategori',dimana dapat

11 | Workshop Basis Data Lanjut


menggabungkan tabel 'menu' dan 'kategori'
berdasarkan kesamaan nilai pada kolom 'id_kategori'
dari kedua tabel. Dengan demikian, baris-baris yang
memiliki nilai yang sama pada kolom 'id_kategori' di
kedua tabel akan digabungkan dalam hasil query.
WHERE menu.stok <= 3

Bagian ini menambahkan kondisi untuk mengambil


baris-baris hanya jika nilai kolom 'stok' dalam tabel
'menu' kurang dari atau sama dengan 3.
ORDER BY menu.id DESC

Ini mengurutkan hasil query berdasarkan kolom 'id'


dari tabel 'menu' secara menurun (descending order).
'DESC' menunjukkan bahwa hasil akan diurutkan dari
nilai tertinggi hingga terendah berdasarkan kolom 'id'.
select menu.*, kategori.id_kategori, Bagian pertama ini menentukan kolom-kolom yang
kategori.nama_kategori akan dipilih dari tabel 'menu' dan 'kategori'. Dengan
from menu inner join menggunakan 'menu.*', kita memilih semua kolom
kategori on menu.id_kategori = dari tabel 'menu'. Selain itu, kita juga memilih kolom
'id_kategori' dan 'nama_kategori' dari tabel 'kategori'.
kategori.id_kategori
FROM menu
where id_menu=?
yang dapat menentukan bahwa kita akan
menggunakan tabel 'menu' dalam query.
INNER JOIN kategori ON menu.id_kategori =
kategori.id_kategori

Bagian ini mendefinisikan operasi INNER JOIN


antara tabel 'menu' dan 'kategori',dimana dapat
menggabungkan tabel 'menu' dan 'kategori'
berdasarkan kesamaan nilai pada kolom 'id_kategori'
dari kedua tabel. Dengan demikian, baris-baris yang
memiliki nilai yang sama pada kolom 'id_kategori' di
kedua tabel akan digabungkan dalam hasil query.
WHERE id_menu=?

select*from menu Syntax di samping untuk menampilkan keseluruhan


dari tabel menu

12 | Workshop Basis Data Lanjut


select*from kategori Syntax di samping untuk menampilkan keseluruhan
dari tabel kategori
SELECT SUM(jumlah) as stok FROM nota Syntax disamping ini akan menghitung jumlah (sum)
SELECT nota.* , menu.id_menu, dari kolom 'jumlah' pada tabel 'nota' dan memberikan
menu.nama_menu, menu.harga, alias 'stok' untuk hasilnya.
admin.id_admin,
Syntax ini merupakan gabungan dari tabel 'nota',
admin.nm_admin from nota
'menu', dan 'admin' menggunakan operasi LEFT JOIN
left join menu on berdasarkan kolom 'id_menu' dan 'nota' dengan
menu.id_menu=nota.id_menu 'admin' berdasarkan kolom 'id_admin'. Kondisi
left join admin on WHERE digunakan untuk memfilter data berdasarkan
admin.id_admin=nota.id_admin WHERE kolom 'periode' pada tabel 'nota'. Selain itu, hasil juga
nota.periode = ? akan diurutkan berdasarkan kolom 'id_nota' dari tabel
'nota' secara menaik (ascending order).
ORDER BY id_nota ASC

SELECT penjualan.* , menu.id_menu, SELECT penjualan.*, menu.id_menu,


menu.nama_menu, admin.id_admin, menu.nama_menu, admin.id_admin,
admin.nm_admin from admin.nm_admin
penjualan Syntax di atas ini menentukan kolom-kolom yang
akan dipilih dari tabel 'penjualan', 'menu', dan 'admin'.
left join menu on
Dengan memilih semua kolom dari tabel 'penjualan'.
menu.id_menu=penjualan.id_menu Selain itu juga memilih kolom 'id_menu',
left join admin on 'nama_menu', 'id_admin', dan 'nm_admin' dari tabel
admin.id_admin=penjualan.id_admin 'menu' dan 'admin'.
ORDER BY id_penjualan FROM penjualan

Yang menentukan bahwa tabel 'penjualan' dalam


query yaitu dengan adanya
LEFT JOIN menu ON menu.id_menu =
penjualan.id_menu

Yang mendefinisikan operasi LEFT JOIN antara tabel


'penjualan' dan 'menu'. Kita menggabungkan tabel
'penjualan' dengan 'menu' berdasarkan kesamaan nilai
pada kolom 'id_menu' dari kedua tabel. Dengan
demikian, baris-baris yang memiliki nilai yang sama
pada kolom 'id_menu' di kedua tabel akan
digabungkan dalam hasil query.
LEFT JOIN admin ON admin.id_admin =
penjualan.id_admin

13 | Workshop Basis Data Lanjut


SELECT SUM(harga*stok) as byr FROM menu SELECT SUM(harga * stok) AS byr

Syntax di atas menggunakan SUM() untuk


menghitung jumlah total dari hasil perkalian antara
kolom 'harga' dan 'stok' pada tabel 'menu'. Dengan
menggunakan 'harga * stok', kita mengalikan nilai
harga dengan stok untuk setiap baris dalam tabel, dan
kemudian SUM() digunakan untuk menjumlahkan
hasilnya. Hasil akhir dari operasi ini akan diberi alias
'byr'.
FROM menuyang menandakan bahwa akan
menggunakan tabel 'menu' dalam query. Dengan
demikian, perhitungan SUM() akan berlaku untuk
seluruh data yang ada di tabel 'menu'.

select supplier.* SELECT supplier.*


from supplier Syntax diatas menentukan bahwa ingin memilih
ORDER BY id DESC semua kolom (semua data) dari tabel 'supplier'.
FROM supplier yang menandakan bahwa akan
mengambil data dari tabel 'supplier'.
ORDER BY id DESC
Syntax diatas menandakan bahwa Anda ingin
mengurutkan hasil query berdasarkan kolom 'id' dari
tabel 'supplier' secara menurun (dari nilai tertinggi ke
terendah). Kata kunci 'DESC' menandakan
descending order.

14 | Workshop Basis Data Lanjut

Anda mungkin juga menyukai