1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án thực hành môn học hệ quản trị cơ sở dữ liệu xây dựng website bán giày online

86 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Nguyên do của sự tăng trưởng trên không những nhờ sự thúc đẩy trong chuyển đổi hành vi mua hàng của người tiêu dùng sau đại dịch COVID-19, mà còn do các hoạt động quảng cáo - những ưu đã

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA HỆ THỐNG THÔNG TIN

BÁO CÁO ĐỒ ÁN THỰC HÀNH MÔN HỌC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

LỚP IS210.N21 ĐỀ TÀI:

XÂY DỰNG WEBSITE BÁN GIÀY ONLINE

Giảng viên hướng dẫn:

Nguyễn Hồ Duy Tri

Nhóm sinh viên thực hiện:

1 Ngô Thùy Yến Nhi MSSV: 21521230 2 Nguyễn Dương MSSV: 21521990 3 Phạm Duy Khánh MSSV: 21522211 4 Nguyễn Ngọc Hà My MSSV: 21522351

TP HỒ CHÍ MINH, NĂM 2023

Trang 3

DANH MỤC HÌNH ẢNH 5

DANH MỤC TỪ VIẾT TẮT 8

LỜI CẢM ƠN 9

TÓM TẮT ĐỀ TÀI 10

CHƯƠNG 1 MÔ TẢ ĐỀ TÀI 12

1.1 Phát biểu bài toán 12

1.2.2 Yêu cầu chức năng 15

1.2.3 Yêu cầu phi chức năng 15

1.3 Thiết kế CSDL 15

1.3.1 Mô hình thực thể mối kết hợp 15

1.3.2 Thiết kế mô hình quan hệ 16

1.3.3 Bảng thuyết minh quan hệ và thuộc tính 17

1.3.4 Mô tả ràng buộc toàn vẹn 21

2.1.2.2 Kiểm tra số lượng sản phẩm trong kho khi tạo hóa đơn 31

2.1.2.3 Brandname chỉ thuộc các giá trị trong bảng BRAND 32

2.1.2.4 Category chỉ thuộc trong bảng CATEGORY 32

Trang 4

2.1.2.6 Ngày tạo hóa đơn bằng ngày hiện tại 33

2.1.2.7 Khách hàng phải mua sản phẩm đó mới được đánh giá 33

2.2 Các Stored Procedure 34

2.2.1 Giới thiệu 34

2.2.2 Cú pháp tạo thủ tục 34

2.2.3 Danh sách Stored Procedure 34

2.2.4 Mô tả một số stored procedure 36

2.2.4.1 In ra chi tiết sản phẩm 36

2.2.4.2 Thêm sản phẩm vào giỏ hàng 37

2.2.4.3 Tạo hóa đơn 41

2.2.4.4 Lấy ra hóa đơn và chi tiết hóa đơn dựa vào InvoiceID 44

2.2.4.5 Lấy ra tất cả các hóa đơn của User 45

Trang 5

3.4.3.2 Giải pháp 58

3.4.4 Deadlock 58

3.4.4.1 Mô tả tình huống 58

3.4.4.2 Giải pháp 59

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 60

4.1 Môi trường cài đặt 60

4.1.1 Cấu hình cài đặt 60

4.1.2 Môi trường phát triển và triển khai hệ thống 60

4.1.2.1 Môi trường phát triển 60

4.1.2.2 Môi trường triển khai 60

4.2.9 Trang thanh toán 68

4.2.10 Trang thông tin cá nhân 70

4.2.11 Trang đổi mật khẩu 71

4.2.12 Trang lịch sử mua hàng 71

4.2.13 Trang thông báo 72

4.2.14 Trang thống kê - Dành cho Admin 72

4.2.15 Trang quản lý sản phẩm 73

4.2.16 Trang quản lý người dùng 75

4.2.17 Trang quản lý hóa đơn 78

Trang 6

5.4.2 Về con người 83 DANH MỤC TÀI LIỆU THAM KHẢO 85

Trang 7

DANH MỤC HÌNH ẢNH

Hình 1.2-1 Minh họa nhược điểm trang web myshoes.vn -1 14

Hình 1.2-2 Minh họa nhược điểm trang web myshoes.vn -2 15

Hình 1.3-1 Mô hình thực thể mối kết hợp 16

Hình 2.1-1 Trigger cập nhật sản phẩm khi có thay đổi trong chi tiết hóa đơn -1 30

Hình 2.1-2 Trigger cập nhật sản phẩm khi có thay đổi trong chi tiết hóa đơn -2 31

Hình 2.1-3 Trigger kiểm tra số lượng sản phẩm trong kho khi tạo hóa đơn 31

Hình 2.1-4 Trigger Brandname chỉ thuộc giá trị trong bảng brand 32

Hình 2.1-5 Trigger Category chỉ thuộc trong bảng CATEGORY 32

Hình 3.1-1 Minh họa lost update 49

