Bộ giáo dục và đào tạo
Đại học Sư phạm Thành phố Hồ Chí Minh
BÁO CÁO ĐỒ ÁN CUỐI KÌCƠ SỞ DỮ LIỆU NÂNG CAO
ĐỀ TÀI: THIẾT KẾ CƠ SỞ DỮ LIỆU CHO TRANG WEB BÁN HÀNGĐIỆN TỬ
Nhóm: VTMP
Giảng viên hướng dẫn: Ts.Văn Thế ThànhNguyễn Tấn Vũ 46.01.104.221Phùng Duy Phước 46.01.104.142Huỳnh Thị Thu Thảo 46.01.104.170Vũ Đình Quang Minh 46.01.104.103
Trang 2MỤC LỤC
1 Chọn một project để thiết kế CSDL, mô tả tên đồ án, mục tiêu project 3
1.1 Chọn project 3
1.2 Mục tiêu đồ án: 3
2 Thiết kế CSDL toàn cục cho project, tạo và nhập dữ liệu mẫu cho CSDL 3
3 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 8
Trang 3DANH MỤC HÌNH ẢNH
Hình 1 Lược đồ quan hệ CSDL toàn cục 3
Hình 2 Dữ liệu mẫu cho bảng USERS 6
Hình 3 Dữ liệu mẫu cho bảng USERS_INFOR: 6
Hình 4 Dữ liệu mẫu cho bảng CART: 6
Hình 5 Dữ liệu mẫu cho bảng MESSAGE: 7
Hình 6 Dữ liệu mẫu cho bảng ORDERS: 7
Hình 7 Dữ liệu mẫu cho bảng ORDERS_DETAIL: 7
Hình 8 Dữ liệu mẫu cho bảng PRODUCT 7
Hình 9 Dữ liệu mẫu cho bảng PRODUCT_DETAIL 7
Hình 10 Dữ liệu mẫu cho bảng IMG 8
Hình 11 Dữ liệu mẫu cho bảng CAT_PRODUCT 8
Hình 12 Publications và Subscriptions 9
Hình 13 Server QLBHDT01 9
Hình 14 Dữ liệu mẫu của bảng MESSAGE sau khi phân mảnh 9
Hình 15 Dữ liệu mẫu của bảng USERS sau khi phân mảnh 10
Hình 16 Dữ liệu mẫu của bảng USERS_INFOR sau khi phân mảnh 10
Hình 17 Store Procedure THEMTAIKHOANADMIN 10
Hình 18 Store Procedure UPDATETAIKHOAN 10
Hình 19 Store Procedure XOATAIKHOAN 11
Hình 20 Trigger DUYETMAIL 11
Hình 21 Server QLBHDT02 11
Hình 22 Dữ liệu mẫu của bảng CART sau khi phân mảnh 12
Hình 23 Dữ liệu mẫu của bảng MESSAGE sau khi phân mảnh 12
Hình 24 Dữ liệu mẫu của bảng CART sau khi phân mảnh 12
Hình 25 Dữ liệu mẫu của bảng USERS_INFOR sau khi phân mảnh 12
Hình 26 Store Procedure THEMTAIKHOAN 12
Hình 27 Store Procedure UPDATETAIKHOAN 13
Hình 28 Store Procedure XOATAIKHOAN 13
Hình 29 Trigger DUYETMAIL 13
Hình 30 Server QLBHDT04 14
Hình 31 Dữ liệu mẫu bảng CAT_PRODUCT sau khi phân mảnh 14
Hình 32 Dữ liệu mẫu bảng CAT_PRODUCT sau khi phân mảnh 14
Trang 4Hình 35 Store Procedure THEMSANPHAM 15
Hình 36 Store Procedure UPDATESANPHAM 15
Hình 37 Store Procedure XOASANPHAM 16
Hình 38 Server QLBHDT03 17
Hình 39 Dữ liệu mẫu cho bảng CAT_PRODUCT sau khi phân mảnh 17
Hình 40 Dữ liệu mẫu cho bảng IMG sau khi phân mảnh 17
Hình 41 Dữ liệu mẫu cho bảng PRODUCT sau khi phân mảnh 18
Hình 42 Dữ liệu mẫu cho bảng PRODUCT_DETAIL sau khi phân mảnh 18
Hình 43 Store Procedure THEMSANPHAM 18
Hình 44 Store Procedure UPDATESANPHAM 18
Hình 45 Store Procedure XOASANPHAM 19
Hình 46 Trigger DUYETSANPHAM 19
Hình 47 Server QLBHDT06 20
Hình 48 Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh 20
Hình 49 Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh 20
Hình 50 Store Procedure UPDATETHONGTINDONHANG 21
Hình 51 Store Procedure XOATHONGTINDONHANG 21
Hình 52 Truy vấn trạng thái của đơn hàng 21
Hình 53 Server QLBHDT05 22
Hình 54 Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh 22
Hình 55 Dữ liệu mẫu cho bảng ORDERS_DETAIL sau khi phân mảnh 22
Hình 56 Store Procedure UPDATETHONGTINNGUOIDAT 23
Hình 57 Store Procedure XOATHONGTINNGUOIDAT 23
Hình 58 Tất cả database đã tạo 23
Hình 59 Tất cả collection của database QLBHDT_ADMIN 24
Hình 60 Tất cả document của collection MESSAGE 24
Hình 61 Tất cả document của collection USERS 24
Hình 62 Tất cả document của collection USERS_INFOR 25
Hình 63 Tất cả collections của database QLBHDT_CUSTOMER 25
Hình 64 Tất cả document của collection MESSAGE 25
Hình 65 Tất cả document của collection CART 26
Hình 66 Tất cả document của collection USERS 27
Hình 67 Tất cả document của collection USERS_INFOR 27
Hình 68 Tất cả collections của database QLBHDT_LAPTOP 27
Hình 69 Tất cả document của collection CAT_PRODUCT 27
Trang 5Hình 70 Tất cả document của collection IMG 28
Hình 71 Tất cả document của collection PRODUCT 29
Hình 72 Tất cả document của collection PRODUCT_DETAIL 29
Hình 73 Tất cả collections của database QLBHDT_PHONE 30
Hình 74 Tất cả document của collection CAT_PRODUCT 30
Hình 75 Tất cả document của collection IMG 31
Hình 76 Tất cả document của collection PRODUCT 31
Hình 77 Tất cả document của collection PRODUCT_DETAIL 32
Hình 78 Tất cả collections của database QLBHDT_THONGTINDONHANG 32Hình 79 Tất cả document của collection ORDERS 33
Hình 80 Tất cả document của collection ORDERS_DETAIL 33
Hình 81 Tất cả collections của database QLBHDT_THONGTINKHACHDATHANG 33
Hình 82 Tất cả document của collection ORDERS 34
Hình 83 Tất cả document của collection ORDERS_DETAIL 34
Hình 84 Truy vấn thông tin điện thoại theo giá (cao hơn hoặc bằng 13000) 35
Hình 85 Chỉnh sửa thông tin khách hàng 35
Hình 86 Truy vấn thông tin hoá đơn đã thanh toán (STATUS = 1) 36
Hình 87 Cơ sở dữ liệu đồ thị QLBHDT_ADMIN 36
Hình 88 Cơ sở dữ liệu đồ thị QLBHDT_CUSTOMER 36
Hình 89 Cơ sở dữ liệu đồ thị QLBHDT_PHONE 37
Hình 90 Cơ sở dữ liệu đồ thị QLBHDT_LAPTOP 38
Hình 91 Cơ sở dữ liệu đồ thị QLBHDT_THONGTINKHACHDATHANG 38
Hình 92 Cơ sở dữ liệu đồ thị QLBHDT_THONGTINDONHANG 39
Trang 61 Chọn một project để thiết kế CSDL, mô tả tên đồ án, mục tiêu project.1.1.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 onlinengà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ử”
1.2.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 CSDLthà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 MongoDB.
Tạo CSDL đồ thị tương ứng với các CSDL MongoDB và thực hiện các thao tác
2 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
Ràng buộc toàn vẹn
Ghichú
Trang 7USERS_ID Int Khoá chính Số nguyên
Đặc tả dữ liệu cho bảng USERS_INFOR:
Ràng buộc toànvẹn
Đặc tả dữ liệu bảng CART:
Tên trường Kiểu dữ liệu
Ràng buộc toàn vẹn
Đặc tả dữ liệu bảng MESSAGE:
Ràng buộc toànvẹn
Ràng buộc
toàn vẹn Khuôn dạng
Ghichú
Trang 8Đặc tả dữ liệu bảng ORDERS_DETAIL:
Ràng buộc toàn vẹn
Đặc tả dữ liệu bảng PRODUCT:
Ràng buộc toàn vẹn
Đặc tả dữ liệu bảng PRODUCT_DETAIL:
Ràng buộc toàn vẹn
Đặc tả dữ liệu bảng IMG:
Tên trường Kiểu dữliệu
Ràng buộc toànvẹn
Ghichú
Trang 9PRODUCT_ID Int Khoá ngoại Số nguyên
Đặc tả dữ liệu bảng CAT_PRODUCT:
Tên trường Kiểu dữ liệu Kíchthước
Ràng buộc toànvẹn
Nhập dữ liệu mẫu cho các bảng:
Hình 2 Dữ liệu mẫu cho bảng USERSHình 3.
Trang 10Hình 5.Dữ
liệu mẫu cho bảng MESSAGE:
Hình 6 Dữ liệu mẫu cho bảng ORDERS:Hình 7.
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
Trang 11Hình 10.Dữ
liệu mẫu cho bảng IMGHình 11.
liệu mẫu cho bảng CAT_PRODUCT
3 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.
- CSDL toàn cục nằm trên server ADMIN\QLBHDT được phân mảnh ra 6 CSDL thành phần nằm trên 6 server con bao gồm:
+ ADMIN\QLBHDT01 + ADMIN\QLBHDT02 + ADMIN\QLBHDT03 + ADMIN\QLBHDT04+ ADMIN\QLBHDT05+ ADMIN\QLBHDT06
Trang 12- 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
Hình 14.Dữ
liệu mẫu của bảng MESSAGE sau khi phân mảnh
Trang 13+ USERS
Hình 15.Dữ
liệu mẫu của bảng USERS sau khi phân mảnh
+ USERS_INFOR
Hình 16.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
Hình 17.Store Procedure THEMTAIKHOANADMIN
+ Store Procedure để cập nhật thông tin tài khoản Admin
Hình 18.Store Procedure UPDATETAIKHOAN
+ Store Procedure để xoá tài khoản Admin
Trang 14Hình 19.Store Procedure XOATAIKHOAN
+ Trigger để đảm bảo người dùng không sử dụng email trùng nhau
Trang 15- 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 người dùng có TYPE = 0 (khách hàng) 4 bảng đó bao gồm: + CART
Hình 22.Dữ
liệu mẫu của bảng CART sau khi phân mảnh
+ MESSAGE
Hình 23.Dữ
liệu mẫu của bảng MESSAGE sau khi phân mảnh
+ Store Procedure để thêm tài khoản khách hàng:
Hình 26.Store Procedure THEMTAIKHOAN
Trang 16+ Store Procedure để cập nhật thông tin tài khoản khách hàng:
Hình 27.Store Procedure UPDATETAIKHOAN
+ Strore Procedure để xoá tài khoản khách hàng:
Hình 28.Store Procedure XOATAIKHOAN
+ Trigger để đảm bảo khách hàng không dùng email trùng nhau:
Hình 29.Trigger DUYETMAIL
Trang 17Hình 30.
Server QLBHDT04
- 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:
+ CAT_PRODUCT
Hình 31.Dữ
liệu mẫu bảng CAT_PRODUCT sau khi phân mảnh
+ IMG
Hình 32.Dữ
liệu mẫu bảng CAT_PRODUCT sau khi phân mảnh
+ PRODUCT
Trang 18Hình 33.Dữ liệu mẫu bảng PRODUCT sau khi phân mảnh
+ PRODUCT_DETAIL
Hình 34.
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:
Hình 35.Store Procedure THEMSANPHAM
+ Strore Procedure để chỉnh sửa thông tin sản phẩm laptop:
Hình 36.
Store Procedure UPDATESANPHAM
+ Strore Procedure để xoá sản phẩm laptop:
Trang 19Hình 37.Store Procedure XOASANPHAM
+ Trigger để đảm bảo không có 2 sản phẩm trùng tên nhau:
3.4.QLBHDT_PHONE:
Trang 20Hình 38.
Server QLBHDT03
- 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:
+ CAT_PRODUCT
Hình 39.Dữ
liệu mẫu cho bảng CAT_PRODUCT sau khi phân mảnh
+ IMG
Hình 40.Dữ
liệu mẫu cho bảng IMG sau khi phân mảnh
+ PRODUCT
Trang 21Hình 41.Dữ liệu mẫu cho bảng PRODUCT sau khi phân mảnh
+ PRODUCT_DETAIL
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:
Hình 43.Store Procedure THEMSANPHAM
+ Strore Procedure để chỉnh sửa thông tin sản phẩm điện thoại:
Trang 22Hình 44.Store Procedure UPDATESANPHAM
+ Strore Procedure để xoá sản phẩm điện thoại:
Hình 45.Store Procedure XOASANPHAM
+ Trigger để đảm bảo không có 2 sản phẩm trùng tên nhau:
Hình 46.Trigger DUYETSANPHAM
3.5.QLBHDT_THONGTINDONHANG:
Trang 23Hình 47.
Server QLBHDT06
- Là server chứa CSDL thành phần để quản lý thông tin của đơn hàng (Phân mảnh
- 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:
+ ORDERS
Hình 48.Dữ liệu mẫu cho bảng ORDERS sau khi phân mảnh
+ ORDERS_DETAIL
Hình 49.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:
Trang 24Hình 50.Store Procedure UPDATETHONGTINDONHANG
+ Strore Procedure để xoá thông tin đơn hàng:
Hình 51.Store Procedure XOATHONGTINDONHANG
+ 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.
Trang 25- 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:
+ ORDERS
Hình 54.Dữ
liệu mẫu cho bảng ORDERS sau khi phân mảnh
+ ORDERS_DETAIL
Hình 55.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:
Trang 26Hình 56.Store Procedure UPDATETHONGTINNGUOIDAT
+ Strore Procedure để xoá thông tin của khách đặt hàng:
Hình 57.Store Procedure XOATHONGTINNGUOIDAT
4 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
- Tạo database tương ứng với các Slaver DB bằng lệnh: use database_name
- Bao gồm 6 database: + QLBHDT_ADMIN+ QLBHDT_CUSTOMER+ QLBHDT_LAPTOP+ QLBHDT_PHONE
+ QLBHDT_THONGTINDONHANG+ QLBHDT_THONGTINKHACHHANG
- Để xem tất cả các database đã tạo ta dùng lệnh: show dbs
Hình 58.Tất cả database đã tạo
Trang 27- Để 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:
- 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
Trang 28Hình 62.Tất cả document của collection USERS_INFOR
- Bao gồm 4 collections để quản lý tài khoản khách hàng: + CART
+ MESSAGE+ USERS
+ USERS_INFOR
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:
Trang 29Hình 65.Tất cả document của collection CART
- Document nhập vào cho collection USERS:
Trang 30Hì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
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:
Trang 31Hình 70.Tất cả document của collection IMG
- Document nhập vào cho collection PRODUCT:
Trang 32Hì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
Trang 33Hì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:
Trang 34Hì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:
Trang 35Hình 77.Tất cả document của collection PRODUCT_DETAIL
- 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:
Trang 36Hì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
- 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: