Pemanfaatan Basis Data Terhadap Minat Beli Konsumen Pada CoffeeShop

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.

Program

###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

Menghubungkan Server Database Ke RStudio

server <- dbConnect(
  MariaDB(),
  user = "root",
  password = "",
  host = "localhost"
)

Membuat dan Mengakses Database Baru

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

Membuat Tabel

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

2. Tabel Pelanggan

#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

3. Tabel Transaksi

#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

Memasukkan Data ke Dalam Tabel

1. Memasukkan Data ke Dalam Tabel Produk

#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

2. Memasukkan Data ke Dalam Tabel Pelanggan

#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

3. Memasukkan Data ke Dalam Tabel Transaksi

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

Study Kasus

Berdasarkan database Coffee Shop yang telah dibuat, pada bagian ini ditampilkan hasilnya.

Menampilkan Isi Tabel

1. Menampilkan Isi Tabel Data Produk

##    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

2. Menampilkan Isi Tabel Data Pelanggan

##   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

3. Menampilkan Isi Tabel Data Transaksi

##   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

Urutan jumlah transaksi

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

Memperbarui data dan menghapus data

## [1] 1
## [1] 1

Menampilkan data transaksi tertentu

##   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

Menggunakan Alias dan fungsi Agregat

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

Menampilkan data gabungan (inner join)

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