Hình 3.1-2 Minh họa non-repeatable read 49

Hình 3.1-3 Minh họa Phantom Read 50

Hình 3.1-4 Minh họa Dirty Read 50

Hình 4.2-1 Thành phần Header của giao diện 61

Hình 4.2-2 Thành phần Footer của giao diện 61

Hình 4.2-3 Giao diện Đăng nhập 61

Hình 4.2-4 Giao diện Đăng ký 62

Hình 4.2-5 Giao diện Trang chủ - 1 62

Hình 4.2-6 Giao diện Trang chủ - 2 63

Hình 4.2-7 Giao diện Trang chủ - 3 63

Hình 4.2-8 Giao diện Trang chủ - 4 64

Hình 4.2-9 Giao diện Cửa hàng - 1 65

Hình 4.2-10 Giao diện Cửa hàng - 2 65

Hình 4.2-11 Giao diện Liên hệ 66

Hình 4.2-12 Giao diện Chi tiết sản phẩm - 1 66

Hình 4.2-13 Giao diện Chi tiết sản phẩm - 2 67

Hình 4.2-14 Giao diện Chi tiết sản phẩm - 3 67

Trang 8

Hình 4.2-16 Giao diện Giỏ hàng 68

Hình 4.2-17 Giao diện Thanh toán 69

Hình 4.2-18 Giao diện Thanh toán VNPAY 69

Hình 4.2-19 Giao diện Gửi email xác nhận đặt hàng thành công 70

Hình 4.2-20 Giao diện Tài khoản của tôi 70

Hình 4.2-21 Giao diện Sửa hồ sơ 71

Hình 4.2-22 Giao diện Đổi mật khẩu 71

Hình 4.2-23 Giao diện Lịch sử mua hàng 72

Hình 4.2-24 Giao diện Thông báo 72

Hình 4.2-25 Giao diện Thống kê - 1 73

Hình 4.2-26 Giao diện Thống kê - 2 73

Hình 4.2-27 Giao diện Quản lý sản phẩm 74

Hình 4.2-28 Giao diện Thêm sản phẩm 74

Hình 4.2-29 Giao diện Sửa sản phẩm 75

Hình 4.2-30 Giao diện Xóa sản phẩm 75

Hình 4.2-31 Giao diện Quản lý người dùng 76

Hình 4.2-32 Giao diện Sửa thông tin người dùng 76

Hình 4.2-33 Chặn người dùng 77

Hình 4.2-34 Xóa người dùng 77

Hình 4.2-35 Giao diện Quản lý hóa đơn 78

Trang 9

STT Từ viết tắt Nội dung

Trang 10

LỜI CẢM ƠN

Đầu tiên cho phép chúng em được gửi lời cảm ơn sâu sắc đến trường Đại học Công nghệ thông tin – Đại Học Quốc Gia TP.HCM và khoa Hệ thống thông tin đã tạo điều kiện giúp chúng em được biết đến và tìm hiểu môn học Hệ quản trị cơ sở dữ liệu

Và đặc biệt hơn chúng em vô cùng cảm ơn và biết ơn thầy Nguyễn Hồ Duy Tri, một người thầy đã không ngần ngại dành thời gian và công sức để hướng dẫn chúng em qua từng buổi học trên lớp Nhờ những kiến thức mà thầy chia sẻ, chúng em đã có cơ hội nắm vững các khái niệm căn bản và kỹ năng cần thiết để từng bước hoàn thành đồ án một cách hiệu quả Đồng thời, thầy luôn sẵn lòng lắng nghe và hỗ trợ chúng em trong việc giải quyết các vấn đề phát sinh trong việc quản lý dự án

Dự án mà chúng em đã thực hiện trong vòng hai tháng là kết quả của sự cố gắng không ngừng nghỉ Tuy nhiên, chúng em nhận thức rằng không tránh khỏi những thiếu sót và hạn chế Vậy nên chúng em rất mong thầy có thể góp ý thật nhiều để chúng em có thể hoàn thiện hơn đồ án này cũng như có thêm kinh nghiệm cho cuộc hành trình sắp tới trong tương lai của chúng em

Ngoài ra, xin gửi lời cảm ơn tới các thành viên trong nhóm Sự quan tâm, giúp đỡ, đóng góp và chia sẻ kiến thức từ mỗi cá nhân chính là nguồn động lực quan trọng giúp tất cả mọi người cùng nỗ lực hoàn thành tiến độ đặt ra Mọi sự đóng góp dù nhỏ nhặt hay lớn lao từ các thành viên đều đáng được trân trọng và quý báu, góp phần làm cho đồ án trở nên hoàn thiện hơn và đáng giá hơn

