Mô tả database netashop

Tác giả: Dương Nguyễn Phú Cường
Email: nentangtoituonglai@gmail.com
Phiên bản: 1.1

Lời nói đầu

Với mục đích cung cấp các Kiến thức Nền tảng về Lập trình Web, Di động, thiết kế cơ sở dữ liệu... Giúp các bạn Học sinh, Sinh viên có các kiến thức Nền tảng để có thể áp dụng khi làm các Đồ án/Luận văn, các dự án Outsource/Outside/Freelancer, và ra trường có thể apply vào các công ty làm việc được ngay.
Mình dựa trên các kinh nghiệm từ khi thực hiện các dự án Phần mềm, đúc kết được thành một bản mô tả Database tuy căn bản nhưng cũng có thể đáp ứng được các nhu cầu cần có về một trang web Thương mại điện tử có Quản lý Kho hàng với số lượng Tồn kho theo thời gian thực, có thể áp dụng vào các dự án Thương mại (production) thực tế được.
Sau khi có các Kiến thức Nền tảng, các bạn có thể vững vàng đi tiếp con đường của mình, chúc Thành công 🧡💛💚💙💜

Các tính năng Database có thể đáp ứng

Database được thiết kế để có thể thực hiện các chức năng:

  • Quản lý thông tin Người dùng.
  • Quản lý thông tin Khách hàng.
  • Quản lý thông tin Xác thực và Phân quyền Hệ thống.
  • Quản lý thông tin Sản phẩm, Nhà cung cấp. Phân loại Sản phẩm theo chuyên mục/loại/nhóm...
  • Quản lý Đa phương tiện (ảnh, video, tập tin đính kèm...) mô tả về Sản phẩm.
  • Quản lý Kho hàng - Nhập/Xuất kho.
  • Quản lý Số lượng tồn kho theo thời gian thực.
  • Quản lý Đơn hàng, chi tiết Đơn hàng - Gởi thông báo đến Người Quản trị qua các kênh Email/SMS/Mạng xã hội Facebook, Instagram, Zalo,....
  • Quản lý Khuyến mãi theo các hình thức Voucher/Coupon.
  • Quản lý Thanh toán Trực tuyến qua các cổng Thanh toán phổ biến (Ngân hàng / Paypal / Stripe / Momo...).

Mô tả chi tiết các tables

acl_permissions
Bảng chứa dữ liệu về Quyền
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
name VARCHAR(500)               Tên Quyền
display_name VARCHAR(500)                 NULL Tên Quyền thân thiện (dễ hiểu cho người dùng)
guard_name VARCHAR(500)               Tên guard bảo vệ
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

acl_role_has_permissions
Bảng chứa dữ liệu xác định Vai trò nào <-> Có những Quyền nào?
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
role_id BIGINT(20)           (FK) Vai trò nào?
permission_id BIGINT(20)           (FK) Quyền nào?

acl_roles
Bảng chứa dữ liệu về Vai trò
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
name VARCHAR(500)               Tên Vai trò
display_name VARCHAR(500)                 NULL Tên Vai trò thân thiện (dễ hiểu với người dùng)
guard_name VARCHAR(500)               Tên guard bảo vệ
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

acl_user_has_permissions
Bảng chứa dữ liệu xác định Người dùng nào <-> Có những Quyền nào?
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
user_id BIGINT(20)           (FK) Người dùng nào?
permission_id BIGINT(20)           (FK) Quyền nào?

acl_user_has_roles
Bảng chứa dữ liệu xác định Người dùng nào <-> Có những Vai trò nào?
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
user_id BIGINT(20)           (FK) Người dùng nào?
role_id BIGINT(20)           (FK) Vai trò nào?

acl_users
Bảng chứa dữ liệu về Người dùng trong Hệ thống
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
username VARCHAR(191)               Tên đăng nhập
password VARCHAR(500)               Mật khẩu (mặc định: user@123)
last_name VARCHAR(255)               Họ và tên lót
first_name VARCHAR(255)               Tên
gender TINYINT(3)             0 Giới tính: #0: Nam; #1: Nữ
email VARCHAR(191)               Email
birthday DATETIME                 NULL Ngày sinh
avatar VARCHAR(500)                 NULL Hình đại diện
code VARCHAR(255)                 NULL Mã CMND / CCCD
job_title VARCHAR(255)                 NULL Chức danh
department VARCHAR(255)                 NULL Phòng
manager_id BIGINT(20)               NULL Người phụ trách Quản lý
phone VARCHAR(25)                 NULL Số điện thoại
address1 VARCHAR(500)                 NULL Địa chỉ 1
address2 VARCHAR(500)                 NULL Địa chỉ 2
city VARCHAR(255)                 NULL Thành phố
state VARCHAR(255)                 NULL Bang
postal_code VARCHAR(15)                 NULL Mã bưu chính
country VARCHAR(255)                 NULL Quốc gia
remember_token VARCHAR(255)                 NULL Token ghi nhớ Đăng nhập
active_code VARCHAR(255)                 NULL Mã kích hoạt
status TINYINT(4)                 NULL Trạng thái: #0: chưa kích hoạt; #1: đã kích hoạt
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_categories
Bảng chứa dữ liệu về các Chuyên mục (dùng để phân loại/phân nhóm Sản phẩm)
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
category_code VARCHAR(50)               Mã chuyên mục
category_name VARCHAR(500)               Tên chuyên mục
description TEXT                 NULL Diễn giải
image TEXT                 NULL Ảnh đại diện
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_customer_vouchers
Table lưu thông tin Khách hàng nào được áp dụng Voucher nào?
Có thể lập danh sách Khách hàng bằng cách:
- Tạo chức năng tự động tạo Voucher cho Khách hàng thân thiết (mua nhiều hàng hóa trong năm, ...) khi đến sinh nhật của họ.
- Người thân của Giám đốc ;)
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
customer_id BIGINT(20)           Khách hàng nào?
voucher_id BIGINT(20)           Voucher nào áp dụng?
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_customers
Bảng chứa dữ liệu về Khách hàng
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)        
username VARCHAR(191)               Tên đăng nhập
password VARCHAR(500)               Mật khẩu (mặc định: customer@123)
last_name VARCHAR(255)               Họ và tên lót
first_name VARCHAR(255)               Tên
gender TINYINT(4)               0 Giới tính: #0: Nam; #1: Nữ
email VARCHAR(191)               Email
birthday DATETIME                 NULL Ngày sinh
avatar VARCHAR(500)                 NULL Ảnh đại diện
code VARCHAR(255)               Mã CMND / CCCD
company VARCHAR(255)                 NULL Công ty
phone VARCHAR(25)                 NULL Số điện thoại
billing_address VARCHAR(500)                 NULL Địa chỉ Thanh toán
shipping_address VARCHAR(500)                 NULL Địa chỉ Giao hàng
city VARCHAR(255)                 NULL Thành phố
state VARCHAR(255)                 NULL Bang
postal_code VARCHAR(15)                 NULL Mã bưu chính
country VARCHAR(255)                 NULL Quốc gia
remember_token VARCHAR(255)                 NULL Token ghi nhớ đăng nhập
activate_code VARCHAR(255)                 NULL Mã kích hoạt
status TINYINT(4)                 NULL Trạng thái: #0: chưa kích hoạt; #1: đã kích hoạt
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_export_details
Bảng chứa dữ liệu về các Sản phẩm được xuất trong Phiếu Xuất
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
export_id BIGINT(20)           Thuộc phiếu Xuất nào?
product_id BIGINT(20)           Sản phẩm nào xuất đi?
quantity DECIMAL(18,4)               0.0000 Số lượng xuất
unit_price DECIMAL(19,4)               0.0000 Đơn giá xuất
import_detail_id BIGINT(20)           Xuất từ chi tiết nhập kho nào?

shop_exports
Bảng chứa dữ liệu về các Phiếu Xuất
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
store_id BIGINT(20)           Xuất từ kho hàng nào?
employee_id BIGINT(20)           Nhân viên nào lập phiếu xuất?
export_date DATETIME               Ngày Xuất kho
description TEXT                 NULL Diễn giải
order_id BIGINT(20)           Xuất cho đơn hàng nào?
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_import_details
Bảng chứa dữ liệu về các Sản phẩm được nhập trong Phiếu Nhập
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
import_id BIGINT(20)           Thuộc phiếu Nhập nào?
product_id BIGINT(20)           Sản phẩm nào nhập vào?
quantity DECIMAL(18,4)               0.0000 Số lượng nhập
unit_price DECIMAL(19,4)               0.0000 Đơn giá nhập

