Penerapan SQL Database pada RStudio dalam manajemen sistem Platform Sewa Alat Camping & Outdoor

Program

Import Library

Import library untuk menjalankan package yang akan digunakan

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

Membuat dan Mengakses Database

Pembuatan database pada server untuk dapat membuat tabel dengan nama server “con”

dbExecute(con, "CREATE DATABASE IF NOT EXISTS `CampOutdoor`")
## [1] 1
dbExecute(con, "USE `CampOutdoor`")
## [1] 0

Membuat Tabel Data Baru Dalam Database yang Telah Dibuat

1. Tabel Pelanggan

# Tabel Pelanggan
dbExecute(con, "
  CREATE TABLE Pelanggan (
    ID_Pelanggan VARCHAR(10) PRIMARY KEY,
    Nama VARCHAR(100) NOT NULL,
    No_HP VARCHAR(15) NOT NULL,
    Email VARCHAR(100) NOT NULL,
    Alamat TEXT
  );
")
## [1] 0

2. Tabel Kategori Alat

# Tabel Kategori Alat
dbExecute(con, "
  CREATE TABLE Kategori_Alat (
    ID_Kategori VARCHAR(5) PRIMARY KEY,
    Nama_Kategori VARCHAR(50) NOT NULL
  );
")
## [1] 0

3. Tabel Alat Camping yang Telah Disewa

# Tabel Alat Camping (produk yang disewakan)
dbExecute(con, "
  CREATE TABLE Alat_Camping (
    ID_Alat VARCHAR(10) PRIMARY KEY,
    Nama_Alat VARCHAR(100) NOT NULL,
    ID_Kategori VARCHAR(5) NOT NULL,
    Harga_Sewa_PerHari INT NOT NULL,
    Stok INT NOT NULL,
    FOREIGN KEY (ID_Kategori) REFERENCES Kategori_Alat(ID_Kategori)
  );
")
## [1] 0

4. Tabel Pegawai

# Tabel Pegawai / Admin Platform
dbExecute(con, "
  CREATE TABLE Pegawai (
    ID_Pegawai VARCHAR(10) PRIMARY KEY,
    Nama_Pegawai VARCHAR(100) NOT NULL,
    Jabatan VARCHAR(50) NOT NULL,
    No_HP VARCHAR(15)
  );
")
## [1] 0

5. Tabel Transaksi

# Tabel Transaksi Sewa
dbExecute(con, "
  CREATE TABLE Sewa (
    ID_Sewa VARCHAR(15) PRIMARY KEY,
    ID_Pelanggan VARCHAR(10) NOT NULL,
    ID_Pegawai VARCHAR(10) NOT NULL,
    ID_Alat VARCHAR(10) NOT NULL,
    Tgl_Mulai DATE NOT NULL,
    Tgl_Selesai DATE NOT NULL,
    Jumlah_Hari INT NOT NULL,
    Total_Biaya INT NOT NULL,
    Status_Pembayaran ENUM('Lunas','Belum Lunas','DP') DEFAULT 'Belum Lunas',
    FOREIGN KEY (ID_Pelanggan) REFERENCES Pelanggan(ID_Pelanggan),
    FOREIGN KEY (ID_Pegawai) REFERENCES Pegawai(ID_Pegawai),
    FOREIGN KEY (ID_Alat) REFERENCES Alat_Camping(ID_Alat)
  );
")
## [1] 0

Memasukkan Data Ke Dalam Tabel

1. Memasukkan Data ke Tabel Kategori

# Kategori
dbExecute(con, "
  INSERT INTO Kategori_Alat (ID_Kategori, Nama_Kategori) VALUES
  ('K01', 'Tenda'),
  ('K02', 'Sleeping Bag & Matras'),
  ('K03', 'Kompor & Nesting'),
  ('K04', 'Carrier & Tas'),
  ('K05', 'Lain-lain');
")
## [1] 5

2. Memasukkan Data Ke Tabel Pelanggan

# Pelanggan
dbExecute(con, "
  INSERT INTO Pelanggan (ID_Pelanggan, Nama, No_HP, Email, Alamat) VALUES
  ('C001', 'Fardan',      '081234567890', 'fardan@gmail.com',   'Kendari'),
  ('C002', 'Desta',   '081298765432', 'desta@gmail.com',     'Wakatobi'),
  ('C003', 'Wahab',     '082176543210', 'wahab@gmail.com',  'Muna'),
  ('C004', 'Rina',      '089876543210', 'rina.m@gmail.com',  'Bau-bau')
");
## [1] 4

3. Memasukkan Data Ke Tabel Pegawai

dbExecute(con, "
  INSERT INTO Pegawai (ID_Pegawai, Nama_Pegawai, Jabatan, No_HP) VALUES
  ('P001', 'Dika Pratama',   'Admin Gudang',   '085712345678'),
  ('P002', 'Laras Sari',     'Customer Service','087812345678'),
  ('P003', 'Fajar Nugroho',  'Finance',        '081312345678');
")
## [1] 3

4. Memasukkan Data Ke Tabel Alat Camping

# Alat Camping
dbExecute(con, "
  INSERT INTO Alat_Camping (ID_Alat, Nama_Alat, ID_Kategori, Harga_Sewa_PerHari, Stok) VALUES
  ('A001', 'Tenda Dome Consina 4P',          'K01', 80000, 15),
  ('A002', 'Tenda Rei Co-op Kingdom 6',     'K01', 150000, 8),
  ('A003', 'Sleeping Bag Naturehike -10°C','K02', 35000, 20),
  ('A004', 'Matras Angin Single',            'K02', 20000, 30),
  ('A005', 'Kompor Portable Windproof',     'K03', 25000, 25),
  ('A006', 'Nesting 4 orang',                'K03', 30000, 18),
  ('A007', 'Carrier Deuter 70L',             'K04', 60000, 10),
  ('A008', 'Headlamp + Powerbank',           'K05', 15000, 40);
")
## [1] 8

5. Memasukkan Data Ke Tabel Transaksi

# Transaksi Sewa (contoh minggu pertama Desember 2025)
dbExecute(con, "
  INSERT INTO Sewa 
  (ID_Sewa, ID_Pelanggan, ID_Pegawai, ID_Alat, Tgl_Mulai, Tgl_Selesai, Total_Biaya, Status_Pembayaran) VALUES
  ('S25120101', 'C001', 'P001', 'A001', '2025-12-01', '2025-12-03', 240000, 'Lunas'),
  ('S25120102', 'C002', 'P002', 'A002', '2025-12-01', '2025-12-04', 600000, 'Lunas'),
  ('S25120201', 'C003', 'P001', 'A003', '2025-12-02', '2025-12-04', 70000,  'DP'),
  ('S25120202', 'C001', 'P003', 'A005', '2025-12-02', '2025-12-05', 75000,  'Lunas'),
  ('S25120301', 'C004', 'P002', 'A007', '2025-12-03', '2025-12-06', 180000, 'Lunas'),
  ('S25120401', 'C002', 'P001', 'A004', '2025-12-04', '2025-12-06', 40000,  'Belum Lunas'),
  ('S25120501', 'C003', 'P003', 'A008', '2025-12-05', '2025-12-07', 30000,  'Lunas'),
  ('S25120601', 'C004', 'P002', 'A001', '2025-12-06', '2025-12-08', 160000, 'Lunas');
")
## [1] 8

STUDI KASUS

Berdasarkan database yang telah di buat, berikut merupakan hasil dari tabel tabel terkait platfom peminjaman alat camping dan outdoot

Menampilkan Isi Tabel

1. Tabel Data Pelanggan

2. Tabel Data Kategori

3. Tabel Data Alat Camping

4. Tabel Data Pegawai

5. Tabel Data Transaksi

Laporan Penyewaan Mingguan

Berdasarkan data tabel yang tersedia, berikut merupakan laporan mingguan hasil penyewaan alat camping dan outdoor

Laporan Pendapatan Seminggu

Alat Terlaris Per Minggu