2. Struktur Database Penjualan Barang
Secara umum, database penjualan barang memiliki tabel-tabel utama sebagai berikut:
- tb_barang → menyimpan data barang
- tb_pelanggan → menyimpan data pelanggan
- tb_penjualan → menyimpan transaksi penjualan
- tb_detail_penjualan → detail barang yang dibeli di tiap transaksi
3. Query CREATE TABLE
CREATE DATABASE db_penjualan;
USE db_penjualan;
CREATE TABLE tb_barang (
id_barang INT AUTO_INCREMENT PRIMARY KEY,
nama_barang VARCHAR(100) NOT NULL,
harga DECIMAL(10,2) NOT NULL,
stok INT NOT NULL
);
CREATE TABLE tb_pelanggan (
id_pelanggan INT AUTO_INCREMENT PRIMARY KEY,
nama_pelanggan VARCHAR(100) NOT NULL,
alamat TEXT,
no_hp VARCHAR(20)
);
CREATE TABLE tb_penjualan (
id_penjualan INT AUTO_INCREMENT PRIMARY KEY,
tgl_penjualan DATE NOT NULL,
id_pelanggan INT,
FOREIGN KEY (id_pelanggan) REFERENCES tb_pelanggan(id_pelanggan)
);
CREATE TABLE tb_detail_penjualan (
id_detail INT AUTO_INCREMENT PRIMARY KEY,
id_penjualan INT,
id_barang INT,
jumlah INT,
subtotal DECIMAL(10,2),
FOREIGN KEY (id_penjualan) REFERENCES tb_penjualan(id_penjualan),
FOREIGN KEY (id_barang) REFERENCES tb_barang(id_barang)
);
4. Contoh Data Awal (INSERT INTO)
INSERT INTO tb_barang (nama_barang, harga, stok) VALUES
('Laptop Asus', 7500000, 10),
('Keyboard Mechanical', 500000, 20),
('Mouse Wireless', 200000, 30);
INSERT INTO tb_pelanggan (nama_pelanggan, alamat, no_hp) VALUES
('Budi Santoso', 'Jakarta', '08123456789'),
('Siti Aminah', 'Bandung', '082233445566');
INSERT INTO tb_penjualan (tgl_penjualan, id_pelanggan) VALUES
('2025-08-16', 1);
INSERT INTO tb_detail_penjualan (id_penjualan, id_barang, jumlah, subtotal) VALUES
(1, 1, 1, 7500000),
(1, 2, 1, 500000);
5. Query untuk Menampilkan Data Penjualan
SELECT p.id_penjualan, p.tgl_penjualan, pl.nama_pelanggan, b.nama_barang, d.jumlah, d.subtotal
FROM tb_penjualan p
JOIN tb_pelanggan pl ON p.id_pelanggan = pl.id_pelanggan
JOIN tb_detail_penjualan d ON p.id_penjualan = d.id_penjualan
JOIN tb_barang b ON d.id_barang = b.id_barang;
6. Relasi Antar Tabel
Relasi antar tabel dapat digambarkan sebagai berikut:
tb_pelanggan
→tb_penjualan
(One to Many)tb_penjualan
→tb_detail_penjualan
(One to Many)tb_barang
→tb_detail_penjualan
(One to Many)
Dengan struktur ini, kita dapat memantau setiap transaksi penjualan dan detail barang yang dibeli.
7. Kesimpulan
Database penjualan barang dengan MySQL biasanya terdiri dari tabel barang, pelanggan, penjualan, dan detail penjualan. Dengan query SQL di atas, kita dapat membangun sistem sederhana untuk mengelola penjualan.
8. FAQ
Q: Apakah database ini bisa dikembangkan untuk sistem kasir?
A: Ya, struktur ini adalah dasar yang bisa dikembangkan menjadi sistem kasir lengkap dengan laporan.
Q: Bisa ditambahkan tabel user untuk login?
A: Bisa, Anda dapat menambahkan tabel tb_user
untuk autentikasi admin/operator.
Q: Apakah database ini bisa dihubungkan dengan PHP?
A: Tentu, MySQL sangat kompatibel dengan PHP untuk membangun aplikasi berbasis web.