-->

Database Penjualan Lengkap & Penjelasan Struktur Tabel

Pelajari contoh database penjualan lengkap dengan tabel pelanggan, produk, pesanan, detail pesanan, dan pembayaran beserta penjelasannya.

Database penjualan adalah fondasi penting untuk sistem penjualan apapun. Artikel ini menjelaskan setiap tabel, struktur kolom, relasi antar tabel, dan alasan desainnya agar pembaca memahami mengapa database disusun seperti ini.


1. Tabel customers – Data Pelanggan

Tabel customers menyimpan semua informasi pelanggan. Struktur kolom dipilih untuk:

  • customer_id: Primary Key, unik untuk setiap pelanggan.
  • name: Nama pelanggan, wajib diisi (NOT NULL).
  • email: Digunakan untuk login atau notifikasi, harus unik.
  • phone: Nomor telepon pelanggan, opsional.
  • address: Alamat lengkap pelanggan.
  • created_at: Waktu pelanggan ditambahkan ke database, berguna untuk analisis.

SQL untuk membuat tabel:

CREATE TABLE customers (

    customer_id INT PRIMARY KEY AUTO_INCREMENT,

    name VARCHAR(100) NOT NULL,

    email VARCHAR(100) UNIQUE,

    phone VARCHAR(20),

    address TEXT,

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

Contoh data:

IDNamaEmailTeleponAlamatCreated At
1Budi Santosobudi@example.com08123456789Jl. Merdeka No. 10, Jakarta2025-09-15 08:00
2Siti Aminahsiti@example.com08198765432Jl. Sudirman No. 5, Bandung2025-09-15 09:30

Alasan desain:

Dengan Primary Key customer_id, relasi ke tabel lain (pesanan) menjadi mudah. Email unik mencegah duplikasi pelanggan.


Database penjualan lengkap dengan strukturnya


2. Tabel products – Data Produk

Tabel products menyimpan informasi produk yang dijual. Struktur dipilih agar mudah melakukan:

  • Pengelolaan stok.
  • Perhitungan harga total pesanan.
  • Referensi produk di detail pesanan (order_items).

SQL untuk membuat tabel:

CREATE TABLE products (

    product_id INT PRIMARY KEY AUTO_INCREMENT,

    name VARCHAR(100) NOT NULL,

    description TEXT,

    price DECIMAL(10,2) NOT NULL,

    stock INT DEFAULT 0,

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

IDNamaDeskripsiHargaStokCreated At
1Laptop Asus ROGLaptop gaming 16GB RAM15000000102025-09-15 08:15
2Mouse LogitechMouse wireless Logitech250000502025-09-15 08:20

Alasan desain:

Kolom price dan stock penting untuk menghitung total penjualan dan memonitor stok barang. product_id menjadi Primary Key untuk referensi di tabel order_items.


3. Tabel orders – Data Pesanan

Tabel orders menyimpan informasi pesanan dari pelanggan. Struktur dirancang agar mudah:

  • Menghubungkan pesanan ke pelanggan dengan customer_id.
  • Mencatat total harga pesanan.
  • Menentukan status pesanan (pending, completed, dll).
CREATE TABLE orders (

    order_id INT PRIMARY KEY AUTO_INCREMENT,

    customer_id INT,

    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,

    total DECIMAL(10,2),

    status VARCHAR(20) DEFAULT 'pending',

    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)

);

IDID PelangganTotalStatusOrder Date
1115250000completed2025-09-15 10:00
22250000pending2025-09-15 10:15

Alasan desain:

Relasi customer_id → orders memudahkan tracking siapa pelanggan yang melakukan pesanan. Kolom total dan status berguna untuk laporan penjualan dan pengiriman.


4. Tabel order_items – Detail Produk Per Pesanan

Tabel ini menjelaskan produk apa saja yang dibeli di setiap pesanan. Struktur ini memungkinkan:

  • Satu pesanan memiliki banyak produk.
  • Menghitung total harga tiap item dan jumlahnya.
  • Relasi ke products untuk informasi harga dan stok.
CREATE TABLE order_items (

    order_item_id INT PRIMARY KEY AUTO_INCREMENT,

    order_id INT,

    product_id INT,

    quantity INT,

    price DECIMAL(10,2),

    FOREIGN KEY (order_id) REFERENCES orders(order_id),

    FOREIGN KEY (product_id) REFERENCES products(product_id)

);

IDID PesananID ProdukJumlahHarga
111115000000
2121250000
3221250000

Alasan desain:

Tabel ini membentuk relasi many-to-many antara pesanan dan produk. Dengan cara ini, satu pesanan bisa memiliki beberapa produk, dan satu produk bisa muncul di banyak pesanan.


5. Tabel payments – Data Pembayaran

Tabel payments menyimpan informasi pembayaran tiap pesanan:

  • Mencatat jumlah yang dibayarkan.
  • Metode pembayaran (Transfer, COD, dll).
  • Status pembayaran (pending, completed).
  • Relasi ke orders untuk mengetahui pesanan mana yang dibayar.
CREATE TABLE payments (

    payment_id INT PRIMARY KEY AUTO_INCREMENT,

    order_id INT,

    payment_date DATETIME DEFAULT CURRENT_TIMESTAMP,

    amount DECIMAL(10,2),

    method VARCHAR(50),

    status VARCHAR(20) DEFAULT 'pending',

    FOREIGN KEY (order_id) REFERENCES orders(order_id)

);

IDID PesananJumlahMetodeStatus
1115250000Transfer Bankcompleted
220CODpending

Alasan desain:

Tabel pembayaran memungkinkan mencatat banyak metode dan status pembayaran per pesanan. Ini fleksibel untuk sistem penjualan yang lebih kompleks.


Baca juga: Database Solusi Perbaikan & Masalah Motor

Kesimpulan

Database penjualan ini memiliki struktur:

  • Pelanggan (customers) → satu pelanggan bisa memiliki banyak pesanan.
  • Produk (products) → informasi produk digunakan di setiap pesanan.
  • Pesanan (orders) → menghubungkan pelanggan dan detail produk.
  • Detail Pesanan (order_items) → relasi many-to-many antara pesanan dan produk.
  • Pembayaran (payments) → fleksibel untuk metode dan status pembayaran.

Dengan desain ini, sistem penjualan menjadi efisien, mudah diperluas, dan memudahkan analisis laporan penjualan serta stok produk.

LihatTutupKomentar