Một hệ thống quản lý bán hàng cho Shopee cần được thiết kế để không chỉ đảm bảoviệc cung cấp sản phẩm mà còn quản lý hiệu quả từ hàng tồn kho, giao dịch, đến các yêu cầu hỗ trợ từ khách
Mục tiêu
Quản lý thông tin hiệu quả giúp người bán tổ chức và quản lý thông tin sản phẩm, đơn hàng và phản hồi khách hàng một cách khoa học, từ đó làm cho việc quản lý trở nên dễ dàng hơn.
Phân tích xu hướng và hiệu quả bán hàng giúp người bán ra quyết định kinh doanh chính xác hơn thông qua việc lưu trữ dữ liệu về doanh số, xu hướng mua sắm và hành vi khách hàng Điều này cho phép họ tối ưu hóa danh mục sản phẩm và phát triển các chiến lược tiếp thị hiệu quả.
Shopee cá nhân hóa trải nghiệm mua sắm cho khách hàng bằng cách phân tích dữ liệu, từ đó đề xuất các sản phẩm phù hợp với sở thích và nhu cầu của từng người mua, giúp nâng cao sự hài lòng và trải nghiệm mua sắm.
Tối ưu hóa quy trình bán hàng trên Shopee giúp tự động hóa các bước như xử lý đơn hàng, thanh toán và phản hồi, mang lại lợi ích cho người bán bằng cách tiết kiệm thời gian và nâng cao năng suất làm việc.
Người mua có thể dễ dàng tìm kiếm sản phẩm và xem xét đánh giá cũng như nhận xét từ các khách hàng khác, điều này giúp họ lựa chọn sản phẩm phù hợp và tự quản lý nhu cầu mua sắm của mình.
Nhờ vào các thuật toán đề xuất thông minh, người mua sẽ nhận được những gợi ý sản phẩm cá nhân hóa, giúp họ dễ dàng khám phá các sản phẩm mới và phù hợp với nhu cầu của mình.
Hệ thống Shopee cung cấp tính năng theo dõi đơn hàng và lịch sử mua sắm, giúp người mua dễ dàng kiểm soát tình trạng đơn hàng và quản lý chi tiêu hiệu quả.
Shopee cam kết bảo vệ thông tin khách hàng bằng cách lưu trữ và bảo mật dữ liệu một cách an toàn, giúp giảm thiểu rủi ro rò rỉ thông tin trong quá trình giao dịch Đồng thời, nền tảng này cũng nâng cao chất lượng dịch vụ hỗ trợ khách hàng thông qua các kênh phản hồi hiệu quả.
GIỚI THIỆU MÔ HÌNH KINH DOANH
Quy tắc hoạt động
1.1 Quản lý tài khoản người dùng
Để sử dụng Shopee, người dùng, bao gồm cả người mua và người bán, cần đăng ký tài khoản bằng cách cung cấp thông tin cá nhân như ID, tên, email, số điện thoại và địa chỉ Lưu ý rằng mỗi số điện thoại chỉ được phép sử dụng để tạo một tài khoản duy nhất.
Người bán cần bổ sung thông tin về cửa hàng của họ, bao gồm tên cửa hàng, địa chỉ, mô tả và đánh giá từ khách hàng.
Sản phẩm trên Shopee cần có các thuộc tính cơ bản như ID, tên, mô tả, giá, số lượng tồn kho và phân loại danh mục Mỗi danh mục sản phẩm cũng phải được xác định với ID và tên danh mục để phân loại các sản phẩm vào những nhóm cụ thể.
Khách hàng có thể dễ dàng tìm kiếm và chọn sản phẩm để thêm vào giỏ hàng Khi hoàn tất đặt hàng, hệ thống sẽ tự động tạo một đơn hàng mới, ghi nhận các thông tin quan trọng như ngày tạo, trạng thái đơn hàng (đang xử lý, chờ xác nhận, đang vận chuyển, đã giao, đã hủy) và tổng giá trị đơn hàng.
Sau khi đơn hàng được xác nhận, khách hàng có thể thanh toán bằng nhiều phương thức khác nhau, bao gồm thẻ tín dụng, chuyển khoản ngân hàng, ví điện tử, hoặc lựa chọn thanh toán khi nhận hàng.
Sau khi khách hàng hoàn tất đơn hàng, người bán sẽ nhận thông báo và bắt đầu quy trình chuẩn bị giao hàng Để đảm bảo sản phẩm được chuyển đến tay khách hàng một cách nhanh chóng, người bán sẽ hợp tác với các dịch vụ vận chuyển Khách hàng có thể dễ dàng theo dõi trạng thái đơn hàng của mình thông qua ứng dụng.
Mỗi đơn hàng sẽ được kết nối với một đơn vị vận chuyển, bao gồm thông tin về mã định danh, tên đơn vị, hình thức giao hàng, phí vận chuyển và thời gian giao hàng dự kiến.
Các trạng thái vận chuyển cần được theo dõi bao gồm đã lấy hàng, đang vận chuyển, đang giao hàng, đã giao hàng và giao hàng thất bại, cho đến khi đơn hàng được hoàn tất.
1.5 Quản lý đánh giá và phản hồi
Sau khi nhận hàng, khách hàng có thể để lại đánh giá và phản hồi về sản phẩm và dịch vụ của người bán.
Các đánh giá này sẽ được sử dụng để cải thiện dịch vụ và giúp người dùng khác đưa ra quyết định mua sắm.
1.6 Hỗ trợ và xử lý yêu cầu
Shopee cung cấp dịch vụ hỗ trợ khách hàng để giải quyết các vấn đề liên quan đến sản phẩm, thanh toán, giao hàng và hoàn tiền mà người dùng gặp phải.
Người dùng có thể gửi yêu cầu hỗ trợ trực tiếp trên nền tảng Shopee, nơi hệ thống sẽ tự động phân loại và chuyển đến nhân viên hỗ trợ phù hợp Mỗi yêu cầu sẽ được theo dõi và phản hồi kịp thời, giúp người dùng nắm bắt tình trạng xử lý và đảm bảo vấn đề được giải quyết nhanh chóng.
Mô tả bài toán
Shopee là nền tảng thương mại điện tử phổ biến, kết nối người mua và người bán để thực hiện giao dịch Người mua có thể tìm kiếm và mua sắm hàng ngàn sản phẩm từ nhiều danh mục khác nhau với sự đa dạng của người bán Để quản lý dữ liệu hiệu quả, hệ thống cần một mô hình dữ liệu chính xác và rõ ràng để lưu trữ và theo dõi thông tin liên quan đến người dùng, sản phẩm, đơn hàng, thanh toán và đánh giá từ khách hàng.
Shopee quản lý người mua, người bán và nhân viên thông qua việc yêu cầu người dùng đăng ký tài khoản với thông tin cá nhân như ID, tên, email, số điện thoại và địa chỉ, trong đó mỗi số điện thoại chỉ được tạo một tài khoản Người bán cần cung cấp thông tin về cửa hàng, bao gồm tên, địa chỉ, mô tả và đánh giá từ khách hàng để tạo sự tin tưởng Nhân viên cũng cần thêm thông tin về công việc của họ Mỗi người dùng chỉ đảm nhận một vai trò duy nhất: người mua, người bán hoặc nhân viên, trong khi mỗi người mua có thể thực hiện nhiều đơn hàng và mỗi người bán có thể bán nhiều sản phẩm.
Sản phẩm được định nghĩa bởi các thuộc tính quan trọng như ID, tên, mô tả, giá cả và số lượng tồn kho Mỗi sản phẩm chỉ thuộc về một danh mục duy nhất, nhưng có thể xuất hiện trong nhiều đơn hàng khác nhau.
Sau khi lựa chọn sản phẩm, khách hàng có thể thêm sản phẩm vào giỏ hàng Giỏ hàng chứa danh sách các sản phẩm yêu thích.
Danh mục sản phẩm trên Shopee giúp phân loại các sản phẩm có tính chất tương tự thành các nhóm cụ thể, bao gồm ID và tên danh mục Sự đa dạng của sản phẩm trên Shopee cho phép mỗi sản phẩm thuộc về một danh mục nhất định, giúp người mua dễ dàng tìm kiếm và lựa chọn Đồng thời, một danh mục có thể chứa nhiều sản phẩm khác nhau, tạo ra sự phong phú trong việc mua sắm.
Khi người mua đặt hàng, hệ thống sẽ tạo đơn hàng với các thông tin như ngày tạo, mã đơn hàng, mã khách hàng và trạng thái đơn hàng (đang xử lý, chờ xác nhận, đang vận chuyển, đã giao, đã hủy) Đơn hàng còn ghi nhận số lượng, đơn giá, phương thức thanh toán (thẻ tín dụng, thẻ ghi nợ, ví điện tử ShopeePay, hoặc thanh toán khi nhận hàng) và tình trạng thanh toán Đặc biệt, đơn hàng có thể bao gồm nhiều sản phẩm từ nhiều người bán khác nhau, yêu cầu hệ thống liên kết chi tiết các sản phẩm từ các gian hàng khác nhau.
Shopee cung cấp mã giảm giá và mã freeship để người mua tiết kiệm chi phí khi thanh toán và vận chuyển Mỗi mã giảm giá và freeship đều có ID, loại mã, giá trị giảm giá, thời gian hiệu lực, số lần sử dụng và điều kiện áp dụng Mã freeship còn bao gồm hình thức vận chuyển và đơn vị vận chuyển Mỗi đơn hàng chỉ được áp dụng một mã giảm giá và một mã freeship, nhưng một mã giảm giá có thể dùng cho nhiều đơn hàng khác nhau Để quản lý chi tiết từng sản phẩm trong đơn hàng, Shopee sử dụng bảng chi tiết đơn hàng, ghi lại số lượng, giá từng sản phẩm và tổng giá trị Để nâng cao chất lượng dịch vụ, Shopee cho phép người mua đánh giá và nhận xét về sản phẩm và người bán, với mỗi đánh giá bao gồm ID, nội dung, số sao, ngày đánh giá và thông tin liên quan đến người mua và sản phẩm.
Shopee đóng vai trò quan trọng trong việc kết nối người mua và người bán, hỗ trợ giải quyết các vấn đề giữa hai bên Để nâng cao trải nghiệm người dùng, hệ thống cần có chức năng gửi yêu cầu hỗ trợ hoặc khiếu nại liên quan đến đơn hàng và sản phẩm.
Sau khi hoàn tất giao dịch, người mua hoặc người bán có thể gặp vấn đề và cần hỗ trợ, họ sẽ điền thông tin vào mẫu yêu cầu trên nền tảng Shopee Hệ thống sẽ tự động ghi nhận và chuyển thông tin đến nhân viên xử lý, mỗi yêu cầu sẽ được cấp một ID riêng cùng với nội dung vấn đề, trạng thái (đã tiếp nhận, đang xử lý, đã giải quyết), ngày gửi và thông tin người gửi Chẳng hạn, nếu người mua gặp sự cố với đơn hàng giao sai, họ có thể dễ dàng gửi yêu cầu hỗ trợ Người dùng cũng có thể tạo nhiều yêu cầu hỗ trợ khác nhau.
Sau khi yêu cầu hỗ trợ được tạo, hệ thống tự động chuyển đến nhân viên hỗ trợ, người sẽ xem xét và phản hồi Hệ thống lưu trữ phản hồi bao gồm ID phản hồi, nội dung, ngày và thông tin nhân viên thực hiện, giúp người dùng theo dõi tình trạng yêu cầu Nhân viên Shopee có thông tin cá nhân như ID, tên, email, số điện thoại và chức vụ trong hệ thống, với mỗi yêu cầu có thể được xử lý bởi nhiều nhân viên khác nhau.
THIẾT KẾ MÔ HÌNH QUAN HỆ THỰC THỂ ER (HOẶC ERR)
Các thực thể có trong mô hình
KHÁCH HÀNG: Mã người dùng(identifier), tên, số điện thoại, email, địa chỉ (bao gồm số nhà, đường, xã, huyện, tỉnh/thành phố)
NGƯỜI BÁN: Mã người dùng(identifier), tên, số điện thoại, email, địa chỉ (bao gồm số nhà, đường, xã, huyện, tỉnh/thành phố), cửa hàng
NHÂN VIÊN: Mã người dùng(identifier), tên, số điện thoại, email, địa chỉ (bao gồm số nhà, đường, xã, huyện, tỉnh/thành phố), vị trí công việc
- SẢN PHẨM: Mã sản phẩm(identifier), tên sản phẩm, giá, mô tả, mã danh mục(foreign key to DANH MỤC)
- DANH MỤC : Mã danh mục(identifier), tên danh mục
- ĐƠN HÀNG: Mã đơn hàng(identifier), ngày tạo, trạng thái đơn hàng, phương thức thanh toán, trạng thái thanh toán , mã người dùng (foreign key to NGƯỜI DÙNG)
- VOUCHER: Mã voucher(identifier), chi tiết (bao gồm đối tượng áp dụng, điều kiện áp dụng, thời gian áp dụng), loại voucher:
Vận chuyển: Mã voucher(identifier), hình thức vận chuyển, đơn vị vận chuyển
Giảm giá: Mã voucher(identifier), mã danh mục, sản phẩm
- ĐÁNH GIÁ: Mã đánh giá(partial identifier), nội dung đánh giá, số sao, ngày đánh giá
Support requests include essential details such as the request identifier, content of the request, request status, submission date, order ID (which serves as a foreign key to the ORDERS table), and user ID (a foreign key linked to the USERS table).
- PHẢN HỒI: mã phản hồi(identifier), nội dung, ngày phản hồi, mã yêu cầu (foreign key to YÊU CẦU HỖ TRỢ)
- GIÁ BÁN: Mã sản phẩm(identifier), mã người dùng(identifier), giá sản phẩm, số lượng tồn kho
1 https://drive.google.com/file/d/1suyjLL3pYQ0x6L-9ijiZpmSr0eHqRcCj/view
Mối quan hệ giữa các thực thể
+ Một khách hàng có thể không mua hoặc mua nhiều sản phẩm
+ Một sản phẩm có thể được mua bởi không hoặc nhiều khách hàng
+ Một khách hàng có thể không đặt hoặc đặt nhiều đơn hàng
+ Một đơn hàng chỉ được đặt bởi một và chỉ một khách hàng
+ Một đơn hàng phải có một hoặc nhiều sản phẩm
+ Một sản phẩm có thể thuộc không hoặc nhiều đơn hàng
+ Một danh mục có thể có một hoặc nhiều sản phẩm
+ Một sản phẩm chỉ nằm trong một và chỉ một danh mục
+ Một sản phẩm có thể được bán với một hoặc nhiều giá khác nhau
+ Một giá bán được người bán áp dụng cho một sản phẩm
+ Một người bán có thể bán sản phẩm với một hoặc nhiều giá khác nhau ở từng thời điểm + Một giá bán được quyết định bởi một người bán
+ Một voucher được áp dụng cho một đơn hàng
+ Một đơn hàng có thể áp dụng không hoặc tối đa 2 voucher
+ Voucher có hình thức vận chuyển, đơn vị vận chuyển là voucher vận chuyển
+ Voucher không có hình thức vận chuyển, đơn vị vận chuyển là voucher khuyến mãi
- DANH MỤC – VOUCHER GIẢM GIÁ(1 – N)
+ Một voucher giảm giá được áp dụng cho một danh mục sản phẩm
+ Một danh mục sản phẩm có nhiều voucher giảm giá
+ Một đơn hàng có thể nhận được không hoặc nhiều đánh giá từ khách hàng
+ Mỗi đánh giá của khách hàng chỉ thuộc về một đơn hàng
+ Đánh giá chỉ xảy ra khi khách hàng có đơn hàng thành công
- ĐƠN HÀNG – YÊU CẦU HỖ TRỢ (1 – N)
+ Một đơn hàng có thể không có yêu cầu hỗ trợ hoặc có nhiều yêu cầu hỗ trợ
+ Mỗi yêu cầu hỗ trợ thuộc về một đơn hàng có thể yêu cầu hỗ trợ nhiều đơn hàng
- KHÁCH HÀNG – YÊU CẦU HỖ TRỢ (1 – N)
Một khách hàng có thể không cần hỗ trợ hoặc có thể có nhiều yêu cầu hỗ trợ liên quan đến đơn hàng của mình Mỗi yêu cầu hỗ trợ đều được gửi bởi một khách hàng cụ thể.
- YÊU CẦU HỖ TRỢ – PHẢN HỒI (1 – 1)
+ Một yêu cầu hỗ trợ có duy nhất một phản hồi
+ Mỗi phản hồi chỉ thuộc về một yêu cầu hỗ trợ
+ Một nhân viên chỉ thực hiện một phản hồi
+ Một phản hồi được thực hiện bởi nhiều nhân viên
Sơ đồ quan hệ thực thể EER
THIẾT KẾ CSDL LOGIC
Lược đồ quan hệ
Hình 3 Lược đồ quan hệ 3
Sơ đồ phụ thuộc hàm
Hình 4 Sơ đồ phụ thuộc hàm 4
3 https://drive.google.com/file/d/16-mtcE1psp6Xf9sqoobQbFCcElub-wmO/view
THIẾT KẾ CSDL VẬT LÝ
Hệ quản trị CSDL
Nhóm chúng em chọn hệ quản trị CSDL SQL Server.
Kiểu dữ liệu cho từng thuộc tính
The article outlines the structure of a database table, highlighting key data types and constraints for each column The primary key, 'ma_nguoi_dung,' is defined as a non-null VARCHAR(10) The 'ten_nguoi_dung' column, which stores user names, is also a non-null VARCHAR(100) The 'email' field can be left empty, as it is nullable, while the 'sdt_nguoi_dung' column requires a non-null VARCHAR(10) for phone numbers Lastly, the 'dia_chi' column is designated as TEXT and is mandatory, ensuring that every user record includes an address.
COLUMN KEY DATA TYPE NOTE ma_nguoi_dung PRIMARY KEY VARCHAR(10) NOT NULL
COLUMN KEY DATA TYPE NOTE ma_don_hang PRIMARY
VARCHAR(10) NOT NULL ma_nguoi_dung FOREIGN
VARCHAR(10) NOT NULL ngay_tao_don DATE NOT NULL trang_thai_don_han g
VARCHAR(20) TYPE(‘cho_van_chuyen’,‘dang
4 https://drive.google.com/file/d/1yIx_KGDpTmw5m1NW7nn_yuvVBgrBVTpC/view hinh_thuc_thanh_toa n
VARCHAR(30) TYPE(‘thanh_toan_khi_nhan_h ang’,
‘thanh_toan_qua_vi_momo’,
‘thanh_toan_bang_ngan_hang’) trang_thai_thanh_to an
VARCHAR(20) TYPE(‘chua_thanh_toan’,
The article outlines the structure of a database table with key data types and constraints It specifies that the "ma_yeu_cau" serves as the primary key, ensuring unique identification, while "ma_don_hang" and "ma_nguoi_dung" function as foreign keys to establish relationships with other tables The "noi_dung_yeu_cau" field is designated for storing request content in text format, and the "ngay_gui_yeu_cau" field captures the date the request is submitted Additionally, the "trang_thai_yeu_cau" field is included to track the status of the request.
CHAR(8) TYPE(‘da_xu_ly’,
COLUMN KEY DATA TYPE NOTE ma_phan_hoi PRIMARY KEY VARCHAR(10) NOT NULL ma_yeu_cau VARCHAR(10) NOT NULL noi_dung_phan_ho i
TEXT NOT NULL ngay_phan_hoi DATE NOT NULL
COLUMN KEY DATA TYPE NOTE ma_nguoi_dung PRIMARY KEY VARCHAR(10) NOT NULL cua_hang VARCHAR(100) NOT NULL
COLUMN KEY DATA TYPE NOTE ma_nguoi_dung PRIMARY KEY VARCHAR(10) NOT NULL ma_phan_hoi FOREIGN KEY VARCHAR(10) NOT NULL cong_viec VARCHAR(50) NOT NULL
COLUMN KEY DATA TYPE NOTE ma_danh_muc PRIMARY KEY VARCHAR(10) NOT NULL ten_danh_muc VARCHAR(100) NOT NULL
The article outlines a database schema with key data types for a product table It includes a primary key, "ma_san_pham," defined as a non-null VARCHAR(10), and a foreign key, "ma_danh_muc," also a non-null VARCHAR(10) Additionally, the table features "ten_san_pham," which is a mandatory VARCHAR(100), and "mo_ta_sp," a description field that can accept null values and is defined as TEXT.
The article outlines the key data structure for a product inventory system, highlighting essential fields The 'ma_san_pham' and 'ma_nguoi_dung' serve as primary keys, both defined as non-null VARCHAR(10) types, ensuring unique identification of products and users The 'gia_san_pham' is a DECIMAL(12, 2) type, representing the product price with precision, while 'so_luong_ton_kho' is an INT type, indicating the quantity of stock available This structured data format is crucial for effective inventory management and user tracking.
The article outlines the key data structure for a voucher system, highlighting essential fields such as 'ma_voucher', which serves as the primary key and is defined as a non-null VARCHAR(10) Additionally, 'ma_don_hang' is established as a foreign key, also a non-null VARCHAR(10) The 'chi_tiet' field is designated for detailed text information, while 'loai_voucher' categorizes the voucher type with a non-null VARCHAR(50) specification.
COLUMN KEY DATA TYPE NOTE ma_voucher PRIMARY KEY VARCHAR(10) NOT NULL hinh_thuc_van_chuyen VARCHAR(50) NOT NULL don_vi_van_chuyen VARCHAR(50) NOT NULL
COLUMN KEY DATA TYPE NOTE ma_voucher PRIMARY KEY VARCHAR(10) NOT NULL ma_danh_muc FOREIGN KEY VARCHAR(10) NOT NULL
The key data structure includes the following columns: 'ma_don_hang' and 'ma_san_pham', both defined as primary keys with a VARCHAR data type of 10 characters, and are mandatory fields Additionally, 'so_luong' is a required field of type TINYINT, while 'tong_tien' is a necessary DECIMAL field with a precision of 12 and a scale of 3.
The table structure includes a primary key for 'ma_don_hang' and 'ma_danh_gia', both defined as VARCHAR(10) and marked as NOT NULL The 'noi_dung_danh_gia' field is a TEXT type that allows NULL values, while 'so_sao' is a TINYINT type that can also be NULL Additionally, the 'ngay_danh_gia' field is of DATE type and is required, ensuring that a review date is always recorded.
COLUMN KEY DATA TYPE NOTE ma_san_pham PRIMARY KEY VARCHAR(10) NOT NULL ma_nguoi_dung PRIMARY KEY VARCHAR(10) NOT NULL so_luong TINYINT NOT NULL
Tạo CSDL và các bảng dữ liệu
Tạo bảng, khóa ngoại và khóa chính
The SQL command creates a table named 'nguoi_dung' with the primary key 'ma_nguoi_dung' as a non-null VARCHAR(10) It includes additional fields for 'ten_nguoi_dung' as a non-null VARCHAR(100), 'email' as a nullable VARCHAR(100), 'sdt_nguoi_dung' as a non-null VARCHAR(10), and 'dia_chi' as a non-null TEXT This structure ensures the storage of essential user information while enforcing data integrity.
CREATE TABLE khach_hang ( ma_nguoi_dung VARCHAR(10) PRIMARY KEY ,
FOREIGN KEY (ma_nguoi_dung) REFERENCES nguoi_dung(ma_nguoi_dung) );
Bảng "don_hang" được tạo ra với các trường bao gồm mã đơn hàng (ma_don_hang) là khóa chính, ngày tạo đơn (ngay_tao_don) không được để trống, trạng thái đơn hàng (trang_thai_don_hang) phải nằm trong các giá trị cho phép như 'cho_van_chuyen', 'dang_van_chuyen', 'da_van_chuyen', và hình thức thanh toán (hinh_thuc_thanh_toan) cũng không được để trống, với các lựa chọn như 'thanh_toan_khi_nhan_hang' và 'thanh_toan_qua_vi_momo'.
Trong cơ sở dữ liệu, cột 'thanh_toan_qua_shopeepay' và 'thanh_toan_bang_ngan_hang' được sử dụng để lưu trữ thông tin về phương thức thanh toán Cột 'trang_thai_thanh_toan' có kiểu dữ liệu VARCHAR(20) và yêu cầu giá trị phải nằm trong các trạng thái 'chua_thanh_toan' hoặc 'da_thanh_toan' Cuối cùng, cột 'ma_nguoi_dung' với kiểu dữ liệu VARCHAR(10) được khai báo là không null, đảm bảo rằng mỗi giao dịch đều liên kết với một người dùng cụ thể.
FOREIGN KEY (ma_nguoi_dung) REFERENCES khach_hang(ma_nguoi_dung) );
- Tạo bảng YEU_CAU_HO_TRO
The SQL command creates a table named "yeu_cau_ho_tro" to manage support requests This table includes essential columns such as "ma_yeu_cau" for the primary key, "ma_don_hang" for order identification, and "ma_nguoi_dung" for user identification It also contains "noi_dung_yeu_cau" to store the request details, "ngay_gui_yeu_cau" for the submission date, and "trang_thai_yeu_cau" to track the request status, which is constrained to specific values This structure ensures efficient organization and retrieval of support requests.
('da_xu_ly', 'dang_cho')),
FOREIGN KEY (ma_don_hang) REFERENCES don_hang(ma_don_hang),
FOREIGN KEY (ma_nguoi_dung) REFERENCES khach_hang(ma_nguoi_dung) );
CREATE TABLE phan_hoi ( ma_phan_hoi VARCHAR(10) PRIMARY KEY, ma_yeu_cau VARCHAR(10) not null, noi_dung_phan_hoi TEXT not null, ngay_phan_hoi DATE not null,
FOREIGN KEY (ma_yeu_cau) REFERENCES yeu_cau_ho_tro(ma_yeu_cau ) );
CREATE TABLE nguoi_ban ( ma_nguoi_dung VARCHAR(10) PRIMARY KEY, cua_hang VARCHAR(100) not null,
FOREIGN KEY (ma_nguoi_dung) REFERENCES nguoi_dung(ma_nguoi_dung) );
CREATE TABLE nhan_vien ( ma_nguoi_dung VARCHAR(10) PRIMARY KEY, ma_phan_hoi VARCHAR(10) not null, cong_viec VARCHAR(50) not null,
FOREIGN KEY (ma_phan_hoi ) REFERENCES phan_hoi(ma_phan_hoi ) );
- Tạo bảng DANH_MUC_SAN_PHAM
CREATE TABLE danh_muc_san_pham ( ma_danh_muc VARCHAR(10) PRIMARY KEY, ten_danh_muc VARCHAR(100) not null,
CREATE TABLE san_pham ( ma_san_pham VARCHAR(10) PRIMARY KEY, ten_san_pham VARCHAR(100) not null, mo_ta_sp TEXT null, ma_danh_muc VARCHAR(10) not null,
FOREIGN KEY (ma_danh_muc) REFERENCES danh_muc_san_pham
CREATE TABLE gia_ban ( ma_san_pham VARCHAR(10), ma_nguoi_dung VARCHAR(10), gia_san_pham DECIMAL(12, 2) not null, so_luong_ton_kho INT not null,
PRIMARY KEY (ma_san_pham ,ma_nguoi_dung),
FOREIGN KEY (ma_san_pham ) REFERENCES san_pham(ma_san_pham), FOREIGN KEY (ma_nguoi_dung ) REFERENCES nguoi_ban(ma_nguoi_dung ) );
CREATE TABLE voucher ( ma_voucher VARCHAR(10) PRIMARY KEY, ma_don_hang VARCHAR(10) not null, chi_tiet TEXT not null , loai_voucher VARCHAR(50) not null,
FOREIGN KEY (ma_don_hang) REFERENCES don_hang(ma_don_hang));
CREATE TABLE van_chuyen ( ma_voucher VARCHAR(10) PRIMARY KEY, hinh_thuc_van_chuyen VARCHAR(50) not null, don_vi_van_chuyen VARCHAR(50) not null,
FOREIGN KEY (ma_voucher) REFERENCES voucher(ma_voucher)
CREATE TABLE giam_gia( ma_voucher VARCHAR(10) PRIMARY KEY, ma_danh_muc VARCHAR(10) not null,
FOREIGN KEY (ma_danh_muc) REFERENCES danh_muc_san_pham (ma_danh_muc),
FOREIGN KEY (ma_voucher) REFERENCES voucher(ma_voucher)
- Tạo bảng CHI_TIET_DON_HANG
CREATE TABLE chi_tiet_don_hang ( ma_don_hang VARCHAR(10), ma_san_pham VARCHAR(10), so_luong TINYINT not null, tong_tien DECIMAL(12, 3) not null,
PRIMARY KEY(ma_don_hang , ma_san_pham),
FOREIGN KEY (ma_don_hang) REFERENCES don_hang(ma_don_hang),FOREIGN KEY (ma_san_pham ) REFERENCES san_pham(ma_san_pham ));
CREATE TABLE danh_gia ( ma_don_hang VARCHAR(10), ma_danh_gia VARCHAR(10), noi_dung_danh_gia TEXT null, so_sao TINYINT null, ngay_danh_gia DATE not null ,
PRIMARY KEY(ma_don_hang ,ma_danh_gia ),
FOREIGN KEY (ma_don_hang) REFERENCES don_hang(ma_don_hang) );
CREATE TABLE gio_hang( ma_san_pham VARCHAR(10), ma_nguoi_dung VARCHAR(10), so_luong TINYINT not null,
PRIMARY KEY(ma_san_pham ,ma_nguoi_dung ),
FOREIGN KEY (ma_nguoi_dung) REFERENCES khach_hang(ma_nguoi_dung),FOREIGN KEY (ma_san_pham ) REFERENCES san_pham(ma_san_pham ));
Dữ liệu của các bảng
Database Diagram
VIẾT CÁC VẤN TIN CHO CÁC BÁO CÁO KINH DOANH
1 Cho biết trị giá đơn hàng cao nhất, thấp nhất là bao nhiêu?
MAX(tong_tien) AS DonHangCaoNhat,
MIN(tong_tien) AS DonHangThapNhat
FROM chi_tiet_don_hang;
2 Hiển thị đánh giá và phản hồi cho từng đơn hàng có đánh giá từ 4 sao trở lên.
SELECT don_hang.ma_don_hang, danh_gia.so_sao, danh_gia.noi_dung_danh_gia
JOIN don_hang ON danh_gia.ma_don_hang = don_hang.ma_don_hang
WHERE danh_gia.so_sao >= 4;
3 Hiển thị tất cả các đơn hàng và thông tin khách hàng cho từng đơn hàng.
The query retrieves essential order details including the order ID, creation date, order status, payment method, and payment status Additionally, it fetches user information such as the user's name, phone number, and email address.
JOIN khach_hang ON don_hang.ma_nguoi_dung = khach_hang.ma_nguoi_dung
JOIN nguoi_dung ON khach_hang.ma_nguoi_dung = nguoi_dung.ma_nguoi_dung;
4 Tìm tổng số lượng đơn hàng cho mỗi hình thức thanh toán.
SELECT hinh_thuc_thanh_toan,
COUNT(DISTINCT ma_don_hang) AS so_luong_don_hang
WHERE ma_don_hang IS NOT NULL
AND hinh_thuc_thanh_toan IS NOT NULL
GROUP BY hinh_thuc_thanh_toan
HAVING COUNT(ma_don_hang) > 0
ORDER BY so_luong_don_hang DESC, hinh_thuc_thanh_toan;
5 Tìm số lượng khách hàng trung bình mỗi tháng
SELECT YEAR(ngay_tao_don) AS nam, MONTH(ngay_tao_don) AS thang, COUNT(DISTINCT ma_nguoi_dung) AS so_khach_hang
GROUP BY YEAR(ngay_tao_don), MONTH(ngay_tao_don)
ORDER BY nam DESC, thang DESC;
6 Hiển thị tổng số sản phẩm đã bán, sắp xếp theo số lượng sản phẩm giảm dần
SELECT sp.ten_san_pham,
SUM(ctdh.so_luong) AS tong_so_luong_ban
FROM chi_tiet_don_hang ctdh
JOIN san_pham sp ON ctdh.ma_san_pham = sp.ma_san_pham
GROUP BY sp.ten_san_pham
ORDER BY tong_so_luong_ban DESC;
7 Liệt kê các khách hàng đã mua sản phẩm trong tháng 1, 2, 3
SELECT DISTINCT nd.ten_nguoi_dung
JOIN nguoi_dung nd ON dh.ma_nguoi_dung = nd.ma_nguoi_dung WHERE MONTH(dh.ngay_tao_don) IN (1, 2, 3, 4, 5, 6)
AND YEAR(dh.ngay_tao_don) = YEAR(GETDATE());
8 Tìm khách hàng đã mua nhiều sản phẩm nhất
SELECT TOP 1 b.ma_nguoi_dung,
SUM(a.so_luong) AS so_luong_mua
FROM chi_tiet_don_hang AS a
ON a.ma_don_hang = b.ma_don_hang
GROUP BY b.ma_nguoi_dung
ORDER BY so_luong_mua DESC
SELECT u.ten_nguoi_dung, u.email, u.sdt_nguoi_dung, u.dia_chi, so_sp.so_luong_mua
ON so_sp.ma_nguoi_dung = u.ma_nguoi_dung;
9 Tính tổng doanh thu của tất cả các đơn hàng
SELECT SUM(ctdh.so_luong * gb.gia_san_pham) AS tong_doanh_thu FROM chi_tiet_don_hang ctdh
JOIN gia_ban gb ON ctdh.ma_san_pham = gb.ma_san_pham;
10 Tìm khách hàng có tổng giá trị mua hàng cao nhất
SELECT TOP 1 b.ma_nguoi_dung,
SUM(a.tong_tien) AS tong_tien_da_dung FROM chi_tiet_don_hang AS a
ON a.ma_don_hang = b.ma_don_hang
GROUP BY b.ma_nguoi_dung
ORDER BY tong_tien_da_dung DESC
SELECT u.ten_nguoi_dung, u.email, u.sdt_nguoi_dung, u.dia_chi, chi_tieu.tong_tien_da_dung
ON chi_tieu.ma_nguoi_dung = u.ma_nguoi_dung;
11 Câu lệnh trigger bắt lỗi dữ liệu bị nhập âm trong trường dữ liệu số lượng ở bảng
ON chi_tiet_don_hang
IF EXISTS (SELECT 1 FROM inserted WHERE so_luong < 0)
RAISERROR ('So luong khong duoc am', 16, 1)