BAB I BASIS DATA

Pengenalan Basis Data

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 Basis Data

Komponen-komponen dari basis data terdiri dari:

  1. 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.

  2. Sistem Operasi (Operating System) : Merupakan perangkat lunak yang mengelola sumber daya perangkat keras dan menyediakan lingkungan yang diperlukan untuk menjalankan basis data.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

BAB II MySQL

Pengenalan

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.

Kelebihan

Database MySQL memiliki beberapa kelebihan dibandingkan dengan database lainnya, yaitu:

  1. Open Source : MySQL bersifat gratis dan dapat digunakan oleh siapa saja.

  2. Mendukung bahasa pemrograman lain : MySQL bisa melakukan integrasi dengan bahasa pemrograman lain seperti R, Phyton, PHP, JavaScript dll.

  3. Tidak membutuhkan RAM yang besar : MySQL dapat digunakan pada spesifikasi hardware yang rendah.

  4. Multi-user : MySQL dapat digunakan secara bersamaan oleh beberapa user.

  5. Keamanan : MySQL memiliki sistem keamanan yang baik dengan lebih dari satu lapisan keamanan.

  6. Mendukung berbagai macam data : MySQLmendukung berbagai macam data, mulai dari integer, timestamp, text, date, character, float dll.

  7. Struktur tabel fleksibel : MySQL memiliki struktur tabel yang mudah dipakai dan fleksibel.

Kekurangan

Seperti software pada umumnya, MySQL juga memiliki beberapa kekurangan, yaitu:

  1. Kurang mampu untuk mengelola database dalam jumlah besar : MySQL dikembangkan untuk ramah dengan perangkat yang memiliki spesifikasi rendah.

  2. 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.

  3. Kurang bagus dari segi technical support : MySQL tidak memiliki technical support untuk komunitas, sedangkan pengguna Enterprise tersedia technical support dan berbayar.

BAB III STUDI KASUS

A.PROGRAM

1.Import Library

Pengguna Mengimport library yang dibutuhkan untuk mengakses SQL

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

2.Membuat dan Mengakses Database Baru

Pengguna membuat sebuah database baru

db <- dbConnect(SQLite(), "tokobangunan.db")

3.Membuat tabel data baru dalam sebuah database

#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)
)
")

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

#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')
")

5. Join Tabel

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
")

Studi Kasus

Topik:

Sistem Basis Data Untuk Pengelolaan Data Toko Bangunan

Deskripsi:

Membuat sistem basis data untuk mengelola data toko bangunan, termasuk data produk, pelanggan, dan transaksi

1.Tabel yang Digunakan

A.Tabel Produk

  • id_produk (sebagai PRIMARY KEY),
  • nama_produk,
  • kategori,
  • harga,
  • stok.
#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

B.Tabel Pelanngan

  • id_pelanggan (sebagai PRIMARY KEY),
  • nama,
  • alamat,
  • no_telp.
#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

C.Tabel Transaksi

  • id_transaksi (PRIMARY KEY),
  • id_pelanggan (FOREIGN KEY),
  • id_produk (FOREIGN KEY),
  • jumlah,
  • total_harga,
  • tanggal.
#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

8 Update Data

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

9 Delete Data

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

10. Mengurutkan Data

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

11. Menghitung Total Penjualan

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

12. menghitung rata-rata transaksi

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