shop_imports
Bảng chứa dữ liệu về các Phiếu Nhập
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
store_id BIGINT(20)           Thuộc kho hàng nào?
employee_id BIGINT(20)           Nhân viên nào lập phiếu nhập?
import_date DATETIME               Ngày Nhập kho
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_order_details
Bảng chứa dữ liệu về các Sản phẩm đã mua trong Đơn hàng
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
order_id BIGINT(20)           Thuộc đơn hàng nào?
product_id BIGINT(20)           Sản phẩm nào?
quantity DECIMAL(18,4)               0.0000 Số lượng sản phẩm trong đơn hàng
unit_price DECIMAL(19,4)               0.0000 Giá bán của Sản phẩm trong Đơn hàng
discount_percentage FLOAT               0 Giảm giá theo % từng Sản phẩm trong Đơn hàng
discount_amout DOUBLE               0 Giảm giá theo Số tiền cụ thể cho từng Sản phẩm trong Đơn hàng
order_detail_status VARCHAR(50)                 NULL Trạng thái của từng Sản phẩm trong Đơn hàng
date_allocated DATETIME                 NULL Ngày Sản phẩm này đã chuyển đến tay Khách hàng

shop_orders
Bảng chứa dữ liệu về các Đơn hàng
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
employee_id BIGINT(20)           Thuộc nhân viên nào xử lý?
customer_id BIGINT(20)           Thuộc khách hàng nào?
order_date DATETIME               Ngày tạo Đơn hàng
shipped_date DATETIME                 NULL Ngày giao hàng
ship_name VARCHAR(50)               Họ tên Người giao hàng
ship_address1 VARCHAR(500)               Giao hàng đến Địa chỉ 1
ship_address2 VARCHAR(500)                 NULL Giao hàng đến Địa chỉ 2
ship_city VARCHAR(255)               Giao hàng đến Thành phố
ship_state VARCHAR(255)                 NULL Giao hàng đến Bang
ship_postal_code VARCHAR(50)                 NULL Giao hàng đến Mã bưu chính
ship_country VARCHAR(255)               Giao hàng đến Quốc gia
shipping_fee DECIMAL(19,4)               0.0000 Phí giao hàng
payment_type_id BIGINT(20)           0 Phương thức Thanh toán nào?
paid_date DATETIME                 NULL Ngày thanh toán
order_status VARCHAR(50)               Trạng thái: #New: mới tạo Đơn hàng -> #On Hold: đang xử lý -> #Shipped: đã giao hàng -> #Complete: đã hoàn tất đơn hàng (khách đã thanh toán và nhận hàng xong)
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_payment_types
Bảng chứa dữ liệu về các Phương thức Thanh toán
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
payment_code VARCHAR(50)               Mã hình thức thanh toán
payment_name VARCHAR(500)               Tên hình thức thanh toán
description TEXT                 NULL Diễn giải
image TEXT                 NULL Ảnh đại diện
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_post_categories
Bảng chứa dữ liệu về các Chuyên mục (dùng để phân loại/phân nhóm các Bài viết/Trang)
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
post_category_code VARCHAR(50)               Mã chuyên mục
post_category_name VARCHAR(500)               Tên chuyên mục
description MEDIUMTEXT                 NULL Diễn giải
image MEDIUMTEXT                 NULL Ảnh đại diện
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_posts
Bảng chứa dữ liệu về các Bài viết PR trên trang web
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
post_slug TEXT               '' Đường dẫn của bài viết
post_title TEXT               '' Tiêu đề bài viết
post_content MEDIUMTEXT                 NULL Nội dung bài viết
post_excerpt MEDIUMTEXT                 NULL Diễn giải về Cấu hình
post_type VARCHAR(500)               'post' Loại bài viết: #1: bài viết, #2: trang cố định
post_status VARCHAR(500)               'draft' Trạng thái bài viết: #draft: viết nháp; #publish: đăng lên trang web; ...
post_image MEDIUMTEXT                 NULL Ảnh đại diện bài viết
user_id BIGINT(20)          
post_category_id BIGINT(20)             NULL Thuộc chuyên mục nào?
created_at TIMESTAMP               CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP() Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_product_discounts
Table chứa thông tin các sản phẩm đang được khuyến mãi trong khoảng thời gian (từ ngày - đến ngày hết hạn).
Thường dùng cho các chức năng:
- Hiển thị danh sách Sản phẩm với Giá tiền cũ và Giá tiền mới.
- Hiển thị danh sách Sản phẩm với % được giảm giá...
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
product_id BIGINT(20)           Thuộc sản phẩm nào?
discount_name VARCHAR(500)               Tên Sự kiện Giảm giá
discount_amount DOUBLE               0 % giảm giá hoặc số tiền giảm giá cụ thể
is_fixed BIT(1)               b'0' #True(1): giảm giá theo số tiền cụ thể; #False(0) giảm giá theo %
start_date TIMESTAMP               '0000-00-00 00:00:00' Ngày bắt đầu Giảm giá
end_date TIMESTAMP               '0000-00-00 00:00:00' Ngày kết thúc Giảm giá

