Tutorial ini memberikan langkah-langkah lengkap untuk merancang skema database Sistem Manajemen Inventaris untuk mengelola pemasok, tenaga penjualan, barang, stok barang, pesanan pembelian, dan pesanan pelanggan.
Catatan :Umumnya, bisnis di ritel dan manufaktur menggunakan sistem persediaan. Di antara kasus penggunaan yang tersebar luas di industri lain, skema database ini dapat digunakan, misalnya, untuk manajemen inventaris rumah sakit guna meningkatkan efisiensi rantai pasokan layanan kesehatan dan mengurangi limbah obat.
Diagram Hubungan Entitas atau desain basis data visual ditunjukkan di bawah ini.
Basis Data Manajemen Inventaris
Anda juga dapat mengunjungi tutorial populer termasuk Cara Menginstal MySQL 8 di Ubuntu 20.04 LTS, Cara Menginstal MySQL 8 di Windows, Cara Menginstal MySQL Workbench Di Ubuntu, Cara Menginstal MySQL 8 Dengan Workbench Di Windows 10, Database RBAC di MySql, Database Blog di MySql, Database Quiz di MySQL, Database Poll &Survey di MySQL, Database Keranjang Belanja Online di MySQL, dan Pelajari Query SQL Dasar Di MySQL.
Basis Data Inventaris
Langkah pertama adalah membuat Database Inventory. Itu dapat dibuat menggunakan kueri seperti yang ditunjukkan di bawah ini.
CREATE SCHEMA `inventory` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Saya telah menggunakan set karakter utf8mb4 untuk mendukung berbagai karakter.
Tabel Pengguna
Di bagian ini, kita akan mendesain Tabel Pengguna untuk menyimpan informasi pengguna. Pengguna dapat mengelola profil mereka sendiri. Selain itu, pengguna dapat menggunakan aplikasi sesuai dengan peran yang diberikan kepada mereka. Anda juga dapat merujuk ke Database RBAC tutorial di MySql untuk menerapkan sistem RBAC lengkap untuk mengelola peran dan izin. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Pengguna.
Id | Id unik untuk mengidentifikasi pengguna. |
Id Peran | Peran pengguna. Bisa Admin, Supplier, Salesperson, dan Customer. |
Nama Depan | Nama depan pengguna. |
Nama Tengah | Nama tengah pengguna. |
Nama Belakang | Nama belakang pengguna. |
Seluler | Nomor ponsel pengguna. Ini dapat digunakan untuk tujuan login dan registrasi. |
Email pengguna. Ini dapat digunakan untuk tujuan login dan registrasi. | |
Hash Kata Sandi | Hash kata sandi yang dihasilkan oleh algoritme yang sesuai. Kita harus menghindari penyimpanan kata sandi biasa atau terenkripsi. |
Terdaftar Di | Kolom ini dapat digunakan untuk menghitung umur pengguna dengan aplikasi tersebut. |
Login Terakhir | Ini dapat digunakan untuk mengidentifikasi login terakhir pengguna. |
Pengantar | Pengenalan singkat tentang Pengguna. |
Profil | Detail pengguna. |
Tabel Pengguna dengan batasan yang sesuai ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`roleId` SMALLINT NOT NULL,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`username` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`passwordHash` VARCHAR(32) NOT NULL,
`registeredAt` DATETIME NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
`intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_username` (`username` ASC),
UNIQUE INDEX `uq_mobile` (`mobile` ASC),
UNIQUE INDEX `uq_email` (`email` ASC) );
Tabel Produk
Di bagian ini, kita akan mendesain Tabel Produk untuk menyimpan data produk. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Produk.
Id | Id unik untuk mengidentifikasi produk. |
Judul | Judul produk yang akan ditampilkan di Inventory. |
Ringkasan | Ringkasan untuk menyebutkan sorotan utama. |
Ketik | Jenis untuk membedakan antara berbagai jenis produk. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat produk dibuat. |
Diperbarui Pada | Menyimpan tanggal dan waktu pembaruan produk. |
Konten | Kolom yang digunakan untuk menyimpan detail tambahan produk. |
Tabel Produk dengan batasan yang sesuai ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`product` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`summary` TINYTEXT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
Meta Produk
Tabel Meta Produk dapat digunakan untuk menyimpan informasi tambahan tentang produk termasuk URL spanduk produk, dll. Di bawah ini adalah deskripsi dari semua kolom Tabel Meta Produk.
Id | Id unik untuk mengidentifikasi meta produk. |
Id Produk | Id produk untuk mengidentifikasi produk induk. |
Kunci | Kunci yang mengidentifikasi meta. |
Konten | Kolom yang digunakan untuk menyimpan metadata produk. |
Tabel Meta Produk dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`product_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_product` (`productId` ASC),
UNIQUE INDEX `uq_product_meta` (`productId` ASC, `key` ASC),
CONSTRAINT `fk_meta_product`
FOREIGN KEY (`productId`)
REFERENCES `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Tabel Kategori dan Tabel Kategori Produk
Di bagian ini, kita akan mendesain Tabel Kategori dan Tabel Kategori Produk untuk menyimpan kategori produk dan pemetaannya. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Kategori.
Id | Id unik untuk mengidentifikasi kategori. |
Id Induk | Id induk untuk mengidentifikasi kategori induk. |
Judul | Judul kategori. |
Judul Meta | Judul meta yang akan digunakan untuk judul browser dan SEO. |
Siput | Slug kategori untuk membentuk URL. |
Konten | Kolom yang digunakan untuk menyimpan detail kategori. |
Tabel Kategori dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`category` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`parentId` BIGINT NULL DEFAULT NULL,
`title` VARCHAR(75) NOT NULL,
`metaTitle` VARCHAR(100) NULL DEFAULT NULL,
`slug` VARCHAR(100) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`));
ALTER TABLE `inventory`.`category`
ADD INDEX `idx_category_parent` (`parentId` ASC);
ALTER TABLE `inventory`.`category`
ADD CONSTRAINT `fk_category_parent`
FOREIGN KEY (`parentId`)
REFERENCES `inventory`.`category` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Kategori Produk.
Id Produk | Id produk untuk mengidentifikasi produk. |
Id Kategori | Id kategori untuk mengidentifikasi kategori. |
Tabel Kategori Produk dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`product_category` (
`productId` BIGINT NOT NULL,
`categoryId` BIGINT NOT NULL,
PRIMARY KEY (`productId`, `categoryId`),
INDEX `idx_pc_category` (`categoryId` ASC),
INDEX `idx_pc_product` (`productId` ASC),
CONSTRAINT `fk_pc_product`
FOREIGN KEY (`productId`)
REFERENCES `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_pc_category`
FOREIGN KEY (`categoryId`)
REFERENCES `inventory`.`category` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Meja Merek
Di bagian ini, kami akan mendesain Tabel Merek untuk menyimpan data merek. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Merek.
Id | Id unik untuk mengidentifikasi merek. |
Judul | Judul merek yang akan ditampilkan di Inventaris. |
Ringkasan | Ringkasan menyebutkan sorotan utama. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat produk dibuat. |
Diperbarui Pada | Menyimpan tanggal dan waktu pembaruan produk. |
Konten | Kolom yang digunakan untuk menyimpan detail tambahan merek. |
Tabel Merek dengan batasan yang sesuai ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`brand` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`summary` TINYTEXT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
Pesan Tabel Tabel
Bagian ini menyediakan tabel untuk mengelola pesanan inventaris. Pesanan dapat dikaitkan dengan Pemasok atau Pelanggan. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Pesanan.
Id | Id unik untuk mengidentifikasi pesanan. |
Id Pengguna | Id pengguna untuk mengidentifikasi Pemasok atau Pelanggan yang terkait dengan pesanan. |
Ketik | Jenis pesanan yang membedakan antara Purchase Order atau Customer Order. |
Status | Status pesanan bisa New, Checkout, Paid, Failed, Shipped, Delivered, Returned, dan Complete. |
SubTotal | Harga Total Barang Pesanan. |
Diskon Barang | Total diskon untuk Item Pesanan. |
Pajak | Pajak atas Item Pesanan. |
Pengiriman | Biaya pengiriman Barang Pesanan. |
Total | Total harga Pesanan sudah termasuk pajak dan ongkos kirim. Itu tidak termasuk diskon item. |
Promo | Kode promo Pesanan. |
Diskon | Total diskon Pesanan berdasarkan kode promo atau diskon toko. |
Total Keseluruhan | Jumlah total pesanan yang harus dibayar oleh pembeli. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat pesanan dibuat. |
Diperbarui Pada | Ini menyimpan tanggal dan waktu di mana pesanan diperbarui. |
Konten | Kolom yang digunakan untuk menyimpan detail tambahan pesanan. |
Tabel Pesanan dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`order` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`subTotal` FLOAT NOT NULL DEFAULT 0,
`itemDiscount` FLOAT NOT NULL DEFAULT 0,
`tax` FLOAT NOT NULL DEFAULT 0,
`shipping` FLOAT NOT NULL DEFAULT 0,
`total` FLOAT NOT NULL DEFAULT 0,
`promo` VARCHAR(50) NULL DEFAULT NULL,
`discount` FLOAT NOT NULL DEFAULT 0,
`grandTotal` FLOAT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_order_user` (`userId` ASC),
CONSTRAINT `fk_order_user`
FOREIGN KEY (`userId`)
REFERENCES `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Tabel Alamat
Bagian ini menyediakan tabel untuk mengelola alamat pengguna atau pesanan. Alamat pengguna dapat digunakan untuk menyimpan alamat yang terkait dengan pengguna. Alamat pesanan dapat digunakan untuk menyimpan alamat pengiriman untuk pesanan pengiriman ke rumah. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Alamat.
Id | Id unik untuk mengidentifikasi alamat. |
Id Pengguna | ID pengguna untuk mengidentifikasi pengguna yang terkait dengan alamat tersebut. |
Id Pesanan | Id pesanan untuk mengidentifikasi pesanan yang terkait dengan alamat. |
Nama Depan | Nama depan pengguna. |
Nama Tengah | Nama tengah pengguna. |
Nama Belakang | Nama belakang pengguna. |
Seluler | Nomor ponsel pengguna. |
Email pengguna. | |
Baris 1 | Baris pertama untuk menyimpan alamat. |
Baris 2 | Baris kedua untuk menyimpan alamat. |
Kota | Kota alamat. |
Provinsi | Provinsi alamat. |
Negara | Negara alamat. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat pesanan dibuat. |
Diperbarui Pada | Ini menyimpan tanggal dan waktu di mana pesanan diperbarui. |
Tabel Alamat dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`address` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
`orderId` BIGINT NULL DEFAULT NULL,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`line1` VARCHAR(50) NULL DEFAULT NULL,
`line2` VARCHAR(50) NULL DEFAULT NULL,
`city` VARCHAR(50) NULL DEFAULT NULL,
`province` VARCHAR(50) NULL DEFAULT NULL,
`country` VARCHAR(50) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_address_user` (`userId` ASC),
CONSTRAINT `fk_address_user`
FOREIGN KEY (`userId`)
REFERENCES `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `inventory`.`address`
ADD INDEX `idx_address_order` (`orderId` ASC);
ALTER TABLE `inventory`.`address`
ADD CONSTRAINT `fk_address_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Tabel Item
Di bagian ini, kami akan mendesain Item Tabel untuk menyimpan detail barang. Item mewakili item yang disimpan dalam inventaris dan dibeli dari pemasok. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Item.
Id | Id unik untuk mengidentifikasi item. |
Id Produk | Id produk untuk mengidentifikasi produk yang terkait dengan item inventaris. |
Id Merek | Id merek untuk mengidentifikasi merek yang terkait dengan item inventaris. |
Id Pemasok | Id pemasok untuk mengidentifikasi pemasok yang terkait dengan item inventaris. |
Id Pesanan | Id pesanan untuk mengidentifikasi pesanan yang terkait dengan item inventaris. |
Dibuat Oleh | ID pengguna untuk mengidentifikasi pengguna yang menambahkan item inventaris. |
Diperbarui Oleh | ID pengguna untuk mengidentifikasi pengguna yang memperbarui item inventaris. |
Unit Penyimpanan Stok | Id untuk mengidentifikasi item yang ada di stok. |
Harga Eceran Maksimum | Harga cetak produk yang terkait dengan item tersebut. |
Diskon | Diskon diberikan oleh pemasok. |
Harga | Harga saat produk dibeli. |
Kuantitas | Jumlah total yang diterima di inventaris. |
Terjual | Jumlah total yang dijual ke pelanggan. |
Tersedia | Jumlah yang tersedia di stok. |
Cacat | Total barang cacat yang diterima di inventaris atau dikembalikan oleh pelanggan. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat pesanan dibuat. |
Diperbarui Pada | Ini menyimpan tanggal dan waktu di mana pesanan diperbarui. |
Tabel Item dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`item` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`brandId` BIGINT NOT NULL,
`supplierId` BIGINT NOT NULL,
`orderId` BIGINT NOT NULL,
`sku` VARCHAR(100) NOT NULL,
`mrp` FLOAT NOT NULL DEFAULT 0,
`discount` FLOAT NOT NULL DEFAULT 0,
`price` FLOAT NOT NULL DEFAULT 0,
`quantity` SMALLINT(6) NOT NULL DEFAULT 0,
`sold` SMALLINT(6) NOT NULL DEFAULT 0,
`available` SMALLINT(6) NOT NULL DEFAULT 0,
`defective` SMALLINT(6) NOT NULL DEFAULT 0,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_item_product` (`productId` ASC),
CONSTRAINT `fk_item_product`
FOREIGN KEY (`productId`)
REFERENCES `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `inventory`.`item`
ADD INDEX `idx_item_brand` (`brandId` ASC);
ALTER TABLE `inventory`.`item`
ADD CONSTRAINT `fk_item_brand`
FOREIGN KEY (`brandId`)
REFERENCES `inventory`.`brand` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `inventory`.`item`
ADD INDEX `idx_item_user` (`supplierId` ASC);
ALTER TABLE `inventory`.`item`
ADD CONSTRAINT `fk_item_user`
FOREIGN KEY (`supplierId`)
REFERENCES `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `inventory`.`item`
ADD INDEX `idx_item_order` (`orderId` ASC);
ALTER TABLE `inventory`.`item`
ADD CONSTRAINT `fk_item_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Tabel Item Pesanan
Bagian ini menyediakan tabel untuk mengelola barang pesanan yang dibeli oleh pelanggan. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Item Pesanan.
Id | Id unik untuk mengidentifikasi barang yang dipesan. |
Id Produk | Id produk untuk mengidentifikasi produk yang terkait dengan barang yang dipesan. |
Id Item | Id item untuk mengidentifikasi item yang terkait dengan item yang dipesan. |
Id Pesanan | Id pesanan untuk mengidentifikasi pesanan yang terkait dengan barang pesanan. |
SKU | SKU produk saat membelinya. |
Harga | Harga produk saat membelinya. |
Diskon | Diskon produk saat membelinya. |
Kuantitas | Jumlah produk yang dipilih oleh pengguna. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat item yang dipesan dibuat. |
Diperbarui Pada | Menyimpan tanggal dan waktu pembaruan item yang dipesan. |
Konten | Kolom yang digunakan untuk menyimpan detail tambahan dari barang yang dipesan. |
Tabel Item Pesanan dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`order_item` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`itemId` BIGINT NOT NULL,
`orderId` BIGINT NOT NULL,
`sku` VARCHAR(100) NOT NULL,
`price` FLOAT NOT NULL DEFAULT 0,
`discount` FLOAT NOT NULL DEFAULT 0,
`quantity` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_order_item_product` (`productId` ASC),
CONSTRAINT `fk_order_item_product`
FOREIGN KEY (`productId`)
REFERENCES `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `inventory`.`order_item`
ADD INDEX `idx_order_item_item` (`itemId` ASC);
ALTER TABLE `inventory`.`order_item`
ADD CONSTRAINT `fk_order_item_item`
FOREIGN KEY (`itemId`)
REFERENCES `inventory`.`item` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `inventory`.`order_item`
ADD INDEX `idx_order_item_order` (`orderId` ASC);
ALTER TABLE `inventory`.`order_item`
ADD CONSTRAINT `fk_order_item_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Tabel Transaksi
Kami juga membutuhkan tabel transaksi untuk melacak pembayaran pesanan yang dilakukan oleh pembeli dan untuk pembukuan. Kami juga dapat menggunakan tabel yang sama untuk mencatat pengembalian dana sebagian atau penuh dari pesanan. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Transaksi.
Id | Id unik untuk mengidentifikasi transaksi. |
Id Pengguna | ID pengguna untuk mengidentifikasi pengguna yang terkait dengan transaksi. |
Id Pesanan | Id pesanan untuk mengidentifikasi pesanan yang terkait dengan transaksi. |
Kode | Id pembayaran yang disediakan oleh gateway pembayaran. |
Ketik | Jenis transaksi order dapat berupa Kredit atau Debit. |
Mode | Mode transaksi order bisa Offline, Cash On Delivery, Cheque, Draft, Wired, dan Online. |
Status | Status transaksi order bisa Baru, Dibatalkan, Gagal, Tertunda, Ditolak, Ditolak, dan Sukses. |
Dibuat Pada | Ini menyimpan tanggal dan waktu saat transaksi pesanan dibuat. |
Diperbarui Pada | Ini menyimpan tanggal dan waktu di mana transaksi pesanan diperbarui. |
Konten | Kolom yang digunakan untuk menyimpan detail tambahan transaksi. |
Tabel Transaksi dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.
CREATE TABLE `inventory`.`transaction` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`orderId` BIGINT NOT NULL,
`code` VARCHAR(100) NOT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`mode` SMALLINT(6) NOT NULL DEFAULT 0,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_transaction_user` (`userId` ASC),
CONSTRAINT `fk_transaction_user`
FOREIGN KEY (`userId`)
REFERENCES `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `inventory`.`transaction`
ADD INDEX `idx_transaction_order` (`orderId` ASC);
ALTER TABLE `inventory`.`transaction`
ADD CONSTRAINT `fk_transaction_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Ringkasan
Dalam tutorial ini, kita telah membahas desain database Sistem Manajemen Inventaris untuk menyimpan pengguna dan mengelola inventaris produk. Ini juga menyediakan desain database untuk mengelola pesanan pembelian dan pesanan pelanggan.
Anda dapat mengirimkan komentar Anda untuk bergabung dalam diskusi. Anda mungkin juga tertarik untuk mendesain database aplikasi Blog dan Poll &Survey. Skema database lengkap juga tersedia di GitHub.