Lời cuối cùng, chúng em xin gửi lời kính chúc sức khỏe và sự biết ơn trân trọng nhất, kính mong Thầy sẽ tiếp tục thực hiện sứ mệnh của mình là truyền đạt kiến thức và kĩ năng cho thế hệ hôm nay và ngày mai Sự tận tâm trong hướng dẫn của thầy chính là nguồn động lực lớn giúp chúng em nỗ lực và phát triển hơn trong tương lai Chúng em xin chân thành cảm ơn!

TP.HCM, ngày 12 tháng 6 năm 2023

Trang 11

TÓM TẮT ĐỀ TÀI

Tiếng Anh:

The COVID-19 pandemic has brought unprecedented challenges to the fashion industry, with a projected contraction of 30 to 27 percent in industry revenues for 2020, according to a report by McKinsey & Company - one of the world’s leading consulting companies[1] As a result, it has become essential for retailers in particular and enterprises in general to embrace digital transformation and stay ahead of the curve dependent largely on their digital know-how With consumer behavior and the business environment rapidly evolving, e-commerce platforms and social media have recently emerged as the most popular channels for online shopping, which can apparently witness the figure of 68% and 54% in survey respondents indicating that they have made at least one purchase through these channels respectively, according to a report by Deloitte[2] This growth is likely to have been driven not only by the shift in consumer buying behavior catalyzed by the COVID-19 pandemic, but also the significant promotional activities – including unlimited flash sales campaigns, and other monthly promotional events – undertaken by e-commerce sectors in Vietnam, as they increase dramatically their number of users and gross merchandise value in a bid for more market share The fashion industry especially has stood out as one of the most significant e-commerce expenditures for internet users in the Vietnamese consumer market

Depending on these upward trends and the importance of e-commerce platform enhancement for the digital race, we have decided the title of our project is “Building a sneaker’s e-commerce platform “ - a potential and dynamic commercial sector in the industry which is prominent for its diverse range of Products Our platform is dedicated to providing a convenient online shopping experience, where customers can easily browse and purchase their favourite sneakers Our goal is to make data management and process accessible and straightforward, enabling retailers to process information quickly and efficiently With our platform, retailers can manage their online stores with ease and maximize their sales potential

Tiếng Việt:

Đại dịch COVID-19 đã mang đến những thách thức chưa từng có cho ngành thời trang Điển hình như trong báo cáo vào năm 2020 của công ty McKinsey & Company - một trong những công ty tư vấn chiến lược hàng đầu trên thế giới vào năm 2020 dự kiến doanh thu của ngành này sẽ giảm từ 30% xuống 27% Do đó, đòi hỏi các nhà bán lẻ nói riêng và các doanh

Trang 12

nghiệp cần nắm bắt xu thế và tiến hành quy trình chuyển đổi số, điều này phụ thuộc phần lớn vào khả năng nắm bắt và hiểu biết về lĩnh vực mới này Sự thay đổi hành vi của người tiêu dùng và môi trường kinh doanh một cách nhanh chóng đã khiến các nền tảng thương mại điện tử và mạng xã hội bùng nổ lên và trở thành những kênh mua sắm trực tuyến phổ biến nhất gần đây, thấy rõ thông qua một báo cáo của Deloitte cho thấy lần lượt 68% và 54% số người khảo sát đã dành ít nhất một lần mua hàng thông qua các kênh này Nguyên do của sự tăng trưởng trên không những nhờ sự thúc đẩy trong chuyển đổi hành vi mua hàng của người tiêu dùng sau đại dịch COVID-19, mà còn do các hoạt động quảng cáo - những ưu đãi không giới hạn cùng những chiến dịch truyền thông chớp nhoáng thúc đẩy bởi những nhà phát triển nền tảng thương mại điện tử ở Việt Nam với mục đích gia tăng số lượng người dùng và tổng giá trị hàng hóa trong cuộc đua tranh giành thị trường Đặc biệt hơn, ngành thời trang đang là một trong những ngành có doanh thu thương mại điện tử lớn nhất đối với người dùng trực tuyến tại thị trường tiêu dùng Việt Nam

Nắm bắt xu thế cùng tầm quan trọng trong tối ưu nền tảng trong cuộc đua số, chúng em đã quyết định lựa chọn đề tài của mình là “Xây dựng nền tảng thương mại điện tử dành cho giày thể thao” - một mặt hàng tiềm năng trong ngành công nghiệp đa sản phẩm Nền tảng của chúng em được tiến hành với mục đích cung cấp trải nghiệm mua sắm trực tuyến thuận tiện, nơi khách hàng có thể dễ dàng thao tác và thỏa sức mua sắm cho bản thân những đôi giày thể thao yêu thích Mục tiêu của chúng em là khiến việc quản lý và xử lý dữ liệu trở nên dễ tiếp cận và đơn giản, cho phép các nhà bán lẻ xử lý thông tin nhanh chóng và hiệu quả Với nền tảng này, chúng em hy vọng các nhà bán lẻ có thể quản lý các cửa hàng trực tuyến của họ một cách dễ dàng và tối đa hóa tiềm năng kinh doanh của họ

