📖 Desain Database
Kita akan membuat 3 tabel utama:
kategori→ menyimpan jenis barang.barang→ menyimpan detail barang, terhubung ke kategori.transaksi→ mencatat keluar/masuk barang.
Level: Intermediate
Pada mini project ini, kita akan membangun sistem inventaris sederhana untuk mengelola stok barang. Proyek ini menggabungkan konsep relasi, foreign key, JOIN, dan agregasi.
Kita akan membuat 3 tabel utama:
kategori → menyimpan jenis barang.barang → menyimpan detail barang, terhubung ke kategori.transaksi → mencatat keluar/masuk barang.-- Membuat database
CREATE DATABASE inventaris_db;
USE inventaris_db;
-- Tabel kategori
CREATE TABLE kategori (
id INT PRIMARY KEY AUTO_INCREMENT,
nama_kategori VARCHAR(50) NOT NULL
);
-- Tabel barang
CREATE TABLE barang (
id INT PRIMARY KEY AUTO_INCREMENT,
nama_barang VARCHAR(50) NOT NULL,
stok INT DEFAULT 0,
kategori_id INT,
FOREIGN KEY (kategori_id) REFERENCES kategori(id)
);
-- Tabel transaksi
CREATE TABLE transaksi (
id INT PRIMARY KEY AUTO_INCREMENT,
barang_id INT,
jumlah INT,
tipe ENUM('masuk','keluar'),
tanggal DATE,
FOREIGN KEY (barang_id) REFERENCES barang(id)
);
-- Tambah kategori
INSERT INTO kategori (nama_kategori) VALUES ('Elektronik'), ('Alat Tulis');
-- Tambah barang
INSERT INTO barang (nama_barang, stok, kategori_id)
VALUES ('Laptop', 10, 1), ('Mouse', 20, 1), ('Pulpen', 50, 2);
-- Tambah transaksi
INSERT INTO transaksi (barang_id, jumlah, tipe, tanggal)
VALUES (1, 5, 'keluar', '2025-01-01'),
(2, 10, 'masuk', '2025-01-02'),
(3, 5, 'keluar', '2025-01-03');
-- Laporan stok barang dengan kategori
SELECT b.nama_barang, k.nama_kategori, b.stok
FROM barang b
JOIN kategori k ON b.kategori_id = k.id;
-- Hitung total transaksi keluar per barang
SELECT b.nama_barang, SUM(t.jumlah) AS total_keluar
FROM transaksi t
JOIN barang b ON t.barang_id = b.id
WHERE t.tipe = 'keluar'
GROUP BY b.nama_barang;
👉 Dengan desain ini, kita bisa mengelola stok barang, mencatat transaksi, dan membuat laporan ringkas.
Kembangkan sistem inventaris dengan fitur tambahan:
harga pada tabel barang.barang_id.Tugas tambahan: Buat trigger yang otomatis mengurangi atau menambah stok barang setiap kali ada transaksi masuk/keluar.