Basis data adalah kumpulan data yang saling berhubungan secara logis dan didesain untuk mendapatkan data yang dibutuhkan oleh suatu organisasi (Indrajani, 2015).
Basis data (database) adalah sebuah kumpulan informasi yang disimpan di dalam komputer dan dapat diperiksa, diolah, atau dimanipulasi secara sistematis menggunakan program komputer. Istilah “basis” mengacu pada gudang atau tempat penyimpanan, sedangkan “data” merujuk pada fakta-fakta yang dikumpulkan. Dengan menggunakan basis data, pengguna dapat menyimpan informasi dalam media lain dan mengaksesnya kembali ketika diperlukan.
Komponen-komponen dari basis data terdiri dari:
Perangkat keras (Hardware) : Merupakan komponen fisik yang terdiri dari komputer, server, penyimpanan data, dan perangkat keras lainnya yang digunakan untuk menyimpan dan mengakses basis data.
Sistem Operasi (Operating System) : Merupakan perangkat lunak yang mengelola sumber daya perangkat keras dan menyediakan lingkungan yang diperlukan untuk menjalankan basis data.
Basis Data (Database) : Merupakan kumpulan data yang tersimpan di dalam komputer dan terorganisir dalam suatu struktur tertentu, seperti tabel, relasi, atau objek, untuk memudahkan pengaksesan dan pengelolaan data.
Sistem Manajemen Basis Data (DBMS): Merupakan perangkat lunak yang digunakan untuk mengelola, mengatur, dan mengontrol basis data. DBMS menyediakan antarmuka yang memungkinkan pengguna untuk berinteraksi dengan basis data, melakukan operasi seperti penyimpanan, pengambilan, pembaruan, dan penghapusan data.
Pengguna (User): Merupakan individu atau entitas yang menggunakan basis data. Pengguna dapat memiliki peran yang berbeda, seperti pengguna akhir yang menggunakan aplikasi untuk mengakses dan memanipulasi data, atau administrator basis data yang bertanggung jawab untuk mengatur dan mengelola basis data.
Aplikasi: Merupakan perangkat lunak lain yang digunakan bersama dengan basis data untuk menyediakan fungsionalitas tambahan. Aplikasi ini dapat berupa program khusus yang dibangun untuk keperluan tertentu atau aplikasi umum yang menggunakan basis data sebagai sumber data mereka.
MySQL diciptakan oleh seorang programer asal Swedia yang bernama Michael “Monty” Widenius pada tahun 1995.
MySQL adalah salah satu Relational Database Management System (RDBMS) yang menggunakan bahasa pemrograman SQL (Structured Query Language) sebagai bahasa standarnya dan bersifat open sources dengan dua bentuk lisensi, yaitu free software (bebas diakses secara gratis) dan shareware (penggunanya terbatas). Lisensi MySQL yang biasa kita gunakan adalah MySQL free software yang memiliki lisensi GNU (General Public Licence), sehingga dapat digunakan untuk keperluan pribadi ataupun untuk komersial secara gratis. MySQL biasa digunakan untuk menyimpan berbagai data dalam database yang data-datanya dapat dimanipulasi sesuai keperluan. Manipulasi data tersebut berupa menambah, mengubah dan menghapus data yang berada di dalam database.
Database MySQL memiliki beberapa kelebihan dibandingkan dengan database lainnya, yaitu:
Open Source : MySQL bersifat gratis dan dapat digunakan oleh siapa saja.
Mendukung bahasa pemrograman lain : MySQL bisa melakukan integrasi dengan bahasa pemrograman lain seperti R, Phyton, PHP, JavaScript dll.
Tidak membutuhkan RAM yang besar : MySQL dapat digunakan pada spesifikasi hardware yang rendah.
Multi-user : MySQL dapat digunakan secara bersamaan oleh beberapa user.
Keamanan : MySQL memiliki sistem keamanan yang baik dengan lebih dari satu lapisan keamanan.
Mendukung berbagai macam data : MySQLmendukung berbagai macam data, mulai dari integer, timestamp, text, date, character, float dll.
Struktur tabel fleksibel : MySQL memiliki struktur tabel yang mudah dipakai dan fleksibel.
Seperti software pada umumnya, MySQL juga memiliki beberapa kekurangan, yaitu:
Kurang mampu untuk mengelola database dalam jumlah besar : MySQL dikembangkan untuk ramah dengan perangkat yang memiliki spesifikasi rendah.
Kurang cocok untuk aplikasi game dan mobile : Kebanyakan pengembang game maupun aplikasi mobile tidak menggunakan MySQL karena database ini masih kurang bagus untuk mengembangkan sistem aplikasi tersebut.
Kurang bagus dari segi technical support : MySQL tidak memiliki technical support untuk komunitas, sedangkan pengguna Enterprise tersedia technical support dan berbayar.
Pengguna Mengimport library yang dibutuhkan untuk mengakses SQL
library(RSQLite)
## Warning: package 'RSQLite' was built under R version 4.5.2
Pengguna membuat sebuah database baru
db <- dbConnect(SQLite(), "tokobangunan.db")
#membuat tabel produk
dbExecute(db, "
CREATE TABLE Produk (
id_produk INTEGER PRIMARY KEY,
nama_produk TEXT,
kategori TEXT,
harga INTEGER,
stok INTEGER
)
")
#membuat tabel pelanggan
dbExecute(db, "
CREATE TABLE Pelanggan (
id_pelanggan INTEGER PRIMARY KEY,
nama TEXT,
alamat TEXT,
no_telp TEXT
)
")
#membuat tabel transaksi
dbExecute(db, "
CREATE TABLE Transaksi (
id_transaksi INTEGER PRIMARY KEY,
id_pelanggan INTEGER,
id_produk INTEGER,
jumlah INTEGER,
total_harga INTEGER,
tanggal TEXT,
FOREIGN KEY(id_pelanggan) REFERENCES Pelanggan(id_pelanggan),
FOREIGN KEY(id_produk) REFERENCES Produk(id_produk)
)
")
#memasukkan data ke tabel produk
dbExecute(db, "
INSERT INTO Produk (nama_produk, kategori, harga, stok) VALUES
('Semen Holcim 50kg', 'Material', 59000, 90),
('Cat Jotun 1L', 'Cat', 57000, 70),
('Gergaji Besi', 'Peralatan', 32000, 40),
('Obeng Set 6pcs', 'Peralatan', 45000, 35),
('Keramik 60x60', 'Material', 65000, 200),
('Lem Kayu Fox 500ml', 'Peralatan', 25000, 60)
")
#memasukkan data ke tabel pelanggan
dbExecute(db, "
INSERT INTO Pelanggan (nama, alamat, no_telp) VALUES
('Tono Wijaya', 'Jl. Kenari No.8', '081223445566'),
('Andi Saputra', 'Jl. Merpati No.22', '081334556677'),
('Ratna Widya', 'Jl. Rajawali No.11', '082245667788'),
('Mawar Susanti', 'Jl. Anggrek No.3', '081298775544'),
('Bayu Prakoso', 'Jl. Pahlawan No.9', '081367889900'),
('Nadia Putri', 'Jl. Dahlia No.7', '082134556600')
")
#memasukkan data ke tabel transaksi
dbExecute(db, "
INSERT INTO Transaksi (id_pelanggan, id_produk, jumlah, total_harga, tanggal) VALUES
(1, 1, 3, 180000, '2025-01-24'),
(2, 3, 1, 45000, '2025-01-24'),
(3, 5, 20, 400000, '2025-01-25'),
(4, 7, 100, 80000, '2025-01-25'),
(5, 9, 2, 64000, '2025-01-26'),
(6, 4, 1, 95000, '2025-01-26')
")
dbGetQuery(db, "
SELECT
t.id_transaksi,
p.nama AS nama_pelanggan,
pr.nama_produk,
t.jumlah,
t.total_harga,
t.tanggal
FROM Transaksi t
JOIN Pelanggan p ON t.id_pelanggan = p.id_pelanggan
JOIN Produk pr ON t.id_produk = pr.id_produk
")
Sistem Basis Data Untuk Pengelolaan Data Toko Bangunan
Membuat sistem basis data untuk mengelola data toko bangunan, termasuk data produk, pelanggan, dan transaksi
#menampilkan semua produk
tampilkan.produk <- dbGetQuery(db, "SELECT * FROM Produk")
print(tampilkan.produk)
## id_produk nama_produk kategori harga stok
## 1 1 Semen Holcim 50kg Material 59000 -80
## 2 2 Cat Jotun 1L Cat 57000 70
## 3 4 Obeng Set 6pcs Peralatan 45000 35
## 4 5 Keramik 60x60 Material 65000 200
## 5 6 Lem Kayu Fox 500ml Peralatan 25000 60
#menampilkan pelanggan
tampilkan.pelanggan <- dbGetQuery(db, "SELECT * FROM Pelanggan")
print(tampilkan.pelanggan)
## id_pelanggan nama alamat no_telp
## 1 1 Tono Wijaya Jl. Kenari No.8 081223445566
## 2 2 Andi Saputra Jl. Merpati No.22 081334556677
## 3 3 Ratna Widya Jl. Rajawali No.11 082245667788
## 4 4 Mawar Susanti Jl. Anggrek No.3 081298775544
## 5 5 Bayu Prakoso Jl. Pahlawan No.9 081367889900
## 6 6 Nadia Putri Jl. Dahlia No.7 082134556600
#menampilkan transaksi
tampilkan.transaksi <- dbGetQuery(db, "SELECT * FROM Transaksi")
print(tampilkan.transaksi)
## id_transaksi id_pelanggan id_produk jumlah total_harga tanggal
## 1 1 1 1 3 180000 2025-01-24
## 2 2 2 3 1 45000 2025-01-24
## 3 3 3 5 20 400000 2025-01-25
## 4 4 4 7 100 80000 2025-01-25
## 5 5 5 9 2 64000 2025-01-26
## 6 6 6 4 1 95000 2025-01-26
Perintah UPDATE digunakan dengan tujuan untuk memperbarui atau mengubah data yang sudah tersimpan di dalam tabel. Dalam pengelolaan data toko bangunan, UPDATE sangat penting ketika terjadi perubahan informasi, seperti harga barang yang disesuaikan, jumlah stok yang diperbarui, atau koreksi data transaksi yang sebelumnya salah input. Tujuannya adalah memastikan bahwa seluruh data yang tersimpan tetap akurat, mutakhir, dan mencerminkan kondisi sebenarnya di toko.
#update data
dbExecute(db, "
UPDATE Produk
SET stok = stok - 10
WHERE id_produk = 1
")
## [1] 1
tampilkan.produk <- dbGetQuery(db, "SELECT * FROM Produk")
print(tampilkan.produk)
## id_produk nama_produk kategori harga stok
## 1 1 Semen Holcim 50kg Material 59000 -90
## 2 2 Cat Jotun 1L Cat 57000 70
## 3 4 Obeng Set 6pcs Peralatan 45000 35
## 4 5 Keramik 60x60 Material 65000 200
## 5 6 Lem Kayu Fox 500ml Peralatan 25000 60
perintah DELETE digunakan dengan tujuan untuk menghapus data yang tidak diperlukan lagi atau data yang keliru dimasukkan ke dalam tabel. Dalam transaksi atau pencatatan barang, ada kalanya terjadi salah input, duplikasi, atau data yang memang sudah tidak relevan sehingga perlu dihapus. Tujuan DELETE adalah menjaga agar database tetap rapi, tidak penuh dengan data yang salah atau tidak berguna, serta memastikan bahwa analisis yang dilakukan hanya berdasarkan data yang valid.
#delete data
dbExecute(db, "
DELETE FROM Produk
WHERE id_produk = 3
")
## [1] 0
tampilkan.produk <- dbGetQuery(db, "SELECT * FROM Produk")
print(tampilkan.produk)
## id_produk nama_produk kategori harga stok
## 1 1 Semen Holcim 50kg Material 59000 -90
## 2 2 Cat Jotun 1L Cat 57000 70
## 3 4 Obeng Set 6pcs Peralatan 45000 35
## 4 5 Keramik 60x60 Material 65000 200
## 5 6 Lem Kayu Fox 500ml Peralatan 25000 60
Perintah mengurutkan data (ORDER BY) digunakan dengan tujuan untuk menampilkan data dalam susunan yang lebih teratur dan mudah dianalisis. Dengan mengurutkan data dari yang terkecil hingga terbesar (ASC) atau sebaliknya dari terbesar hingga terkecil (DESC), pengelola dapat lebih cepat menemukan informasi penting, seperti transaksi dengan total harga paling rendah atau paling tinggi.
#mengurutkan data
dbGetQuery(db, "
SELECT * FROM Transaksi
ORDER BY total_harga ASC
")
## id_transaksi id_pelanggan id_produk jumlah total_harga tanggal
## 1 2 2 3 1 45000 2025-01-24
## 2 5 5 9 2 64000 2025-01-26
## 3 4 4 7 100 80000 2025-01-25
## 4 6 6 4 1 95000 2025-01-26
## 5 1 1 1 3 180000 2025-01-24
## 6 3 3 5 20 400000 2025-01-25
dbGetQuery(db, "
SELECT * FROM Transaksi
ORDER BY total_harga DESC
")
## id_transaksi id_pelanggan id_produk jumlah total_harga tanggal
## 1 3 3 5 20 400000 2025-01-25
## 2 1 1 1 3 180000 2025-01-24
## 3 6 6 4 1 95000 2025-01-26
## 4 4 4 7 100 80000 2025-01-25
## 5 5 5 9 2 64000 2025-01-26
## 6 2 2 3 1 45000 2025-01-24
Fungsi SUM digunakan dalam tabel transaksi dengan tujuan untuk mengetahui total keseluruhan nilai dari suatu kolom, seperti total jumlah barang yang terjual atau total pendapatan yang diperoleh. Dengan SUM, pengelola toko dapat melihat berapa besar volume transaksi yang terjadi secara kumulatif. Tujuan penggunaannya adalah agar pemilik atau pengelola dapat mengevaluasi performa bisnis, menghitung total penjualan harian atau bulanan, serta membuat keputusan berdasarkan total nilai yang sudah terkumpul.
dbGetQuery(db, "
SELECT SUM(total_harga) AS total_penjualan
FROM Transaksi
")
## total_penjualan
## 1 864000
Fungsi AVG yang digunakan dalam tabel transaksi memiliki tujuan khusus untuk mengetahui rata-rata nilai transaksi yang terjadi di toko. Dengan menghitung rata-rata total harga, pengelola dapat memahami seberapa besar nilai pembelian yang biasanya dilakukan oleh pelanggan dalam satu transaksi. Tujuan penggunaan AVG pada kolom ini adalah untuk membantu toko menganalisis pola belanja pelanggan, seperti apakah mayoritas transaksi cenderung bernilai kecil, sedang, atau besar. Informasi ini sangat bermanfaat untuk menentukan strategi penjualan, menetapkan promo yang tepat, serta memperkirakan potensi pendapatan harian atau bulanan berdasarkan kebiasaan nilai pembelian rata-rata pelanggan.
dbGetQuery(db, "
SELECT AVG(total_harga) AS rata_rata_transaksi
FROM Transaksi
")
## rata_rata_transaksi
## 1 144000