Trang 13

CHƯƠNG 1 MÔ TẢ ĐỀ TÀI 1.1 Phát biểu bài toán

1.1.1 Đặt vấn đề

Đại dịch COVID-19 đã mang đến những thách thức chưa từng có cho ngành thời trang Do đó, đòi hỏi các nhà bán lẻ nói riêng và các doanh nghiệp cần nắm bắt xu thế và tiến hành quy trình chuyển đổi số Sự thay đổi hành vi của người tiêu dùng và môi trường kinh doanh một cách nhanh chóng đã khiến các nền tảng thương mại điện tử và mạng xã hội bùng nổ lên và trở thành những kênh mua sắm trực tuyến phổ biến nhất gần đây Nguyên do của sự tăng trưởng trên không những nhờ sự thúc đẩy trong chuyển đổi hành vi mua hàng của người tiêu dùng sau đại dịch COVID-19, mà còn do các hoạt động quảng cáo - những ưu đãi không giới hạn cùng những chiến dịch truyền thông chớp nhoáng thúc đẩy bởi những nhà phát triển nền tảng thương mại điện tử ở Việt Nam với mục đích gia tăng số lượng người dùng và tổng giá trị hàng hóa trong cuộc đua tranh giành thị trường Đặc biệt hơn, ngành thời trang đang là một trong những ngành có doanh thu thương mại điện tử lớn nhất đối với người dùng trực tuyến tại thị trường tiêu dùng Việt Nam

Tuy vậy, hiện nay, các nền tảng thương mại điện tử đang đối mặt với nhiều thách thức trong việc quản lý, lưu trữ dữ liệu và tính ứng dụng thực tiễn Sự phát triển nhanh chóng của thời đại số đặt ra các câu hỏi cho các doanh nghiệp cũng như các nhà bán lẻ phải đối mặt và cần được giải quyết để có thể xây dựng một nền tảng thương mại điện tử đáp ứng các nhu cầu trên Điển hình như, một trang thương mại điện tử cần phải quản lý và lưu trữ một lượng lớn thông tin về khách hàng, sản phẩm, đơn đặt hàng, giao hàng và thanh toán Chính vì vậy, các thao tác quản lý dữ liệu và thiết kế dữ liệu phải được tích hợp và truy xuất một cách nhanh chóng, giải quyết sự tương tranh, đảm bảo dữ liệu chính xác và an toàn Một thách thức khác đó là việc xây dựng và cải tiến nền tảng giúp nâng cao doanh số và trải nghiệm người dùng như tối ưu hóa giao diện người dùng, cải tiến tính năng tìm kiếm và đề xuất, tích hợp chức năng thanh toán trực tiếp…

1.1.2 Giải pháp

Nắm bắt xu thế cùng tầm quan trọng trong tối ưu hóa nền tảng trong cuộc đua số, chúng em đã quyết định lựa chọn đề tài của mình là “Xây dựng trang web bán giày thể thao” - một mặt hàng tiềm năng trong ngành công nghiệp đa sản phẩm Nền tảng của chúng em được tiến hành với mục đích cung cấp trải nghiệm mua sắm trực tuyến thuận tiện, nơi khách hàng có thể dễ dàng thao tác và thỏa sức mua sắm cho bản thân những đôi giày thể thao yêu thích chúng

Trang 14

em mong muốn việc quản lý, lưu trữ và xử lý dữ liệu trở nên dễ tiếp cận và đơn giản, cho phép các nhà bán lẻ xử lý thông tin một cách nhanh chóng và hiệu quả Với nền tảng này, hy vọng các nhà bán lẻ cũng như doanh nghiệp có thể quản lý các cửa hàng trực tuyến một cách dễ dàng và tối đa hóa tiềm năng kinh doanh của họ

1.1.3 Mục tiêu của đề tài

Mục tiêu trang web của chúng em là tạo ra một trải nghiệm mua sắm trực tuyến dễ dàng và tiện lợi cho người dùng, đặc biệt là trong bối cảnh thị trường thương mại điện tử đang đối mặt với nhiều thách thức về quản lý, lưu trữ dữ liệu và tính ứng dụng thực tiễn Sự chuyển dịch kinh doanh từ mô trình truyền thống sang mô hình thương mại điện tử của thị trường giúp chúng em hiểu rõ tầm quan trọng của việc tăng cường cải tiến và phát triển mạnh mẽ một nền tảng giữa người tiêu dùng và nhà sản xuất Ngoài ra, chúng em cũng giải quyết những vấn đề quan trọng như tối ưu hóa quản lý, lưu trữ và phân tích thông tin cho khách hàng, phát triển các tính năng của trang chúng em hy vọng rằng nền tảng của mình đáp ứng mục tiêu: minh bạch, an toàn, chính xác và tiện dụng

1.1.4 Công cụ sử dụng

Trong quá trình thực hiện đề tài, nhóm đã sử dụng một số công cụ để phục vụ cho việc triển khai đề tài, bao gồm:

- Hệ điều hành: Windows 10 - Công cụ quản lý CSDL: Oracle

- Công cụ vẽ sơ đồ phân tích thiết kế: StarUML

- Công cụ xây dựng ứng dụng: Visual Studio Code, Eclipse, IntelliJ IDEA - Công cụ quản lý mã nguồn: Github, Git

1.2 Xác định và phân tích yêu cầu 1.2.1 Khảo sát hệ thống hiện có

- Nhóm đã thực hiện khảo sát trang web thương mại điện tử myshoes.vn, một trang web có độ uy tín cao và hướng tiếp cận tương tự với mô hình B2C của nhóm Thông qua quá trình khảo sát về cách trình bày sản phẩm, quy trình hoạt động của giỏ hàng, đặt hàng, nhóm nhận thấy một số điểm:

- Về ưu điểm:

+ Đa dạng sản phẩm: Trang web cung cấp một loạt các sản phẩm giày đa dạng từ nhiều thương hiệu khác nhau, đáp ứng nhu cầu và phong cách của các khách hàng

Trang 15

+ Dễ sử dụng: Giao diện trực quan và dễ sử dụng của trang web giúp người dùng dễ dàng tìm kiếm, xem thông tin sản phẩm và thực hiện mua hàng

+ Thông tin sản phẩm chi tiết: Trang web cung cấp thông tin chi tiết về từng sản phẩm, bao gồm hình ảnh, mô tả, thông số kỹ thuật và đánh giá từ người dùng, giúp người mua có cái nhìn đầy đủ về sản phẩm trước khi quyết định mua

+ Chính sách đổi trả linh hoạt: Trang web có chính sách đổi trả dễ dàng và linh hoạt, giúp khách hàng yên tâm mua hàng và đảm bảo quyền lợi của họ

- Về nhược điểm:

+ Bổ sung tính năng bộ lọc sản phẩm và sắp xếp tìm kiếm theo nhiều tiêu chí khác nhau tránh việc tra cứu thông tin sản phẩm gặp nhiều khó khăn trong trường hợp kết quả tìm kiếm hiển thị số lượng lớn thông tin trả về

Hình 1.2-1 Minh họa nhược điểm trang web myshoes.vn -1

+ Tối ưu hóa quy trình thanh toán và đặt hàng: chưa có tính năng tự động cập nhật trạng thái đơn hàng sau khi thanh toán thành công

Trang 16

Hình 1.2-2 Minh họa nhược điểm trang web myshoes.vn -2

1.2.2 Yêu cầu chức năng 1.2.3 Yêu cầu phi chức năng 1.3 Thiết kế CSDL

1.3.1 Mô hình thực thể mối kết hợp

Trang 17

Hình 1.3-1 Mô hình thực thể mối kết hợp

1.3.2 Thiết kế mô hình quan hệ ROLES (ID, NAME)

USERS (ID, NAME, USERNAME, EMAIL, PASSWORD, ADDRESS, PHONE, GENDER,

BIRTH , ROLE, ACCOUNTNONLOCKED)

USER_ROLE (USER_ID, ROLE_ID)

PRODUCTS (ID, PRODUCT_NAME, CATEGORY, PRODUCT_PRICE, IMG_URL,

DESCRIPTION, QUANTITY, BRAND_NAME, DESIGNER)

CART (CARTID, USER_ID, TOTAL)

CART_DETAILS (CARTDETAILS_ID, CARTID, PRODUCT_ID, QUANTITY, TOTAL) SHIPINFO (SHIPPINGID, USER_ID, FULLNAME, EMAIL, PHONE, ADDRESS, CITY,

POSTCODE, COUNTRY, NOTE, SHIPDATE, INVOICEID)

BRAND (BRANDID, BRANDNAME)

CATEGORY (CATEGORYID, CATEGORYNAME)

INVOICE (INVOICEID, USER_ID, STATUS, ORDER_DATE, SHIP_ADDRESS,

TOTAL_PRICE)

INVOICE_DETAILS (INVOICE_DETAILS_ID, INVOICEID, PRODUCT_ID,

QUANTITY, DISCOUNT, PRICE)

PRODUCTREVIEW (REVIEWID, USER_ID, PRODUCT_ID, RATING, COMMENTS,

REVIEWDATE)

Trang 18

1.3.3 Bảng thuyết minh quan hệ và thuộc tính

buộc

Giá trị mặc định

Kiểu dữ liệu Diễn giải

ROLES

chính

Tự động

number(10, 0) Mã phân quyền

NAME Not Null varchar2(20) Tên loại phân quyền (Admin/User)

USERS

chính

Tự động

number(19, 0) Mã người dùng

USERNAME Not Null Unique

varchar2(20) Tên người dùng

Trang 19

PRODUCT_PRICE number(19, 2) Giá sản phẩm

