Contoh Database Penjualan Barang MySQL (Lengkap dengan Query)

By | August 15, 2025
Dalam membangun sistem penjualan berbasis web atau aplikasi desktop, kita membutuhkan database yang baik untuk menyimpan data barang, pelanggan, transaksi, hingga detail penjualan. MySQL adalah salah satu RDBMS (Relational Database Management System) yang sering digunakan karena mudah, cepat, dan open source.

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_pelanggantb_penjualan (One to Many)
  • tb_penjualantb_detail_penjualan (One to Many)
  • tb_barangtb_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.

Leave a Reply

Your email address will not be published. Required fields are marked *