Anda di halaman 1dari 29

PROJECT UAS SBD

" Rancangan Database Penjualan


Pulsa Counter Celluler "
OTA KELOMP
GG O
AN K

Viola Viciani Ramadhani


Karina Halimatussadiyah
(2110501014)
(2110501015)

M. Fajar Ramadhan Naufal Afif


(2110501022) (2110501026)

Mutiara Dwi Jayanti


(2110501007)

Studi Kasus
Dalam penulisan penjualan pulsa biasanya sebuah counter melakukannya secara manual yakni menggunakan sebuah
buku untuk mencatat pulsa apa saja yang terjual pada hari tersebut. Dalam proses ini kami ingin mencoba merancang
sebuah sistem yaitu Sistem Penjualan Pulsa, yang diperuntukkan umum bagi counter pulsa Cellular. Dimana perancangan
sistem tersebut dapat menyimpan data-data penjualan pulsa dalam satu database yang telah dibuat. Sehingga proses
pencatatan penjualan barang yang ada menjadi tersusun rapi dan akurat yang dapat dibuat laporan penjualannya untuk
dilihat oleh pemilik counter tersebut.

Dari permasalahan tersebut, sangat diperlukan kehadiran sistem baru yang dapat membantu mendukung aktivitas seperti
order penjualan, pembelian, dan transaksi secara otomatis supaya lebih akurat dan efisien. Dalam pembuatannya, kami
mengharapkan counter dapat mengolah data dengan cepat, tepat, dan akurat.
ERD
Tabel
Transaksi
Konsumen
Tabel
Pulsa_hp
Pulsa_listrik
Tabel
Vcgame Admin
STORE
PROCEDURE

Store procedure merupakan


kumpulan pernyataan SQL yang
disimpan di dalam database
(Menampilkan tabel konsumen menggunakan
store procedure)

MariaDB [project_UAS]> DELIMITER //


MariaDB [project_UAS]> CREATE
PROCEDURE getkonsumen()
-> BEGIN
-> SELECT * FROM KONSUMEN;
-> END //
Query OK, 0 rows affected (0.017 sec)
(Penambahan Data (insert) tabel pulsa_listrik)

MariaDB [project_UAS]> DELIMITER //


MariaDB [project_UAS]> CREATE PROCEDURE Addpulsa_listrik (
-> IN id_listrik char (3),
-> IN no_listrik int (50),
-> IN nominal int (30),
-> IN harga int (30)
-> )
-> BEGIN
-> INSERT INTO pulsa_listrik VALUES (
-> id_listrik,no_listrik,nominal,harga);
-> END //
Query OK, 0 rows affected (0.022 sec)
(Penambahan Data (insert) tabel pulsa_listrik)

MariaDB [project_UAS]> call Addpulsa_listrik ('106',76543098698, 200000,220000);


Query OK, 1 row affected, 1 warning (0.018 sec)

MariaDB [project_UAS]> select * from pulsa_listrik;


Stored Function
•Stored Function adalah program tersimpan jenis khusus yang
mengembalikan suatu nilai.

•Stored function digunakan untuk membungkus rumus umum atau


aturan bisnis yang dapat digunakan kembali di antara pernyataan
SQL atau program tersimpan.

(Menampilkan data yang memiliki nominal 100rb akan


mendapatkan diskon 10% menggunakan stored function)

MariaDB [project_uas]> DELIMITER $$


MariaDB [project_uas]> CREATE FUNCTION getDiskon (jumlah int)
-> returns int (11)
-> begin
-> declare diskon
-> int; case
-> when (jumlah >=100000)
-> then set diskon = 10;
-> when (jumlah >= 50000 and jumlah <100000)
-> then set diskon = 5;
-> else set diskon = 0;
-> end case;
-> return
-> diskon;
-> end$$
Query OK, 0 rows affected (0.081 sec)
(Menampilkan data yang memiliki nominal 100rb akan
mendapatkan diskon 10% menggunakan store function)

MariaDB [project_uas]> select getDiskon ("100000");


FUNGSI MYSQL

FUNGSI WAKTU FUNGSI STRING


