Penerapa SQL dalam sistem manajemen basis data transaksi festival konser ## Program ### Import Library

library(RMySQL)
## Warning: package 'RMySQL' was built under R version 4.5.2
## Loading required package: DBI
## Warning: package 'DBI' was built under R version 4.5.2
library(DBI)

Menghubungkan Server Database Ke Rstudio

server <- dbConnect(
  RMySQL::MySQL(),
  host = "localhost",
  user = "root",
  password = ""
)

Membuat Database Baru

dbExecute(server, "CREATE DATABASE IF NOT EXISTS FESTIVAL_KONSER")
## [1] 1
dbExecute(server, "USE FESTIVAL_KONSER")
## [1] 0

Membuat Tabel Data Baru Dalam Databse Yang Telah Dibuat

Tabel Pengunjung

# Tabel Pengunjung
dbExecute(server, "
    CREATE TABLE IF NOT EXISTS Pengunjung (
        ID_Pengunjung VARCHAR(10) PRIMARY KEY,
        Nama VARCHAR(100) NOT NULL,
        Email VARCHAR(100) UNIQUE NOT NULL,
        Nomor_HP VARCHAR(20),
        Alamat VARCHAR(150)
    );
")
## [1] 0

Tabel Festival

# Tabel Festival
dbExecute(server, "
    CREATE TABLE IF NOT EXISTS Festival (
        ID_Festival VARCHAR(10) PRIMARY KEY,
        Nama_Festival VARCHAR(100) NOT NULL,
        Lokasi VARCHAR(100) NOT NULL,
        Tanggal DATE NOT NULL,
        Penyelenggara VARCHAR(100) NOT NULL
    );
")
## [1] 0

Tabel Kategori Tiket

# Tabel Kategori Tiket
dbExecute(server, "
    CREATE TABLE IF NOT EXISTS Kategori_Tiket (
        ID_Kategori VARCHAR(10) PRIMARY KEY,
        ID_Festival VARCHAR(10),
        Nama_Kategori VARCHAR(50) NOT NULL,
        Harga INT NOT NULL,
        Kuota INT NOT NULL,
        FOREIGN KEY (ID_Festival) REFERENCES Festival(ID_Festival)
    );
")
## [1] 0

Tabel Pembelian

# Tabel Pembelian
dbExecute(server, "
    CREATE TABLE IF NOT EXISTS Pembelian (
        ID_Pembelian VARCHAR(10) PRIMARY KEY,
        ID_Pengunjung VARCHAR(10),
        Tanggal_Pembelian DATETIME NOT NULL,
        Metode_Pembayaran VARCHAR(50),
        FOREIGN KEY (ID_Pengunjung) REFERENCES Pengunjung(ID_Pengunjung)
    );
")
## [1] 0

Tabel Detail Pembelian

# Tabel Detail Pembelian
dbExecute(server, "
    CREATE TABLE IF NOT EXISTS Detail_Pembelian (
        ID_Detail VARCHAR(10) PRIMARY KEY,
        ID_Pembelian VARCHAR(10),
        ID_Kategori VARCHAR(10),
        Jumlah INT NOT NULL,
        Subtotal INT NOT NULL,
        FOREIGN KEY (ID_Pembelian) REFERENCES Pembelian(ID_Pembelian),
        FOREIGN KEY (ID_Kategori) REFERENCES Kategori_Tiket(ID_Kategori)
    );
")
## [1] 0

Tabel Penukaran Tiket

# Tabel Penukaran Tiket
dbExecute(server, "
    CREATE TABLE IF NOT EXISTS Penukaran_Tiket (
        ID_Penukaran VARCHAR(10) PRIMARY KEY,
        ID_Pengunjung VARCHAR(10),
        ID_Festival VARCHAR(10),
        Waktu_Scan DATETIME NOT NULL,
        FOREIGN KEY (ID_Pengunjung) REFERENCES Pengunjung(ID_Pengunjung),
        FOREIGN KEY (ID_Festival) REFERENCES Festival(ID_Festival)
    );
")
## [1] 0

Memasukkan Data Ke Dalam Tabel

Memasukkan Data Ke Dalam Tabel Pengunjung

 # Data Pengunjung
dbExecute(server, "
INSERT INTO Pengunjung VALUES
('P01','Zahira Kayla','Zahirakay@Email.com','08123456789','Jakarta'),
('P02','Risma syafa','Rismasyafa@Email.com','08234567890','Bandung'),
('P03','Aqila Calista','Aqilca@Email.com','08345678901','Surabaya');
")
## [1] 3

Memasukkan Data Ke Dalam Tabel Festival

 # Data Festival
dbExecute(server, "
INSERT INTO Festival VALUES
('F01','Summer Music Fest','Jakarta','2025-07-12','Resilient'),
('F02','Rock Nation Live','Bandung','2025-08-20','SuperSound');
")
## [1] 2

Memasukkan Data Ke Dalam Tabel Kategori Tiket

 # Data Kategori Tiket
dbExecute(server, "
INSERT INTO Kategori_Tiket VALUES
('K001','F01','VIP',1500000,200),
('K002','F01','Festival',750000,500),
('K003','F02','VVIP',2000000,150),
('K004','F02','Regular',500000,700);
")
## [1] 4

Memasukkan Data Ke Dalam Tabel Pembelian

 # Data Pembelian
dbExecute(server, "
INSERT INTO Pembelian VALUES
('B01','P01','2025-05-10 14:22:00','QRIS'),
('B02','P02','2025-05-11 10:15:00','Transfer');
")
## [1] 2

Memasukkan Data Ke Dalam Tabel Detail Pembelian

# Data Detail Pembelian
dbExecute(server, "
INSERT INTO Detail_Pembelian VALUES
('D001','B01','K001',2,3000000),
('D002','B02','K004',3,1500000);
")
## [1] 2

Memasukkan Data Ke Dalam Tabel Penukaran Tiket

# Data Penukaran Tiket
dbExecute(server, "
INSERT INTO Penukaran_Tiket VALUES
('C001','P01','F01','2025-07-12 16:05:00'),
('C002','P02','F02','2025-08-20 17:30:00');
")
## [1] 2

Study Kasus

Menampilkan Tabel

Menampilkan Isi Tabel Data Pengunjung

tampilkan.pengujung <- (dbGetQuery(server, "SELECT * FROM Pengunjung"))
library(DT)
## Warning: package 'DT' was built under R version 4.5.2
datatable(tampilkan.pengujung)

Menampilkan Isi Tabel Data Festival

tampilkan.Festival <- (dbGetQuery(server, "SELECT * FROM Festival"))
library(DT)
datatable(tampilkan.Festival)

Menampilkan Isi Tabel Data Kategori Tiket

tampilkan.Kategori_Tiket <- (dbGetQuery(server, "SELECT * FROM Kategori_Tiket"))
library(DT)
datatable(tampilkan.Kategori_Tiket)

Menampilkan Isi Tabel Data Pembelian

tampilkan.pembelian <- (dbGetQuery(server, "SELECT * FROM Pembelian"))
library(DT)
datatable(tampilkan.pembelian)

Menampilkan Isi Tabel Data Detail Pembelian

tampilkan.Detail_Pembelian <- (dbGetQuery(server, "SELECT * FROM Detail_Pembelian"))
library(DT)
datatable(tampilkan.Detail_Pembelian)

Menampilkan Isi Tabel Data Penukaran Tiket

tampilkan.penukaran_Tiket <- (dbGetQuery(server, "SELECT * FROM Penukaran_Tiket"))
library(DT)
datatable(tampilkan.penukaran_Tiket)

Menampilkan Data Jumlah Pembeli Untuk Setiap Festival

Menampilkan Total Pendapatan Dari Penjualan Tiket

## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 1 imported
## as numeric