Hướng dẫn này cung cấp các bước hoàn chỉnh để thiết kế lược đồ cơ sở dữ liệu của các cửa hàng trực tuyến và giỏ hàng để quản lý người dùng, sản phẩm, đánh giá, giỏ hàng, đơn đặt hàng và thanh toán. Nó có thể được sử dụng nhiều hơn nữa để phát triển một cửa hàng trực tuyến và các trang web hoặc ứng dụng dựa trên giỏ hàng.
Sơ đồ mối quan hệ thực thể hoặc thiết kế cơ sở dữ liệu trực quan được hiển thị bên dưới.
Giỏ hàng trực tuyến
Ghi chú :Nó cho phép khách đặt hàng mà không cần đăng nhập. Bảo mật có thể được xử lý bằng cách làm theo Cơ sở dữ liệu RBAC trong MySql.
Bạn cũng có thể xem các hướng dẫn phổ biến bao gồm Cách cài đặt MySQL 8 trên Ubuntu, Cách cài đặt MySQL 8 trên Windows, Cách cài đặt MySQL 8 với Workbench trên Windows 10, Cơ sở dữ liệu RBAC trong MySql, Cơ sở dữ liệu blog trong MySql, Cơ sở dữ liệu câu đố trong MySQL, Cơ sở dữ liệu thăm dò &khảo sát trên MySQL và Tìm hiểu các truy vấn SQL cơ bản trong MySQL.
Cơ sở dữ liệu cửa hàng
Bước đầu tiên là tạo Cơ sở dữ liệu cửa hàng. Nó có thể được tạo bằng cách sử dụng truy vấn như hình dưới đây.
TẠO SCHEMA `shop` BỘ NHÂN VẬT ĐỊNH MỨC utf8mb4 COLLATE utf8mb4_unicode_ci;
Tôi đã sử dụng bộ ký tự utf8mb4 để hỗ trợ nhiều loại ký tự.
Bảng Người dùng
Trong phần này, chúng tôi sẽ thiết kế Bảng người dùng để lưu trữ thông tin người dùng. Cùng một bảng có thể được sử dụng để quản lý các loại người dùng khác nhau bao gồm quản trị viên và khách hàng. Nó cũng có thể được sử dụng để liên hệ những người tạo ra sản phẩm (từ bảng quản trị) và các đơn đặt hàng của khách hàng đặt trên trang web. Người dùng có thể theo dõi đơn đặt hàng của riêng mình và theo dõi trạng thái. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Người dùng.
Id | Id duy nhất để xác định người dùng. |
Tên | Tên của người dùng. |
Tên đệm | Tên đệm của người dùng. |
Họ | Họ của người dùng. |
Di động | Số điện thoại di động của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký. |
Email của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký. | |
Băm mật khẩu | Mật khẩu băm được tạo bởi thuật toán thích hợp. Chúng tôi phải tránh lưu trữ mật khẩu đơn giản hoặc mật khẩu được mã hóa. |
Quản trị viên | Cờ để xác định xem người dùng có phải là quản trị viên hay không. Không bắt buộc nếu bảng RBAC được tạo bằng cách tuân theo thiết kế cơ sở dữ liệu RBAC. |
Nhà cung cấp | Cờ để xác định liệu người dùng có thể lưu trữ sản phẩm trong cửa hàng hay không. Không bắt buộc nếu bảng RBAC được tạo bằng cách tuân theo thiết kế cơ sở dữ liệu RBAC. |
Đã đăng ký tại | Cột này có thể được sử dụng để tính toán tuổi thọ của người dùng với ứng dụng. |
Lần Đăng nhập Cuối cùng | Nó có thể được sử dụng để xác định thông tin đăng nhập cuối cùng của người dùng. |
Giới thiệu | Phần giới thiệu ngắn gọn về Người dùng của Nhà cung cấp sẽ được hiển thị trên Trang Sản phẩm. |
Hồ sơ | Chi tiết về nhà cung cấp sẽ được hiển thị trên Trang Sản phẩm. |
Bảng Người dùng với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`user` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`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,
`mật khẩu NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
` intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`) ,
CHỈ SỐ DUY NHẤT `uq_mobile` (` di động` ASC),
CHỈ SỐ DUY NHẤT `uq_email` (` email` ASC));
Bảng sản phẩm
Trong phần này, chúng tôi sẽ thiết kế Bảng sản phẩm để lưu trữ dữ liệu sản phẩm. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Sản phẩm.
Id | Id duy nhất để xác định sản phẩm. |
Id Người dùng | Id người dùng để xác định quản trị viên hoặc nhà cung cấp. |
Tiêu đề | Tên sản phẩm được hiển thị trên Trang cửa hàng và Trang sản phẩm. |
Tiêu đề meta | Tiêu đề meta được sử dụng cho tiêu đề trình duyệt và SEO. |
Slug | Con sên để tạo URL. |
Tóm tắt | Bản tóm tắt để đề cập đến những điểm nổi bật chính. |
Loại | Loại để phân biệt giữa các loại sản phẩm khác nhau. |
SKU | Đơn vị lưu giữ kho để theo dõi tồn kho sản phẩm. |
Giá | Giá của sản phẩm. |
Giảm giá | Giảm giá sản phẩm. |
Số lượng | Số lượng sản phẩm có sẵn. |
Mua sắm | Nó có thể được sử dụng để xác định liệu sản phẩm có được bán công khai để mua sắm hay không. |
Được tạo lúc | Nó lưu trữ ngày và giờ sản phẩm được tạo ra. |
Cập nhật lúc | Nó lưu trữ ngày và giờ sản phẩm được cập nhật. |
Được xuất bản tại | Nó lưu trữ ngày và giờ sản phẩm được xuất bản trên Shop. |
Bắt đầu lúc | Nó lưu trữ ngày và giờ bắt đầu bán sản phẩm. |
Kết thúc lúc | Nó lưu trữ ngày và giờ kết thúc đợt bán sản phẩm. |
Nội dung | Cột được sử dụng để lưu trữ các chi tiết bổ sung của sản phẩm. |
Nó sử dụng số lượng cột để theo dõi lượng hàng có sẵn trong kho sản phẩm để giữ cho thiết kế đơn giản. Nó có thể được yêu cầu chỉ định số lượng theo một số cột để bao gồm nhiều loại sản phẩm. Các cột khả thi có thể là sellQuantity, sellUnit, stockQuantity và stockUnit trong đó sellQuantity và sellUnit có thể được sử dụng để hiển thị trên Shop cho người mua và có thể sử dụng stockQuantity và stockUnit để theo dõi hàng tồn kho. Nó cũng có thể được yêu cầu để chuyển đổi sellUnit thành stockUnit trong khi cập nhật khoảng không quảng cáo khi đặt hàng. Bảng Sản phẩm với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`product` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
` title` VARCHAR (75) NOT NULL,
`metaTitle` VARCHAR (100) NULL,
` slug` VARCHAR (100) NOT NULL,
`tóm tắt` TINYTEXT NULL,
` type` SMALLINT (6) NOT NULL DEFAULT 0,
`sku` VARCHAR (100) NOT NULL,
` price` FLOAT NOT NULL DEFAULT 0,
`giảm giá` FLOAT NOT NULL DEFAULT 0,
` số lượng` SMALLINT (6) NOT NULL DEFAULT 0,
`shop` TINYINT (1) NOT NULL DEFAULT 0,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`đã xuất bản TỪ KHÓA CHÍNH (`id`),
CHỈ SỐ DUY NHẤT` uq_slug` (`slug` ASC),
INDEX` idx_product_user` (`userId` ASC),
CONSTRAINT` fk_product_user`
NGOẠI KHÓA (`userId`)
TÀI LIỆU THAM KHẢO` shop`.` người dùng` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
Meta sản phẩm
Bảng Meta Sản phẩm có thể được sử dụng để lưu trữ thông tin bổ sung về các sản phẩm bao gồm URL biểu ngữ sản phẩm, v.v. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Meta Sản phẩm.
Id | Id duy nhất để xác định meta sản phẩm. |
Id Sản phẩm | Id sản phẩm để xác định sản phẩm mẹ. |
Phím | Chìa khóa xác định meta. |
Nội dung | Cột được sử dụng để lưu trữ siêu dữ liệu sản phẩm. |
Bảng Meta Sản phẩm với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`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),
CHỈ SỐ DUY NHẤT `uq_product_meta` (` productId` ASC, `key` ASC),
CONSTRAINT` fk_meta_product`
FOREIGN KEY (`productId`)
TÀI LIỆU THAM KHẢO` shop`.`product` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG)
ENGINE =InnoDB;
Bảng đánh giá sản phẩm
Trong phần này, chúng tôi sẽ thiết kế Bảng đánh giá sản phẩm để lưu trữ các đánh giá về sản phẩm. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Đánh giá Sản phẩm.
Id | Id duy nhất để xác định bài đánh giá sản phẩm. |
Id Sản phẩm | Id sản phẩm để xác định sản phẩm mẹ. |
Id gốc | Id chính để xác định bài đánh giá chính. |
Tiêu đề | Tiêu đề bài đánh giá. |
Xếp hạng | Xếp hạng đánh giá. |
Đã xuất bản | Nó có thể được sử dụng để xác định xem bài đánh giá có được công bố công khai hay không. |
Được tạo lúc | Nó lưu trữ ngày và giờ đánh giá được gửi. |
Được xuất bản tại | Nó lưu trữ ngày và giờ đánh giá được xuất bản. |
Nội dung | Cột được sử dụng để lưu trữ chi tiết đánh giá. |
Bảng Đánh giá Sản phẩm với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`product_review` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
` parentId` BIGINT NULL DEFAULT NULL,
`title` VARCHAR (100) NOT NULL,
` rating` SMALLINT (6) NOT NULL DEFAULT 0,
`Publishers` TINYINT (1) NOT NULL DEFAULT 0,
` createdAt `DATETIME NOT NULL,
` publishAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`),
INDEX `idx_review_product` ( `productId` ASC),
CONSTRAINT` fk_review_product`
FOREIGN KEY (`productId`)
TÀI LIỆU THAM KHẢO` shop`.`product` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
TRÊN CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
BẢNG ALTER `shop`.`product_review`
ADD INDEX` idx_review_parent` (`parentId` ASC);
BẢNG ALTER shop`.`product_review`
ADD CONSTRAINT `fk_review_parent`
FOREIGN KEY (` parentId`)
TÀI LIỆU THAM KHẢO `shop`.`product_review` (` id`)
BẬT XÓA KHÔNG HÀNH ĐỘNG
KHI CẬP NHẬT SỐ A CTION;
Bảng Danh mục và Bảng Danh mục Sản phẩm
Trong phần này, chúng tôi sẽ thiết kế Bảng danh mục và Bảng danh mục sản phẩm để lưu trữ các danh mục sản phẩm và ánh xạ của chúng. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Danh mục.
Id | Id duy nhất để xác định danh mục. |
Id gốc | Id chính để xác định danh mục chính. |
Tiêu đề | Tiêu đề danh mục. |
Tiêu đề meta | Tiêu đề meta được sử dụng cho tiêu đề trình duyệt và SEO. |
Slug | Slug danh mục để tạo URL. |
Nội dung | Cột được sử dụng để lưu trữ chi tiết danh mục. |
Bảng Danh mục với các ràng buộc thích hợp như được hiển thị bên dưới.
CREATE TABLE `shop`.`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 `shop`.`category`
ADD INDEX` idx_category_parent` (`parentId` ASC);
ALTER TABLE` shop`.`category `
THÊM DANH MỤC` fk_category_parent`
NGOẠI KHÓA (`parentId`)
TÀI LIỆU THAM KHẢO` shop`.`category` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;
Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Danh mục Sản phẩm.
Id sản phẩm | Id sản phẩm để xác định sản phẩm. |
Id danh mục | Id danh mục để xác định danh mục. |
Bảng Danh mục Sản phẩm với các ràng buộc thích hợp được hiển thị bên dưới.
TẠO BẢNG `shop`. ,
INDEX `idx_pc_category` (` categoryId` ASC),
INDEX `idx_pc_product` (` productId` ASC),
CONSTRAINT `fk_pc_product`
FOREIGN KEY (` productId`) TÀI LIỆU THAM KHẢO
`shop`.`product` (` id`)
VỀ XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG,
CONSTRAINT `fk_pc_category`
NGOẠI KHÓA (` CategoryId`)
TÀI LIỆU THAM KHẢO `shop`.`category` (` id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Bảng thẻ và Bảng thẻ sản phẩm
Tương tự như bảng danh mục và danh mục sản phẩm, chúng ta có thể thiết kế Bảng thẻ và Bảng thẻ sản phẩm . Sự khác biệt chính giữa Danh mục và Thẻ được liệt kê bên dưới.
- Cột parentId không bắt buộc trong Bảng thẻ.
- Số lượng các danh mục vẫn còn thấp vì chúng có thể được sử dụng để tạo Menu Chính cho mục đích điều hướng. Các thẻ có thể nhiều hơn so với các danh mục.
- Cả danh mục và thẻ đều có thể được sử dụng để liên quan đến các sản phẩm.
- Người ta chỉ nên gán một vài danh mục cho một sản phẩm trong khi số lượng thẻ có thể nhiều hơn.
Bảng Giỏ hàng và Bảng Mục Giỏ hàng
Phần này cung cấp các bảng quản lý giỏ hàng ảo để lưu trữ lựa chọn của người dùng trước khi tạo đơn hàng thực. Nếu người dùng hủy thanh toán hoặc thanh toán không thành công, nhóm tiếp thị có thể sử dụng chính những xe hàng đó làm xe hàng bị bỏ rơi để hỏi về người mua. Người dùng đã đăng nhập cũng có thể được liên kết với giỏ hàng. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng giỏ hàng.
Ghi chú :Bảng Giỏ hàng và Bảng Mục Giỏ hàng có thể được làm tùy chọn nếu Dữ liệu cục bộ, Phiên hoặc cơ sở dữ liệu trong bộ nhớ như Redis được sử dụng để lưu trữ dữ liệu giỏ hàng. Điều tương tự có thể được tham khảo để tạo đơn đặt hàng khi thanh toán thành công.
Id | Id duy nhất để xác định giỏ hàng. |
Id Người dùng | Id người dùng để xác định người dùng hoặc người mua được liên kết với giỏ hàng. |
Id phiên | Id phiên duy nhất được liên kết với giỏ hàng. |
Mã thông báo | Mã thông báo duy nhất được liên kết với giỏ hàng để xác định giỏ hàng trong nhiều phiên. Mã thông báo tương tự cũng có thể được chuyển đến Cổng thanh toán nếu được yêu cầu. |
Trạng thái | Trạng thái của giỏ hàng có thể là Mới, Giỏ hàng, Đã thanh toán, Đã thanh toán, Hoàn thành và Đã bỏ. |
Tên | Tên của người dùng. |
Tên đệm | Tên đệm của người dùng. |
Họ | Họ của người dùng. |
Di động | Số điện thoại di động của người dùng. |
Email của người dùng. | |
Dòng 1 | Dòng đầu tiên cho địa chỉ cửa hàng. |
Dòng 2 | Dòng thứ hai cho địa chỉ cửa hàng. |
Thành phố | Thành phố của địa chỉ. |
Tỉnh | Tỉnh của địa chỉ. |
Quốc gia | Quốc gia của địa chỉ. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà giỏ hàng được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà giỏ hàng được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ các chi tiết bổ sung của giỏ hàng. |
Bảng Giỏ hàng với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`cart` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
` sessionId` VARCHAR (100) NOT NULL ,
`token` VARCHAR (100) NOT NULL,
` status` SMALLINT (6) NOT NULL DEFAULT 0,
`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,
`tỉnh` VARCHAR (50) NULL DEFAULT NULL,
` country` VARCHAR (50) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
` updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`),
INDEX `idx_cart_user` (` userId` ASC),
CONSTRAINT `fk_cart_user`
NGOẠI KHÓA (`userId`)
TÀI LIỆU THAM KHẢO` shop`.`user` (`id `)
KHI XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
Dưới đây được đề cập là mô tả của tất cả các cột của Bảng mặt hàng giỏ hàng.
Id | Id duy nhất để xác định mặt hàng trong giỏ hàng. |
Id Sản phẩm | Id sản phẩm để xác định sản phẩm được liên kết với mặt hàng trong giỏ hàng. |
Id giỏ hàng | Id giỏ hàng để xác định giỏ hàng được liên kết với mặt hàng trong giỏ hàng. |
SKU | SKU của sản phẩm khi mua. |
Giá | Giá của sản phẩm khi mua. |
Giảm giá | Giảm giá sản phẩm khi mua. |
Số lượng | Số lượng sản phẩm do người dùng lựa chọn. |
Đang hoạt động | Cờ để xác định xem sản phẩm có đang hoạt động trên giỏ hàng hay không. Nó có thể được sử dụng để tránh việc cùng một sản phẩm được thêm vào cùng một giỏ hàng nhiều lần. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà tại đó mặt hàng trong giỏ hàng được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó mặt hàng trong giỏ hàng được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ các chi tiết bổ sung của mặt hàng trong giỏ hàng. |
Bảng mặt hàng giỏ hàng với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`cart_item` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
` cartId` BIGINT NOT NULL,
`sku` VARCHAR (100) NOT NULL,
` price` FLOAT NOT NULL DEFAULT 0,
`giảm giá` FLOAT NOT NULL DEFAULT 0,
` số lượng` SMALLINT (6) NOT NULL DEFAULT 0,
`active` TINYINT (1) NOT NULL DEFAULT 0,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
` content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX` idx_cart_item_product` (`productId` ASC),
CONSTRAINT` fk_cart_item_product`
FOREIGN KEY (`productId`)
TÀI LIỆU THAM KHẢO `shop`.`product` (` id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `shop`.` cart_item`
ADD INDEX `idx_cart_item_cart` (` cartId` ASC);
ALTER TABLE `shop`.`cart_item`
ADD CONSTRAINT` fk_cart_item_cart`
FOREIGN KEY (`cartId` )
TÀI LIỆU THAM KHẢO `shop`.`cart` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;
Bảng Đơn hàng và Bảng Mục Đơn hàng
Phần này cung cấp các bảng để quản lý các đơn đặt hàng của cửa hàng. Một người dùng đã đăng nhập cũng có thể được liên kết với đơn đặt hàng. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Đơn hàng.
Id | Id duy nhất để xác định đơn đặt hàng. |
Id Người dùng | Id người dùng để xác định người dùng hoặc người mua được liên kết với đơn đặt hàng. |
Id phiên | Id phiên duy nhất được liên kết với đơn đặt hàng. |
Mã thông báo | Mã thông báo duy nhất được liên kết với đơn đặt hàng để xác định nó qua nhiều phiên. Mã thông báo tương tự cũng có thể được chuyển đến Cổng thanh toán nếu được yêu cầu. |
Trạng thái | Trạng thái của đơn đặt hàng có thể là Mới, Đã thanh toán, Đã thanh toán, Không thành công, Đã giao, Đã giao, Đã trả lại và Hoàn thành. |
Tổng phụ | Tổng giá của các Mục đặt hàng. |
Giảm giá mặt hàng | Tổng chiết khấu của các Mục đặt hàng. |
Thuế | Thuế đối với các Mục đặt hàng. |
Vận chuyển | Phí vận chuyển của các Mục đặt hàng. |
Tổng số | Tổng giá của Đơn đặt hàng bao gồm thuế và phí vận chuyển. Nó không bao gồm giảm giá các mặt hàng. |
Quảng cáo | Mã khuyến mãi của Đơn đặt hàng. |
Giảm giá | Tổng chiết khấu của Đơn hàng dựa trên mã khuyến mãi hoặc chiết khấu tại cửa hàng. |
Tổng cộng | Tổng số đơn đặt hàng mà người mua phải thanh toán. |
Tên | Tên của người dùng. |
Tên đệm | Tên đệm của người dùng. |
Họ | Họ của người dùng. |
Di động | Số điện thoại di động của người dùng. |
Email của người dùng. | |
Dòng 1 | Dòng đầu tiên cho địa chỉ cửa hàng. |
Dòng 2 | Dòng thứ hai cho địa chỉ cửa hàng. |
Thành phố | Thành phố của địa chỉ. |
Tỉnh | Tỉnh của địa chỉ. |
Quốc gia | Quốc gia của địa chỉ. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà đơn đặt hàng được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà đơn đặt hàng được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ các chi tiết bổ sung của đơn đặt hàng. |
Bảng Đơn hàng với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`order` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
` sessionId` VARCHAR (100) NOT NULL ,
`token` VARCHAR (100) NOT NULL,
` 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,
`khuyến mãi` VARCHAR (50) NULL DEFAULT NULL,
` giảm giá` FLOAT NOT NULL DEFAULT 0,
`grandTotal` FLOAT NOT NULL DEFAULT 0,
` 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,
`tỉnh` VARCHAR (50) NULL DEFAULT NU LL,
`country` VARCHAR (50) NULL DEFAULT NULL,
` 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`)
THAM KHẢO `shop`.
Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Mục Đơn hàng.
Id | Id duy nhất để xác định mặt hàng đã đặt hàng. |
Id Sản phẩm | Id sản phẩm để xác định sản phẩm được liên kết với mặt hàng đã đặt hàng. |
Id Đơn đặt hàng | Id đơn đặt hàng để xác định đơn đặt hàng được liên kết với mặt hàng đã đặt hàng. |
SKU | SKU của sản phẩm khi mua. |
Giá | Giá của sản phẩm khi mua. |
Giảm giá | Giảm giá sản phẩm khi mua. |
Số lượng | Số lượng sản phẩm do người dùng lựa chọn. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà tại đó mặt hàng đã đặt hàng được tạo ra. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó mặt hàng đã đặt được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ các chi tiết bổ sung của mặt hàng đã đặt hàng. |
Bảng Mục Đơn hàng với các ràng buộc thích hợp như được hiển thị bên dưới.
CREATE TABLE `shop`.`order_item` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
` orderId` BIGINT NOT NULL,
`sku` VARCHAR (100) NOT NULL,
` price` FLOAT NOT NULL DEFAULT 0,
`giảm giá` FLOAT NOT NULL DEFAULT 0,
` số lượng` 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`)
TÀI LIỆU THAM KHẢO `shop`.`product` (` id` )
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
BẢNG THAY THẾ `shop`.`order_item`
ADD INDEX` idx_order_item_order` (`orderId` ASC );
ALTER TABLE `shop`.`order_item`
ADD CONSTRAINT` fk_order_item_order`
FOREIGN KEY (`orderId`)
TÀI LIỆU THAM KHẢO` shop`.`order` (`id `)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;
Bảng giao dịch
Chúng tôi cũng cần một bảng giao dịch để theo dõi các khoản thanh toán đơn hàng được thực hiện bởi người mua và để ghi sổ kế toán. Chúng ta cũng có thể sử dụng cùng một bảng để ghi lại khoản hoàn trả một phần hoặc toàn bộ đơn đặt hàng. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng giao dịch.
Id | Id duy nhất để xác định giao dịch. |
Id Người dùng | Id người dùng để xác định người dùng được liên kết với giao dịch. |
Id Đơn đặt hàng | Id đơn đặt hàng để xác định đơn đặt hàng được liên kết với giao dịch. |
Mã | Id thanh toán do cổng thanh toán cung cấp. |
Loại | Loại giao dịch đặt hàng có thể là Tín dụng hoặc Ghi nợ. |
Chế độ | Phương thức giao dịch đặt hàng có thể là Ngoại tuyến, Giao hàng tận nơi, Séc, Hối phiếu, Có dây và Trực tuyến. |
Trạng thái | Trạng thái của giao dịch đặt hàng có thể là Mới, Đã hủy, Không thành công, Đang chờ xử lý, Bị từ chối, Bị từ chối và Thành công. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà giao dịch đặt hàng được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó giao dịch đặt hàng được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ các chi tiết bổ sung của giao dịch. |
Bảng Giao dịch với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `shop`.`transaction` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
` orderId` BIGINT NOT NULL,
`mã` 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`)
TÀI LIỆU THAM KHẢO` shop`.` người dùng` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
BẬT CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
BẢNG ALTER` shop`.`transaction`
THÊM CHỈ SỐ `idx_transaction_order `(` orderId` ASC);
ALTER TABLE `shop`.`transaction`
ADD CONSTRAINT` fk_transaction_order`
FOREIGN KEY (`orderId`)
TÀI LIỆU THAM KHẢO` shop`. `order` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
BẬT LÊN NGÀY KHÔNG CÓ HÀNH ĐỘNG;
Bảng địa chỉ
Một bảng địa chỉ có thể được sử dụng để tránh các cột thừa trong bảng Giỏ hàng và Đơn hàng tùy thuộc vào việc triển khai thực tế. Nó có thể được ánh xạ trực tiếp tới Bảng giỏ hàng và Bảng đơn hàng bằng các khóa ngoại thích hợp.
Tóm tắt
Trong hướng dẫn này, chúng ta đã thảo luận về thiết kế cơ sở dữ liệu của Giỏ hàng Trực tuyến để lưu trữ người dùng và quản lý kho sản phẩm. Nó cũng cung cấp thiết kế cơ sở dữ liệu để quản lý giỏ hàng, lưu trữ các mặt hàng trong giỏ hàng và quản lý các đơn đặt hàng trên một cửa hàng trực tuyến. Có thể tham khảo Lưu đồ mua sắm trực tuyến đơn giản để triển khai Giỏ hàng.
Bạn có thể gửi bình luận của mình để tham gia thảo luận. Bạn cũng có thể quan tâm đến việc thiết kế cơ sở dữ liệu của các ứng dụng Blog và Poll &Survey. Lược đồ cơ sở dữ liệu hoàn chỉnh cũng có sẵn trên GitHub.