🧩 Tugas Tambahan – Praktikum Sistem Basis Data II

Nama Database: inventori_toko

🎯 Tujuan

Mahasiswa mampu membuat dan mengimplementasikan database baru menggunakan konsep relasi antar tabel dan operasi JOIN untuk menampilkan data yang saling berhubungan.

📘 Deskripsi Tugas

Buatlah sebuah database dengan nama inventori_toko yang digunakan untuk mencatat data toko, produk, dan transaksi penjualan. Database ini memiliki tiga tabel utama sebagai berikut:

🏪 1. Tabel toko

Nama Kolom Tipe Data Keterangan
kode_toko CHAR(5) PRIMARY KEY
nama_toko VARCHAR(50) -
alamat VARCHAR(100) -
kota VARCHAR(30) -
CREATE TABLE toko (
  kode_toko CHAR(5) PRIMARY KEY,
  nama_toko VARCHAR(50),
  alamat VARCHAR(100),
  kota VARCHAR(30)
);

Data contoh:

INSERT INTO toko (kode_toko, nama_toko, alamat, kota) VALUES
('T001', 'Toko Sinar Jaya', 'Jl. Merdeka No. 45', 'Samarinda'),
('T002', 'Toko Maju Bersama', 'Jl. Pahlawan No. 12', 'Balikpapan'),
('T003', 'Toko Berkah Abadi', 'Jl. Ahmad Yani No. 87', 'Bontang');

📦 2. Tabel produk

Nama Kolom Tipe Data Keterangan
kode_produk CHAR(7) PRIMARY KEY
nama_produk VARCHAR(50) -
harga DECIMAL(10,2) -
stok INT -
CREATE TABLE produk (
  kode_produk CHAR(7) PRIMARY KEY,
  nama_produk VARCHAR(50),
  harga DECIMAL(10,2),
  stok INT
);

Data contoh:

INSERT INTO produk (kode_produk, nama_produk, harga, stok) VALUES
('P001', 'Sabun Mandi', 5000, 100),
('P002', 'Shampoo 250ml', 12000, 50),
('P003', 'Pasta Gigi', 8000, 70),
('P004', 'Detergen', 15000, 40);

🧾 3. Tabel penjualan

Nama Kolom Tipe Data Keterangan
kode_transaksi CHAR(8) PRIMARY KEY
kode_toko CHAR(5) FOREIGN KEY
kode_produk CHAR(7) FOREIGN KEY
jumlah INT -
tanggal_transaksi DATE -
CREATE TABLE penjualan (
  kode_transaksi CHAR(8) PRIMARY KEY,
  kode_toko CHAR(5),
  kode_produk CHAR(7),
  jumlah INT,
  tanggal_transaksi DATE,
  FOREIGN KEY (kode_toko) REFERENCES toko(kode_toko),
  FOREIGN KEY (kode_produk) REFERENCES produk(kode_produk)
);

Data contoh:

INSERT INTO penjualan (kode_transaksi, kode_toko, kode_produk, jumlah, tanggal_transaksi) VALUES
('TRX0001', 'T001', 'P001', 20, '2024-10-01'),
('TRX0002', 'T001', 'P002', 15, '2024-10-02'),
('TRX0003', 'T002', 'P003', 30, '2024-10-03'),
('TRX0004', 'T002', 'P004', 10, '2024-10-03'),
('TRX0005', 'T003', 'P001', 25, '2024-10-04');

🧮 Tugas Query SQL

1️⃣ Tampilkan data lengkap penjualan

Menampilkan nama_toko, kota, nama_produk, jumlah, dan tanggal_transaksi.

SELECT t.nama_toko, t.kota, p.nama_produk, j.jumlah, j.tanggal_transaksi
FROM penjualan j
JOIN toko t ON j.kode_toko = t.kode_toko
JOIN produk p ON j.kode_produk = p.kode_produk;

2️⃣ Tampilkan total penjualan (jumlah) per toko

SELECT t.nama_toko, SUM(j.jumlah) AS total_penjualan
FROM penjualan j
JOIN toko t ON j.kode_toko = t.kode_toko
GROUP BY t.nama_toko;

3️⃣ Tampilkan daftar produk yang belum pernah terjual

(Gunakan LEFT JOIN dan kondisi IS NULL)

SELECT p.nama_produk
FROM produk p
LEFT JOIN penjualan j ON p.kode_produk = j.kode_produk
WHERE j.kode_produk IS NULL;

4️⃣ Tampilkan daftar toko beserta jumlah produk yang dijual di masing-masing toko

SELECT t.nama_toko, COUNT(DISTINCT j.kode_produk) AS jumlah_produk
FROM toko t
LEFT JOIN penjualan j ON t.kode_toko = j.kode_toko
GROUP BY t.nama_toko;

5️⃣ Tampilkan produk dengan harga di atas rata-rata semua produk

(Gunakan subquery)

SELECT nama_produk, harga
FROM produk
WHERE harga > (SELECT AVG(harga) FROM produk);

6️⃣ Buat VIEW bernama v_penjualan_detail

Menampilkan nama_toko, nama_produk, jumlah, dan tanggal_transaksi.

CREATE VIEW v_penjualan_detail AS
SELECT t.nama_toko, p.nama_produk, j.jumlah, j.tanggal_transaksi
FROM penjualan j
JOIN toko t ON j.kode_toko = t.kode_toko
JOIN produk p ON j.kode_produk = p.kode_produk;

7️⃣ Tampilkan toko yang melakukan transaksi paling banyak

SELECT t.nama_toko, COUNT(j.kode_transaksi) AS jumlah_transaksi
FROM toko t
JOIN penjualan j ON t.kode_toko = j.kode_toko
GROUP BY t.nama_toko
ORDER BY jumlah_transaksi DESC
LIMIT 1;

8️⃣ Hapus semua data transaksi dengan tanggal di bawah tahun 2024

DELETE FROM penjualan
WHERE YEAR(tanggal_transaksi) < 2024;

📌 Catatan

Gunakan perintah SQL berikut dalam penyelesaian tugas ini:
  • CREATE
  • INSERT
  • SELECT
  • JOIN
  • GROUP BY
  • VIEW
✅ Selesai

File ini dapat langsung digunakan sebagai panduan atau laporan praktikum.
Pastikan seluruh query diuji di MySQL/MariaDB agar hasil sesuai dengan tabel contoh.

Kode berhasil disalin!