IMG_URL varchar2(255) Đường link hình ảnh của sản phẩm

DESCRIPTION varchar2(255) Mô tả sản phẩm QUANTITY Not Null number(10, 0) Số lượng sản phẩm

hiện có trong cửa hàng

BRAND_NAME varchar2(255) Thương hiệu của sản phẩm

DESIGNER varchar2(255) Tên người thiết kế ra sản phẩm

CART

chính

Tự động

Trang 20

CART_DETAILS

CARTDETAILS_ID Khóa chính

Tự động

number(19, 0) Mã chi tiết giỏ hàng

ngoại

number(19, 0) Mã giỏ hàng

PRODUCT_ID Khóa ngoại

number(19, 0) Mã sản phẩm hiện có trong giỏ hàng

QUANTITY Not Null number(10, 0) Số lượng sản phẩm hiện có trong giỏ hàng

TOTAL number(19, 2) Giá trị của từng loại sản phẩm trong giỏ hàng (Quantity * ProductPrice)

SHIPINFO

SHIPPINGID Khóa chính

Tự động

Trang 21

NOTE varchar2(255) Ghi chú cho đơn vị giao hàng

SHIPDATE Not Null timestamp(6) Ngày giao hàng INVOICEID Khóa

number(19, 0) Mã thương hiệu

BRANDNAME varchar2(255) Tên thương hiệu

CATEGORY

CATEGORYID Khóa chính

Tự động

number(19, 0) Mã phân loại

CATEGORYNAME varchar2(255) Tên phân loại

INVOICE

INVOICEID Khóa chính

Tự động

number(19, 0) Mã hóa đơn

varchar2(255) Trạng thái hóa đơn (Chưa thanh toán/ Đã thanh toán/ Thành công)

ORDER_DATE timestamp(6) Ngày tạo hóa đơn SHIP_ADDRESS varchar2(255) Địa chỉ giao hàng TOTAL_PRICE number(19, 2) Tổng trị giá hóa đơn

INVOICE_DETAILS

INVOICE_DETAILS_ID Khóa chính

Tự động

number(19, 0) Mã chi tiết hóa đơn

Trang 22

INVOICEID Khóa ngoại

number(19, 0) Mã hóa đơn

PRODUCT_ID Khóa ngoại

PRODUCTREVIEW

chính

Tự động

number(19, 0) Mã sản phẩm được đánh giá

RATING Not Null number(1, 1) Đánh giá (thang 1 đến 5)

COMMENTS varchar2(255) Nội dung đánh giá REVIEWDATE timestamp(6) Ngày viết đánh giá

1.3.4 Mô tả ràng buộc toàn vẹn 1.3.4.1 Ràng buộc khóa chính

Ràng buộc 1: Thuộc tính id (mã khách hàng) trong bảng USER là duy nhất

Trang 24

Ràng buộc 6: Thuộc tính BRANDID trong bảng BRAND là duy nhất

Trang 25

1.3.4.2 Ràng buộc khóa ngoại

Ràng buộc 10: Mỗi giỏ hàng được gắn liền với một người dùng cụ thể

Trang 26

SHIPINFO + - +(UserID, ProductID)

Trang 27

Thêm Xóa Sửa

Ràng buộc 16: Ngày tạo hóa đơn phải lớn hơn ngày sinh của khách hàng

• Bối cảnh: USER, INVOICE

• Nội dung: ∀ i ∈ INVOICE, ∀ u ∈ USER: i.UserID = u.id ∧ i.OrderDay > u.Birth • Bảng tầm ảnh hưởng:

Ràng buộc 17: Ngày giao hàng phải lớn hơn ngày tạo hóa đơn

• Bối cảnh: SHIPINFO, INVOICE

• Nội dung: ∀ i ∈ INVOICE, ∀ s ∈ SHIPINFO:

i InvoiceID = s.InvoiceID ∧ i.OrderDay < s.SHIPDATE • Bảng tầm ảnh hưởng:

Trang 28

Thêm Xóa Sửa

ProductID)

Trang 29

CHƯƠNG 2 XÂY DỰNG CÁC GIAO TÁC 2.1 Trigger

2.1.1 Giới thiệu

Trigger là một trường hợp đặc biệt của store procedure, nó sẽ có hiệu lực khi chúng ta thay đổi dữ liệu trên một bảng dữ liệu cụ thể, hoặc các xử lý làm thay đổi dữ liệu của các lệnh: insert, update, delete Trigger có thể chứa các lệnh truy vấn từ các bảng khác hoặc bao gồm những lệnh SQL phức tạp

Một số thuận lợi khi sử dụng trigger:

- Trigger chạy một cách tự động: chúng được kích hoạt ngay tức thì khi có sự thay đổi dữ liệu

trên bảng dữ liệu