shop_product_images
Bảng chứa dữ liệu về các Hình ảnh liên quan của Sản phẩm (1 Sản phẩm nên chụp nhiều góc cạnh để Khách hàng có cái nhìn khách quan)
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
product_id BIGINT(20)           Thuộc sản phẩm nào?
image VARCHAR(500)               Ảnh sản phẩm

shop_product_reviews
Bảng chứa dữ liệu các Đánh giá về Sản phẩm
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
product_id BIGINT(20)           Sản phẩm nào được Đánh giá?
customer_id BIGINT(20)           0 Khách hàng nào đánh giá?
rating FLOAT               Số điểm đánh giá: từ 0 -> 5 sao
comment TEXT               Nội dung Đánh giá
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_product_vouchers
Table lưu thông tin Sản phẩm nào được áp dụng Voucher nào?
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
product_id BIGINT(20)           Sản phẩm nào?
voucher_id BIGINT(20)           Voucher nào áp dụng?
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_products
Bảng chứa dữ liệu về các Sản phẩm
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
product_code VARCHAR(25)               Mã sản phẩm
product_name VARCHAR(50)               Tên sản phẩm
image TEXT                 NULL Ảnh đại diện
short_description VARCHAR(250)                 NULL Mô tả ngắn
description TEXT                 NULL Mô tả
standard_cost DECIMAL(19,4)               0.0000 Giá nhập
list_price DECIMAL(19,4)               0.0000 Giá niêm yết (giá bán)
quantity_per_unit VARCHAR(50)                 NULL Số lượng hiện có của mỗi Sản phẩm (số lượng thực có trong kho)
discontinued TINYINT(4)               0 Xác định Sản phẩm này là Ngưng bán?
is_featured BIT(1)               b'0' Có phải là Sản phẩm nổi bật không?
is_new BIT(1)               b'0' Có phải là Sản phẩm mới nhập về không?
category_id BIGINT(20)             NULL Thuộc chuyên mục nào?
supplier_id BIGINT(20)             NULL Thuộc nhà cung cấp nào?
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_settings
Bảng chứa dữ liệu về các Cấu hình sử dụng trong Hệ thống
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
group VARCHAR(500)               Phân nhóm Cấu hình
key VARCHAR(500)             Mã Cấu hình
value TEXT               Giá trị Cấu hình
description TEXT                 Diễn giải về Cấu hình
created_at TIMESTAMP                 Ngày tạo mới
updated_at TIMESTAMP                 Ngày cập nhật

shop_stores
Bảng chứa dữ liệu về Kho hàng
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
store_code VARCHAR(50)               Mã kho
store_name VARCHAR(500)               Tên kho
description TEXT                 NULL Diễn giải
image TEXT                 NULL Ảnh đại diện
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_suppliers
Bảng chứa dữ liệu về các Nhà cung cấp
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
supplier_code VARCHAR(50)               Mã nhà cung cấp
supplier_name VARCHAR(500)               Tên nhà cung cấp
description TEXT                 NULL Diễn giải
image TEXT                 NULL Ảnh đại diện
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật

shop_vouchers
Table lưu thông tin Danh sách các phiếu Khuyến mãi, Giảm giá. Thông thường:
1. Voucher (phiếu khuyến mãi): giảm theo số tiền cụ thể
2. Coupon (phiếu giảm giá %): thường giảm theo % giá trị đơn hàng
Column name DataType PK FK NN UQ BIN UN ZF AI Default Comment
id BIGINT(20)         Khóa chính
voucher_code VARCHAR(500)               Mã voucher
voucher_name VARCHAR(500)               Tên voucher
description TEXT                 NULL Mô tả voucher
uses INT(10)             0 Số lượng voucher đã sử dụng
max_uses INT(10)             0 Số lượng tối đa voucher có thể sử dụng. Nếu =0 là không xác định
max_uses_user INT(10)             0 Người dùng có thể sử dụng voucher này bao nhiêu lần? Nếu =0 là không xác định
type TINYINT(3)             1 Loại voucher: #1: voucher, #2: coupon
discount_amount DOUBLE             0 % giảm giá hoặc số tiền giảm giá cụ thể
is_fixed BIT(1)               b'1' #True(1): giảm giá theo số tiền cụ thể; #False(0): giảm giá theo %
start_date TIMESTAMP               '0000-00-00 00:00:00' Ngày bắt đầu voucher
end_date TIMESTAMP               '0000-00-00 00:00:00' Ngày kết thúc voucher
created_at TIMESTAMP                 NULL Ngày tạo mới
updated_at TIMESTAMP                 NULL Ngày cập nhật
deleted_at TIMESTAMP                 NULL Ngày xóa