Uploaded by selvirahayuni124

SQL-i andmebaasi skeem poe haldussüsteemile

advertisement
CREATE DATABASE TUBES_APSI_Kel11
USE TUBES_APSI_Kel11;
-- TABEL PELANGGAN
CREATE TABLE pelanggan (
email_pelanggan VARCHAR(100) PRIMARY KEY,
password_pelanggan VARCHAR(255) NOT NULL,
nama_pelanggan VARCHAR(100) NOT NULL,
gender_pelanggan ENUM('Pria', 'Wanita'),
no_telepon_pelanggan VARCHAR(20),
alamat_pelanggan TEXT
);
-- TABEL STAFF
CREATE TABLE staff (
email_staff VARCHAR(100) PRIMARY KEY,
password_staff VARCHAR(255) NOT NULL,
nama_staff VARCHAR(100) NOT NULL,
gender_staff ENUM('Pria', 'Wanita'),
posisi_staff ENUM('Admin', 'Tim Manajemen'),
no_telepon VARCHAR(20)
);
-- TABEL SUPPLIER
CREATE TABLE supplier (
id_supplier INT AUTO_INCREMENT PRIMARY KEY,
nama_supplier VARCHAR(100) NOT NULL,
telepon_supplier VARCHAR(100),
alamat_supplier TEXT
);
-- TABEL PRODUK
CREATE TABLE produk (
id_produk INT AUTO_INCREMENT PRIMARY KEY,
kode_item VARCHAR(50) UNIQUE NOT NULL,
nama_produk VARCHAR(100) NOT NULL,
merek_produk ENUM('Nike', 'Yonex', 'Speedo','Mikasa'),
ukuran_produk VARCHAR(100) NOT NULL,
gender ENUM('Pria', 'Wanita', 'Unisex'),
stok INT DEFAULT 0,
stok_minimum INT DEFAULT 0,
harga_produk DECIMAL(10,2) NOT NULL,
id_supplier INT,
FOREIGN KEY (id_supplier) REFERENCES supplier(id_supplier)
);
-- TABEL KERANJANG
CREATE TABLE keranjang (
id_keranjang INT AUTO_INCREMENT PRIMARY KEY,
id_transaksi INT NOT NULL,
id_produk INT NOT NULL,
kuantitas INT NOT NULL DEFAULT 1,
personalisasi VARCHAR(100),
FOREIGN KEY (id_transaksi) REFERENCES transaksi (id_transaksi)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_produk) REFERENCES produk (id_produk) ON DELETE
RESTRICT ON UPDATE CASCADE
);
-- TABEL TRANSAKSI
CREATE TABLE Transaksi (
id_transaksi INT AUTO_INCREMENT PRIMARY KEY,
email_pelanggan VARCHAR(100) NOT NULL,
email_staff VARCHAR(100),
Date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
id_pengiriman INT,
id_pembayaran INT,
FOREIGN KEY (email_pelanggan) REFERENCES
pelanggan(email_pelanggan)
ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY (email_staff) REFERENCES staff(email_staff)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (id_pengiriman ) REFERENCES pengiriman(id_pengiriman
)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (id_pembayaran) REFERENCES pembayaran(id_pembayaran)
ON UPDATE CASCADE ON DELETE SET NULL
);
-- TABEL PENGIRIMAN
CREATE TABLE pengiriman (
id_pengiriman INT AUTO_INCREMENT PRIMARY KEY,
id_transaksi INT,
metode_pengiriman ENUM ('Gojek', 'JNT', 'Shopee'),
alamat_pengiriman TEXT,
status ENUM('diproses', 'dikirim', 'selesai') DEFAULT
'diproses',
harga_pengiriman DECIMAL(10, 2) NOT NULL,
tanggal_kirim TIMESTAMP NULL
);
-- TABEL PEMBAYARAN
CREATE TABLE pembayaran (
id_pembayaran INT AUTO_INCREMENT PRIMARY KEY,
id_transaksi INT,
metode_pembayaran ENUM('Bank Transfer', 'Dana', 'Debit Card'),
pemilik_akun_pembayaran VARCHAR(50),
tanggal_bayar TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('pending', 'lunas', 'gagal') DEFAULT 'pending'
);
-- TABEL LAPORAN
CREATE TABLE laporan (
id_laporan INT AUTO_INCREMENT PRIMARY KEY,
email_staff VARCHAR(100),
jenis_laporan ENUM('Penjualan', 'Stok', 'Musiman', 'Trend') NOT
NULL,
tanggal_dibuat TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
periode_awal DATE,
periode_akhir DATE,
deskripsi TEXT,
FOREIGN KEY (email_staff) REFERENCES staff(email_staff)
ON UPDATE CASCADE ON DELETE SET NULL
);
Download