MariaDB [project_UAS]> select now(); MariaDB [project_UAS]> select id_transaksi, CONCAT (jenis_transaksi,'
',tanggal_transaksi) from transaksi;
+---------------------+ +--------------+------------------------------------------------+
| now() | Fungsi NOW() untuk | id_transaksi | CONCAT (jenis_transaksi,' ',tanggal_transaksi) |
+---------------------+ +--------------+------------------------------------------------+
menghasilkan tanggal dan jam |
| 101| pulsa hp 30 mei 2022
| 2022-06-01 19:53:10 | saat ini Fungsi ini digunakan
| 102| voucher game 30 mei 2022 |
+---------------------+ | 103 | voucher game 31 mei 2022 | untuk menggabungkan
| 104| pulsa hp 31 mei 2022 | dua atau lebih string
1 row in set (0.010 sec)
| 105| pulsa listrik 31 mei 2022 | (kolom)
+--------------+------------------------------------------------+
5 rows in set (0.019 sec)
LOCKING TABLE
LOCK TABLES melakukan penguncian tabel [LOCK TABLES] ketika proses sedang berlangsung,
kemudian akan membebaskan table [UNLOCK TABLES] ketika proses telah berakhir.

EXAMPLE 1
MariaDB [(none)]> use project_uas;
Database changed
(INSERT DATA)
MariaDB [project_uas]> select * from
MariaDB [project_uas]> insert into konsumen
konsumen; values ("106","pajar");
+-------------+---------------+ Query OK, 1 row affected (0.032 sec)
(CMD) | id_konsumen | nama_konsumen |
+-------------+---------------+ MariaDB [project_uas]> select connection_id();
| 101 | asep | +-----------------+
| 102 | udin | | connection_id() |
| 103 | kipli | +-----------------+
| 39 |
| 104 | ujang |
+-----------------+
| 105 | tono |
1 row in set (0.007 sec)
+-------------+---------------+
5 rows in set (0.028 sec)
EXAMPLE 2 (LOCK TABLE AND UNLOCK TABLE READ)

MariaDB [project_uas]> LOCK TABLE konsumen READ;


Query OK, 0 rows affected (0.010 sec)

MariaDB [project_uas]> unlock tables;


Query OK, 0 rows affected (0.050 sec)
(WRITE LOCK)

MariaDB [project_uas]> lock tables konsumen (UNCLOCK WRITE)


write;
Query OK, 0 rows affected (0.018 sec) MARIADB [PROJECT_UAS]>
UNLOCK TABLES;
MariaDB [project_uas]> insert into konsumen QUERY OK, 0 ROWS AFFECTED
values('107','vici');
(0.010 SEC)
ERROR 1062 (23000): Duplicate entry '107' for
key 'PRIMARY'
LOCKING TABLE
MariaDB [project_UAS]> select * from konsumen;
MMariaDB [project_UAS]> select * from konsumen;
+-------------+---------------+
+-------------+---------------+ | id_konsumen | nama_konsumen |
| id_konsumen | nama_konsumen | +-------------+---------------+
+-------------+---------------+ | 101| asep |
| 101| asep | | 102| udin |
| 102| udin | | 103| kipli |
| 103| kipli | | 104| ujang |
| 104| ujang | | 105| tono |
| 105| tono | | 106| pajar |

(XAMPP)
| 106| pajar | | 107| vici |
+-------------+---------------+ +-------------+---------------+
6 rows in set (0.011 sec) 7 rows in set (0.049 sec)

MariaDB [project_UAS]> delete from konsumen where


MariaDB [project_UAS]> select connection_id();
id_konsumen=107;
+-----------------+
Query OK, 1 row affected (0.039 sec)
| connection_id() |
+-----------------+ MariaDB [project_UAS]> select * from konsumen;
|8 | +-------------+---------------+
+-----------------+ | id_konsumen | nama_konsumen |
1 row in set (0.002 sec) +-------------+---------------+
| 101| asep |
MariaDB [project_UAS]> insert into konsumen values('107','vici'); | 102 | udin |
Query OK, 1 row affected (2 min 31.060 sec) | 103| kipli |
| 104| ujang |
MariaDB [project_UAS]> insert into konsumen values('107','vici'); | 105| tono |
ERROR 1062 (23000): Duplicate entry '107' for key 'PRIMARY' | 106| pajar |
+-------------+---------------+
6 rows in set (0.001 sec)
Trigger
Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang terjadi jika terjadi
perubahan pada suatu row. Trigger tidak dapat menjadi bagian dari suatu temporary table atau
suatu view. Intinya script SQL yang memicu terjadinya suatu kejadian seperti INSERT, UPDATE,
DELETE secara otomatis setelah kejadian tertentu.
Pembuatan table_log &trigger

dcreate table log_vcgame (


PEMBUATAN
id_log int(10) auto_increment,
id_game char(3),
TRIGGER TABLE
harga_lama int (30),
harga_baru int (30),
"VCGAME"
waktu date,
primary key(id_log));
Update data table
delimiter $$
create trigger update_harga_vcgame
before update
on vcgame update vcgame
for each row
set jenis_game = "Dota 2", harga
begin
insert into log_vcgame = 115000
set id_game = old.id_game, where id_game = "103";
harga_lama = old.harga,
harga_baru = new.harga,
waktu = now();
end$$
Pembuatan table_log &trigger

create table log_pulsa_listrik (


id_log int(10) auto_increment,
PEMBUATAN TRIGGER
id_listrik char(3),
harga_lama int(30), TABLE "PULSA_LISTRIK"
harga_baru int(30),
waktu date,
primary key(id_log));
Update data table
delimiter $$
create trigger
update_harga_pulsa_listrik
before update
on pulsa_listrik
update pulsa_listrik
for each row set no_listrik = 14030753702,
begin
insert into log_pulsa_listrik
harga = 110000
set id_listrik = old.id_listrik, where id_listrik = "105";
harga_lama = old.harga,
harga_baru = new.harga,
waktu = now();
end$$
Subquery
(Akses Data Menggunakan Scalar Subquery)

Subquery adalah suatu query yang menjadi bagian dari


suatu query. Subquery digunakan untuk menangani MariaDB [project_UAS]> select * from
masalah yang kompleks yang mungkin sulit untuk transaksi
dilakukan hanya dengan sebuah query. Subquery baris -> where jenis_transaksi =
tunggal (scalar) hanya mengembalikan hasil satu baris -> (select jenis_transaksi
data. -> from transaksi
-> where id_transaksi = 102);
Subquery
(Operator Any/Some)
Operator ANY/SOME memiliki arti mmebandingkan suatu
nilai dengan setiap nilai yang dikembalikan oleh subquery.

MariaDB [project_UAS]> select *


from pulsa_listrik
-> where harga > ANY
-> (select harga
-> from pulsa_listrik
-> where nominal = 100000);
Backup & Restore Database
(Backup database tunggal CLI)

Backup database
adalah menyalin data
dalam database ke file
eksternal (isi data dalam
bentuk query sql)
Restore database adalah menyalin
data dari file eksternal (dengan
mengeksekusi query sql) ke dalam Backup & Restore Database
database (Restore Database Menggunakan
PHPMyAdmin)
KESIMPULAN
Dalam prosesnya, sistem penjualan berjalan sesuai harapan. Sehingga, dapat membantu
para pemilik counter celluler menjalankan pekerjaan sehari-harinya.
Dalam pembuatan laporan data-data nya terlihat lebih rinci, akurat dan efisien.
Data yang dimasukkan pelanggan akan lebih mudah diketahui oleh admin counter celluler
karena data telah disimpan di database dan dapat dilihat pada akhir memasukkan
database
Proses pengambilan data untuk laporan juga lebih mudah karena tidak memerlukan waktu
lama, serta laporan dapat diminta kapan saja sesuai dengan kebutuhan masingmasing
orang yang membutuhkannya.
SARAN

Adanya rancangan sistem database ini


kami mengharapkan agar dapat selalu
memudahkan siapa pun yang
membutuhkan, terutama penjual pulsa
counter celluler.
THANK YOU

Anda mungkin juga menyukai