A.PROGRAM

1.Import Library

Pengguna Mengimport library yang dibutuhkan untuk mengakses SQL pada server MySQL yang dimiliki

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)
server <- dbConnect(
  RMySQL::MySQL(),
  host = "127.0.0.1",
  user = "root",
  password = ""
)

2.Membuat dan Mengakses Database Baru

Pengguna membuat sebuah database baru pada server yang telah dimasukkan

dbGetQuery(server, "CREATE DATABASE IF NOT EXISTS Playtopia")
## data frame with 0 columns and 0 rows
dbGetQuery(server, "USE Playtopia")
## data frame with 0 columns and 0 rows
con <- dbConnect(RSQLite::SQLite(), "my_database.db")

3.Membuat tabel data baru dalam sebuah database

TABEL PENGUNJUNG

dbExecute(server, " CREATE TABLE Pengunjung (
ID_Pengunjung VARCHAR(10) PRIMARY KEY,
Nama VARCHAR(100) NOT NULL,
Umur INT NOT NULL,
Email VARCHAR(100),
Tanggal_Daftar DATE NOT NULL
);")
## [1] 0

TABEL WAHANA

dbExecute(server, "
CREATE TABLE Wahana (
ID_Wahana VARCHAR(10) PRIMARY KEY,
Nama_Wahana VARCHAR(100) NOT NULL,
Harga_Tiket DECIMAL(10,2) NOT NULL,
Kategori ENUM('Keluarga','Anak','Ekstrim') NOT NULL
);")
## [1] 0

TABEL TIKET

dbExecute(server, "
CREATE TABLE Tiket (
ID_Tiket VARCHAR(10) PRIMARY KEY,
ID_Pengunjung VARCHAR(10),
ID_Wahana VARCHAR(10),
Tanggal_Kunjungan DATE NOT NULL,
FOREIGN KEY (ID_Pengunjung) REFERENCES Pengunjung(ID_Pengunjung),
FOREIGN KEY (ID_Wahana) REFERENCES Wahana(ID_Wahana)
);")
## [1] 0

Tabel PEMAKAIAN WAHANAA

dbExecute(server, "
CREATE TABLE Pemakaian_Wahana (
ID_Pemakaian VARCHAR(10) PRIMARY KEY,
ID_Pengunjung VARCHAR(10),
ID_Wahana VARCHAR(10),
Jam_Mulai TIME NOT NULL,
Jam_Selesai TIME NOT NULL,
FOREIGN KEY (ID_Pengunjung) REFERENCES Pengunjung(ID_Pengunjung),
FOREIGN KEY (ID_Wahana) REFERENCES Wahana(ID_Wahana)
);")
## [1] 0

Tabel FEEDBACKK

dbExecute(server, "
CREATE TABLE Feedback (
ID_Feedback VARCHAR(10) PRIMARY KEY,
ID_Pengunjung VARCHAR(10),
Rating INT CHECK (Rating BETWEEN 1 AND 5),
Komentar VARCHAR(255),
FOREIGN KEY (ID_Pengunjung) REFERENCES Pengunjung(ID_Pengunjung)
);")
## [1] 0

4. Memasukkan Data pada Masing-Masing Tabel Data yang telah Dibuat

FEEDBACKK

dbSendQuery(server,"
INSERT INTO Pengunjung VALUES
('P001','Dian Putri',25,'dian@gmail.com','2024-01-10'),
('P002','Srinovi',30,'srinovi@gmail.com','2024-01-12'),
('P003','Muhammad Irham',22,'irham@gmail.com','2024-01-15'),
('P004','Yusril Izama',27,'yusril@gmail.com','2024-01-20'),
('P005','Muhammad Fadlan',19,'fadlan@gmail.com','2024-01-25');
")
## <MySQLResult:1776812480,0,7>

Wahana

dbSendQuery(server,"
INSERT INTO Wahana VALUES
('W001','Roller Coaster',50000,'Ekstrim'),
('W002','Rumah Hantu',30000,'Keluarga'),
('W003','Bianglala',20000,'Keluarga'),
('W004','Mobil Listrik',25000,'Anak'),
('W005','Sky Drop',60000,'Ekstrim');
")
## <MySQLResult:12,0,8>

Tiket

dbSendQuery(server,"
INSERT INTO Tiket VALUES
('T001','P001','W001','2024-02-10'),
('T002','P002','W003','2024-02-10'),
('T003','P003','W002','2024-02-11'),
('T004','P004','W001','2024-02-11'),
('T005','P005','W005','2024-02-12');
")
## <MySQLResult:12,0,9>

Pemakaian Wahana

dbSendQuery(server,"
INSERT INTO Pemakaian_Wahana VALUES
('PW01','P001','W001','10:00','10:05'),
('PW02','P002','W003','11:00','11:20'),
('PW03','P003','W002','12:00','12:10'),
('PW04','P004','W001','13:00','13:05'),
('PW05','P005','W005','14:00','14:03');
")
## <MySQLResult:12,0,10>

Feedback

dbSendQuery(server,"
INSERT INTO Feedback VALUES
('F01','P001',5,'Wahana seru sekali!'),
('F02','P002',4,'Pemandangannya bagus'),
('F03','P003',3,'Cukup menyeramkan'),
('F04','P004',5,'Roller Coaster sangat menantang'),
('F05','P005',4,'Sky Drop bikin nagih!');
")
## <MySQLResult:12,0,11>

STUDY KASUS

Menampilkan Nilai Tabel Data Pada Database

Melihat nilai tabel pengunjung

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

Melihat nilai tabel Wahana

tampilkan.Wahana <- dbGetQuery(server,"
                        SELECT * FROM Wahana;
                        ")
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 2 imported
## as numeric
library(DT)
datatable(tampilkan.Wahana)

Melihat nilai tabel Tiket

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

Melihat nilai tabel Pemakaian_Wahana

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

Melihat nilai tabel Feedback

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

Laporan Tiket Seminggu

library(DT)

# Laporan tiket yang dibeli minggu ini 
laporan_Tiket <- "
SELECT 
  t.ID_Tiket,
  p.Nama AS Pengunjung,
  w.Nama_Wahana AS Wahana,
  t.Tanggal_Kunjungan
FROM Tiket t
JOIN Pengunjung p ON t.ID_Pengunjung = p.ID_Pengunjung
JOIN Wahana w ON t.ID_Wahana = w.ID_Wahana
ORDER BY t.Tanggal_Kunjungan;
"
library(DT)
laporan <- dbGetQuery(server, laporan_Tiket)
datatable(laporan, options=list(pageLength=10), caption="Laporan Tiket Seminggu")