- Trigger có thể thực hiện cascade khi việc thi hành có ảnh hưởng đến những bảng liên quan - Trigger có những hiệu lực ít bị hạn chế hơn so với ràng buộc giá trị nghĩa là có thể ràng buộc tham chiếu đến những cột của những bảng dữ liệu khác

- Khi trigger được kích hoạt bởi 1 lệnh Transact-SQL insert để thêm một bộ mới vào bảng AAA thì bộ mới này được lưu tạm thời vào một bảng tạm có tên là inserted có cùng cấu trúc với bảng AAA Khi kết thúc trigger này thì bộ dữ liệu mới thật sự lưu xuống CSDL

- Tương tự đối với lệnh delete, các bộ dữ liệu bị xóa sẽ chuyển tạm vào bảng tạm deleted

[KHAI BÁO BIẾN]

BEGIN

Thực hiện câu lệnh; [EXCEPTION

Xử lý ngoại lệ]

END; /*Kết thúc trigger*/

Trang 30

- ON table_name: chỉ định trigger sẽ được thực thi trên bảng nào

- [FOR EACH ROW]: cho biết cụ thể trigger sẽ thực thi trên từng dòng 2.1.3 Danh sách các trigger:

đơn

2 Trg_check_product_quantity Insert INVOICE_DETAILS Kiểm tra số lượng sản phẩm trong kho khi tạo

hóa đơn

3 Trg_ validate_brandname Insert,

update

PRODUCTS Brandname chỉ thuộc các giá trị trong bảng brand như: nike, adidas, puma, adlv,

balenciaga, mlb, drew,

essential

4 Trg_ validate_category Insert,

update

PRODUCTS Category chỉ thuộc trong bảng category: lifestyle, running,

ngày hiện tại

Trang 31

được đánh giá

2.1.2 Mô tả 1 số trigger

2.1.2.1 Cập nhật số lượng sản phẩm khi có thay đổi trong chi tiết hóa đơn

Mô tả: Trigger này sẽ tự động cập nhật số lượng sản phẩm trong kho khi có thay đổi trong

chi tiết hóa đơn Khi một hóa đơn được cập nhật (thêm mới, sửa đổi hoặc xóa), trigger sẽ kiểm tra các thay đổi trong chi tiết hóa đơn và cập nhật số lượng sản phẩm tương ứng trong kho

Hình 2.1-1 Trigger cập nhật sản phẩm khi có thay đổi trong chi tiết hóa đơn -1

Trang 32

Hình 2.1-2 Trigger cập nhật sản phẩm khi có thay đổi trong chi tiết hóa đơn -2

Trong trigger này, chúng ta sử dụng trigger "AFTER INSERT OR UPDATE OR DELETE" để xử lý các sự kiện sau khi hóa đơn được chèn, cập nhật hoặc xóa từ bảng INVOICE_DETAILS Khi có sự thay đổi trong chi tiết hóa đơn, chúng ta sẽ lấy mã sản phẩm (:NEW.PRODUCT_ID hoặc :OLD.PRODUCT_ID) và tính toán sự thay đổi số lượng (:NEW.QUANTITY - :OLD.QUANTITY hoặc :OLD.QUANTITY) để cập nhật số lượng sản phẩm trong kho

2.1.2.2 Kiểm tra số lượng sản phẩm trong kho khi tạo hóa đơn

Mô tả: Trigger này sẽ kiểm tra số lượng sản phẩm trong kho khi một hóa đơn mới được

tạo Nếu số lượng sản phẩm trong kho không đủ để đáp ứng yêu cầu của hóa đơn, trigger sẽ ngăn chặn việc tạo hóa đơn và hiển thị một thông báo lỗi

Hình 2.1-3 Trigger kiểm tra số lượng sản phẩm trong kho khi tạo hóa đơn

Trong trigger này, chúng ta sử dụng trigger "BEFORE INSERT" để kiểm tra số lượng sản phẩm trước khi hóa đơn được chèn vào bảng INVOICE_DETAILS Chúng ta lấy số lượng sản phẩm có sẵn trong kho dựa trên PRODUCT_ID trong hóa đơn mới được chèn (:NEW.PRODUCT_ID) Sau đó, chúng ta so sánh số lượng yêu cầu trong hóa đơn (:NEW.QUANTITY) với số lượng có sẵn trong kho Nếu số lượng yêu cầu lớn hơn số lượng

Trang 33

có sẵn, chúng ta sẽ sử dụng lệnh RAISE_APPLICATION_ERROR để hiển thị một thông báo lỗi với mã lỗi -20001 và nội dung 'Số lượng sản phẩm không đủ trong kho'

2.1.2.3 Brandname chỉ thuộc các giá trị trong bảng BRAND

Mô tả: Nếu brandname không tồn tại trong bảng brand thì sẽ thông báo lỗi

Hình 2.1-4 Trigger Brandname chỉ thuộc giá trị trong bảng brand

2.1.2.4 Category chỉ thuộc trong bảng CATEGORY

Mô tả: Nếu category không thuộc trong bảng category thì sẽ thông báo lỗi

Hình 2.1-5 Trigger Category chỉ thuộc trong bảng CATEGORY

2.1.2.5 Ngày sinh của khách hàng phải nhỏ hơn ngày hiện tại

Mô tả:

- Trigger sẽ được kích hoạt trước khi có sự thêm mới hoặc cập nhật trong bảng USER - Khi có sự thay đổi, trigger sẽ kiểm tra xem ngày sinh của khách hàng có nhỏ hơn ngày hiện tại hay không

- Nếu ngày sinh không hợp lệ, trigger sẽ ngăn chặn hành động thêm mới hoặc cập nhật và in ra một thông báo lỗi

Trang 34

Hình 2.1-6 Trigger Trg_birth_user

2.1.2.6 Ngày tạo hóa đơn bằng ngày hiện tại

Mô tả: Ngày tạo hóa đơn bằng ngày hiện tại

Hình 2.1-7 Trigger TRG_ORDER_DATE

2.1.2.7 Khách hàng phải mua sản phẩm đó mới được đánh giá

Mô tả: Trigger này được sử dụng để đảm bảo rằng khách hàng chỉ có thể đánh giá sản

phẩm nếu họ đã mua sản phẩm đó trước đó Khi có một bản ghi mới được chèn vào bảng ProductReview, trigger này sẽ kiểm tra xem khách hàng đã mua sản phẩm đó chưa Nếu khách hàng không có bản ghi trong bảng Invoice_Details tương ứng với sản phẩm, trigger sẽ ngăn việc chèn dữ liệu mới và hiển thị một thông báo lỗi

Hình 2.1-8 Trigger trg_check_product_purchase

Trang 35

2.2 Các Stored Procedure 2.2.1 Giới thiệu

Thủ tục là một chương trình con để thực hiện một hành động cụ thể nào đó Mỗi Procedure trong Oracle có tên riêng và có thể được gọi đến mỗi khi cần dùng

2.2.2 Cú pháp tạo thủ tục

CREATE [OR REPLACE] PROCEDURE <procedure name>

[(parameter1 [model] datatypel, parameter2 [mode2] datatype2, )]

IS

[KHAI BÁO CỤC BỘ]

BEGIN

Thực hiện câu lệnh; [EXCEPTION

Xử lý ngoại lệ]

END; /*Kết thúc thủ tục*/

Một số lưu ý khi viết procedure:

- IN: Đây là tham số mặc định, tham số này là sẽ là dữ liệu truyền vào - OUT: Tham số này sẽ là dữ liệu truyền ra

- IN OUT: Là tham số đặc, vừa là tham số đầu vào vừa là tham số đầu ra, và thường giá trị ban đầu bị thay đổi

Cách chạy 1 procedure:

DECLARE <parameter> BEGIN

procedure name (parameter1, parameter2);

END

2.2.3 Danh sách Stored Procedure

truyền vào

Tham số truyền ra

Mô tả

Trang 36

1 GetProductDetails Id sản phẩm Nhận vào mã sản phẩm và trả về thông tin chi tiết về sản phẩm đó

2 AddToCart UserID, ProductID, Quantity

Thêm vào giỏ hàng của user với sản phẩm và số lượng tương ứng

3 CreateInvoice UserId Tạo hóa đơn của người dùng

4 GetInvoice InvoiceID Lấy ra hóa đơn và chi tiết hóa đơn dựa vào invoiceID

5 GetUserInvoices UserID Lấy ra tất cả các hóa đơn của User

6 ClearCartItems CartID Xóa tất cả sản phẩm ra khỏi giỏ hàng khi đã đặt hàng

7 GetInvoice InvoiceID Lấy ra sản phẩm có trong hóa đơn

8 GetUserInvoices UserID Lấy ra tất cả hóa đơn của user

9 GetCartDetails UserID Lấy ra thông tin giỏ hàng của user

Trang 37

10 GetTopSellingProducts TopCount Lấy ra top sản phẩm đã bán nhiều nhất của cửa hàng

11 GetTopSellingProductsByMonth p_Month, p_Year, p_TopCount

Lấy ra top sản phẩm đã bán nhiều nhất của cửa hàng trong tháng của 1 năm

2.2.4 Mô tả một số stored procedure

Trang 39

3 Procedure tính toán tổng giá trị v_total của chi tiết sản phẩm thông qua giá sản phẩm và số lượng truyền vào Dựa vào đó thực hiện thêm chi tiết vào giỏ hàng

4 Thực hiện cập nhật lại trị giá giỏ hàng ở bảng CART tương ứng với mã giỏ hàng lấy được ở bước 2

5 Hiển thị thông tin sản phẩm vừa được thêm vào giỏ hàng

Hình 2.2-4 Procedure AddToCart -1

Trang 40

Hình 2.2-5 Procedure AddToCart -2

Ngày đăng: 16/06/2024, 16:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w