Dalam industri coffee shop yang kompetitif, pengelolaan data pelanggan, produk, dan transaksi sangat penting agar bisnis dapat memahami minat beli konsumen. Dengan memanfaatkan sistem basis data dan integrasi RStudio, pengolahan data menjadi lebih cepat, efisien, dan akurat. Penerapan SQL Database dan RStudio untuk Pengolahan Data Ramen Restaurant.
###import package menginport library dibutuhkan paling awal agar dapat membaca package yang akan digunakan
#import package
library(DBI)
## Warning: package 'DBI' was built under R version 4.5.2
library(RSQLite)
## Warning: package 'RSQLite' was built under R version 4.5.2
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(RMariaDB)
## Warning: package 'RMariaDB' was built under R version 4.5.2
server <- dbConnect(
MariaDB(),
user = "root",
password = "",
host = "localhost"
)
Sebelum membuat tabel, terlebih dahulu diperlukan pembuatan database pada server yang telah terhubung. Pada program ini, koneksi server disimpan dalam objek bernama server, sehingga seluruh perintah SQL akan dijalankan melalui objek tersebut.
dbExecute(server, "CREATE DATABASE IF NOT EXISTS CoffeeShop")
## [1] 1
dbExecute(server, "USE CoffeeShop")
## [1] 0
Setelah database berhasil dibuat dan diakses, langkah selanjutnya adalah mendefinisikan tabel-tabel di dalamnya. Tabel-tabel ini berfungsi sebagai struktur utama untuk menyimpan dan mengelompokkan data sesuai kebutuhan sistem #### 1. Tabel Produk
#Tabel Produk
dbExecute(server, "
CREATE TABLE Produk (
id_produk INT AUTO_INCREMENT PRIMARY KEY,
nama_produk VARCHAR(100),
kategori VARCHAR(50),
harga DECIMAL(10,2)
)")
## [1] 0
#Tabel Pelanggan
dbExecute(server, "
CREATE TABLE Pelanggan (
id_pelanggan INT AUTO_INCREMENT PRIMARY KEY,
nama_pelanggan VARCHAR(100),
umur INT,
jenis_kelamin VARCHAR(100),
frekuensi_kunjungan INT)")
## [1] 0
#Tabel Transaksi
dbExecute(server, "
CREATE TABLE Transaksi (
id_transaksi INT AUTO_INCREMENT PRIMARY KEY,
id_pelanggan INT,
id_produk INT,
tanggal DATE,
jumlah INT,
total_harga DECIMAL(12,2),
FOREIGN KEY (id_pelanggan) REFERENCES Pelanggan(id_pelanggan),
FOREIGN KEY (id_produk) REFERENCES Produk(id_produk)
)")
## [1] 0
#Data Produk
dbExecute(server, "
INSERT INTO Produk (id_produk, nama_produk, kategori, harga) VALUES
(1, 'Espresso', 'Coffee', 15000),
(2, 'Americano', 'Coffee', 18000),
(3, 'Cappuccino', 'Coffee', 20000),
(4, 'Latte', 'Coffee', 19000),
(5, 'Mocha', 'Coffee', 22000),
(6, 'Matcha Latte', 'Non Coffee', 22000),
(7, 'Chocolate', 'Non Coffee', 20000),
(8, 'Croissant', 'Snack', 15000),
(9, 'Donut', 'Snack', 12000),
(10, 'Cheesecake', 'Snack', 25000)
")
## [1] 10
#Data Pelanggan
dbSendQuery(server, "
INSERT INTO Pelanggan (id_pelanggan, nama_pelanggan, umur, jenis_kelamin, frekuensi_kunjungan) VALUES
(1, 'Yusnabil', 20, 'Laki-laki', 5),
(2, 'Lidya', 19, 'Perempuan', 7),
(3, 'Jehan', 19, 'Perempuan', 3),
(4, 'Syawal', 23, 'Laki-laki', 6),
(5, 'Nahdah', 22, 'Perempuan', 4),
(6, 'Wiratno', 20, 'Laki-laki', 8)
")
## <MariaDBResult>
## SQL
## INSERT INTO Pelanggan (id_pelanggan, nama_pelanggan, umur, jenis_kelamin, frekuensi_kunjungan) VALUES
## (1, 'Yusnabil', 20, 'Laki-laki', 5),
## (2, 'Lidya', 19, 'Perempuan', 7),
## (3, 'Jehan', 19, 'Perempuan', 3),
## (4, 'Syawal', 23, 'Laki-laki', 6),
## (5, 'Nahdah', 22, 'Perempuan', 4),
## (6, 'Wiratno', 20, 'Laki-laki', 8)
##
## ROWS Fetched: 0 [complete]
## Changed: 6
dbExecute(server, "
INSERT INTO Transaksi
(id_transaksi, id_pelanggan, id_produk, tanggal, jumlah, total_harga) VALUES
(1, 1, 1, '2025-01-10', 2, 30000),
(2, 2, 3, '2025-01-11', 1, 20000),
(3, 3, 2, '2025-01-12', 3, 54000),
(4, 4, 5, '2025-01-13', 1, 22000),
(5, 5, 4, '2025-01-14', 2, 38000),
(6, 6, 6, '2025-01-15', 1, 22000)
")
## Warning: Cancelling previous query
## [1] 6
Berdasarkan database Coffee Shop yang telah dibuat, pada bagian ini ditampilkan hasilnya.
## id_produk nama_produk kategori harga
## 1 1 Espresso Coffee 15000
## 2 2 Americano Coffee 18000
## 3 3 Cappuccino Coffee 20000
## 4 4 Latte Coffee 19000
## 5 5 Mocha Coffee 22000
## 6 6 Matcha Latte Non Coffee 22000
## 7 7 Chocolate Non Coffee 20000
## 8 8 Croissant Snack 15000
## 9 9 Donut Snack 12000
## 10 10 Cheesecake Snack 25000
## id_pelanggan nama_pelanggan umur jenis_kelamin frekuensi_kunjungan
## 1 1 Yusnabil 20 Laki-laki 5
## 2 2 Lidya 19 Perempuan 7
## 3 3 Jehan 19 Perempuan 3
## 4 4 Syawal 23 Laki-laki 6
## 5 5 Nahdah 22 Perempuan 4
## 6 6 Wiratno 20 Laki-laki 8
## id_transaksi id_pelanggan id_produk tanggal jumlah total_harga
## 1 1 1 1 2025-01-10 2 30000
## 2 2 2 3 2025-01-11 1 20000
## 3 3 3 2 2025-01-12 3 54000
## 4 4 4 5 2025-01-13 1 22000
## 5 5 5 4 2025-01-14 2 38000
## 6 6 6 6 2025-01-15 1 22000
Pada bagian ini, saya menampilkan daftar transaksi yang telah diurutkan berdasarkan jumlah pembelian, baik dari nilai yang terkecil maupun terbesar.
## id_transaksi id_pelanggan id_produk tanggal jumlah total_harga
## 1 2 2 3 2025-01-11 1 20000
## 2 4 4 5 2025-01-13 1 22000
## 3 6 6 6 2025-01-15 1 22000
## 4 1 1 1 2025-01-10 2 30000
## 5 5 5 4 2025-01-14 2 38000
## 6 3 3 2 2025-01-12 3 54000
## id_transaksi id_pelanggan id_produk tanggal jumlah total_harga
## 1 3 3 2 2025-01-12 3 54000
## 2 1 1 1 2025-01-10 2 30000
## 3 5 5 4 2025-01-14 2 38000
## 4 2 2 3 2025-01-11 1 20000
## 5 4 4 5 2025-01-13 1 22000
## 6 6 6 6 2025-01-15 1 22000
## [1] 1
## [1] 1
## id_transaksi id_pelanggan id_produk tanggal jumlah total_harga
## 1 1 1 1 2025-01-10 2 30000
## 2 4 4 5 2025-01-13 1 22000
## 3 5 5 4 2025-01-14 2 38000
## 4 6 6 6 2025-01-15 1 22000
Pada bagian ini, dilakukan pengolahan data dari database Coffee Shop dengan memanfaatkan alias dan fungsi agregat. Teknik ini digunakan untuk menyederhanakan nama kolom, memperjelas hasil query, serta menghitung informasi penting seperti total transaksi, rata-rata jumlah pembelian, dan data ringkasan lainnya.
## total_transaksi
## 1 5
## id_produk total_item_terjual
## 1 3 5
## 2 4 2
## 3 1 2
## 4 5 1
## 5 6 1
## id_pelanggan jumlah_transaksi total_belanja
## 1 5 1 38000
## 2 1 1 30000
## 3 6 1 22000
## 4 4 1 22000
## 5 2 1 20000
## rata_rata_pembelian
## 1 26400
## transaksi_terbesar
## 1 38000
## transaksi_terkecil
## 1 20000
Pada tahap ini, data dari beberapa tabel dalam database Coffee Shop digabungkan menggunakan perintah INNER JOIN. Teknik ini memungkinkan kita menampilkan informasi yang saling berkaitan, seperti detail transaksi yang terhubung dengan data pelanggan, pegawai, atau menu. Dengan melakukan join, data menjadi lebih lengkap dan mudah dianalisis dalam satu tampilan.
## id_transaksi pelanggan produk tanggal jumlah kategori total_harga
## 1 1 Yusnabil Espresso 2025-01-10 2 Coffee 30000
## 2 2 Lidya Cappuccino 2025-01-11 5 Coffee 20000
## 3 4 Syawal Mocha 2025-01-13 1 Coffee 22000
## 4 5 Nahdah Latte 2025-01-14 2 Coffee 38000
## 5 6 Wiratno Matcha Latte 2025-01-15 1 Non Coffee 22000