Chọn một project để thiết kế CSDL, mô tả tên đồ án, mục tiêu project
Chọn project
Ngày nay với sự phát triển nhanh chóng của công nghệ 4.0 Việc áp dụng mua bán online ngày càng được nhiều người quan tâm Các trang thương mại điện tử cũng theo đó mà hình thành và phát triển Vì thế áp dụng những kiến thức được học trong bộ môn Cơ sở dữ liệu nâng cao, nhóm chúng em xin lựa chọn đề tài “Thiết kế cơ sở dữ liệu cho trang web bán hàng điện tử”.
Mục tiêu đồ án
Ở đề tài này, mục tiêu được đề ra:
Thiết kế CSDL toàn cục cho đồ án, xây dựng bộ dữ liệu mẫu cho CSDL.
Phân mảnh (ngang, dọc, hỗn hợp) từ CSDL toàn cục (Master DB) để tạo thành các CSDL thành phần (Slaver DB), thực hiện các thao tác trên Slaver DB (thêm, xoá, sửa, truy vấn) và tạo các Trigger, Store Procedure.
Tạo CSDL MongoDB tương ứng với các Slaver DB và thực hiện các thao tác trên
Tạo CSDL đồ thị tương ứng với các CSDL MongoDB và thực hiện các thao tác.
Thiết kế CSDL toàn cục cho project, tạo và nhập dữ liệu mẫu cho CSDL
Lược đồ quan hệ CSDL toàn cục:
Hình 1 Lược đồ quan hệ CSDL toàn cục
Đặc tả: Đặc tả dữ liệu cho bảng USERS:
Tên trường Kiểu dữ liệu
USERS_ID Int Khoá chính Số nguyên
USERS_EMAIL Varchar 40 ký tự Văn bản
USERS_PASS Varchar 20 kí tự Văn bản
FULLNAME Nvarchar 100 kí tự Văn bản
TYPE Int Số nguyên Đặc tả dữ liệu cho bảng USERS_INFOR:
Tên trường Kiểu dữ liệu
USERS_INFOR_ID Int Khóa chính Số nguyên
USERS_ID Int Khoá ngoại Số nguyên
ADDRESS Nvarchar 100 kí tự Văn bản
PHONENUM Varchar 9 kí tự Văn bản Đặc tả dữ liệu bảng CART:
Tên trường Kiểu dữ liệu
CART_ID Int Khoá chính Số nguyên
PRODUCT_ID Int Khoá ngoại Số nguyên
CAT_QUANTITY Int Số nguyên
USERS_ID Int Khoá ngoại Số nguyên Đặc tả dữ liệu bảng MESSAGE:
Tên trường Kiểu dữ liệu
MESSAGE Int Khóa chính Số nguyên
USERS_ID1 Int Khoá ngoại Số nguyên
USERS_ID2 Int Khoá ngoại Số nguyên
L Nvarchar 2000 kí tự Văn bản Đặc tả dữ liệu bảng ORDERS:
Tên trường Kiểu dữ liệu
Ràng buộc toàn vẹn Khuôn dạng Ghi chú
ORDERS_ID Int Khoá chính Số nguyên
USERS_ID Int Khoá ngoại Số nguyên
ADRESS Nvarchar 100 kí tự Văn bản năm PAYMENT_METO
TOTAL_PRICE Int Số nguyên Đặc tả dữ liệu bảng ORDERS_DETAIL:
Tên trường Kiểu dữ liệu
D Int Khoá chính Số nguyên
ORDERS_ID Int Khoá ngoại Số nguyên
PRODUCT_ID Int Khoá ngoại Số nguyên
QUANTITY Int Số nguyên Đặc tả dữ liệu bảng PRODUCT:
Tên trường Kiểu dữ liệu
PRODUCT_ID Int Khoá chính Số nguyên
CAT_ID Int Khoá ngoại Số nguyên
PRODUCT_NAME Nvarchar 100 kí tự Văn bản
PRICE Int Số nguyên Đặc tả dữ liệu bảng PRODUCT_DETAIL:
Tên trường Kiểu dữ liệu
PRODUCT_DETAIL_ID Int Khóa chính Số nguyên
PRODUCT_ID Int Khoá ngoại Số nguyên
RAM Varchar 5 kí tự Văn bản
BATTERY Varchar 10 kí tự Văn bản
CHIP Varchar 100 kí tự Văn bản
ROM Varchar 10 kí tự Văn bản
COUNTRY Nvarchar 20 kí tự Văn bản Đặc tả dữ liệu bảng IMG:
Tên trường Kiểu dữ liệu
PRODUCT_ID Int Khoá ngoại Số nguyên
IMG_ID Int Số nguyên
PATH Varchar 1000 kí tự Văn bản Đặc tả dữ liệu bảng CAT_PRODUCT:
Tên trường Kiểu dữ liệu Kích thước
CAT_ID Int Khoá chính Số nguyên
CAT_NAME Nvarchar 50 kí tự Văn bản
Nhập dữ liệu mẫu cho các bảng:
Hình 2 Dữ liệu mẫu cho bảng USERS
Dữ liệu mẫu cho bảng USERS_INFOR:
Dữ liệu mẫu cho bảng CART:
Dữ liệu mẫu cho bảng MESSAGE:
Hình 6 Dữ liệu mẫu cho bảng ORDERS:
Dữ liệu mẫu cho bảng ORDERS_DETAIL: Hình 8
Dữ liệu mẫu cho bảng PRODUCT
Hình 9 Dữ liệu mẫu cho bảng PRODUCT_DETAIL
Dữ liệu mẫu cho bảng IMG
Dữ liệu mẫu cho bảng CAT_PRODUCT
Phân mảnh (ngang, dọc, hỗn hợp) từ CSDL toàn cục (Master DB) để tạo thành các
QLBHDT_ADMIN
- Là server chứa CSDL thành phần để quản lý thông tin csủa tài khoản Admin (Phân mảnh ngang).
- CSDL thành phần này sẽ có 3 bảng lấy từ CSDL toàn cục nhưng chỉ chứa các thông tin của những người dùng có TYPE = 1 (Admin) 3 bảng đó bao gồm: + MESSAGE
Dữ liệu mẫu của bảng MESSAGE sau khi phân mảnh
Dữ liệu mẫu của bảng USERS sau khi phân mảnh
Dữ liệu mẫu của bảng USERS_INFOR sau khi phân mảnh
- Các thao tác trên CSDL thành phần:
+ Stored Procedure để thêm tài khoản Admin
+ Store Procedure để cập nhật thông tin tài khoản Admin
+ Store Procedure để xoá tài khoản Admin
+ Trigger để đảm bảo người dùng không sử dụng email trùng nhau
QLBHDT_CUSTOMER
- Là server chứa CSDL thành phần để quản lý thông tin của tài khoản khách hàng (Phân mảnh ngang).
CSDL thành phần này sẽ có 4 bảng lấy từ CSDL toàn cục nhưng chỉ chứa thông tin của những người dùng có TYPE = 0 (khách hàng) 4 bảng đó bao gồm: CART
Dữ liệu mẫu của bảng CART sau khi phân mảnh
Dữ liệu mẫu của bảng MESSAGE sau khi phân mảnh
Hình 24.Dữ liệu mẫu của bảng CART sau khi phân mảnh
Dữ liệu mẫu của bảng USERS_INFOR sau khi phân mảnh
- Các thao tác trên CSDL thành phần:
+ Store Procedure để thêm tài khoản khách hàng:
+ Store Procedure để cập nhật thông tin tài khoản khách hàng:
+ Strore Procedure để xoá tài khoản khách hàng:
+ Trigger để đảm bảo khách hàng không dùng email trùng nhau:
QLBHDT_LAPTOP
- Là server chứa CSDL thành phần để quản lý thông tin của sản phẩm thuộc danh mục Laptop (Phân mảnh ngang).
- CSDL thành phần này sẽ có 4 bảng lấy từ CSDL toàn cục nhưng chỉ chứa các thông tin của những sản phẩm có CAT_ID = 2 (laptop) 4 bảng đó bao gồm:
Dữ liệu mẫu bảng CAT_PRODUCT sau khi phân mảnh
Dữ liệu mẫu bảng CAT_PRODUCT sau khi phân mảnh
Hình 33.Dữ liệu mẫu bảng PRODUCT sau khi phân mảnh
Dữ liệu mẫu bảng PRODUCT_DETAIL sau khi phân mảnh
- Các thao tác trên CSDL thành phần:
+ Strore Procedure để thêm sản phẩm laptop:
+ Strore Procedure để chỉnh sửa thông tin sản phẩm laptop:
+ Strore Procedure để xoá sản phẩm laptop:
+ Trigger để đảm bảo không có 2 sản phẩm trùng tên nhau:
QLBHDT_PHONE
- Là server chứa CSDL thành phần để quản lý thông tin của sản phẩm thuộc danh mục “Điện thoại” (Phân mảnh ngang).
- CSDL thành phần này sẽ có 4 bảng lấy từ CSDL toàn cục nhưng chỉ chứa các thông tin của những sản phẩm có CAT_ID = 1 (điện thoại) 4 bảng đó bao gồm:
Dữ liệu mẫu cho bảng CAT_PRODUCT sau khi phân mảnh
Dữ liệu mẫu cho bảng IMG sau khi phân mảnh
Hình 41.Dữ liệu mẫu cho bảng PRODUCT sau khi phân mảnh
Hình 42.Dữ liệu mẫu cho bảng PRODUCT_DETAIL sau khi phân mảnh
- Các thao tác trên CSDL thành phần:
+ Strore Procedure để thêm sản phẩm điện thoại:
+ Strore Procedure để chỉnh sửa thông tin sản phẩm điện thoại:
+ Strore Procedure để xoá sản phẩm điện thoại:
+ Trigger để đảm bảo không có 2 sản phẩm trùng tên nhau:
QLBHDT_THONGTINDONHANG
- Là server chứa CSDL thành phần để quản lý thông tin của đơn hàng (Phân mảnh dọc).
- CSDL thành phần này sẽ có 2 bảng lấy từ CSDL toàn cục là bảng ORDERS và bảng ORDERS_DETAIL tuy nhiên bảng ORDERS chỉ có các trường chứa thông tin của đơn hàng:
Hình 48.Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh
Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh
- Các thao tác trên CSDL thành phần:
+ Strore Procedure để cập nhật thông tin đơn hàng:
+ Strore Procedure để xoá thông tin đơn hàng:
+ Truy vấn STATUS (trạng thái) của hoá đơn người dùng theo USERS_ID (mã người dùng):
Hình 52.Truy vấn trạng thái của đơn hàng.
QLBHDT_THONGTINKHACHDATHANG
- Là server chứa CSDL thành phần để quản lý thông tin của khách đặt hàng (Phân mảnh dọc).
- CSDL thành phần này sẽ có 2 bảng lấy từ CSDL toàn cục là bảng ORDERS và bảng ORDERS_DETAIL tuy nhiên bảng ORDERS chỉ có các trường chứa thông tin của khách đặt hàng:
Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh
Dữ liệu mẫu cho bảng ORDERS_DETAIL sau khi phân mảnh
- Các thao tác trên CSDL thành phần:
+ Strore Procedure để cập nhật thông tin của khách đặt hàng:
+ Strore Procedure để xoá thông tin của khách đặt hàng:
Tạo CSDL MongoDB tương ứng với các Slaver DB và thực hiện các thao tác trên MongoDB
QLBHDT_ADMIN
- Bao gồm 3 collections để quản lý tài khoản admin:
- Để xem các collections của database ta sử dụng lệnh: show collections
Hình 59.Tất cả collection của database QLBHDT_ADMIN
- Tiếp theo ta thực hiện nhập các document cho các collections của database bằng lệnh: db.collection_name.insert({“key”: value, “key”: value,… })
- Để xem tất cả document đã nhập cho 1 collection nào đó ta dùng lệnh: db.collection_name.find()
- Document nhập vào cho collection MESSAGE
Hình 60 Tất cả document của collection MESSAGE
- Document nhập vào cho collection USERS
Hình 61.Tất cả document của collection USERS
- Document nhập vào cho collection USERS_INFOR
Hình 62.Tất cả document của collection USERS_INFOR
QLBHDT_CUSTOMER
- Bao gồm 4 collections để quản lý tài khoản khách hàng: + CART
Hình 63.Tất cả collections của database QLBHDT_CUSTOMER
- Document nhập vào cho collection MESSAGE:
Hình 64.Tất cả document của collection MESSAGE
- Document nhập vào cho collection CART:
Hình 65.Tất cả document của collection CART
- Document nhập vào cho collection USERS:
Hình 66.Tất cả document của collection USERS
- Document nhập vào cho collection USERS_INFOR:
Hình 67.Tất cả document của collection USERS_INFOR
QLBHDT_LAPTOP
- Bao gồm 4 collections để quản lý thông tin sản phẩm thuộc danh mục laptop: + CAT_PRODUCT
Hình 68.Tất cả collections của database QLBHDT_LAPTOP
- Document nhập vào cho collection CAT_PRODUCT:
Hình 69.Tất cả document của collection CAT_PRODUCT
- Document nhập vào cho collection IMG:
Hình 70.Tất cả document của collection IMG
- Document nhập vào cho collection PRODUCT:
Hình 71.Tất cả document của collection PRODUCT
- Document nhập vào cho collection PRODUCT_DETAIL:
Hình 72.Tất cả document của collection PRODUCT_DETAIL
QLBHDT_PHONE
- Bao gồm 4 collections để quản lý thông tin sản phẩm thuộc danh mục điện thoại: + CAT_PRODUCT
Hình 73.Tất cả collections của database QLBHDT_PHONE
- Document nhập vào cho collection CAT_PRODUCT:
Hình 74.Tất cả document của collection CAT_PRODUCT
- Document nhập vào cho collection IMG:
Hình 75.Tất cả document của collection IMG
- Document nhập vào cho collection PRODUCT:
Hình 76.Tất cả document của collection PRODUCT
- Document nhập vào cho collection PRODUCT_DETAIL:
Hình 77.Tất cả document của collection PRODUCT_DETAIL
QLBHDT_THONGTINDONHANG
- Bao gồm 2 bảng ORDERS và ORDERS_DETAIL nhưng collection ORDERS sẽ chứa các trường cần thiết để quản lý thông tin của đơn hàng:
Hình 78.Tất cả collections của database QLBHDT_THONGTINDONHANG
- Document nhập vào cho collection ORDERS:
Hình 79.Tất cả document của collection ORDERS
- Document nhập vào cho collection ORDERS_DETAIL:
Hình 80.Tất cả document của collection ORDERS_DETAIL
QLBHDT_THONGTINKHACHDATHANG
- Bao gồm 2 collections ORDERS và ORDERS_DETAIL tuy nhiên collection ORDERS chỉ chứa các trường cần thiết để quản lý thông tin của khách đặt hàng.
Hình 81.Tất cả collections của database QLBHDT_THONGTINKHACHDATHANG
- Document nhập vào cho collection ORDERS:
Hình 82.Tất cả document của collection ORDERS
- Document nhập vào cho collection ORDERS_DETAIL:
Hình 83.Tất cả document của collection ORDERS_DETAIL
- 1 số thao tác trên mongoDB với các database trên:
+ Xem thông tin tất cả điện thoại có giá cao hơn hoặc bằng 13000 trong database QLBHDT_PHONE:
Hình 84.Truy vấn thông tin điện thoại theo giá (cao hơn hoặc bằng 13000)
+ Chỉnh sửa họ tên (FULLNAME) của khách hàng “Nguyễn Văn Vũ” thành
“Nguyễn Tấn Vũ” trong database QLBHDT_CUSTOMER:
Hình 85.Chỉnh sửa thông tin khách hàng
+ Xem thông tin đơn hàng đã thanh toán (STATUS = 1) trong database QLBHDT_THONGTINDONHANG:
Hình 86.Truy vấn thông tin hoá đơn đã thanh toán (STATUS = 1)
Tạo CSDL đồ thị tương ứng với các CSDL MongoDB và thực hiện các thao tác
QLBHDT_ADMIN
Hình 87.Cơ sở dữ liệu đồ thị QLBHDT_ADMIN
Cơ sở dữ liệu đồ thị QLBHDT_ADMIN trên gồm:
2 node (Huỳnh Thị Thu Thảo, Nguyễn Văn Minh) thuộc label (USERS).
2 node (4,3) thuộc label (USERS_INFOR).
Node (Huỳnh Thị Thu Thảo) có thông tin tài khoản ở node (4).
Node (Nguyễn Văn Minh) có thông tin tài khoản ở node (3).
Node (Nguyễn Văn Minh) nhận tin nhắn ở node (1).
QLBHDT_CUSTOMER
Hình 88.Cơ sở dữ liệu đồ thị QLBHDT_CUSTOMER
Node (Phùng Duy Phước) có thông tin tài khoản ở node (1).
Node (Nguyễn Văn Vũ) có thông tin tài khoản ở node (2).
Node (Phùng Duy Phước) có giỏ hàng ở node (1,1).
Node (Nguyễn Văn Vũ) có giỏ hàng ở node (2,2,2).
Node (Phùng Duy Phước) gửi tin nhắn ở node (1).
Node (3) chứa tin nhắn của người nhận là node (Phùng Duy Phước).
QLBHDT_PHONE
Cơ sở dữ liệu đồ thị QLBHDT_PHONE
Cơ sở dữ liệu đồ thị QLBHDT_PHONE trên gồm:
1 node (Điện Thoại) thuộc lable (CAT_PRODUCT).
3 node (Iphone 14 Promax, OppoReno8, BlachShark) thuộc label (PRODUCT).
2 node (1,3) thuộc lable (PRODUCT_DETAIL).
9 node (màu cam) thuộc lable (IMG).
Node (Điện thoại) có sản phầm là (Iphone 14 Promax, OppoReno8, BlachShark)
Node (Iphone 14 Promax) sở hữu chi tiết sản phẩm là node (3) và có 3 hình ảnh minh họa là node (img/anhdaidien14promax.jpg, img/14promax.jpg, img/14).
Tương tự cho 2 node (OppoReno8, BlachShark).
QLBHDT_LAPTOP
Hình 90.Cơ sở dữ liệu đồ thị QLBHDT_LAPTOP
Cơ sở dữ liệu đồ thị QLBHDT_LAPTOP trên gồm:
1 node (Laptop) thuộc lable (CAT_PRODUCT).
2 node (DELL E7450, Thinkpad X1 Carbon) thuộc label (PRODUCT).
2 node (4,5) thuộc lable (PRODUCT_DETAIL).
6 node (màu cam) thuộc lable (IMG).
Node (Laptop) có sản phầm là (DELL E7450, Thinkpad X1 Carbon).
Node (DELL E7450) sở hữu chi tiết sản phẩm là node (4) và có 3 hình ảnh minh họa là node (img/anhdaidiendell.jpg, img/DELL E7450.jpg, img/dell.jpg ).
Tương tự cho node (Thinkpad X1 Carbon).
QLBHDT_THONGTINKHACHDATHANG
2 node (2,3) thuộc label (ORDERS_DETAIL).
Node (Phùng Duy Phước) với các thuộc tính (ORDERS_ID, USERS_ID, ADRESS, FULLNAME, NUMBER) có thông tin chi tiết hóa đơn ở node (3) với các thuộc tính (OD_DETAIL_ID, ORDERS_ID, PRODUCT_ID, QUANTITY).
Node (Nguyễn Văn Vũ) với các thuộc tính (ORDERS_ID, USERS_ID, ADRESS,
FULLNAME, NUMBER) có thông tin chi tiết hóa đơn ở node (2) với các thuộc tính (OD_DETAIL_ID, ORDERS_ID, PRODUCT_ID, QUANTITY).
QLBHDT_THONGTINDONHANG
Hình 92.Cơ sở dữ liệu đồ thị QLBHDT_THONGTINDONHANG
Cơ sở dữ liệu đồ thị QLBHDT_THONGTINKHACHDATHANG trên gồm:
2 node (2,3) thuộc label (ORDERS_DETAIL).
Node (1) với các thuộc tính (ORDERS_ID, USERS_ID, DATES,
PAYMENT_METHOD, STATUS, TOTAL_PRICE) có thông tin chi tiết hóa đơn ở node (3) với các thuộc tính (OD_DETAIL_ID, ORDERS_ID, PRODUCT_ID, QUANTITY). Node (2) với các thuộc tính (ORDERS_ID, USERS_ID, DATES,
PAYMENT_METHOD, STATUS, TOTAL_PRICE) có thông tin chi tiết hóa đơn ở node(2) với các thuộc tính (OD_DETAIL_ID, ORDERS_ID, PRODUCT_ID, QUANTITY).
Các thao tác trên Neo4j
Cập nhật thông tin của khách hàng:
Hình 93.Cú pháp cập nhật thông tin khách hàng
Sử dụng cấu trúc trên để chỉnh sửa thông tin khách hàng ‘Nguyễn Văn Vũ’ sang ‘Nguyễn Tấn Vũ’.
Hình 94.Kết quả cập nhật node
Hình 95.Cú pháp thêm node
Thêm node (Sạc Dự Phòng) thuộc label CAT_PRODUCT với các thuộc tính (CAT_ID 3, CAT_NAME = ‘Sạc Dữ Phòng’) theo cú pháp trên.