Pet shop membutuhkan sistem basis data …
library(DBI)
library(RSQLite)
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
con <- dbConnect(SQLite(), ":memory:")
dbExecute(con, "
CREATE TABLE pelanggan (
id_pelanggan INTEGER PRIMARY KEY,
nama_pelanggan TEXT,
alamat TEXT);")
## [1] 0
dbExecute(con, "
CREATE TABLE hewan (
id_hewan INTEGER PRIMARY KEY,
id_pelanggan INTEGER,
nama_hewan TEXT,
jenis TEXT,
FOREIGN KEY(id_pelanggan) REFERENCES pelanggan(id_pelanggan));")
## [1] 0
dbExecute(con, "
CREATE TABLE layanan (
id_layanan INTEGER PRIMARY KEY,
nama_layanan TEXT,
biaya REAL);")
## [1] 0
dbExecute(con, "
CREATE TABLE produk (
id_produk INTEGER PRIMARY KEY,
nama_produk TEXT,
harga REAL);")
## [1] 0
dbExecute(con, "
CREATE TABLE transaksi (
id_transaksi INTEGER PRIMARY KEY,
id_hewan INTEGER,
id_layanan INTEGER,
id_produk INTEGER,
tanggal TEXT,
total REAL,
FOREIGN KEY(id_hewan) REFERENCES hewan(id_hewan),
FOREIGN KEY(id_layanan) REFERENCES layanan(id_layanan),
FOREIGN KEY(id_produk) REFERENCES produk(id_produk));")
## [1] 0
dbExecute(con, "INSERT INTO pelanggan VALUES
(1, 'Rifqy', 'Wangi-Wangi'),
(2, 'Atiqur', 'Kendari'),
(3, 'Haninda', 'Soppeng');")
## [1] 3
dbExecute(con, "INSERT INTO hewan VALUES
(1, 1, 'Upa', 'Kucing'),
(2, 2, 'Snow', 'Anjing'),
(3, 3, 'Cleo', 'Kucing');")
## [1] 3
dbExecute(con, "INSERT INTO layanan VALUES
(1, 'Grooming', 50000),
(2, 'Vaksinasi', 80000),
(3, 'Perawatan Kutu', 60000);")
## [1] 3
dbExecute(con, "INSERT INTO produk VALUES
(1, 'Makanan Kucing', 30000),
(2, 'Shampoo Hewan', 25000),
(3, 'Vitamin', 20000);")
## [1] 3
dbExecute(con, "INSERT INTO transaksi VALUES
(1, 1, 1, NULL, '2025-06-01', 50000),
(2, 2, 2, NULL, '2025-06-03', 80000),
(3, 3, NULL, 1, '2025-06-05', 30000);")
## [1] 3
dbListTables(con)
## [1] "hewan" "layanan" "pelanggan" "produk" "transaksi"
dbGetQuery(con, "SELECT * FROM transaksi")
## id_transaksi id_hewan id_layanan id_produk tanggal total
## 1 1 1 1 NA 2025-06-01 50000
## 2 2 2 2 NA 2025-06-03 80000
## 3 3 3 NA 1 2025-06-05 30000
dbExecute(con,"UPDATE layanan SET biaya = biaya + 10000 WHERE id_layanan = 1;")
## [1] 1
dbGetQuery(con,"SELECT * FROM layanan WHERE id_layanan = 1;")
## id_layanan nama_layanan biaya
## 1 1 Grooming 60000
dbExecute(con, "DELETE FROM transaksi WHERE id_transaksi = 3;")
## [1] 1
dbGetQuery(con, "SELECT * FROM transaksi;")
## id_transaksi id_hewan id_layanan id_produk tanggal total
## 1 1 1 1 NA 2025-06-01 50000
## 2 2 2 2 NA 2025-06-03 80000
dbGetQuery(con, "
SELECT t.id_transaksi,
p.nama_pelanggan,
h.nama_hewan,
l.nama_layanan,
pr.nama_produk,
t.tanggal,
t.total
FROM transaksi t
LEFT JOIN hewan h ON t.id_hewan = h.id_hewan
LEFT JOIN pelanggan p ON h.id_pelanggan = p.id_pelanggan
LEFT JOIN layanan l ON t.id_layanan = l.id_layanan
LEFT JOIN produk pr ON t.id_produk = pr.id_produk;")
## id_transaksi nama_pelanggan nama_hewan nama_layanan nama_produk tanggal
## 1 1 Rifqy Upa Grooming <NA> 2025-06-01
## 2 2 Atiqur Snow Vaksinasi <NA> 2025-06-03
## total
## 1 50000
## 2 80000
Sistem basis data relasional berhasil dibuat pada RStudio menggunakan SQLite.