You are on page 1of 171

TRƯỜNG ĐẠI HỌC TÀI CHÍNH MARKETING

KHOA CÔNG NGHỆ THÔNG TIN


--------🕮--------

ĐỒ ÁN MÔN HỌC

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 2

Đề tài:

QUẢN TRỊ CƠ SỞ DỮ LIỆU QUẢN LÝ BÁN


HÀNG TẠI CAFR STARBUCK

Giảng viên hướng dẫn: Ths.Vũ Thị Thanh Hương

Sinh viên thực hiện 1: 2021010339 – Đoàn Phương Uyên

Sinh viên thực hiện 2: 2021010323 – Nguyễn Thị Nam Trân

Mã lớp học phần: 2231112005504

Tp.Thủ Đức, Tháng 12 năm 2022


TRƯỜNG ĐẠI HỌC TÀI CHÍNH MARKETING
KHOA CÔNG NGHỆ THÔNG TIN
--------🕮--------

ĐỒ ÁN MÔN HỌC

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 2

Đề tài:

QUẢN TRỊ CƠ SỞ DỮ LIỆU QUẢN LÝ BÁN


HÀNG TẠI CAFR STARBUCK

Giảng viên hướng dẫn: Ths. Vũ Thị Thanh Hương

Sinh viên thực hiện 1: 2021010339 – Đoàn Phương Uyên

Sinh viên thực hiện 2: 2021010323 – Nguyễn Thị Nam Trân

Mã lớp học phần: 2231112005504

Tp.Thủ Đức, Tháng 12 năm 2022


LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn cô Vũ Thị Thanh Hương đã giúp đỡ, hỗ trợ chúng
em để tận tình hoàn thành đồ án môn học này.

Với vốn kiến thức cũng như kinh nghiệm còn rất khiêm tốn và là bước đầu làm
quen với công việc nghiên cứu mang tính thực nghiệm thì chắc chắn kết quả đạt
được của chúng em cũng không tránh khỏi những hạn chế nhất định. Chúng em rất
mong muốn được các Giảng viên, những bạn Sinh viên đi trước hay bất kỳ độc giả
nào quan tâm và góp ý để chúng em hoàn thiện hơn cho các đồ án cũng như các
nghiên cứu tiếp theo của mình.

Xin kính chúc Thạc sĩ Vũ Thị Thanh Hương cùng tất cả những người đã hỗ trợ và
đóng góp ý kiến cho chúng em cùng những người thân của mình lời chúc sức khỏe,
hạnh phúc và thành đạt.

Xin chân thành cảm ơn. Sinh viên: Đoàn Phương Uyên – Nguyễn Thị Nam Trân.
ĐÁNH GIÁ VÀ NHẬN XÉT CỦA GIẢNG VIÊN
..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

..............................................................................................................................

Điểm số: ...............................................................................................................

Điểm chữ: .............................................................................................................

Tp. Thủ Đức, ngày …. tháng … năm 2022

Giảng viên phụ trách học phần

(Ký và ghi rõ họ tên)


DANH MỤC VIẾT TẮT
Từ viết tắt Chú giải
CSDL Cơ sở dữ liệu
QLBH Quản lý bán hàng
DBMS Database Management System
PL/SQL Procedural Language extension to SQL
TDI Traders Dynamic Index
RDBMS Relational Database Management
System
OLAP Oracle Analytics Processing
DANH MỤC THUẬT NGỮ ANH – VIỆT

Thuật ngữ Tiếng Anh Thuật ngữ Tiếng Việt

Database Cơ sở dữ liệu

Database Management System Hệ quản trị cơ sở dữ liệu

Relational Database Management Hệ quản trị cơ sở dữ liệu quan hệ


System

Data Redaction Che giấu dữ liệu

View Khung nhìn

Function Hàm

Procedure Thủ tục

Trigger Trình bắt lỗi tự động

Sequence Trình đánh số tự động


DANH MỤC BẢNG BIỂU
Bảng 3.1. Thiết kế bảng khu vực (khuvuc)................................................................2

Bảng 3.2. Thiết kế bảng chi nhánh (chinhanh)..........................................................2

Bảng 3.3. Thiết kế bảng loại cà phê (loaicafe)...........................................................2

Bảng 3.4. Thiết kế bảng thương hiệu (thuonghieu)...................................................2

Bảng 3.5. Thiết kế bảng danh sách cà phê (dscafe)...................................................2

Bảng 3.6. Thiết kế bảng tồn kho (tonkho).................................................................2

Bảng 3.7. Thiết kế bảng hoa hồng (hoahong)............................................................2

Bảng 3.8. Thiết kế bảng công việc (congviec)...........................................................2

Bảng 3.9. Thiết kế bảng nhân viên (nhanvien)..........................................................2

Bảng 3.10. Thiết kế bảng khách hàng........................................................................2

Bảng 3.11. Thiết kế bảng đơn đặt hàng (dondathang)...............................................2

Bảng 3.12. Thiết kế bảng chi tiết đơn đặt hàng (ctdonhang).....................................2

Bảng 3.13. Bảng tầm ảnh hưởng mẫu........................................................................2

Bảng 3.14. Ràng buộc các khóa chính của các bảng (Table).....................................2

Bảng 3.15. Ràng buộc khóa ngoại giữa các bảng(Table)...........................................2

Bảng 3.16. Bảng tầm ảnh hưởng ràng buộc khối lượng sản phẩm.............................2

Bảng 3.17. Bảng tầm ảnh hưởng ràng buộc giá bán sản phẩm..................................2

Bảng 3.18. Bảng tầm ảnh hưởng ràng buộc số lượng tồn kho...................................2

Bảng 3.19. Bảng tầm ảnh hưởng ràng buộc số tiền hoa hồng....................................2

Bảng 3.20. Bảng tầm ảnh hưởng ràng buộc lương nhân viên....................................2

Bảng 3.21. Bảng tầm ảnh hưởng ràng buộc số lượng đặt hàng..................................2
DANH MỤC HÌNH ẢNH
Hình 1.1. Sơ đồ bộ máy tổ chức của cửa hàng cafe Starbuck. Error! Bookmark not
defined.

Hình 1.2: Cửa hàng cafe Starbuck............................Error! Bookmark not defined.

Hình 2.1. Tiến trình phát triển hệ quản trị CSDL......................................................6

Hình 2.2. Kiến trúc một DBMS.................................................................................7

Hình 2.3. Kiến trúc Run-time của PL/SQL................................................................9

Hình 2.4. Logo của oracle.......................................................................................10

Hình 2.5. Khởi động phần mềm Oracle SQL Deverloper........................................11

Hình 2.6. Giao diện làm việc của phần mềm Oracle SQL Developer......................11

Hình 2.7. Logo của phần mềm thiết kế PowerDesigner...........................................14

Hình 2.8. Giao diện làm việc của phần mềm thiết kế Power Designer....................15

Hình 3.1. Mô hình lược đồ quan hệ của các thực thể...............................................18

Hình 3.2. Mô hình thực thể kết hợp.........................................................................19

Hình 3.3. Mô hình quan hệ - thực thể......................................................................20

Hình 4.1. Kết quả trước và sau khi cập nhật 5% giá bán.........................................42

Hình 4.2. Kết quả trước và sau khi cập nhật giá bán của thương hiệu Nón Lá........43

Hình 4.3. Kết quả cập nhật số điện thoại nhân viên.................................................43

Hình 4.4. Kết quả cập nhật chuyển công việc cho nhân viên...................................44

Hình 4.5. Kết quả cập nhật giá bán và ngày sản xuất của sản phẩm........................45

Hình 4.6. Nhập số lượng cà phê đã bán...................................................................46

Hình 4.7. Kết quả cập nhật số lượng sản phẩm tồn kho sau khi đã bán...................46

Hình 4.8. Kết quả sau khi cập nhật giá bán của hai mặt hàng bằng nhau................46
Hình 4.9. Kết quả sau khi đã cập nhật nhập thêm sản phẩm....................................47

Hình 4.10. Kết quả cập nhật giá của các sản phẩm chưa có đơn hàng.....................48

Hình 4.11. Kết quả cập nhật tăng giá sản phẩm có nhiều đơn hàng nhất.................49

Hình 4.12. Kết quả xóa một nhân viên đã nghỉ việc ra khỏi danh sách...................50

Hình 4.13. Kết quả ngừng kinh doanh một mặt hàng trong cửa hàng......................51

Hình 4.14. Kết quả cho nhân viên được nhập tên cụ thể thôi việc...........................51

Hình 4.15. Kết quả xóa các sản phẩm có số lượng tồn lớn hơn 1500......................52

Hình 4.16. Kết quả xóa các mặt hàng trong chi tiết đơn do nhân viên lập sai.........53

Hình 4.17. Kết quả xóa loại cà phê mà hiện không có mặt hàng.............................53

Hình 4.18. Nhập đơn hàng và mặt hàng cần xóa.....................................................54

Hình 4.19. Kết quả xóa mặt hàng trong chi tiết đơn theo yêu cầu...........................54

Hình 4.20. Nhập chi nhánh cần xóa mặt hàng.........................................................55

Hình 4.21. Kết quả xóa sản phẩm có lượng tồn <=10 có yêu cầu chi nhánh...........55

Hình 4.22. Kết quả xóa các mặt hàng thuộc chi tiết đơn được lập trước 2021.........56

Hình 4.23. Kết quả xóa các nhân viên đóng hàng thuộc khu vực 1.........................57

Hình 4.24. Tạo Index trên bảng tồn kho thành công................................................57

Hình 4.25. Tạo Index trên bảng chi tiết đơn hàng thành công.................................58

Hình 4.26. Tạo Index trên bảng nhân viên thành công............................................58

Hình 4.27. Thông tin nhân viên được xếp theo khu vực..........................................59

Hình 4.28. Liệt kê thông tin khách hàng..................................................................60

Hình 4.29. Liệt kê thông tin sản phẩm cà phê kinh doanh.......................................61

Hình 4.30. Thông tin đơn đặt hàng của khách hàng................................................62

Hình 4.31. Liệt kê thông tin tồn kho của mặt hàng ở các chi nhánh........................62

Hình 4.32. Thông tin các bộ phận công việc...........................................................63


Hình 4.33. Thông tin các chi nhánh đang hoạt động...............................................64

Hình 4.34. Liệt lê các loại cà phê đang kinh doanh.................................................64

Hình 4.35. Thông tin một số thương hiệu đang kinh doanh.....................................65

Hình 4.36. Thông tin tồn kho của tất cả chi nhánh..................................................66

Hình 4.37. Thông tin các chi tiết đơn đặt hàng........................................................67

Hình 4.38. Thông tin các mặt hàng có giá bán 100000VND – 1000000VND.........68

Hình 4.39. Liệt kê thông tin các mặt hàng có trong dưới 5 đơn hàng......................69

Hình 4.40. Thông tin về các sản phẩm thuộc TN và LC có giá dưới 100000VND..70

Hình 4.41. Liệt kê thông tin trước và sau khi giảm 15% các mặt hàng....................71

Hình 4.42. Số lượng mặt hàng của từng loại cà phê đang kinh doanh.....................72

Hình 4.43. Số lượng đơn đặt hàng trong năm hiện tại.............................................72

Hình 4.44. Thông tin các nhân viên làm việc ở bộ phận tư vấn...............................73

Hình 4.45. Liệt kê số lượng nhân viên ở từng bộ phận công việc............................74

Hình 4.46. Liệt kê các đơn hàng với nhân viên phụ trách được người dùng nhập...74

Hình 4.47. Thông tin các sản phẩm có ngày sản xuất sau 9/2021............................75

Hình 4.48. Thông tin các nhân viên vào làm việc từ năm 2020...............................76

Hình 4.49. Danh sách các nhân viên đã làm việc từ 3 năm trở lên..........................77

Hình 4.50. Danh sách các nhân viên có lương dưới 4000000VND.........................78

Hình 4.51. Tạo Sequence đánh số mã đơn đặt hàng tự động thành công.................78

Hình 4.52. Tạo Sequence đánh số mã khách hàng tự động thành công...................79

Hình 4.53. Tạo Sequence đánh số mã cà phê tự động thành công...........................79

Hình 4.54. Kết quả kiểm thử View thông tin các sản phẩm đang kinh doanh.........81

Hình 4.55. Kết quả kiểm thử View thông tin các nhân viên các bộ phận................82

Hình 4.56. Kết quả kiểm thử View số lượng nhân viên từng bộ phận.....................83
Hình 4.57. Kết quả kiểm thử View các đơn đặt hàng lập trong năm hiện tại...........84

Hình 4.58. Kết quả kiểm thử View thành tiền của các đơn đặt hàng.......................85

Hình 4.59. Kết quả kiểm thử View số lượng tồn kho tại các chi nhánh...................86

Hình 4.60. Kết quả kiểm thử View nhân viên chưa lập đơn hàng nào.....................87

Hình 4.61. Kết quả kiểm thử function f_name_caphe.............................................88

Hình 4.62. Kết quả kiểm thử function f_avg_giaban_loaicf....................................89

Hình 4.63. Kết quả kiểm thử Function f_time_sanxuat...........................................91

Hình 4.64. Kết quả kiểm thử Function f_sum_slton_mac.......................................92

Hình 4.65. Kết quả kiểm thử Function f_cafe_min_slton........................................93

Hình 4.66. Kết quả kiểm thử Function f_luong_nhanvien.......................................95

Hình 4.67. Kết quả kiểm thử Function f_tong_luong..............................................96

Hình 4.68. Kết quả kiểm thử Function f_thanhtien_ddh..........................................97

Hình 4.69. Bảng lương trước khi thực thi proc_capnhat_luong_congviec...............99

Hình 4.70. Bảng lương sau khi thực thi proc_capnhat_luong_congviec..................99

Hình 4.71. Bảng giá bán các mặt hàng trước khi thực thi proc_tang_giaban.........100

Hình 4.72. Bảng giá bán các mặt hàng sau khi thực thi proc_tang_giaban............100

Hình 4.73. Bảng giá bán các mặt hàng trước khi thực thi proc_giam_giaban........102

Hình 4.74. Bảng giá bán các mặt hàng sau khi thực thi proc_giam_giaban...........102

Hình 4.75. Giá bán của các sản phẩm trước khi thực thi proc_lamtron_giaban.....104

Hình 4.76. Giá bán của các sản phẩm sau khi thực thi proc_lamtron_giaban........105

Hình 4.77. Mã hoa hồng của các nhân viên trước thực thi proc_capnhat_mahh....107

Hình 4.78. Mã hoa hồng của các nhân viên sau thực thi proc_capnhat_mahh.......107

Hình 4.79. Trước khi thực thi proc_capnhat_nhanvien_phutrachddh....................109

Hình 4.80. Sau khi thực thi proc_capnhat_nhanvien_phutrachddh........................109


Hình 4.81. Giải quyết thôi việc thành công sau khi thực thi thủ tục......................109

Hình 4.82. Danh sách số lượng tồn kho sau thực thi proc_thongtin_tonkho.........112

Hình 4.83. Thông tin nhân viên sau thực thi proc_timkiem_nhanvien..................114

Hình 4.84. Các mặt hàng đã có đơn sau thực thi proc_danhsach_banhang............116

Hình 4.85. Các đơn hàng sau thực thi proc_thongtin_ddh_cuanvphutrach............118

Hình 4.86. Mã đơn đặt hàng thêm mới tự động sau thực thi proc_them_ddh........120

Hình 4.87. Mã khách hàng tự động thêm mới sau thực thi proc_them_kh............121

Hình 4.88. Mã mà phê được thêm mới sau khi thực thi proc_them_cf.................123

Hình 4.89. Kết quả thành tiền trước khi thực thi thủ tục........................................125

Hình 4.90. Kết quả cập nhật thành tiền sau khi thực thi thủ tục.............................125

Hình 4.91. Kết quả kiểm thử ngày giao hàng trước ngày lập đơn..........................127

Hình 4.92. Kết quả kiểm thử ngày giao hàng sau ngày lập đơn.............................127

Hình 4.93. Kết quả kiểm thử ngày vào làm của nhân viên sau ngày hiện tại.........128

Hình 4.94. Kết quả kiểm thử ngày vào làm của nhân viên trước ngày hiện tại......129

Hình 4.95. Kết quả loại cà phê trước thực thi........................................................130

Hình 4.96. Kết quả xóa loại cà phê sau khi đã thực thi..........................................130

Hình 4.97. Kết quả thương hiệu trước thực thi......................................................131

Hình 4.98. Kết quả xóa thương hiệu sau khi đã thực thi........................................131

Hình 4.99. Kết quả kiểm thử ngày sản xuất lớn hơn ngày hiện tại........................132

Hình 4.100. Kết quả kiểm thử ngày sản xuất nhỏ hơn ngày hiện tại......................133

Hình 4.101. Kết quả kiểm thử với số lượng tồn bé hơn số lượng đặt hàng............134

Hình 4.102. Kết quả kiểm thử với số lượng tồn lớn hơn số lượng đặt hàng..........134

Hình 4.103. Kết quả truy vấn trước khi cập nhật chi tiết đơn hàng.......................136

Hình 4.104. Kết quả sau khi thực thi trigger và cập nhật chi tiết đơn hàng...........136
Hình 4.105. Kết quả truy vấn trước khi xóa đơn hàng...........................................138

Hình 4.106. Kết quả đã thực thi trigger và xóa đơn đặt hàng................................139

Hình 4.107. Kết quả truy vấn trước khi xóa khách hàng.......................................140

Hình 4.108. Kết quả sau khi thực thi trigger và xóa khách hàng...........................140
MỤC LỤC
Lời cảm ơn............................................................................................... i

Đánh giá và nhận xét của giảng viên 1.................................................ii

Đánh giá và nhận xét của giảng viên 2................................................iii

Danh mục viết tắt.................................................................................. iv

Danh mục thuật ngữ Anh – Việt...........................................................v

Danh mục bảng biểu............................................................................. vi

Danh mục hình ảnh............................................................................ viii

Bảng phân công nhóm........................................................................xiv

Mục lục................................................................................................. xv

Chương 1: Tổng quan đề tài.................................................................1

1.1 Tổng quan đề đề tài....................................................................................1

1.2 Mục tiêu đề tài............................................................................................1

1.3 Đối tượng nghiên cứu.................................................................................2

1.3.1 Giới thiệu về Starbuck..........................................................................2

1.3.2 Starbuck– Nơi gắn kết những con người với nhau.............................3

1.4 Phạm vi đề tài.............................................................................................4

1.5 Nội dung đề tài...........................................................................................4

Chương 2: Cơ sở lý thuyết....................................................................6

2.1 Tổng quan về hệ quản trị cơ sở dữ liệu....................................................6

2.2 Ngôn ngữ PL/SQL (Procedural Language extension to SQL)................8

2.2.1 Giới thiệu..............................................................................................8


2.2.2 Lợi ích của PL/SQL.............................................................................9

2.3 Một số công cụ hỗ trợ.................................................................................9

2.3.1 Tổng quan về phần mềm Oracle SQL developer.................................9

2.3.1.1 Giới thiệu.......................................................................................9

2.3.1.2 Cấu tạo của Oracle......................................................................10

2.3.1.3 Lịch sử hình thành........................................................................11

2.3.1.4 Các tính năng được hỗ trợ bởi Oracle..........................................11

2.3.1.5 Ưu điểm........................................................................................13

2.3.1.6 Nhược điểm..................................................................................13

2.3.2 Tổng quan về phần mềm thiết kế Power Designer............................14

2.3.2.1 Giới thiệu......................................................................................14

2.3.2.2 Công dụng....................................................................................14

Chương 3: Thiết kế cơ sở dữ liệu bán hàng của cửa hàng cafe


Starbuck............................................................................................... 16

3.1 Phân tích và thiết kế DB:.........................................................................16

3.1.1 Phân tích nghiệp vụ:..........................................................................16

3.1.2 Thiết kế DB:.......................................................................................17

3.1.3 Thiết kế các mô hình:.........................................................................18

3.1.3.1 Mô hình lược đồ quan hệ của các thực thể:..................................18

3.1.3.2 Mô hình thực thể kết hợp:.............................................................19

3.1.3.3 Mô hình quan hệ - thực thể:.........................................................20

3.1.4 Thiết kế các bảng cho các thực thể:..................................................20

3.1.5 Các ràng buộc toàn vẹn:....................................................................25

3.1.5.1 Ràng buộc toàn vẹn là gì?............................................................25


3.1.5.2 Bảng tầm ảnh hưởng?..................................................................26

3.1.5.3 Ràng buộc khóa chính:.................................................................26

3.1.5.4 Ràng buộc khóa ngoại:.................................................................27

3.1.5.5 Các ràng buộc khác:....................................................................28

3.2 Tạo các bảng trong hệ quản trị cơ sở dữ liệu Oracle với SQL
Developer:..............................................................................................................
29

3.2.1 Tạo các bảng:.....................................................................................29

3.2.2 Cập nhật dữ liệu cho việc ứng dụng:................................................34

3.2.2.1 Thứ tự nhập dữ liệu:.....................................................................34

3.2.2.2 Dữ liệu mẫu:.................................................................................35

Chương 4: Ứng dụng vào các nghiệp vụ quản lý bán hàng tại cửa
hàng bán hạt cafe Starbuck.................................................................41

4.1 Thao tác trên dữ liệu của các bảng:........................................................41

4.1.1 Cập nhật dữ liệu:...............................................................................41

4.1.1.1 Cập nhật giá bán của các sản phẩm, giá bán giảm 5%:..............41

4.1.1.2 Cập nhật giá bán của các sản phẩm thuộc thương hiệu “Nón lá
Coffee”, tăng thêm 5000:............................................................................42

4.1.1.3 Cập nhật số điện thoại của nhân viên có mã “DH0005”, số điện
thoại là “0975301025”:..............................................................................43

4.1.1.4 Cập nhật chuyển nhân viên giao hàng có mã “GH0007” sang
công việc khác:............................................................................................43

4.1.1.5 Cập nhật ngày sản xuất thành 10/11/2021 và giá của sản phẩm,
mã sản phẩm do người dùng nhập:.............................................................44
4.1.1.6 Cập nhật số lượng tồn của các sản phẩm trong bảng tồn kho khi
sản phẩm được bán:....................................................................................45

4.1.1.7 Cập nhật giá bán của sản phẩm có mã “CF0003” bằng với giá
bán của sản phẩm có mã “CF0002”:.........................................................46

4.1.1.8 Cập nhật thêm 50 sản phẩm cho các mặt hàng có số lượng tồn
dưới 20: ......................................................................................................47

4.1.1.9 Cập nhật giảm giá 10% cho các sản phẩm chưa có đơn đặt hàng
nào: ......................................................................................................48

4.1.1.10 Cập nhật tăng giá thêm 5% cho những sản phẩm cafe có số lượng
mua nhiều nhất:...........................................................................................48

4.1.2 Xóa dữ liệu:........................................................................................49

4.1.2.1 Cho thôi việc một nhân viên do người dùng nhập vào:................49

4.1.2.2 Cho phép người dùng nhập cà mã cafe và ngừng kinh doanh cafe
đó: ......................................................................................................50

4.1.2.3 Cho thôi việc nhân viên có tên “Phan Trong Hieu”:...................51

4.1.2.4 Xóa các mặt mặt hàng trong kho có số lượng tồn trên 1500 mặt
hàng ......................................................................................................51

4.1.2.5 Xóa tất cả các đơn hàng hàng do nhân viên có mã “TV0004” phụ
trách: ......................................................................................................52

4.1.2.6 Xóa loại cà phê mà hiện không có mặt hàng nào trừ “Khác”......53

4.1.2.7 Hủy một mặt hàng trong chi tiết đơn hàng đã lập đơn.................54

4.1.2.8 Xóa các mặt hàng trong kho có số lượng tồn <=10, mã chi nhánh
do người dùng nhập....................................................................................55

4.1.2.9 Xóa các mặt hàng thuộc bảng chi tiết có đơn hàng được lập trước
2021 ......................................................................................................56

4.1.2.10 Xóa các nhân viên đóng hàng thuộc khu vực 1...........................56
4.2 Index..........................................................................................................57

4.2.1 Tạo Index trên bảng tồn kho:............................................................57

4.2.2 Tạo Index trên bảng chi tiết đơn hàng:.............................................58

4.2.3 Tạo Index trên bảng nhân viên:........................................................58

4.3 Truy vấn....................................................................................................58

4.3.1 Truy vấn thông tin của nhân viên trong cửa hàng và sắp xếp theo
khu vực:..............................................................................................................
58

4.3.2 Truy vấn thông tin khách hàng:........................................................59

4.3.3 Truy vấn thông tin sản phẩm hạt cafe tại cửa hàng:........................60

4.3.4 Truy vấn thông tin các đơn đặt hàng của khách hàng và sắp xếp
chúng theo mã đơn đặt hàng và mã khách hàng:.........................................61

4.3.5 Truy vấn thông tin tồn kho của cửa hàng, với chi nhánh được người
dùng nhập vào:...............................................................................................62

4.3.6 Truy vấn các công việc được các nhân viên thực hiện tại cửa hàng:...
............................................................................................................63

4.3.7 Truy vấn thông tin của các chi nhánh thuộc Starbuck:...................63

4.3.8 Truy vấn thông tin các loại cafe có tại cửa hàng:.............................64

4.3.9 Truy vấn thông tin các thương hiệu cafe mà cửa hàng kinh doanh:...
............................................................................................................64

4.3.10 Truy vấn thông tin tồn kho.............................................................65

4.3.11 Truy vấn thông tin chi tiết các đơn đặt hàng:................................66

4.3.12 Truy vấn liệt kê tên và giá bán của các sản phẩm có giá từ 100.000
VNĐ đến 1.000.000 VNĐ:..............................................................................67
4.3.13 Truy vấn danh sách gồm: Mã cafe, tên cafe, có trong ít hơn 5 đơn
đặt hàng:.........................................................................................................68

4.3.14 Truy vấn: Mã cafe, tên cafe, giá bán của các sản phẩm thuộc
thương hiệu “Trung Nguyen”, “Lion Cafe” và có mức giá dưới 100.000
VNĐ: 69

4.3.15 Truy vấn cho biết danh sách sản phẩm với giá sản phẩm được
giảm 15% với các thông tin: Mã cafe, tên cafe, giá bán và giá sau giảm:....70

4.3.16 Truy vấn cho biết số lượng sản phẩm của mỗi loại cafe đang kinh
doanh tại cửa hàng:.......................................................................................71

4.3.17 Truy vấn cho biết tổng số đơn đặt hàng trong năm hiện hành:....72

4.3.18 Truy vấn các nhân viên tư vấn của cửa hàng:..............................72

4.3.19 Truy vấn số lượng nhân viên của mỗi công việc tại cửa hàng:.....73

4.3.20 Truy vấn thông tin các đơn đặt hàng của nhân viên phụ trách do
người dùng nhập vào:....................................................................................74

4.3.21 Truy vấn thông tin các hạt cafe được sản xuất sau tháng 9 năm
2021: .........................................................................................................74

4.3.22 Truy vấn thông tin các nhân viên bắt đầu làm việc từ năm 2020: 75

4.3.23 Truy vấn thông tin nhân viên có thời gian làm việc tại cửa hàng từ
3 năm trở lên:.................................................................................................76

4.3.24 Truy vấn thông tin nhân viên có lương ít hơn 4000000:...............77

4.4 Sequence:..................................................................................................78

4.4.1 Sequence dùng để đánh số tự động cho mã đơn đặt hàng:...............78

4.4.2 Sequence dùng để đánh số tự động cho mã khách hàng:.................79

4.4.3 Sequence dùng để đánh số tự động cho mã cafe:.............................79

4.5 View:.........................................................................................................80
4.5.1 View xem bảng giá các hạt cafe được bán tại cửa hàng:..................80

4.5.2 View xem thông tin nhân viên:..........................................................81

4.5.3 View xem số nhân viên của mỗi công việc tại cửa hàng:..................82

4.5.4 View xem các đơn hàng được lập trong năm hiện hành và sắp xếp
chúng theo mã đơn đặt hàng tăng dần:.........................................................83

4.5.5 View xem thành tiền của các đơn hàng:...........................................84

4.5.6 View xem danh sách số lượng cafe còn tồn kho tại các chi nhánh:.85

4.5.7 View xem danh sách nhân viên chưa phụ trách đơn đặt hàng nào: 86

4.6 Function:...................................................................................................87

4.6.1 Function cho biết tên sản phẩm với mã cafe là tham số truyền vào:87

4.6.2 Function lấy giá trị trung bình giá bán của các sản phẩm với mã loại
(maloaicf) là tham số truyền vào:..................................................................88

4.6.3 Function có tham số truyền vào là mã cafe (macf) và cho biết thời
gian tồn tại của sản phẩm đó kể từ ngày sản xuất:.......................................90

4.6.4 Function tính tổng số lượng tồn kho tại tất cả chi nhánh của một
sản phẩm do người dùng nhập vào:..............................................................91

4.6.5 Function tìm mặt hàng có số lượng tồn nhỏ nhất của các chi nhánh,
tham số truyền vào là mã chi nhánh (macn):................................................92

4.6.6 Function tính lương của một nhân viên được người dùng nhập vào
mã nhân viên (manv):....................................................................................94

4.6.7 Function tính tổng lương của tất cả nhân viên của cửa hàng:........95

4.6.8 Function tính thành tiền của đơn hàng được người dùng nhập vào
mã đơn đặt hàng (maddh):.............................................................................96

4.7 Stored Procedure:....................................................................................97

4.7.1 Procedure cập nhật lương của các nhân viên của một công việc:. . .98
4.7.2 Procedure tăng giá bán tất cả sản phẩm thêm một tỉ lệ phần trăm
nào đó:................................................................................................................
99

4.7.3 Procedure giảm giá bán tất cả sản phẩm đi một tỉ lệ phần trăm nào
đó: ..........................................................................................................101

4.7.4 Procedure làm tròn giá bán của các sản phẩm mà cửa hàng kinh
doanh: ..........................................................................................................103

4.7.5 Procedure cập nhật mã hoa hồng của nhân viên:..........................105

4.7.6 Procedure cập nhật nhân viên phụ trách đơn hàng khi quyết định
thôi việc một nhân viên nào đó:...................................................................107

4.7.7 Procedure xem danh sách cafe còn tồn kho tại chi nhánh (macn) mà
người dùng nhập vào:..................................................................................109

4.7.8 Procedure tìm kiếm và xem thông tin của nhân viên có mã (manv)
được nhập vào bởi người dùng:...................................................................112

4.7.9 Procedure cho phép xem danh sách cafe được bán từ chạy nhất đến
ít người mua nhất:.......................................................................................114

4.7.10 Procedure nhập vào mã nhân viên (manv) và trả về các đơn đặt
hàng do nhân viên đó phụ trách:.................................................................116

4.7.11 Procedure thêm đơn đặt hàng với đánh số tự động:....................118

4.7.12 Procedure thêm khách hàng với đánh số tự động:......................120

4.7.13 Procedure thêm cafe với đánh số tự động:...................................122

4.7.14 Procedure cập nhật thành tiền của đơn hàng..............................123

4.8 Trigger:...................................................................................................126

4.8.1 Trigger kiểm tra thời hạn giao hàng của đơn hàng phải sau ngày lập
đơn: ..........................................................................................................126
4.8.2 Trigger kiểm tra ngày vào làm phải nhỏ hơn hoặc bằng ngày hiện
hành: ..........................................................................................................127

4.8.3 Trigger khi xóa một loại cafe thì các sản phẩm thuộc loại đó sẽ được
cập nhật mã loại là “L00”:..........................................................................129

4.8.4 Trigger khi xóa một thương hiệu cafe thì các sản phẩm thuộc
thương hiệu đó sẽ được cập nhật mã thương hiệu là “00”:.......................130

4.8.5 Trigger kiểm tra ngày sản xuất của cafe phải nhỏ hơn hoặc bằng
ngày hiện tại:................................................................................................131

4.8.6 Trigger kiểm tra số lượng hàng được đặt phải nhỏ hơn số lượng tồn
hiện có của chi nhánh phụ trách đơn và cập nhật số lượng tồn khi thêm một
chi tiết đơn đặt hàng mới:............................................................................133

4.8.7 Trigger kiểm tra số lượng hàng được đặt sau khi chỉnh sửa phải nhỏ
hơn số lượng tồn hiện có của chi nhánh phụ trách đơn và cập nhật số lượng
tồn khi chỉnh sửa một chi tiết đơn hàng:.....................................................135

4.8.8 Trigger khi hủy đơn đặt hàng thì hủy cả các chi tiết của đơn hàng đó
và cập nhật lại số lượng tồn của sản phẩm:................................................137

4.8.9 Trigger khi xóa một khách hàng ra khỏi hệ thống thì các đơn đặt
hàng của khách hàng đó cũng sẽ được xóa:...............................................139

Chương 5: Kết luận và hướng phát triển.........................................141

5.1 Kết luận...................................................................................................141

5.1.1 Những kết quả đạt được...................................................................141

5.1.2 Hạn chế............................................................................................141

5.2 Hướng phát triển....................................................................................141

5.2.1 Hướng khắc phục hạn chế...............................................................141

5.2.2 Hướng phát triển..............................................................................142

Tài liệu tham khảo............................................................................. 143


Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI


1.1 Tổng quan đề đề tài

Cùng với sự phát triển của công nghệ thông tin và sự xâm nhập của tin học
vào mọi lĩnh vực của đời sống, thế nên việc sử dụng máy tính vào công cuộc quản
lý là vô cùng cấp bách và cần thiết nhằm nâng cao độ hiệu quả của quá trình quản lý
nhất là thời kì diễn ra cuộc cách mạng 4.0 như hiện nay.

Công cuộc quản lý bán hàng của cửa hàng Sarbuck cũng không ngoại lệ. Do
số lượng cơ sở (chi nhánh) cửa hàng ngày càng nhiều, số lượng mặt hàng ngày càng
phong phú và không ngừng đổi mới, số lượng khách hàng ngày một tăng lên, nên
cần có một hệ thống CSDL quản lý bán hàng gần như là một điều không thể thiếu ở
các chi nhánh của cửa hàng này.

Đó cũng là lý do đề tài này ra đời nhằm đáp ứng được nhu cầu của cửa hàng
cafe Starbuck về một hệ thống quản lý bán hàng, giúp cải thiện tích cực về hiệu quả
và nhanh chóng trong việc xử lý những thông tin của các mặt hàng, lượng tồn kho,
khách hàng, hóa đơn và một số thông tin cần thiết khác.

1.2 Giới thiệu về Starbuck

Vào ngày 30 tháng 3 năm 1971, với sự hợp tác của 3 thành viên: giáo viên
tiếng Anh Jerry Baldwin, giáo viên lịch sử Zev Siegl, và nhà văn Gordon Bowke thì
cửa hàng Cà phê Starbucks đầu tiên đã được mở tại Seattle, Washington. Cả ba góp
vốn mở một cửa hàng lấy tên là "Cà phê Starbucks cà phê, trà, và đồ ăn nhẹ" ở
Pikes Place Market, một khu vực đông khách du lịch thuộc Seattle. Ba đối tác đầu
tiên này cùng có sở thích uống những loại trà và cà phê ngon, đặc trưng; họ cùng tin
tưởng sẽ tạo dựng được một nhóm khách hàng riêng của cửa hàng mình, giống như
một số cửa hàng khác ở Vịnh San Francisco đã làm. Sự đổi thay của Cà phê
Starbucks chỉ thực sự bắt đầu khi Howard Schultz, một trong những người sáng lập
làm giám đốc và trực tiếp phụ trách hoạt động marketing của công ty. Là một người
hết sức năng động và nhiều ý tưởng, Howard Schultz đã phù phép để biến Cà phê
Trang 1
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Starbucks từ con số không trở thành một thương hiệu đắt giá bậc nhất thế giới. Sự
hình thành và đi lên vô cùng ngoạn mục của Cà phê Starbucks là được bắt đầu từ
một sự tình cờ. Khi lần đầu tiên được thưởng thức những chén cà phê Espresso làm
cho ông đã nhận ra tiềm năng của việc đưa phong cách phục vụ cà phê Ý đến với
nước Mỹ.

Trải qua 40 năm gây dựng và phát triển, Starbucks không chỉ bó hẹp bản
thân nó tại Seattle hay Mỹ, mà thậm chí còn lan ra khỏi châu lục, đưa nghệ thuật
thưởng thức cà phê Ý hiện đại đến với các quốc gia khác như Nhật Bản, Hongkong,
Nam Phi…

Thương hiệu cà phê Starbucks hiện nay đã chiếm được vị thế cao trong thị
trường cà phê với hơn 20.000 cửa hàng tại 61 quốc gia trên thế giới với 150.000
nhân viên. Nhân viên của hãng tại Mỹ có mức lương trung bình 8,8 USD một giờ và
được đóng bảo hiểm cùng một số quyền chọn mua cổ phiếu. Hơn 65% cửa hàng của
Starbucks được đặt tại Mỹ.

Trang 2
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Trong quý kết thúc vào ngày 27/6 năm 2021, lợi nhuận của Starbucks đạt 1,1
tỷ USD, sau khi lỗ 678,4 triệu USD trong cùng kỳ năm 2020 vì dịch Covid-19.

Đạo đức và Tuân thủ: Chúng tôi tin rằng hoạt động kinh doanh có đạo đức
và nỗ lực làm điều đúng đắn là yếu tố sống còn đối với sự thành công của
công ty.

 Đạo đức và Tuân thủ của Starbucks hỗ trợ sứ mệnh và giá trị của họ,
đồng thời giúp bảo vệ văn hóa và danh tiếng của họ bằng cách thúc
đẩy văn hóa cam kết lãnh đạo có đạo đức và tiến hành kinh doanh một
cách liêm chính bằng cách cung cấp các nguồn lực giúp đối tác đưa ra
các quyết định có đạo đức tại nơi làm việc.
 Họ thực hiện điều này bằng cách tư vấn và tạo điều kiện cho các nhà
lãnh đạo thúc đẩy các hoạt động kinh doanh có đạo đức, hợp tác với
doanh nghiệp để đảm bảo quản lý rủi ro pháp lý hiệu quả và khuyến
khích các đối tác lên tiếng nếu họ có thắc mắc hoặc lo ngại.

Trang 3
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Từ trước đến nay, Starbucks luôn khiến thế giới thán phục về cách quản
lý khách hàng của họ, ví dụ:

 Dẫn đầu xu hướng tích điểm điện tử cho khách hàng.


 Payment hỗ trợ thanh toán nhanh chóng dễ dàng.
 Đặt hàng trực tiếp trên giao diện điện thoại.
 Ghi nhận tên khách hàng trên cốc trở thành nét văn hóa điển hình của
Starbucks.
 Nắm được chi tiết lịch sử giao dịch của người dùng để từ đó chăm sóc
họ một cách cụ thể, cá nhân hóa theo từng người dùng,…

1.3 Mục tiêu đề tài

Để giúp cửa hàng cafe Starbuck thành công hơn trong công tác quản lý bán
hàng, chúng tôi đã xây dựng phần mềm với mục tiêu:

- Phần mềm vận hành đơn giản, dễ sử dụng, chỉ cần một lượng ít người quản
lý bán hàng là có thể vận hành tốt hệ thống.
- Tổ chức quản lý, lưu trữ trên hệ thống máy vi tính làm tăng tính an toàn, bảo
mật cao hơn. Trợ giúp tối đa cho quản lý ra quyết định có lợi cho cửa hàng.
- Đơn giản, dễ sử dụng: Giao diện trực quan bằng tiếng Việt, các form nhập
liệu đơn giản, dễ thao tác.
- Phù hợp với các ứng dụng triển khai trên diện rộng. Không phụ thuộc vào
phạm vi ứng dụng. Việc mở rộng ít tốn kém.
- Hệ thống dễ dàng bảo trì, phát triển.
- Với chương trình này, các quản lý có thể kiểm tra, theo dõi tình hình nghiệp
vụ bán hàng trong cửa hàng của mình, có thể điều chỉnh và xử lý thông tin
một cách nhanh chóng, tiết kiệm thời gian, chi phí và làm việc một cách hiệu
quả.
- Mục tiêu quan trọng nhất của đề tài giúp mọi người trong cửa hàng làm quen
với các hệ thống và cách sử dụng cơ bản của hệ thống này trong việc tạo cơ

Trang 4
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

sở dữ liệu, cũng như ứng dụng vào các nghiệp vụ liên quan đến quản lý bán
hàng tại cửa hàng cafe Starbuck

1.4 Phạm vi đề tài

Đề tài không quá đi sâu vào phân tích tài chính, nhân viên hay khách hàng mà
tập trung vào phân tích về việc sử dụng CSDL quản lý bán hàng tại cửa hàng cafe
Starbuck. Trong đó có quản lý sản phẩm, đơn đặt hàng, chi tiết đơn hàng, tồn kho là
chủ yếu.

Dữ liệu lấy từ các mặt hàng trong cửa hàng và trong một thời gian nhất định.

1.5 Nội dung đề tài

Giới thiệu tổng quan về đề tài đồ án “Xây dựng và quản lý CSDL bán hàng
của cửa hàng cafe Starbuck”
Tìm hiểu về hệ quản trị cơ sở dữ liệu (DBMS), ngôn ngữ PL/SQL
Giới thiệu và thực hiện các công cụ hỗ trợ quá trình làm đề tài
Thiết kế cơ sở dữ liệu: Thiết kế các mô hình kết hợp, từ đó phân tích và tạo
bảng và nhập dữ liệu phù hợp.
Thực hiện các câu truy vấn áp dụng thực tế vào đối tượng nghiên cứu (cửa
hàng cafe Starbuck)
- Thao tác cập nhật dữ liệu (Update)
- Thao tác xóa dữ liệu (Delete)
- Chỉ mục (Index)
- Truy vấn (Select)
- Tăng tự động (Sequence)
- Khung nhìn (View)
- Hàm (Function)
- Thủ tục (Stored Procedure)
- Ràng buộc toàn vẹn (Trigger)

Trang 5
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Trang 6
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về hệ quản trị cơ sở dữ liệu

 Hệ quản trị cơ sở dữ liệu (DBMS) là một phần mềm mang tính tổng quát cho
phép ngườidùng:
- Định nghĩa cơ sở dữ liệu (CSDL): mô tả kiểu dữ liệu, cấu trúc, các loại rang
buộc toàn vẹn
- Xây dựng CSDL: lưu CSDL trên một phương tiện lưu trữ
- Thực thi CSDL: truy vấn, thêm, xóa và sửa dữ liệu trong CSDL
- Tập hợp các dữ liệu liên quan
- Các DBMS thông dụng hiện nay: FoxPro, Access, SQLserver, MySQL,
Oracle, DB2, IMS, Sysbase, Informix,...
- Nhà cung cấp DBMS: Informix, Oracle, Microsoft, IBM, Sybase,...
 Tiến trình phát triển các DBMS

Hình 2.1. Tiến trình phát triển hệ quản trị CSDL

Trang 7
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

 Hai đặc trưng quan trọng để phân biệt DBMS với các hệ thống lập trình
khác:
- Khả năng quản lý dữ liệu tồn tại lâu dài
- Khả năng truy nhập các khối dữ liệu lớn hiệu quả
 Ngoài ra, DBMS còn có một số đặc trưng khác như:
- Hỗ trợ ít nhất một mô hình dữ liệu để người dung có thể quan sát được
- Đảm bảo tính độc lập dữ liệu hay sự bất biến của các chương trình ứng dụng
đối với các thay đổi về cấu trúc trong mô hình dữ liệu
- Hỗ trợ các ngôn ngữ cao cấp nhất định cho phép người dung định nghĩa cấu
trúc dữ liệu, truy nhập dữ liệu và thao tác dữ liệu.
- Quản trị giao dịch (transaction), hỗ trợ các truy xuất CSDL đồng thời đối từ
nhiều người dung tại một thời điểm
- Điều khiển truy xuất nhằm hạn chế truy cập đến dữ liệu bởi những người
dung không được phép và khả năng kiểm tra tính đúng đắn của các giao dịch
- Sao lưu, phục hồi dữ liệu
 Kiến trúc một DBMS được mô tả như sau:

Trang 8
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 2.2. Kiến trúc một DBMS

- Bộ quản lý lưu trữ: cho phép lấy ra dữ liệu được yêu cầu từ những thiết bị
lưu trữ dữ liệu và thay đổi những dữ liệu này khi được yêu cầu bởi các mức
trên nó của hệ thống
- Bộ xử lý câu truy vấn: không chỉ điều khiển các câu hỏi mà cả các yêu cầu
thay đổi dữ liệu, siêu dữ liệu
- Bộ quản lý giao dịch: có trách nhiệm đảm bảo tính toàn vẹn dữ liệu của hệ
thống

2.2 Ngôn ngữ PL/SQL (Procedural Language extension to SQL)

2.2.1 Giới thiệu

- PL/SQL được viết tắt của “Procedural Language extension to SQL”


- Là ngôn ngữ truy cập dữ liệu tiêu chuẩn của Tập đoàn Oracle cho cơ sở dữ
liệu quan hệ
- Tích hợp liền mạch các cấu trúc thủ tục với SQL

Trang 9
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

 PL / SQL cung cấp cấu trúc khối cho các đơn vị mã có thể thực thi được.
Việc bảo trì mã được thực hiện dễ dàng hơn với cấu trúc được xác định rõ
ràng như vậy.
 PL / SQL Cung cấp các cấu trúc thủ tục như:
- Biến, hằng và kiểu dữ liệu
- Cấu trúc điều khiển như câu lệnh điều kiện và vòng lặp
- Đơn vị chương trình có thể sử dụng lại được viết một lần và thực thi nhiều
lần
Kiến trúc Run-time của PL/SQL như sau:

Hình 2.3. Kiến trúc Run-time của PL/SQL

2.2.2 Lợi ích của PL/SQL

- Tích hợp cấu trúc thủ tục với SQL


- Cải thiện hiệu suất
- Phát triển chương trình được mô-đun hóa
- Tích hợp với các công cụ Oracle
- Tính khả chuyển

Trang 10
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

- Xử lý ngoại lệ

2.3 Một số công cụ hỗ trợ

2.3.1 Tổng quan về phần mềm Oracle SQL developer

2.3.1.1 Giới thiệu

Oracle Database hay còn gọi là Oracle RDBMS, là 1 hệ quản trị cơ sở dữ liệu
quan hệ, được phát triển và phân phối bởi tập đoàn Oracle.

Oracle là một hệ quản trị cơ sở dữ liệu quan hệ đa mô hình, chủ yếu được thiết
kế điện toán lưới và lưu trữ dữ liệu cho doanh nghiệp. Đây là một trong những lựa
chọn hàng đầu giúp doanh nghiệp xử lý linh hoạt và đưa ra những giải pháp tối ưu
cho việc quản lý thông tin và ứng dụng.

Hình 2.4. Logo của oracle

Phần mềm này vẫn đang được phát triển tiếp lên những version cao hơn, và
vẫn đang là 1 trong những phần mềm quản trị database hàng đầu thế giới. Theo
thông tin từ Wikipedia thì phần mềm này được viết bằng Assembly, C và C++. Có
lẽ đó là cốt lõi chính của Oracle Database. Sau này những công cụ liên quan như
emctl, dbca, netca... thì được viết bằng Java.

2.3.1.2 Cấu tạo của Oracle

Giống như các phần mềm khác, Oracle được xây dựng dựa trên SQL, một
ngôn ngữ lập trình được tiêu chuẩn hóa cho các nhà quản trị cơ sở dữ liệu, nhà phân

Trang 11
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

tích dữ liệu và các chuyên gia về dữ liệu sử dụng quản lý và truy vấn dữ liệu được
lưu trữ.

Hình 2.5. Khởi động phần mềm Oracle SQL Deverloper

Phần mềm Oracle gắn với PL/ SQL, phần mở rộng do Oracle phát triển, cung
cấp những bổ sung mới cho tập hợp các phần mở rộng lập trình độc quyền trong
SQL tiêu chuẩn. Oracle cũng hỗ trợ lập trình bằng ngôn ngữ Java và các chương
trình được viết bằng PL/ SQL mở rộng.

Hình 2.6. Giao diện làm việc của phần mềm Oracle SQL Developer

Trang 12
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

2.3.1.3 Lịch sử hình thành

Oracle được phát triển bởi Lawrence Ellison và những người đồng nghiệp cũ
của ông, trụ sở chính được đặt ở Redwood Shores, California, sau đó chuyển trụ sở
chính đến Texas vào năm 2020.

Ban đầu, Oracle với tên đầy đủ Oracle Systems Corporation, là công ty đầu tiên
thương mại hóa nền tảng hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) và trở thành
nhà cung cấp cơ sở dữ liệu hàng đầu thế giới. Đến năm 1995, Oracle Systems
Corporation đổi thành Oracle Corporation và thường được gọi với tên Oracle.

2.3.1.4 Các tính năng được hỗ trợ bởi Oracle

Tính khả dụng:

Oracle cung cấp tính năng Oracle Data Guard. Khi sử dụng các tính năng này,
cơ sở dữ liệu dự phòng thứ cấp được duy trì như một bản sao của cơ sở dữ liệu
chính và có thể sử dụng các lựa chọn thay thế trong quá trình chuyển đổi dự phòng.

Bảo mật

Tính năng Oracle Advanced Security cung cấp giải pháp bảo vệ thông tin nhạy
cảm tại nguồn là TDE (mã hóa dữ liệu thời gian thực) và Data Redaction (che giấu
dữ liệu). Giải pháp này cho phép mã hóa dữ liệu tại nguồn và đăng xuất. Ngoài ra,
Oracle còn phát triển thêm một số tính năng bảo mật khác để bảo vệ quyền lợi cho
người dùng.

Khả năng mở rộng

Oracle RAC là điển hình cho khả năng mở rộng của Oracle, cung cấp khả năng
như di chuyển phiên bản, thực hiện nâng cấp, truy trì tính liên tục của ứng dụng và
quản lý chất lượng dịch vụ.

Hiệu suất

Trang 13
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Oracle cung cấp các giải pháp nâng cao hiệu suất như Oracle Advanced
Compression, Oracle Database In- Memory,….nhằm tối ưu hiệu suất hoạt động của
hệ thống ở mức tốt nhất.

Oracle Analytics

Ở các tính năng phân tích, Oracle đưa ra các giải pháp sau:

- OLAP (Oracle Analytics Processing) là triển khai của Oracle được sử dụng
để phân tích dữ liệu bằng các thuận toán phức tạp.
- Oracle Advanced Analytics giúp người dùng xác định mô hình kinh doanh
dự án bằng cách thực hiện các khai thác dữ liệu và văn bản, tính toán dữ liệu
thống kê.
Quản lý Oracle

Oracle Multitenant là một giải pháp được phát triển để quản lý các cơ sở dữ liệu
với kiến trúc hợp nhất của một cơ sở dữ liệu vùng chứa duy nhất và nhiều cơ sở dữ
liệu được gắn thêm.

2.3.1.5 Ưu điểm

- Xác thực đối tượng cơ sở dữ liệu tự động: Sự chính xác của các chế độ và
trình kích hoạt đều được tích hợp sẵn. Điều này giúp giảm thiểu rủi ro khi sử
dụng phần mềm bị trục trặc và dễ dàng chỉnh sửa khi gặp vấn đề.
- Mô hình về khả năng lập trình phong phú: Oracle không chỉ hỗ trợ SQL
phong phú mà còn hỗ trợ cả PL/ SQL, sử dụng các công cụ dòng lệnh tốt
giúp quản lý các thay đổi dễ dàng và mang lại hiệu quả cao.
- Khả năng lưu trữ dữ liệu mạnh mẽ: Hoạt động tốt với khả năng lưu trữ nền
và cả đám mây, cung cấp chức năng quản lý chế độ xem tự động hóa, chuỗi
bảng, kiểu dữ liệu và SQL nâng cao dưới dạng hàm Windowing.
- An toàn bảo mật: Một trong những đặc điểm lớn nhất trong việc lựa chọn cơ
sở dữ liệu Oracle là tính năng bảo mật mà nó cung cấp, khả năng bảo mật
thông tin của Oracle được đánh giá cao hơn so với các đối thủ.

Trang 14
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

2.3.1.6 Nhược điểm

- Không có nhiều cú pháp được sử dụng trong PL/ SQL, dễ thay đổi khi làm
việc bằng các ngôn ngữ khác.
- Các lớp đào tạo không được đánh giá cao về độ hiệu quả, những hướng dẫn
trái ngược với các nhu cầu tìm hiểu và sử dụng của người dùng.
- Chi phí đang trở thành vấn đề khi các đối thủ cạnh tranh hoạt động trên thị
trường ở một mức giá thấp hơn.
- Dịch vụ hỗ trợ khách hàng thường phản hồi rất chậm, thường không sẵn lòng
trả lời các câu hỏi một cách trực tiếp để giải quyết vấn đề.

2.3.2 Tổng quan về phần mềm thiết kế Power Designer

2.3.2.1 Giới thiệu

Power Designer là 1 công cụ thiết kế của CSDL. Với Power Designer có thể:

- Thiết kế Conceptual Data Model (CDM) bằng mô hình thực thể kết hợp.
- Phát sinh Physical Data model (PDM) tương ứng trên một DBMS được
chọn.
- Phát sinh kích bản tạo CSDL trên một DBMS đích.
- Phát sinh ràng buộc toàn vẹn tham chiếu nếu chúng được hỗ trợ bởi CSDL
đích.
- Cho phép hiệu chỉnh vào in các model.

Trang 15
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 2.7. Logo của phần mềm thiết kế PowerDesigner

2.3.2.2 Công dụng

Power Designer cung cấp và thiết kế một số mô hình như:

- Việc mô hình hóa được tích hợp thông qua các phương pháp và kí hiệu
chuẩn để vẽ các sơ đồ.
- Sơ đồ phân rã chức năng.
- Sơ đồ dòng chảy dữ liệu.
- Mô hình dữ liệu quan niệm.
- Phát sinh mô hình vật lý dữ liệu từ mô hình dữ liệu quan niệm.
- Phát sinh code tự động SQL.
- Khả năng tạo các báo cáo (report) tự động.

Trang 16
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 2.8. Giao diện làm việc của phần mềm thiết kế Power Designer

Trang 17
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

CHƯƠNG 3: THIẾT KẾ CƠ SỞ DỮ LIỆU BÁN HÀNG


CỦA CỬA HÀNG CAFE STARBUCK
3.1 Phân tích và thiết kế DB:

3.1.1 Phân tích nghiệp vụ:

Hoạt động kinh doanh của cửa hàng kinh doanh bán hạt cafe Starbuck được
mô tả theo các nghiệp vụ như sau:

Quản lý các cửa hàng và nhân viên:

Các chi nhánh (chinhanh) của cửa hàng được chia và quản lý theo từng khu
vực (khuvuc). Để phân biệt các chi nhánh và khu vực với nhau, mỗi chi nhánh và
khu vực có một mã riêng và có tên của khu vực/chi nhánh. Mỗi chi nhánh có các
nhân viên (nhanvien), các nhân viên cần cung cấp họ, tên, số điện thoại, email để
người quản lý có thể quản lý thông tin của họ và được phân biệt bằng mã nhân viên
(manv) và mỗi nhân viên có một công việc (congviec) của họ. Sao mỗi năm làm
việc nhân viên sẽ được nhận thêm hoa hồng (hoahong) thâm niên vào lương hằng
tháng của họ.

Quản lý sản phẩm:

Các sản phẩm hạt cafe tại Starbuck được quản lý vô cùng chặt chẻ để đem đến
một chất lượng uy tín nhất, tốt nhất. Các hạt cafe được quản lý trong một danh sách
(dscafe) bao gồm các thông tin như: mã để phân biệt các sản phẩm hạt cafe, tên
cafe, ngày sản xuất, hạn sử dụng, khối lượng, đơn vị tính, giá bán và mô tả sơ lược
về hạt cafe đó. Các hạt cafe thượng hạng tại Starbuckđược mang đến từ các thương
hiệu lớn (thuonghieu) như: Cafe Trung Nguyên, Lion Cafe, … với các loại cafe
(loaicafe) cafe rang nguyên hạt, rang xay hòa tan hay phin giấy. Không những tốt về
chất lượng, ở Starbuckcác hạt cafe luôn có một lượng tồn kho (tonkho) lớn để đảm
bảo cung cấp các hạt cafe cho khách hàng mọi lúc.

Quản lý bán hàng:

Trang 18
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Để có thể mua hàng ở Starbuck, các khách hàng (khachhang) của Starbuc
kphải để lại các thông tin như tên, địa chỉ, phương thức liên lạc và tất nhiên các
khách hàng đều có một mã để người quản lý cửa hàng có thể quản lý dễ dàng hơn.

Khi đặt hàng (dondathang), khách hàng có thể chọn một địa chỉ giao hàng khác địa
chỉ của bản thân, chỉ định tên và số điện thoại của người khác để nhận hàng thay.
Sản phẩm và số lượng mua của khách hàng sẽ được lưu vào danh sách chi tiết
(ctdonhang).

Các quy định cơ bản của hệ thốngquản lý bán hàng của cửa hàng kinh
doanh bán hạt cafe Starbuck:

Quy định 1: Khối lượng và giá bán của các hạt cafe là số dương và phải lớn hơn
hoặc bằng 0.

Quy định 2: Số lượng tồn kho phải lớn hơn hoặc bằng 0.

Quy định 3: Lương của nhân viên phải từ 1.000.000 VNĐ trở lên.

Quy định 4: Khi tuyển một nhân viên mới, mã hoa hồng của nhân viên đó mặc định
là 0.

Quy định 5: Khi thêm một hạt cafe vào danh sách, nếu không nhập khối lượng, nó
sẽ mặc định là 0.

Quy định 6: Số lượng đặt hàng phải lớn hơn 0.

Quy định 7: Khi thêm một đơn hàng, tình trạng đơn hàng mặc định là “Chua duoc
giao”.

3.1.2 Thiết kế DB:

Dự vào phân tích nghiệp vụ ở trên DB phục vụ cho hệ thống quản lý bán hàng
của Starbuckbao gồm các thực thể sau đây:

o khuvuc (makv, tenkv)


o chinhanh (macn, tencn, diachi, hotline)

Trang 19
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

o loaicafe (maloaicf, tenloaicf)


o thuonghieu (math, tenth)
o dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math)
o tonkho (macn, macf, slton)
o hoahong (mahh, hoahong)
o congviec (macv, tencv)
o nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, mahh, macv,
makv)
o khachhang (makh, tenkh, diachi, sdt, email)
o dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, sdt_nguoinhan, tinhtrang, ghichu)
o ctdonhang (maddh, macf, sl)

3.1.3 Thiết kế các mô hình:

3.1.3.1 Mô hình lược đồ quan hệ của các thực thể:

Trang 20
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 3.1. Mô hình lược đồ quan hệ của các thực thể

3.1.3.2 Mô hình thực thể kết hợp:

Hình 3.2. Mô hình thực thể kết hợp

Trang 21
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

3.1.3.3 Mô hình quan hệ - thực thể:

Hình 3.3. Mô hình quan hệ - thực thể

3.1.4 Thiết kế các bảng cho các thực thể:

Bảng khuvuc:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

makv Mã khu vực Number(2) Khóa chính

tenkv Tên khu vực Varchar(100) Not null

Bảng 3.1. Thiết kế bảng khu vực (khuvuc)

Bảng chinhanh:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

Trang 22
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

macn Mã chi nhánh Char(4) Khóa chính

tencn Tên chi nhánh Varchar(100) Not null

diachi Địa chỉ Varchar(250) Not null

hotline Hotline Varchar(11) Not null

makv Mã khu vực Number(2) Khóa ngoại

Bảng 3.2. Thiết kế bảng chi nhánh (chinhanh)

Bảng loaicafe:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

maloaicf Mã loại cafe Char(3) Khóa chính

tenloaicf Tên loại cafe Varchar(100) Not null

Bảng 3.3. Thiết kế bảng loại cà phê (loaicafe)

Bảng thuonghieu:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

math Mã thương hiệu Char(2) Khóa chính

tenth Tên thương hiệu Varchar(100) Not null

Bảng 3.4. Thiết kế bảng thương hiệu (thuonghieu)

Bảng dscafe:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

macf Mã cafe Char(10) Khóa chính

Trang 23
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

tencf Tên cafe Varchar(100) Not null

ngaysx Ngày sản xuất Date Not null

hsd Hạn sử dụng Varchar(100) Not null

khoiluong Khối lượng Float Default 0, >=0

dvt Đơn vị tính Varchar(50) Not null

giaban Giá bán Int Not null, >=0

mota Mô tả Varchar(2000)

maloaicf Mã loại cafe Char(3) Khóa ngoại

math Mã thương hiệu Char(2) Khóa ngoại

Bảng 3.5. Thiết kế bảng danh sách cà phê (dscafe)

Bảng tonkho:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

macn Mã chi nhánh Char(4) Khóa chính + khóa ngoại

macf Mã cafe Char(10) Khóa chính + khóa ngoại

slton Số lượng tồn int >= 0

Bảng 3.6. Thiết kế bảng tồn kho (tonkho)

Bảng hoahong:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

Trang 24
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

mahh Mã hoa hồng Number(2) Khóa chính

hoahong Hoa hồng Number(7) Not null

Bảng 3.7. Thiết kế bảng hoa hồng (hoahong)

Bảng congviec:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

macv Mã công việc Char(2) Khóa chính

tencv Tên công việc Varchar(100) Not null

Bảng 3.8. Thiết kế bảng công việc (congviec)

Bảng nhanvien:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

manv Mã nhân viên Char(6) Khóa chính

honv Họ và tên lót Varchar(60) Not null

tennv Tên Varchar(40) Not null

ngayvaolam Ngày vào làm Date Not null

luong Lương Number(10) Not null, >= 3000000

sdt Số điện thoại Varchar(11) Not null

email Email Varchar(100)

mahh Mã hoa hồng Number(2) Khóa ngoại

macv Mã công việc Char(2) Khóa ngoại

Trang 25
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

makv Mã khu vực Number(2) Khóa ngoại

Bảng 3.9. Thiết kế bảng nhân viên (nhanvien)

Bảng khachhang:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

makh Mã khách hàng Char(6) Khóa chính

tenkh Họ và tên Varchar(100) Not null

diachi Địa chỉ Varchar(250) Not null

sdt Số điện thoại Varchar(11) Not null

email Email Varchar(100)

Bảng 3.10. Thiết kế bảng khách hàng

Bảng dondathang:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

maddh Mã đơn đặt hàng Char(12) Khóa chính

ngaylap Ngày lập đơn Date Not null

makh Mã khách hàng Char(6) Khóa ngoại

manv Mã nhân viên Char(6) Khóa ngoại

makv Mã khu vực Number(2) Khóa ngoại

macn Mã chi nhánh Char(4) Khóa ngoại

ten_nguoinhan Tên người nhận Varchar(100) Not null

Trang 26
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

diachi_giao Địa chỉ giao hàng Varchar(250) Not null

thoihan_giao Thời hạn giao Date Not null


hàng

sdt_nguoinhan Số điện thoại Varchar(11) Not null


người nhận

thanhtien Thành tiền của Number Default 0


đơn đặt hàng

tinhtrang Tình trạng đơn Varchar(100) Default ‘Chua


duoc giao’

ghichu Ghi chú Varchar(200)

Bảng 3.11. Thiết kế bảng đơn đặt hàng (dondathang)

Bảng ctdonhang:

Thuộc tính Mô tả Kiểu dữ liệu Ghi chú

maddh Mã đơn đặt hàng Char(10) Khóa chính + khóa ngoại

macf Mã cafe Char(10) Khóa chính + khóa ngoại

sl Số lượng Int Not null, > 0

Bảng 3.12. Thiết kế bảng chi tiết đơn đặt hàng (ctdonhang)

3.1.5 Các ràng buộc toàn vẹn:

3.1.5.1 Ràng buộc toàn vẹn là gì?

Ràng buộc toàn vẹn sử dụng các luật để định nghĩa các điều kiện đảm bảo cho
cơ sở dữ liệu luôn ở trạng thái an toàn. Ràng buộc toàn vẹn là một điều kiện được
định nghĩa liên quan đến một hoặc nhiều quan hệ bối cảnh khác nhau.

Trang 27
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Các mối quan hệ ràng buộc là những điều kiện bất biến mà mọi thể hiện của quan
hệ đều phải thỏa mãn ở bất kì thời điểm nào.

3.1.5.2 Bảng tầm ảnh hưởng?

o Bối cảnh: là những quan hệ có khả năng là cho RBTV bị vi phạm.


o Biểu diễn: phát biểu bằng ngôn ngữ hình thức (phép tính quan hệ, đại số
quan hệ, mã giả, …)
o Bảng tầm ảnh hưởng: là bảng 2 chiều, xác định các thao tác ảnh hưởng (+)
và thao tác không ảnh hưởng (-) lên các quan hệ nằm trong bối cảnh.

Thêm Xóa Sửa

Quan hệ 1 + + -

Quan hệ n - + +(A)

Bảng 3.13. Bảng tầm ảnh hưởng mẫu

Ký hiệu +: Có thể gây ra vi phạm RBTV

Ký hiệu -: Không thể gây ra vi phạm RBTV

Ký hiệu +(A): Có thể gây ra vi phạm RBTV khi thao tác trên thuộc tính A

3.1.5.3 Ràng buộc khóa chính:

Bảng Khóa chính

khuvuc makv

chinhanh macn

loaicafe maloaicf

Trang 28
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

thuonghieu math

dscafe macf

tonkho macn, macf

hoahong mahh

congviec macv

nhanvien manv

khachhang makh

dondathang maddh

ctdonhang maddh, macf

Bảng 3.14. Ràng buộc các khóa chính của các bảng (Table)

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

Bảng Khóa ngoại

chinhanh makv

dscafe maloaicf, math

tonkho macn, macf

nhanvien mahh, macv, makv

dondathang makh, manv, makv, macn

ctdonhang maddh, macf

Trang 29
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Bảng 3.15. Ràng buộc khóa ngoại giữa các bảng(Table)

3.1.5.5 Các ràng buộc khác:

Ràng buộc khối lượng của sản phẩm phải lớn hơn hoặc bằng 0.
o Bối cảnh: dscafe
o Biểu diễn: n  dscafe (n.khoiluong >= 0)
o Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

dscafe + - +(khoiluong)

Bảng 3.16. Bảng tầm ảnh hưởng ràng buộc khối lượng sản phẩm

Ràng buộc giá bán của các sản phẩm phải lớn hơn bằng 0.
o Bối cảnh: dscafe
o Biễu diễn: n  dscafe (n.giaban >= 0)
o Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

dscafe + - +(giaban)

Bảng 3.17. Bảng tầm ảnh hưởng ràng buộc giá bán sản phẩm

Ràng buộc số lượng hàng tồn phải lớn hơn bằng 0.


o Bối cảnh: tonkho
o Biểu diễn: n  tonkho (n.slton >= 0)
o Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

tonkho + - +(slton)

Bảng 3.18. Bảng tầm ảnh hưởng ràng buộc số lượng tồn kho

Trang 30
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Ràng buộc số tiền hoa hồng của phải lớn hơn bằng 0.
o Bối cảnh: hoahong
o Biểu diễn n  hoahong (n.hoahong >= 0)
o Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

hoahong + - +(hoahong)

Bảng 3.19. Bảng tầm ảnh hưởng ràng buộc số tiền hoa hồng

Ràng buộc lương cơ bản của nhân viên phải lớn hơn bằng 3.000.000 VNĐ.
o Bối cảnh: nhanvien
o Biểu diễn: n  nhanvien (n.luong >= 3000000)
o Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

nhanvien + - +(luong)

Bảng 3.20. Bảng tầm ảnh hưởng ràng buộc lương nhân viên

Ràng buộc số lượng đặt hàng phải lớn hơn 0.


o Bối cảnh: ctdonhang
o Biểu diễn: n  ctdonhang (n.sl > 0)
o Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

ctdonhang + - +(sl)

Bảng 3.21. Bảng tầm ảnh hưởng ràng buộc số lượng đặt hàng

Trang 31
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

3.2 Tạo các bảng trong hệ quản trị cơ sở dữ liệu Oracle với SQL Developer:

3.2.1 Tạo các bảng:

Tạo bảng khuvuc:

create table khuvuc

makv number(2) primary key,

tenkv varchar(100) not null

);

Tạo bảng chinhanh:

create table chinhanh

macn char(4) primary key,

tencn varchar(100) not null,

diachi varchar(250) not null,

hotline varchar(11) not null,

makv number(2) constraint fk_chinhanh_makv references khuvuc(makv)

);

Tạo bảng loaicafe:

create table loaicafe

maloaicf char(3) primary key,

tenloaicf varchar(100) not null

);

Trang 32
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Tạo bảng thuonghieu:

create table thuonghieu

math char(2) primary key,

tenth varchar(100) not null

);

Tạo bảng dscafe:

create table dscafe

macf char(10) primary key,

tencf varchar(100) not null,

ngaysx date not null,

hsd varchar(100) not null,

khoiluong float default 0 check(khoiluong >= 0),

dvt varchar(50) not null,

giaban int not null check(giaban >=0),

mota varchar(2000),

maloaicf char(3) constraint fk_dscafe_maloaicf references loaicafe(maloaicf),

math char(2) constraint fk_dscafe_math references thuonghieu(math)

);

Tạo bảng tonkho:

create table tonkho

Trang 33
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

macn char(4) constraint fk_tonkho_macn references chinhanh(macn),

macf char(10) constraint fk_tonkho_macf references dscafe(macf),

slton int not null check(slton >= 0),

primary key (macn, macf)

);

Tạo bảng hoahong:

create table hoahong

mahh number(2) primary key,

hoahong number(7) not null check (hoahong >=0)

);

Tạo bảng congviec:

create table congviec

macv char(2) primary key,

tencv varchar(100) not null

);

Tạo bảng nhanvien:

create table nhanvien

manv char(6) primary key,

honv varchar(60) not null,

tennv varchar(40) not null,

Trang 34
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

ngayvaolam date not null,

luong number(10) not null check(luong >= 3000000),

sdt varchar(11) not null,

email varchar(100),

mahh number(2) default 0 constraint fk_nhanvien_mahh references


hoahong(mahh),

macv char(2) constraint fk_nhanvien_macv references congviec(macv),

makv number(2) constraint fk_nhanvien_makv references khuvuc(makv)

);

Tạo bảng khachhang:

create table khachhang

makh char(6) primary key,

tenkh varchar(100) not null,

diachi varchar(250) not null,

sdt varchar(11) not null,

email varchar(100)

);

Tạo bảng dondathang:

create table dondathang

maddh char(12) primary key,

ngaylap date not null,

Trang 35
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

makh char(6) constraint fk_dondathang_makh references khachhang(makh),

manv char(6) constraint fk_dondathang_manv references nhanvien(manv),

makv number(2) constraint fk_dondathang_makv references khuvuc(makv),

macn char(4) constraint fk_dondathang_macn references chinhanh(macn),

ten_nguoinhan varchar(100) not null,

diachi_giao varchar(250) not null,

thoihan_giao date not null,

sdt_nguoinhan varchar(11) not null,

thanhtien number(10) default 0,

tinhtrang varchar(100) default 'Chua duoc giao',

ghichu varchar(200)

);

Tạo bảng ctdonhang:

create table ctdonhang

maddh char(10) constraint fk_ctdonhang_maddh references dondathang(maddh),

macf char(10) constraint fk_ctdonhang_macf references dscafe(macf),

sl int not null check(sl > 0),

primary key (maddh, macf)

);

Trang 36
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

3.2.2 Cập nhật dữ liệu cho việc ứng dụng:

3.2.2.1 Thứ tự nhập dữ liệu:

Để đảm bảo dữ liệu được nhập vào và không vi phạm các ràng buộc toàn vẹn,
ta thêm dữ liệu theo thứ tự sau đây:

1. khuvuc
2. chinhanh
3. loaicafe
4. thuonghieu
5. dscafe
6. tonkho
7. hoahong
8. congviec
9. nhanvien
10. khachhang
11. dondathang
12. ctdonhang

3.2.2.2 Dữ liệu mẫu:

Nhập dữ liệu bảng khu vực:

insert into khuvuc (makv, tenkv) values ( '1', 'khu vuc tay nguyen');
insert into khuvuc (makv, tenkv) values ( '2', 'khu vuc phia nam');
insert into khuvuc (makv, tenkv) values ( '3', 'khu vuc mien trung');
insert into khuvuc (makv, tenkv) values ( '4', 'khu vuc phia bac');
Nhập dữ liệu bảng chi nhánh:

insert into chinhanh (macn, tencn, diachi, hotline, makv) values ('CN01', 'Chi nhanh
Thang Loi, Buon Ma Thuot', '203 Nguyen Van Troi, Thang Loi, thanh pho Buon
Ma Thuot, Dak Lak', '0706664515', 1);

Trang 37
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

insert into chinhanh (macn, tencn, diachi, hotline, makv) values ('CN02', 'Chi nhanh
Tan Thanh, Buon Ma Thuot', '106 Le Duan, Tan Thanh, thanh pho Buon Ma Thuot,
Dak Lak', '0184787422', 1);

insert into chinhanh (macn, tencn, diachi, hotline, makv) values ('CN03', 'Chi nhanh
Quan 7, TPHCM', '37 Nguyen Thi Thap, Binh Thuan, quan 7, thanh pho Ho Chi
Minh', '0845125762', 2);

insert into chinhanh (macn, tencn, diachi, hotline, makv) values ('CN04', 'Chi
Nhanh Quan 10, TPHCM', '850 Su Van Hanh, phuong 12, quan 10, thanh pho Ho
Chi Minh', '0235846941', 2);

insert into chinhanh (macn, tencn, diachi, hotline, makv) values ('CN05', 'Chi nhanh
Da Nang', '104 Dong Da, Thuan Phuoc, Hai Chau, Da Nang', '0815489658', 3);

insert into chinhanh (macn, tencn, diachi, hotline, makv) values ('CN06', 'Chi nhanh
Ha Noi', '12c Hoang Dieu, Dien Ban, Ba Dinh, Ha Noi', '0276956698', 4);

Nhập dữ liệu bảng Loại cà phê:

insert into loaicafe (maloaicf, tenloaicf) values ('L00', 'Khac');


insert into loaicafe (maloaicf, tenloaicf) values ('L01', 'Ca phe rang nguyen hat');
insert into loaicafe (maloaicf, tenloaicf) values ('L02', 'Ca phe ranng xay');
insert into loaicafe (maloaicf, tenloaicf) values ('L03', 'Ca phe hoa tan');
insert into loaicafe (maloaicf, tenloaicf) values ('L04', 'Ca phe phin giay');
insert into loaicafe (maloaicf, tenloaicf) values ('L05', 'Ca phe nhan chua xu ly');
Nhập dữ liệu bảng thương hiệu:

insert into thuonghieu (math, tenth) values ('00', 'Khac');


insert into thuonghieu (math, tenth) values ('TN', 'Trung Nguyen');
insert into thuonghieu (math, tenth) values ('TK', 'TNI King Coffee');
insert into thuonghieu (math, tenth) values ('NL', 'Non La Coffee');
insert into thuonghieu (math, tenth) values ('LC', 'Lion Cafe');
Nhập dữ liệu bảng danh sách cà phê:

Trang 38
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math) values ('CF0001', 'Cafe TNI King Coffee 450g', TO_DATE('2021-08-27',
'YYYY-MM-DD'), '2 nam ke tu nsx', 450, 'hop', 315000, 'khoi dau voi mot chut
huong nong nan cua nhung hat arabica hao hang, tiep noi voi vi chua nhe va nt diu
nguyen ban cua hat ca phe', 'L02', 'TK');

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math) values ('CF0002', 'Cafe nguyen hat TNI King Coffee arabica guatemala
340g', TO_DATE('2021-08-27', 'YYYY-MM-DD'), '2 nam ke tu nsx', 340, 'goi',
276000, 'duoc che bien tu hat Cafe arabica guatemala theo quy trinh hien dai ket
hop voi cong thuc pha che chuyen biet tu cac chuyen gia TNI King Coffee, cho ra
san pham Cafe phin TNI King Coffee chat luong', 'L01', 'TK');

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math) values ('CF0003', 'Cafe nguyen hat TNI King Coffee arabica colombia 340g',
TO_DATE('2021-08-27', 'YYYY-MM-DD'), '2 nam ke tu nsx', 340, 'goi', 258000,
'duoc lam tu nhung hat Cafe arabica colombia, voi cong nghe che bien hien dai cung
cong thuc chuyen biet cua cac chuyen gia tu TNI King Coffee, tao ra san pham Cafe
phin dac trung', 'L01', 'TK');

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math) values ('CF0004', 'Cafe nguyen hat TNI King Coffee arabica brazil 340g',
TO_DATE('2021-08-27', 'YYYY-MM-DD'), '2 nam ke tu nsx', 340, 'goi', 224000,
'su dung hat Cafe arabica brazil - la mot trong nhung loai Cafe nn va duoc nhieu
nguoi yeu thich tren thi truong hien tai', 'L01', 'TK');

Nhập dữ liệu bảng tồn kho:

insert into tonkho (macn, macf, slton) values ('CN01', 'CF0001', 1109);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0002', 1109);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0003', 1000);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0004', 1928);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0005', 1009);

Trang 39
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

insert into tonkho (macn, macf, slton) values ('CN01', 'CF0006', 1009);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0007', 1392);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0008', 1022);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0009', 1229);
insert into tonkho (macn, macf, slton) values ('CN01', 'CF0010', 1209);
Nhập dữ liệu bảng hoa hồng:

insert into hoahong (mahh, hoahong) values (0, 0);


insert into hoahong (mahh, hoahong) values (1, 200000);
insert into hoahong (mahh, hoahong) values (2, 300000);
insert into hoahong (mahh, hoahong) values (3, 400000);
insert into hoahong (mahh, hoahong) values (4, 500000);
Nhập dữ liệu bảng công việc:

insert into congviec (macv, tencv) values ('DH', 'dong hang');


insert into congviec (macv, tencv) values ('GH', 'giao hang');
insert into congviec (macv, tencv) values ('KK', 'kiem kho');
insert into congviec (macv, tencv) values ('KT', 'ke toan');
insert into congviec (macv, tencv) values ('TV', 'tu van khach hang');
insert into congviec (macv, tencv) values ('QL', 'quan ly chi nhanh');
Nhập dữ liệu bảng nhân viên:

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('DH0001', 'Nguyen Thuy', 'Linh', TO_DATE('2018-11-18', 'YYYY-
MM-DD'), 4000000, '0377699829', 'thuylinh2308@gmailcom', 'DH', 1);

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('DH0002', 'Hoang Anh', 'Tuan', TO_DATE('2018-11-18', 'YYYY-
MM-DD'), 4000000, '0964872434', 'anhtuan0204@gamilcom', 'DH', 1);

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('DH0003', 'Tran Thi Hoang', 'Anh', TO_DATE('2018-11-18',
'YYYY-MM-DD'), 4000000, '0369954954', 'anhanh719@gmailcom', 'DH', 1);

Trang 40
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('DH0004', 'Doan Anh', 'Toan', TO_DATE('2018-11-18', 'YYYY-
MM-DD'), 4000000, '0986667211', 'toandoan4729@gmailcom', 'DH', 2);

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('DH0005', 'Nguyen Tran Anh', 'Thu', TO_DATE('2018-11-18',
'YYYY-MM-DD'), 4000000, '0974665644', 'anhthu1429@gamilcom', 'DH', 2);

Nhập dữ liệu bảng khách hàng:

insert into khachhang (makh, tenkh, diachi, sdt, email) values ('KH0001', 'Nguyen
Quoc Khanh', 'Duong 385, phuong Tang Nhon Phu A, tp Thu Duc', '0838263820',
'quockhanh29@gmail.com');

insert into khachhang (makh, tenkh, diachi, sdt, email) values ('KH0002', 'Tran
Thanh Thuy', '17 Hoang Dieu 2, phuong Linh Chieu, tp Thu Duc', '0382957329',
'thanhthuy08@gmail.com');

insert into khachhang (makh, tenkh, diachi, sdt, email) values ('KH0003', 'Phan Lan
Anh', '56 Nguyen Chi Thanh, Chi Lang, Thanh pho Pleiku, Gia Lai', '0948927717',
'lananh23@gmail.com');

insert into khachhang (makh, tenkh, diachi, sdt, email) values ('KH0004', 'Nguyen
Khanh Linh', '123, thon 2a, xa Eakly, huyen Krong Pac, Tinh Dak Lak',
'0932784661', 'khanhlinh103@gmail.com');

insert into khachhang (makh, tenkh, diachi, sdt, email) values ('KH0005', 'Nguyen
Tien Nam', ' 224 Duong so 48, Phuong 5, Quan 4, Thanh pho Ho Chi Minh',
'0832748718', 'tiennam134@gmail.com');

Nhập dữ liệu bảng đơn đặt hàng:

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000001',
to_date('2021-08-30', 'YYYY-MM-DD'), 'KH0001', 'TV0004', 2, 'CN03', 'Quoc

Trang 41
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Khanh', 'Duong 385, phuong Tang Nhon Phu A, tp Thu Duc', to_date('2021-09-01',
'YYYY-MM-DD'), '0838263820' , NULL);

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000002',
to_date('2021-09-01', 'YYYY-MM-DD'), 'KH0002', 'TV0005', 2, 'CN03', 'Thanh
Thuy', '17 Hoang Dieu 2, phuong Linh Chieu, tp Thu Duc', to_date('2021-09-02',
'YYYY-MM-DD'), '0382957329' , NULL);

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000003',
to_date('2021-09-01', 'YYYY-MM-DD'), 'KH0003', 'TV0002', 1, 'CN01', 'Lan Anh',
'56 Nguyen Chi Thanh, Chi Lang, Thanh pho Pleiku, Gia Lai', to_date('2021-09-03',
'YYYY-MM-DD'), '0948927717' , NULL);

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000004',
to_date('2021-09-02', 'YYYY-MM-DD'), 'KH0004', 'TV0001', 1, 'CN02', 'Khanh
Linh', '123, thon 2a, xa Eakly, huyen Krong Pac, Tinh Dak Lak', to_date('2021-09-
03', 'YYYY-MM-DD'), '0932784661' , NULL);

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000005',
to_date('2021-09-02', 'YYYY-MM-DD'), 'KH0005', 'TV0006', 2, 'CN03', 'Tien
Nam', ' 224 Duong so 48, Phuong 5, Quan 4, Thanh pho Ho Chi Minh',
to_date('2021-09-03', 'YYYY-MM-DD'), '0832748718' , NULL);

Nhập dữ liệu bảng chi tiết đơn hàng:

insert into ctdonhang (maddh, macf, sl) values ('DDH0000001', 'CF0003', 1);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000001', 'CF0009', 2);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000001', 'CF0022', 1);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000002', 'CF0020', 1);

Trang 42
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

insert into ctdonhang (maddh, macf, sl) values ('DDH0000002', 'CF0035', 1);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000003', 'CF0019', 2);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000004', 'CF0023', 1);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000004', 'CF0025', 1);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000005', 'CF0002', 1);
insert into ctdonhang (maddh, macf, sl) values ('DDH0000005', 'CF0043', 3);

Trang 43
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

CHƯƠNG 4: ỨNG DỤNG VÀO CÁC NGHIỆP VỤ


QUẢN LÝ BÁN HÀNG TẠI CỬA HÀNG BÁN HẠT
CAFE STARBUCK
Chú ý: Một số câu truy vấn trả về số dòng dữ liệu khá lớn, các hình chụp kết quả
chỉ là 1 phần của dữ liệu được truy xuất.

4.1 Thao tác trên dữ liệu của các bảng:

Thao tác cơ bản trên dữ liệu của bảng như insert (thêm dữ liệu), update (chỉnh
sửa, cập nhật dữ liệu) và delete (xóa dữ liệu). Các thao tác này vô cùng quan trọng
đối với mọi cơ sở dữ liệu. Vì sao lại quan trọng? Trong quá trình quản lý bất cứ một
cơ sở dữ liệu nào, việc dữ liệu xảy ra sự thay đổi là không thể không xảy ra, từ thay
đổi dữ liệu thuộc tính, thêm một hàng dữ liệu mới đến xóa đi một hàng. Dưới đây là
một vài ví dụ về các câu lệnh cập nhật dữ liệu và xóa dữ liệu được dùng trong hệ
quản trị cơ sở dữ liệu quản lý bán hàng tại cửa hàng bán hạt cafe Starbuck(lệnh
thêm dữ liệu được thực hiện ở mục 3.. tại chương 3).

4.1.1 Cập nhật dữ liệu:

4.1.1.1 Cập nhật giá bán của các sản phẩm, giá bán giảm 5%:

Giải thích:

Tại cửa hàng Starbuck, khi đến các dịp lễ thường có chương trình khuyến mã
hoặc sale các sản phẩm. Muốn giảm 5% tất cả các mặt hàng cỏ thể sử dụng câu lệnh
cập nhật như nghiệp vụ sau.

Câu lệnh:

update dscafe

set giaban = giaban - (giaban*5/100);

Sử dụng câu lênh kiểm tra:

Trang 44
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Select macf, giaban from dscafe;

Kết quả:

Hình 4.1. Kết quả trước và sau khi cập nhật 5% giá bán

4.1.1.2 Cập nhật giá bán của các sản phẩm thuộc thương hiệu “Nón lá
Coffee”, tăng thêm 5000:

Giải thích:

Giá cả các sản phẩm biến động, trong cửa hàng Starbuck, muốn tăng giá các sản
phẩm một thương hiệu nào đó (cụ thể là Nón Lá Coffee) ta thực hiện câu lệnh này.

Câu lệnh:

update dscafe

set giaban = giaban + 5000

where math = 'NL';

Sử dụng câu lệnh kiểm tra:

Select macf, math, giaban FROM dscafe WHERE math = 'NL';

Kết quả:

Trang 45
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.2. Kết quả trước và sau khi cập nhật giá bán của thương hiệu Nón Lá

4.1.1.3 Cập nhật số điện thoại của nhân viên có mã “DH0005”, số điện thoại
là “0975301025”:

Giải thích:

Các nhân viên có thể thay đổi số điện thoại liên hệ của cá nhân bất cứ lúc nào
hoặc vì một lý do nào đó. Để thuận tiện trong việc quản lý cũng như cập nhật thông
tin chính xác nhất, ta sử dụng câu lệnh cập nhật này.

Câu lệnh:

update nhanvien

set sdt = '0975301025'

where manv = 'DH0005';

Sử dụng câu lệnh kiểm tra:

select manv, tennv, sdt from nhanvien where manv = 'DH0005';

Kết quả:

Hình 4.3. Kết quả cập nhật số điện thoại nhân viên

4.1.1.4 Cập nhật chuyển nhân viên giao hàng có mã “GH0007” sang công
việc khác:

Giải thích:

Trang 46
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Trong cửa hàng Starbuck, có thể chuyển đổi công việc của nhân viên một các
linh hoạt nếu bộ phận công việc khác thiếu người. Cụ thể, trong nghiệp vụ này các
nhân viên ở bộ phận giao hàng sẽ chuyển qua một bộ phận khác cần hỗ trợ nhân lực
thì sử dụng câu lệnh cập nhật này để dễ dàng trong việc quản lý và thanh toán lương
nhân viên.

Câu lệnh:

update nhanvien

set manv = '&newmanv', macv = '&newmacv'

where manv = 'GH0007';

Sử dụng câu lệnh kiểm tra:

Select manv, honv || ' ' || tennv as "Ho Ten", macv from nhanvien;

Kết quả:

Hình 4.4. Kết quả cập nhật chuyển công việc cho nhân viên

4.1.1.5 Cập nhật ngày sản xuất thành 10/11/2021 và giá của sản phẩm, mã
sản phẩm do người dùng nhập:

Giải thích:

Các sản phẩm trong của hàng đến một thời gian nhất định nào đó sẽ hết hạn,
hoặc các sản phẩm nhập các đợt hàng mới thì hệ thống cần cập nhật ngày sản xuất
cho các mặt hàng đó. Lúc này, ta có thể sử dụng câu lệnh cập nhật này.

Câu lệnh:

update dscafe

set ngaysx = TO_DATE('2021/11/10', 'YYYY/MM/DD'),

Trang 47
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

giaban = giaban + (giaban*5/100)

where macf = '&cp_id';

Sử dụng câu lệnh kiểm tra:

Select macf, ngaysx, giaban from dscafe where macf = 'CF0011';

Kết quả:

Hình 4.5. Kết quả cập nhật giá bán và ngày sản xuất của sản phẩm

4.1.1.6 Cập nhật số lượng tồn của các sản phẩm trong bảng tồn kho khi sản
phẩm được bán:

Giải thích

Số lượng tồn trong kho của các chi nhánh sẽ thay đổi (giảm đi) khi mặt hàng đo
được bán đi. Lúc này, cần giảm số lượng tương ứng trong kho xuống để cập nhật số
lượng tồn kho một cách chính xác. Câu lệnh này sẽ hỗ trợ thực hiện nghiệp vụ đó.

Câu lệnh:

update tonkho

set slton = slton - &daban

where macf = '&ma_cafe' and macn = '&macn';

Sử dụng câu lệnh kiểm tra:

Select macf, macn, slton from tonkho


where macf = 'CF0016' and macn = 'CN06';

Trang 48
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.6. Nhập số lượng cà phê đã bán

Kết quả:

Hình 4.7. Kết quả cập nhật số lượng sản phẩm tồn kho sau khi đã bán

4.1.1.7 Cập nhật giá bán của sản phẩm có mã “CF0003” bằng với giá bán
của sản phẩm có mã “CF0002”:

Giải thích:

Trong danh sách các sản phẩm cà phê, các mặt hàng có khối lượng hoặc thuộc
loại cà phê tương đương nhau, người dung có thể cập nhật giá bán của các sản phẩm
đó bằng nhau, ta có thể sử dụng câu lệnh cập nhật này để áp dụng vào nghiệp vụ.

Câu lệnh:

update dscafe

set giaban = (Select giaban from dscafe where macf = 'CF0002')

where macf = 'CF0003';

Sử dụng câu lệnh kiểm tra:

Select macf, giaban from dscafe;

Kết quả:

Trang 49
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.8. Kết quả sau khi cập nhật giá bán của hai mặt hàng bằng nhau

4.1.1.8 Cập nhật thêm 50 sản phẩm cho các mặt hàng có số lượng tồn dưới
20:

Giải thích:

Khi các mặt hàng trong kho gần hết hàng, quản lý kho cần kiểm tra và cập nhật
số lượng hàng trong kho để đảm bảo duy trì hàng hóa không bị hết hoặc thiếu hàng
khi được đặt mua.

Câu lệnh:

update tonkho

set slton = slton + 50

where slton <= 20;

Sử dụng câu lệnh kiểm tra:

SELECT * FROM tonkho where slton <= 20;

Kết quả:

Hình 4.9. Kết quả sau khi đã cập nhật nhập thêm sản phẩm

Trang 50
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.1.1.9 Cập nhật giảm giá 10% cho các sản phẩm chưa có đơn đặt hàng nào:

Giải thích:

Trong Starbucksẽ có nhiều mặt hàng có thể không thuộc loại mà khách hàng
thích, hoặc do các sản phẩm có giá cả đắt đỏ nên người dùng không sử dụng và các
sản phẩm đó không có đơn hàng. Cửa hàng cần có chế độ ưu đãi để có thể giải
quyết các tồn kho của mặt hàng này, ta sử dụng câu lệnh cập nhật giá bán cho
nghiệp vụ như sau.

Câu lệnh:

update dscafe

set giaban = giaban - (giaban*10/100)

where NOT EXISTS (select macf from ctdonhang where macf = dscafe.macf);

Sử dụng câu lệnh kiểm tra:

Select macf, giaban from dscafe


where NOT EXISTS (Select macf from ctdonhang where macf = dscafe.macf);
Kết quả:

Hình 4.10. Kết quả cập nhật giá của các sản phẩm chưa có đơn hàng

4.1.1.10 Cập nhật tăng giá thêm 5% cho những sản phẩm cafe có số lượng
mua nhiều nhất:

Giải thích

Trang 51
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Trong cửa hàng Starbuck, với mặt hàng cà phê có lượng đặt hàng nhiều nhất (có
nghĩa được khách yêu thích nhất), muốn tăng giá bán của sản phẩm này lên có thể
sử dụng câu lệnh cập nhật sau để thực hiện nghiệp vụ.

Câu lệnh:

UPDATE dscafe

set giaban = giaban + (giaban*5/100)

where macf IN (SELECT macf from ctdonhang JOIN dondathang on


dondathang.maddh = ctdonhang.maddh

GROUP BY macf HAVING SUM(sl) >= ALL (Select SUM(sl) from


dondathang join ctdonhang on dondathang.maddh = ctdonhang.maddh GROUP BY
macf));

Sử dụng câu lệnh kiểm tra:

select macf, giaban from dscafe


where macf IN (SELECT macf from ctdonhang JOIN dondathang on
dondathang.maddh = ctdonhang.maddh GROUP BY macf HAVING SUM(sl)
>= ALL (Select SUM(sl) from dondathang join ctdonhang on
dondathang.maddh = ctdonhang.maddh GROUP BY macf));
Kết quả:

Hình 4.11. Kết quả cập nhật tăng giá sản phẩm có nhiều đơn hàng nhất

4.1.2 Xóa dữ liệu:

4.1.2.1 Cho thôi việc một nhân viên do người dùng nhập vào:

Giải thích:

Trang 52
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Khi một nhân viên thuộc bộ bận nào đó thôi việc, quản lý của Starbuckchỉ cần
nhập mã nhân viên của người đó vào thì sẽ tự động xóa thông tin của người đó ra
khỏi danh sách nhân viên cửa hàng.

Câu lệnh:

DELETE from nhanvien

WHERE manv = '&manv';

Sử dụng câu lệnh kiểm tra:

Select manv, honv || ' ' || tennv as "Ho Ten", macv, makv
from nhanvien where manv = 'KK0007';
Kết quả:

Hình 4.12. Kết quả xóa một nhân viên đã nghỉ việc ra khỏi danh sách

4.1.2.2 Cho phép người dùng nhập cà mã cafe và ngừng kinh doanh cafe đó:

Giải thích:

Khi ngừng sản xuất một mặt hàng nào đó trong Starbuck, quản lý sẽ nhập mã
của sản phẩm đó để xóa thông tin cũng như thanh lý các mặt hàng đó trong các chi
nhánh hoạt động.

Câu lệnh:

DELETE from tonkho

WHERE macf = '&macf';

Sử dụng câu lệnh kiểm tra:

select * from tonkho where macf = 'CF0035';

Kết quả:

Trang 53
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.13. Kết quả ngừng kinh doanh một mặt hàng trong cửa hàng

4.1.2.3 Cho thôi việc nhân viên có tên “Phan Trong Hieu”:

Giải thích:

Trong trường hợp, quản lý không nhớ mã nhân viên đã thôi việc để xóa
thông tin ra khỏi CSDL thì có thể nhập họ tên của người đó sẽ dễ dàng hơn trong
việc quản lý và thanh toán lương.

Câu lệnh:

DELETE from nhanvien

WHERE honv = 'Phan Trong' and tennv = 'Hieu';

Sử dụng câu lệnh kiểm tra:

Select manv, honv || ' ' || tennv as "Ho Ten", macv, makv
from nhanvien where honv = 'Phan Trong' and tennv = 'Hieu';
Kết quả:

Hình 4.14. Kết quả cho nhân viên được nhập tên cụ thể thôi việc

4.1.2.4 Xóa các mặt mặt hàng trong kho có số lượng tồn trên 1500 mặt hàng

Giải thích:

Trang 54
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Các mặt hàng có số lượng tồn lớn hơn 1500 sản phẩm trong Starbuckcần
được thanh lý vì một số lý do nào đó như sắp hết hạn hoặc không kinh doanh được.
Người dùng chỉ cần sử dụng câu lệnh sau để thực hiện nghiệp vụ này.

Câu lệnh:

DELETE from tonkho

where slton > 1500;

Sử dụng câu lệnh kiểm tra:

select * from tonkho where slton >1500;

Kết quả:

Hình 4.15. Kết quả xóa các sản phẩm có số lượng tồn lớn hơn 1500

4.1.2.5 Xóa tất cả các đơn hàng hàng do nhân viên có mã “TV0004” phụ
trách:

Giải thích:

Giả sử khi nhân viên phụ trách đơn hàng cập nhật sai các mặt hàng trong chi
tiết đơn, thì đơn hàng do nhân viên đó đã từng phụ trách sẽ bị hủy, các mặt hàng
trong chi tiết đơn hàng sẽ bị xóa ra khỏi chi tiết đơn đặt hàng.

Câu lệnh:

Trang 55
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

DELETE from ctdonhang


where maddh IN (SELECT maddh from dondathang where manv = 'TV0004');
Sử dụng câu lệnh kiểm tra:

select d.maddh, d.makh, d.manv, c.sl, c.macf


from ctdonhang c inner join dondathang d on d.maddh = c.maddh
where d.manv = 'TV0004';
Kết quả:

Hình 4.16. Kết quả xóa các mặt hàng trong chi tiết đơn do nhân viên lập sai

4.1.2.6 Xóa loại cà phê mà hiện không có mặt hàng nào trừ “Khác”

Giải thích:

Một số loại cà phê, đã ngừng sản xuất và không còn mặt hàng nào trong kho
nữa thì cần được xóa trong CSDL (trừ loại “Khác”). Để thuận tiện trong việc quản
lý bán hàng và chặt chẽ hơn trong việc quản lý các loại sản phẩm kinh doanh tại
Starbuck.

Câu lệnh

DELETE from loaicafe

where NOT EXISTS (Select macf from dscafe where maloaicf = loaicafe.maloaicf);

Sử dụng câu lệnh kiểm tra:

select * from loaicafe


where NOT EXISTS (Select macf from dscafe where maloaicf =
loaicafe.maloaicf) and maloaicf <> 'L00';
Kết quả:

Trang 56
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.17. Kết quả xóa loại cà phê mà hiện không có mặt hàng

4.1.2.7 Hủy một mặt hàng trong chi tiết đơn hàng đã lập đơn

Giải thích:

Khi khách hàng liên hệ cho cửa hàng xóa một mặt hàng nào đó đã lên đơn,
có thể là do khách nhầm lẫn hay bất kì lý do nào đó. Nếu đơn chưa được giao thì
người dùng có thể sử dụng câu lệnh này để xử lý nghiệp vụ nhanh chóng.

Câu lệnh:

DELETE from ctdonhang

where maddh = '&maddh' and macf = '&macf';

Sử dụng câu lệnh kiểm tra:

select * from ctdonhang where maddh = 'DDH0000013';

Hình 4.18. Nhập đơn hàng và mặt hàng cần xóa

Kết quả:

Hình 4.19. Kết quả xóa mặt hàng trong chi tiết đơn theo yêu cầu

Trang 57
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.1.2.8 Xóa các mặt hàng trong kho có số lượng tồn <=10, mã chi nhánh do
người dùng nhập

Giải thích:

Khi các mặt hàng trong kho còn dưới 10 sản phẩm, đồng nghĩa với các sản phẩm
trong kho sắp hết hàng. Cần xóa các sản phẩm này trong CSDL để lập báo cáo yêu
cầu nhập thêm các mặt hàng vào các chi nhánh cụ thể.

Câu lệnh:

DELETE from tonkho

Where slton <= 10 and macn = '&macn';

Sử dụng câu lệnh kiểm tra:

Select * from tonkho where slton <= 10;

Hình 4.20. Nhập chi nhánh cần xóa mặt hàng

Kết quả:

Hình 4.21. Kết quả xóa sản phẩm có lượng tồn <=10 có yêu cầu chi nhánh

Trang 58
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.1.2.9 Xóa các mặt hàng thuộc bảng chi tiết có đơn hàng được lập trước
2021

Giải thích:

Các mặt hàng thuộc chi tiết đơn đặt hàng của đơn đặt hàng được lập trước
năm 2021, có thể do ngừng sản xuất mặt hàng này nên khi xử lý ràng buộc ta cần
xóa những chi tiết trước năm hiện tại. Để thực hiện nghiệp vụ này, ta có thể sử dụng
câu lệnh sau.

Câu lệnh:

DELETE from ctdonhang

where maddh IN (SELECT maddh from dondathang where dondathang.ngaylap <


TO_DATE('2021/01/01', 'YYYY/MM/DD'));

Sử dụng câu lệnh kiểm tra:

Select * from ctdonhang


where maddh IN (SELECT maddh from dondathang where
dondathang.ngaylap < TO_DATE('2021/01/01', 'YYYY/MM/DD'));
Kết quả:

Hình 4.22. Kết quả xóa các mặt hàng thuộc chi tiết đơn được lập trước 2021

4.1.2.10 Xóa các nhân viên đóng hàng thuộc khu vực 1

Giải thích:

Ở chi khu vực này, việc đóng hàng có thể tích hợp với nhân viên kiểm kho nên
công việc đóng hàng ở khu vực này sẽ bị hủy và xóa các nhân viên trong CSDL.

Trang 59
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Câu lệnh:

DELETE from nhanvien

where macv = 'DH' and makv = 1;

Sử dụng câu lệnh kiểm tra:

select manv, honv || ' ' || tennv as "Ho Ten", macv, makv
from nhanvien where macv = 'DH';
Kết quả:

Hình 4.23. Kết quả xóa các nhân viên đóng hàng thuộc khu vực 1

4.2 Index

- Index được tạo tự động cho thuộc tính khi thuộc tính đó được cài đặt ràng
buộc là PRIMARYKEY hoặc UNIQUE.
- Việc tạo Index trên các thuộc tính khác nhằm tăng tốc độ truy xuất.

4.2.1 Tạo Index trên bảng tồn kho:

Câu lệnh:

Create index indx_tonkho

ON tonkho (macf, macn);

Kết quả:

Trang 60
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.24. Tạo Index trên bảng tồn kho thành công

4.2.2 Tạo Index trên bảng chi tiết đơn hàng:

Câu lệnh:

create index indx_ctddh

on ctdonhang (macf, maddh);

Kết quả:

Hình 4.25. Tạo Index trên bảng chi tiết đơn hàng thành công

4.2.3 Tạo Index trên bảng nhân viên:

Câu lệnh:

create index indx_nv

on nhanvien(macv, makv);

Kết quả:

Hình 4.26. Tạo Index trên bảng nhân viên thành công

4.3 Truy vấn

Truy vấn cơ sở dữ liệu là một dạng bộ lọc sở hữu khả năng thu thập được các
thông tin đến từ nhiều bảng trong cùng một hệ cơ sở dữ liệu. Ngoài việc có thể thu
thập thông tin từ nhiều bảng, truy vấn cơ sở dữ liệu còn có khả năng thực hiện các
tính toán toán học, đếm số lượng, ….

Trang 61
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.3.1 Truy vấn thông tin của nhân viên trong cửa hàng và sắp xếp theo
khu vực:

Giải thích:

Hàng tháng, cửa hàng xẽ xuất ra bảng thông tin nhân viên và bảng lương theo
các khu vực của cửa hàng. Để nhân viên có thể theo dõi lương và tiện cập nhật
thông tin của mình nếu có thay đổi.

Câu lệnh:

select kv.makv, manv, honv || ' ' || tennv as "Ho Ten", tencv, ngayvaolam, luong sdt,
email

from nhanvien nv join congviec cv on nv.macv = cv.macv

join khuvuc kv on nv.makv = kv.makv

order by kv.makv;

Kết quả:

Hình 4.27. Thông tin nhân viên được xếp theo khu vực

4.3.2 Truy vấn thông tin khách hàng:

Giải thích:

Trang 62
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hàng năm, cửa hàng thường có những chương trình khuyến mãi hoặc tri ân
khách hàng của cửa hàng Starbuck. Từ đó, truy vấn để liệt kê thông tin khách hàng
và liên hệ để trao đổi tặng quà hoặc giới thiệu chương trình ưu đãi cho khách hàng.

Câu lệnh:

select makh, tenkh, sdt, email, diachi

from khachhang;

Kết quả:

Hình 4.28. Liệt kê thông tin khách hàng

4.3.3 Truy vấn thông tin sản phẩm hạt cafe tại cửa hàng:

Giải thích:

Cửa hàng Starbuckcần liệt kê các thông tin các sản phẩm cà phê đang kinh
doanh trong cửa hàng để thuận lợi trong việc quản lý hàng hóa cũng như tạo thực
đơn tham khảo cho khách hàng.

Câu lệnh:

select macf, tencf, giaban, khoiluong|| 'gram/' ||dvt as "Khoi_luong", ngaysx, hsd,
mota

from dscafe;

Kết quả:

Trang 63
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.29. Liệt kê thông tin sản phẩm cà phê kinh doanh

4.3.4 Truy vấn thông tin các đơn đặt hàng của khách hàng và sắp xếp
chúng theo mã đơn đặt hàng và mã khách hàng:

Giải thích:

Nghiệp vụ truy vấn này, nhằm để liệt kê ra thông tin các đơn đặt hàng tương ứng
với khách hàng đã có đơn tại Starbuck. Từ đó, có thể thống kê số hóa đơn và khách
hàng thân thiết của cửa hàng.

Câu lệnh:

select maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan, diachi_giao,


thoihan_giao, sdt_nguoinhan, ghichu

from dondathang

order by maddh, makh;

Kết quả:

Trang 64
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.30. Thông tin đơn đặt hàng của khách hàng

4.3.5 Truy vấn thông tin tồn kho của cửa hàng, với chi nhánh được
người dùng nhập vào:

Giải thích:

Truy vấn thông tin tồn kho của các chi nhánh, nhằm để thống kê và năm được số
lượng tồn của các mặt hàng thuộc các chi nhánh cụ thể. Từ đó, nắm được số lượng
phục vụ cho việc xuất nhập kho hàng cho chi nhánh đó, đảm bảo không để kho
thiếu sản phẩm.

Câu lệnh:

select tk.macf, tencf, slton

from tonkho tk join dscafe ds on tk.macf = ds.macf

where macn = '&macn';

Kết quả: mã chi nhánh được nhập vào là CN01

Hình 4.31. Liệt kê thông tin tồn kho của mặt hàng ở các chi nhánh

Trang 65
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.3.6 Truy vấn các công việc được các nhân viên thực hiện tại cửa hàng:

Giải thích:

Truy vấn thông tin các bộ phận công việc trong cửa hàng, nhằm để liệt kê được
cửa hàng gồm có những bộ phận nào. Từ đó hỗ trợ cho những người có nhu cầu xin
việc, nắm được thông tin và xin việc vào bộ phận mong muốn.

Câu lệnh:

select macv, tencv

from congviec;

Kết quả:

Hình 4.32. Thông tin các bộ phận công việc

4.3.7 Truy vấn thông tin của các chi nhánh thuộc Starbuck:

Giải thích:

Truy vấn thông tin các chi nhánh, nhằm để khách hàng biết được cửa hàng có
những chi nhánh nào, cũng thuận tiện trong việc liên hệ để được tư vấn và vận
chuyển hàng gần nhất, thuận tiện nhất.

Câu lệnh:

Select macn, tencn, hotline, diachi, tenkv

from chinhanh cn join khuvuc kv on cn.makv = kv.makv;

Kết quả:

Trang 66
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.33. Thông tin các chi nhánh đang hoạt động

4.3.8 Truy vấn thông tin các loại cafe có tại cửa hàng:

Giải thích:

Truy vấn thông tin các loại cà phê trong của hàng, nhằm để cập nhật về những
loại hàng mà cửa hàng đang kinh doanh. Từ đó, xuất ra bảng thông tin để khách
hàng có thể tham khảo và tìm hiểu thêm về các loại sản phẩm đó.

Câu lệnh:

select maloaicf, tenloaicf

from loaicafe;

Kết quả:

Hình 4.34. Liệt lê các loại cà phê đang kinh doanh

4.3.9 Truy vấn thông tin các thương hiệu cafe mà cửa hàng kinh doanh:

Giải thích:

Truy vấn thông tin các thương hiệu mà của hàng trong kinh doanh, nhằm để
quản lý các thương hiệu và dễ hàng trong việc tư vấn khách hàng về các thương
hiệu hiện có để phục vụ cho khách.

Câu lệnh:

Trang 67
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

select math, tenth

from thuonghieu;

Kết quả:

Hình 4.35. Thông tin một số thương hiệu đang kinh doanh

4.3.10 Truy vấn thông tin tồn kho

Giải thích:

Cho biết thông tin tồn kho của tất cả các chi nhánh, từ đó lập thống kê doanh thu
tại các chi nhánh và phân bổ hàng hóa hợp lý.

Câu lệnh

select macn, macf, slton

from tonkho;

Kết quả

Trang 68
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.36. Thông tin tồn kho của tất cả chi nhánh

4.3.11 Truy vấn thông tin chi tiết các đơn đặt hàng:

Giải thích:

Liệt kê các chi tiết đơn đặt hàng để báo cáo và thống kê các mặt hàng nào được
bán ra nhiều nhất và mặt hàng nào bán được ít nhất hoặc không được khách hàng ưa
chuộng. Từ đó, điều chỉnh xuất nhập kho và lên kế hoạch trong việc bán hàng.

Câu lệnh:

select maddh, macf, sl

from ctdonhang;

Kết quả:

Trang 69
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.37. Thông tin các chi tiết đơn đặt hàng

4.3.12 Truy vấn liệt kê tên và giá bán của các sản phẩm có giá từ 100.000
VNĐ đến 1.000.000 VNĐ:

Giải thích:

Truy vấn nghiệp vụ này, cho biết các mặt hàng có giá bán trung bình. Phù hợp
trong việc quản lý giá bán các mặt hàng, và làm nền tảng cho việc điều chỉnh giá
bán cho phù hợp (tăng hoặc giảm) theo chất lượng sản phẩm và nhu cầu mua hàng
của khách hàng

Câu lệnh:

Select tencf, giaban

from dscafe

where giaban >= 100000 and giaban <= 1000000

order by giaban;
Trang 70
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kết quả:

Hình 4.38. Thông tin các mặt hàng có giá bán 100000VND – 1000000VND

4.3.13 Truy vấn danh sách gồm: Mã cafe, tên cafe, có trong ít hơn 5 đơn
đặt hàng:

Giải thích:

Nghiệp vụ này, nhằm truy vấn thông tin các mặt hàng tại Starbuckít được ưa
chuộng, chỉ có dưới 5 đơn hàng chứa các mặt hàng đó. Nhằm để điều chỉnh xuất
nhập kho cũng như quản lý bán hàng về các sản phẩm đó.

Câu lệnh:

Select macf, tencf, count(macf) as So_don_hang_dat

from dscafe

where macf in (select macf from ctdonhang)

group by macf, tencf

Trang 71
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

having count(macf) < 5 ;

Kết quả:

Hình 4.39. Liệt kê thông tin các mặt hàng có trong dưới 5 đơn hàng

4.3.14 Truy vấn: Mã cafe, tên cafe, giá bán của các sản phẩm thuộc
thương hiệu “Trung Nguyen”, “Lion Cafe” và có mức giá dưới 100.000
VNĐ:

Giải thích:

Truy vấn một số thông tin liên quan đến các thương hiệu (cụ thể là Trung
Nguyên và Lion Coffee), có giá cà phê thuộc mức thấp trong cửa hàng. Từ đó có
thể điều chỉnh giá cho phù hợp với giá cả thị trường ở các thời điểm.

Câu lệnh:

Select dscafe.macf, dscafe.tencf, thuonghieu.tenth, dscafe.giaban

from dscafe join thuonghieu on dscafe.math = thuonghieu.math

where thuonghieu.tenth in ('Trung Nguyen', 'Lion Cafe')

Trang 72
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

AND dscafe.giaban < 100000;

Kết quả:

Hình 4.40. Thông tin về các sản phẩm thuộc TN và LC có giá dưới 100000VND

4.3.15 Truy vấn cho biết danh sách sản phẩm với giá sản phẩm được giảm
15% với các thông tin: Mã cafe, tên cafe, giá bán và giá sau giảm:

Giải thích:

Nghiệp vụ này nhằm truy vấn thông tin các sản phẩm có giá bán trong đợt sale
lớn “Black Friday”, được giảm giá 15% cho tất cả các sản phẩm đang được kinh
doanh cho cửa hàng, nhằm để thanh lý các mặt hàng còn tồn lại trong cửa hàng và
nhập các sản phẩm mới. và thấy được sự chênh lệch giá trước và sau khi giảm giá.

Câu lệnh:

Select macf, tencf, giaban, round(giaban - (Giaban*15/100)) as gia_sau_giam

from dscafe;

Trang 73
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kết quả:

Hình 4.41. Liệt kê thông tin trước và sau khi giảm 15% các mặt hàng

4.3.16 Truy vấn cho biết số lượng sản phẩm của mỗi loại cafe đang kinh
doanh tại cửa hàng:

Giải thích:

Nghiệp vụ này cho biết số lượng các mặt hàng thuộc các loại cà phê phác nhau
trong cửa hàng, để dễ danhg kiểm soát được hàng hóa và thông tin hàng hóa.

Câu lệnh:

Select dscafe.maloaicf, loaicafe.tenloaicf, count(*) as so_luong

from loaicafe inner join dscafe on loaicafe.maloaicf = dscafe.maloaicf

group by dscafe.maloaicf, loaicafe.tenloaicf

order by dscafe.maloaicf;

Kết quả:

Trang 74
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.42. Số lượng mặt hàng của từng loại cà phê đang kinh doanh

4.3.17 Truy vấn cho biết tổng số đơn đặt hàng trong năm hiện hành:

Giải thích:

Nghiệp vụ ngày giúp thống kê số lượng đơn đặt hàng trong năm hiện tại, từ đó
lập báo cáo doanh thu theo từng năm.

Câu lệnh:

Select to_char(sysdate,'yyyy') as Nam, count(*)

from dondathang

where to_char(ngaylap,'yyyy') = to_char(sysdate,'yyyy');

Kết quả:

Hình 4.43. Số lượng đơn đặt hàng trong năm hiện tại

4.3.18 Truy vấn các nhân viên tư vấn của cửa hàng:

Giải thích:

Truy vấn các thông tin nhân viên tư vấn của cửa hàng, để từ đó biết được số
lượng nhân viên ở bộ phận này. Phục vụ cho việc tuyển dụng thêm nếu thiếu nhân
lực. hoặc liên hệ khi có sự cố.

Câu lệnh:

select manv, honv || ' ' || tennv as "Ho Ten", ngayvaolam, luong, sdt

Trang 75
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

from nhanvien

where macv = 'TV';

Kết quả:

Hình 4.44. Thông tin các nhân viên làm việc ở bộ phận tư vấn

4.3.19 Truy vấn số lượng nhân viên của mỗi công việc tại cửa hàng:

Giải thích:

Nghiệp vụ này, nhằm để quản lý được số lượng nhân viên ở từng bộ phận công
việc, hỗ trọ trong việc xem xét nên tuyển thêm nhân viên cho từng bộ phận công
việc cho phù hợp.

Câu lệnh:

select cv.macv, tencv, count(cv.macv) as so_luong_nv

from nhanvien nv join congviec cv on nv.macv = cv.macv

group by cv.macv, tencv;

Kết quả:

Trang 76
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.45. Liệt kê số lượng nhân viên ở từng bộ phận công việc

4.3.20 Truy vấn thông tin các đơn đặt hàng của nhân viên phụ trách do
người dùng nhập vào:

Giải thích:

Nghiệp vụ cho biết số đơn đặt hàng do các nhân viên phụ trách là bao nhiêu, từ
đó thưởng hoa hồng khích lệ cho nhân viên theo tháng, quý, năm. Hoặc để giải
quyết khi có sự cố đơn hàng.

Câu lệnh:

select maddh, ngaylap, makh, makv, macn, ten_nguoinhan, diachi_giao,


thoihan_giao, sdt_nguoinhan, ghichu

from dondathang dh

where manv = '&ma_nhan_vien';

Kết quả: mã nhân viên được nhập vào là TV0004

Hình 4.46. Liệt kê các đơn hàng với nhân viên phụ trách được người dùng nhập

4.3.21 Truy vấn thông tin các hạt cafe được sản xuất sau tháng 9 năm
2021:

Giải thích:

Trang 77
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Truy vấn này, giúp quản lý biết các mặt hàng được nhập trong khoảng thời gian
nào (cụ thể 9/2021), để kiểm soát về hạn dùng cũng như quản lý xuất nhập kho tại
Starbuckcó thông tin chính xác.

Câu lệnh:

select macf, tencf, giaban, khoiluong|| 'gram/' ||dvt as "Khoi_luong", ngaysx, hsd,
mota

from dscafe

where extract(month from(ngaysx)) >= 9 and extract(year from(ngaysx)) >= 2021;

Kết quả:

Hình 4.47. Thông tin các sản phẩm có ngày sản xuất sau 9/2021

4.3.22 Truy vấn thông tin các nhân viên bắt đầu làm việc từ năm 2020:

Giải thích:

Tại Starbuck, mỗi năm sẽ cập nhật tiền hoa hồng (tiền thưởng) cho nhân viên,
nghiệp vụ này giúp truy vấn các nhân viên làm việc từ năm nào (cụ thể 2020) để
thuận tiện trong việc cập nhật và thực hiện tăng hoa hồng cho nhân viên theo các
năm.

Câu lệnh:

select manv, honv || ' ' || tennv as "Ho Ten", ngayvaolam, luong, sdt, email, macv,
makv
Trang 78
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

from nhanvien

where extract(year from ngayvaolam) >= 2020;

Kết quả:

Hình 4.48. Thông tin các nhân viên vào làm việc từ năm 2020

4.3.23 Truy vấn thông tin nhân viên có thời gian làm việc tại cửa hàng từ
3 năm trở lên:

Giải thích:

Truy vấn thông tin các nhân viên làm việc từ 3 năm trở lên trong cửa hàng để
thuận tiện cho việc quản lý và cân nhắc tăng mức lương cho từng nhân viên.

Câu lệnh:

select manv, honv || ' ' || tennv as "Ho Ten", round((sysdate - ngayvaolam)/365) as
So_nam_lam_viec, luong, sdt, email, macv, makv

from nhanvien

where round((sysdate - ngayvaolam)/365) >= 3;

Kết quả:

Trang 79
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.49. Danh sách các nhân viên đã làm việc từ 3 năm trở lên

4.3.24 Truy vấn thông tin nhân viên có lương ít hơn 4000000:

Giải thích

Truy vấn thông tin các nhân viên có lương dưới 4000000VND, từ đó đưa vào
danh sách đề xuất tăng lương cho các nhân viên thuộc các bộ phận trong cửa hàng.

Câu lệnh:

select manv, honv || ' ' || tennv as "Ho Ten", ngayvaolam, luong, sdt, email, macv,
makv

from nhanvien nv join hoahong hh on nv.mahh = hh.mahh

where luong + hoahong < 4000000;

Kết quả:

Trang 80
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.50. Danh sách các nhân viên có lương dưới 4000000VND

4.4 Sequence:

- Là một số tự tăng tương tự như Autonumber trong Access hay Identity trong
SQLServer
- Thường được dùng cho khóa chính
- Tăng hiệu quả thực thi câu lệnh

4.4.1 Sequence dùng để đánh số tự động cho mã đơn đặt hàng:

Câu lệnh:

create sequence sq_maddh

increment by 1

minvalue 0

maxvalue 999999

cycle

nocache;

Tạo sequence:

Hình 4.51. Tạo Sequence đánh số mã đơn đặt hàng tự động thành công

Trang 81
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.4.2 Sequence dùng để đánh số tự động cho mã khách hàng:

Câu lệnh:

create sequence sq_makh

increment by 1

minvalue 16

maxvalue 9999

nocycle

nocache;

Tạo sequence:

Hình 4.52. Tạo Sequence đánh số mã khách hàng tự động thành công

4.4.3 Sequence dùng để đánh số tự động cho mã cafe:

Câu lệnh:

create sequence sq_macf

increment by 1

minvalue 51

maxvalue 9999

nocycle

nocache;

Đã tạo sequence:

Hình 4.53. Tạo Sequence đánh số mã cà phê tự động thành công

Trang 82
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.5 View:

Khung nhìn (view) được xem như bảng ảo. Ngoài việc cho người dùng viết lại
các ứng dụng dễ dàng hơn vì cho phép định nghĩa lại CSDL theo cách nhìn của
người viết ứng dụng và tăng cường tính độc lập của dữ liệu, còn phục vụ như một
công cụ bảo vệ thuận lợi trong nhiều trường hợp.

4.5.1 View xem bảng giá các hạt cafe được bán tại cửa hàng:

Ứng dụng:

View v_banggia sẽ được dùng để truy xuất giá bán của các hạt cafe, ta có thể
dùng view này để thực hiện tính thành tiền của chi tiết đơn đặt hàng, lấy thông tin
tạo menu,….

Câu lệnh:

create view v_banggia

as

select macf, tencf, tenloaicf, tenth, giaban

from dscafe cf join thuonghieu th on cf.math = th.math

join loaicafe l on cf.maloaicf = l.maloaicf;

Kiểm thử:

select * from v_banggia;

Kết quả:

Trang 83
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.54. Kết quả kiểm thử View thông tin các sản phẩm đang kinh doanh

4.5.2 View xem thông tin nhân viên:

Ứng dụng:

View v_thongtin_nhanvien cho phép người dùng truy xuất các thông tin đơn
giản hơn và hạn chế sự xuất hiện của các mã để người quản lý có thể dễ dàng nắm
bắt thông tin hơn.

Câu lệnh:

create view v_thongtin_nhanvien

as

select manv, honv, tennv, ngayvaolam, luong, sdt, tencv

from nhanvien nv join congviec cv on nv.macv = cv.macv;

Kiểm thử:

select * from v_thongtin_nhanvien;

Kết quả:

Trang 84
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.55. Kết quả kiểm thử View thông tin các nhân viên các bộ phận

4.5.3 View xem số nhân viên của mỗi công việc tại cửa hàng:

Ứng dụng:

View v_sonv_1congviec, cho phép người dùng truy xuất số lượng nhân viên của
từng bộ phận làm việc trong cửa hàng, để bộ phận quản lý dễ dàng đưa ra quyết
định tuyển dụng nhân viên cho các bộ phận đó.

Câu lệnh:

create view v_sonv_1congviec

as

select nv.macv, tencv, count(manv) as so_luong

from nhanvien nv join congviec cv on nv.macv = cv.macv

group by nv.macv, tencv;

Trang 85
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kiểm thử:

select * from v_sonv_1congviec;

Kết quả:

Hình 4.56. Kết quả kiểm thử View số lượng nhân viên từng bộ phận

4.5.4 View xem các đơn hàng được lập trong năm hiện hành và sắp xếp
chúng theo mã đơn đặt hàng tăng dần:

Ứng dụng:

View v_thongtin_dondathang_tainamhienhanh, cho phép người dùng truy xuất


được các đơn đặt hàng trong năm hiện tại một cách cụ thể và nhanh chóng, và kiểm
soát số lượng, lập báo cáo thống kê chính xác.

Câu lệnh:

create view v_thongtin_dondathang_tainamhienhanh

as

select maddh, ngaylap, tenkh, tennv, tenkv, ten_nguoinhan, diachi_giao,


thoihan_giao, sdt_nguoinhan, tinhtrang, ghichu

from dondathang dh join khachhang kh on dh.makh = kh.makh

join nhanvien nv on dh.manv = nv.manv

join khuvuc kv on dh.makv = kv.makv

where extract(year from (ngaylap)) = extract(year from (sysdate))

Trang 86
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

order by maddh;

Kiểm thử:

select * from v_thongtin_dondathang_tainamhienhanh;

Kết quả:

Hình 4.57. Kết quả kiểm thử View các đơn đặt hàng lập trong năm hiện tại

4.5.5 View xem thành tiền của các đơn hàng:

Ứng dụng:

View v_thanhtien_ctdonhang, cho biết tổng số tiền của đơn hàng mà khách hàng
phải trả, để việc thanh toán của khách hàng trở nên nhanh chóng và chính xác.

Câu lệnh:

create view v_thanhtien_ctdonhang

as

select maddh, sum(sl*giaban) as Thanh_tien

from ctdonhang ct join dscafe ds on ct.macf = ds.macf

group by maddh

order by maddh;

Kiểm thử:

select * from v_thanhtien_ctdonhang;

Trang 87
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kết quả:

Hình 4.58. Kết quả kiểm thử View thành tiền của các đơn đặt hàng

4.5.6 View xem danh sách số lượng cafe còn tồn kho tại các chi nhánh:

Ứng dụng:

View v_thongtin_tonkho, cho biết số lượng tồn kho tại các chi nhánh thuộc
Starbuck, từ đó điều chỉnh số lượng xuất – nhập kho cho phù hợp.

Câu lệnh:

create view v_thongtin_tonkho

as

select tk.macn, tencn, tencf, slton, dvt

from tonkho tk join dscafe ds on tk.macf = ds.macf

join chinhanh cn on tk.macn = cn.macn

Trang 88
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

order by macn;

Kiểm thử:

select * from v_thongtin_tonkho;

Kết quả:

Hình 4.59. Kết quả kiểm thử View số lượng tồn kho tại các chi nhánh

4.5.7 View xem danh sách nhân viên chưa phụ trách đơn đặt hàng nào:

Ứng dụng:

View v_ds_nv_phutrach0donhang, cho phép người dùng truy xuất danh sách các
nhân viên thuộc bộ phận tư vấn nhưng chưa lập được đơn hàng nào. Từ đó đưa ra
chế độ lương và khen thưởng phù hợp.

Câu lệnh:

create view v_ds_nv_phutrach0donhang

as

select manv, honv, tennv, ngayvaolam, luong, sdt, email, mahh, macv, makv

from nhanvien

where manv not in (select distinct manv from dondathang) and macv = 'TV';

Trang 89
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kiểm thử:

select * from v_ds_nv_phutrach0donhang;

Kết quả:

Hình 4.60. Kết quả kiểm thử View nhân viên chưa lập đơn hàng nào

4.6 Function:

Function giống như thủ tục nhưng có giá trị trả về khi thực thi hàm còn thủ tục
không có giá trị trả về.

4.6.1 Function cho biết tên sản phẩm với mã cafe là tham số truyền vào:

Ứng dụng:

Function f_name_caphe, truyền vào mã cà phê từ đó cho biết chính xác tên sản
phẩm mà ngừoi dùng muốn tìm.

Câu lệnh:

create FUNCTION f_name_caphe (p_macf dscafe.macf%TYPE)

return VARCHAR2 is

var_tencf VARCHAR2(100);

Begin

SELECT dscafe.tencf into var_tencf

from dscafe

where dscafe.macf = p_macf;

return (var_tencf);

EXCEPTION

Trang 90
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

WHEN no_data_found then return ('Khong tim thay du lieu!');

WHEN others then return ('Ham co loi!');

End;

Kiểm thử:

set serveroutput on

set verify off

declare cafe varchar2(100);

BEGIN

cafe := f_name_caphe ('&macf');

dbms_output.put_line('Ten san pham ca phe la: '||cafe);

end;

Kết quả: Mã cafe được nhập vào là CF0001

Hình 4.61. Kết quả kiểm thử function f_name_caphe

4.6.2 Function lấy giá trị trung bình giá bán của các sản phẩm với mã
loại (maloaicf) là tham số truyền vào:

Ứng dụng:

Function f_avg_giaban_loaicf, với tham số truyền vào là mã loại sản phẩm.


Người dùng có thể thống kê được giá trung bình của các sản phẩm thuộc loại cà phê
đó.

Câu lệnh:

create FUNCTION f_avg_giaban_loaicf (var_maloai dscafe.maloaicf%TYPE)

Trang 91
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

return dscafe.giaban%TYPE is

var_avg_gia dscafe.giaban%TYPE;

Begin

Select avg(giaban) into var_avg_gia

from dscafe

where dscafe.maloaicf = var_maloai;

return (var_avg_gia);

EXCEPTION

WHEN no_data_found then return ('Khong tim thay du lieu!');

WHEN others then return ('Ham co loi!');

End;

Kiểm thử:

set serveroutput on;

set verify off

declare GiabanTB dscafe.giaban%TYPE;

Begin

GiabanTB := f_avg_giaban_loaicf('&ma_loai');

dbms_output.put_line('Gia ban trung binh cua loai ca phe nay la: '|| GiabanTB);

End;

Kết quả: Mã loại cafe được nhập vào là L01

Trang 92
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.62. Kết quả kiểm thử function f_avg_giaban_loaicf

4.6.3 Function có tham số truyền vào là mã cafe (macf) và cho biết thời
gian tồn tại của sản phẩm đó kể từ ngày sản xuất:

Ứng dụng:

Function f_time_sanxuat, với tham số truyền vào là mã sản phẩm cà phê để trả
về thời gian mà từ thời điểm sản xuất đến hiện tại. Để người dùng có thể quản lý
được hạn sử dụng của sản phẩm tiện lợi.

Câu lệnh:

Create FUNCTION f_time_sanxuat(var_macf dscafe.macf%TYPE)

return number is

var_tgiansx number;

Begin

Select round(months_between(sysdate, ngaysx)) into var_tgiansx

from dscafe

where macf = var_macf;

return var_tgiansx;

EXCEPTION

WHEN no_data_found then return ('Khong tim thay du lieu!');

WHEN others then return ('Ham co loi!');

End;

Kiểm thử:

set serveroutput on

declare time number(20);

Begin
Trang 93
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

time := f_time_sanxuat('&macf');

dbms_output.put_line('San pham nay da san xuat duoc: '||time|| ' thang');

End;

Kết quả: Mã cafe được nhập vào là CF0001

Hình 4.63. Kết quả kiểm thử Function f_time_sanxuat

4.6.4 Function tính tổng số lượng tồn kho tại tất cả chi nhánh của một
sản phẩm do người dùng nhập vào:

Ứng dụng:

Function f_sum_slton_mac, người dùng nhập vào mã cà phê để kiểm tra tổng số
lượng tồn ở tất cả các chi nhánh của mặt hàng đó. Để đưa ra quyết định xuất nhập
và thanh lý phù hợp.

Câu lệnh:

Create FUNCTION f_sum_slton_macf (var_macf dscafe.macf%TYPE)

return number is

var_sum_slton number;

Begin

Select sum(slton) into var_sum_slton

from dscafe join tonkho on dscafe.macf = tonkho.macf

where dscafe.macf = var_macf;

return var_sum_slton;

EXCEPTION

Trang 94
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

WHEN no_data_found then return ('Khong tim thay du lieu!');

WHEN others then return ('Ham co loi!');

End;

Kiểm thử:

set serveroutput on

declare sltonkho number;

Begin

sltonkho := f_sum_slton_macf('&macf');

dbms_output.put_line('Tong so luong ton kho cua san pham nay la: '||sltonkho);

End;

Kết quả: Mã cafe được nhập vào là CF0001

Hình 4.64. Kết quả kiểm thử Function f_sum_slton_mac

4.6.5 Function tìm mặt hàng có số lượng tồn nhỏ nhất của các chi
nhánh, tham số truyền vào là mã chi nhánh (macn):

Ứng dụng:

Function f_cafe_min_slton, cho phép người dùng nhập vào mã chi nhánh, hàm
sẽ trả về số lượng tồn nhỏ nhất của chi nhánh đó là bao nhiêu. Phù hợp với nghiệp
vụ kiểm soát số lượng sản phẩm.

Câu lệnh:

Create FUNCTION f_cafe_min_slton (var_macn tonkho.macn%TYPE)

return VARCHAR2 is

Trang 95
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

var_cafe VARCHAR2(100);

Begin

Select min(slton) into var_cafe

from dscafe join tonkho on dscafe.macf = tonkho.macf

where tonkho.macn = var_macn;

return var_cafe;

EXCEPTION

WHEN no_data_found then return ('Khong tim thay du lieu!');

WHEN others then return ('Ham co loi!');

End;

Kiểm thử:

set serveroutput on

declare luongtoncf VARCHAR2(100);

Begin

luongtoncf := f_cafe_min_slton('&macn');

dbms_output.put_line('Luong ton nho nhat cua chi nhanh nay la: ' || luongtoncf);

End;

Kết quả: Mã chi nhánh được nhập vào là CN01

Hình 4.65. Kết quả kiểm thử Function f_cafe_min_slton

Trang 96
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.6.6 Function tính lương của một nhân viên được người dùng nhập vào
mã nhân viên (manv):

Ứng dụng:

Function f_luong_nhanvien, cho phép ngừoi dùng nhập vào mã nhân viên, từ đó
hàm sẽ trả về lương của nhân viên nhanh chóng và chính xác.

Câu lệnh:

Create FUNCTION f_luong_nhanvien(var_manv nhanvien.manv%type)

return number is

var_luong nhanvien.luong%type;

Begin

select luong + hoahong into var_luong

from nhanvien nv join hoahong hh on nv.mahh = hh.mahh

where manv = var_manv;

return var_luong;

End;

Kiểm thử:

set serveroutput on

declare

var_luong number(11);

var_manv nhanvien.manv%type;

Begin

var_manv := '&ma_nhan_vien';

var_luong := f_luong_nhanvien(var_manv);

Trang 97
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

dbms_output.put_line('Luong cua nhan vien ' || var_manv || ' la: ' || var_luong || '
VND');

End;

Kết quả: Mã nhân viên được nhập vào là TV0004

Hình 4.66. Kết quả kiểm thử Function f_luong_nhanvien

4.6.7 Function tính tổng lương của tất cả nhân viên của cửa hàng:

Ứng dụng:

Function f_tong_luong, cho phép người dùng truy xuất ra tổng số tiền mà cửa
hàng phải trả cho tất cả nhân viên trong một tháng kể cả hoa hồng. Từ đó nhân viên
kế toán lập báo cáo để quản lý thống kê và trả tiền lương cho nhân viên chính xác.

Câu lệnh:

Create FUNCTION f_tong_luong

return number is

var_tongluong nhanvien.luong%type;

Begin

select sum(luong + hoahong) into var_tongluong

from nhanvien nv join hoahong hh on nv.mahh = hh.mahh;

return var_tongluong;

End;

Kiểm thử:

set serveroutput on

Trang 98
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

declare var_tong number(11);

Begin

var_tong := f_tong_luong;

dbms_output.put_line('Tong luong cua nhan vien la: ' || var_tong || ' VND');

End;

Kết quả:

Hình 4.67. Kết quả kiểm thử Function f_tong_luong

4.6.8 Function tính thành tiền của đơn hàng được người dùng nhập vào
mã đơn đặt hàng (maddh):

Ứng dụng:

Function f_thanhtien_ddh, cho phép người dùng nhập vào mã đơn đặt hàng từ
đó hàm sẽ trả về tổng tiền mà đơn hàng đó phải thanh toán, giúp nghiệp vụ trở nên
dễ dàng và nhanh chóng.

Câu lệnh:

create function f_thanhtien_ddh (var_maddh dondathang.maddh%type)

return number is

var_thanhtien number(11);

begin

select thanh_tien into var_thanhtien

from v_thanhtien_ctdonhang

where maddh = var_maddh;

Trang 99
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

return var_thanhtien;

end;

Kiểm thử:

set serveroutput on

declare

var_tt number(11);

var_maddh dondathang.maddh%type;

Begin

var_maddh := '&ma_don';

var_tt := f_thanhtien_ddh(var_maddh);

dbms_output.put_line('Thanh tien cua don hang ' || var_maddh || ' la: ' || var_tt || '
VND');

End;

Kết quả: Mã đơn đặt hàng được nhập vào là DDH0000050

Hình 4.68. Kết quả kiểm thử Function f_thanhtien_ddh

4.7 Stored Procedure:

Khi thực thi một câu lệnh PL/SQL, Oracle phải kiểm tra xem user gửi câu lệnh
đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp, lập kế
hoạch thực thi và thực thi. Nếu procedure được gọi nhiều lần thì kế hoạch thực thi
có thể được sử dụng lại nên tốc độ thực thi sẽ nhanh hơn.

Trang 100
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.7.1 Procedure cập nhật lương của các nhân viên của một công việc:

Ứng dụng:

Procedure proc_capnhat_luong_congviec, cho phép người dùng cập nhật lương


của nhân viên theo từng công việc một cách nhanh chóng khi đã tạo thủ tục và được
lưu trữ trong CSDL.

Câu lệnh:

create procedure proc_capnhat_luong_congviec (var_macv in nhanvien.macv


%type,

var_luong in nhanvien.luong%type)

is

begin

update nhanvien set luong = var_luong where macv = var_macv;

end;

Kiểm thử:

select manv, macv, luong as truoc from nhanvien where macv = 'DH';

exec proc_capnhat_luong_congviec('DH', 4500000);

select manv, macv, luong as sau from nhanvien where macv = 'DH';

Kết quả:

 Trước thực thi procedure:

Trang 101
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.69. Bảng lương trước khi thực thi proc_capnhat_luong_congviec

 Sau khi thực thi procedure:

Hình 4.70. Bảng lương sau khi thực thi proc_capnhat_luong_congviec

4.7.2 Procedure tăng giá bán tất cả sản phẩm thêm một tỉ lệ phần trăm
nào đó:

Ứng dụng:

Procedure proc_tang_giaban, cho phép người dùng nhập vào một tỉ lệ % cụ thể,
thủ tục sẽ được thực thi và tăng lên với tỷ lệ đó.

Câu lệnh:

create procedure proc_tang_giaban(var_tyle in int)

Trang 102
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

is

begin

update dscafe set giaban = giaban + giaban*var_tyle/100;

end;

Kiểm thử:

select macf, giaban as truoc from dscafe;

exec proc_tang_giaban(5);

select macf, giaban as sau from dscafe;

Kết quả:

 Trước thực thi procedure:

Hình 4.71. Bảng giá bán các mặt hàng trước khi thực thi proc_tang_giaban

 Sau khi thực thi procedure:

Trang 103
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.72. Bảng giá bán các mặt hàng sau khi thực thi proc_tang_giaban

4.7.3 Procedure giảm giá bán tất cả sản phẩm đi một tỉ lệ phần trăm nào
đó:

Ứng dụng:

Procedure proc_giam_giaban, cho phép người dùng nhập vào một tỉ lệ %. Khi
thực thi thủ tục, giá bán sẽ được giảm theo tỷ lệ tương ứng. Phù hợp với nghiệp vụ
giảm giá vào các chương trình khuyến mãi.

Câu lệnh:

create procedure proc_giam_giaban(var_tyle in int)

is

begin

update dscafe set giaban = giaban - giaban*var_tyle/100;

end;

Kiểm thử:

Trang 104
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

select macf, giaban as truoc from dscafe;

exec proc_giam_giaban(5);

select macf, giaban as sau from dscafe;

Kết quả:

Trước thực thi procedure:

Hình 4.73. Bảng giá bán các mặt hàng trước khi thực thi proc_giam_giaban

Sau khi thực thi procedure:

Hình 4.74. Bảng giá bán các mặt hàng sau khi thực thi proc_giam_giaban

Trang 105
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.7.4 Procedure làm tròn giá bán của các sản phẩm mà cửa hàng kinh
doanh:

Ứng dụng:

Procedure proc_lamtron_giaban, khi thực thi thủ tục thì giá bán của một số sản
phẩm sẽ được làm tròn lên, dễ dàng và thuận tiện trong việc tính thành tiền và thanh
toán cho cả cửa hàng và khách hàng nhà Starbuck.

Câu lệnh:

create procedure proc_lamtron_giaban

is

cursor cur_tt_giaban is

select macf, giaban

from dscafe;

rec_tt_giaban cur_tt_giaban%rowtype;

var_du int;

begin

open cur_tt_giaban;

loop

fetch cur_tt_giaban into rec_tt_giaban;

exit when cur_tt_giaban%notfound;

var_du := to_number(substr(mod(rec_tt_giaban.giaban,1000),1,1));

if(var_du >= 5) then

update dscafe set giaban = round(giaban/1000)*1000 where macf =


rec_tt_giaban.macf;

else

Trang 106
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

update dscafe set giaban = (round(giaban/1000) + 1)*1000 where macf =


rec_tt_giaban.macf;

end if;

end loop;

close cur_tt_giaban;

end;

Kiểm thử:

exec proc_tang_giaban(5);

select macf, giaban as truoc from dscafe;

exec proc_lamtron_giaban;

select macf, giaban as sau from dscafe;

Kết quả:

 Trước thực thi procedure:

Hình 4.75. Giá bán của các sản phẩm trước khi thực thi proc_lamtron_giaban

Trang 107
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

 Sau khi thực thi procedure:

Hình 4.76. Giá bán của các sản phẩm sau khi thực thi proc_lamtron_giaban

4.7.5 Procedure cập nhật mã hoa hồng của nhân viên:

Ứng dụng:

Procedure proc_capnhat_mahh, cho phép người quản lý cập nhật hoa hồng của
các nhân viên theo từng năm nhưng chỉ cần thực thi thủ tục, giúp tiết kiệm thời gian
và đạt hiệu quả làm việc.

Câu lệnh:

create procedure proc_capnhat_mahh

is

cursor cur_mahh is

select manv, ngayvaolam

from nhanvien;

rec_mahh cur_mahh%rowtype;

var_mahh nhanvien.mahh%type;

Trang 108
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

begin

open cur_mahh;

loop

fetch cur_mahh into rec_mahh;

exit when cur_mahh%notfound;

var_mahh := to_number(round((sysdate - rec_mahh.ngayvaolam)/365));

if(var_mahh <= 4) then

update nhanvien set mahh = var_mahh where manv = rec_mahh.manv;

else

update nhanvien set mahh = 4 where manv = rec_mahh.manv;

end if;

end loop;

close cur_mahh;

end;

Kiểm thử:

select mahh as mahh_truoc from nhanvien;

exec proc_capnhat_mahh;

select mahh as mahh_sau from nhanvien;

Kết quả:

 Trước thực thi procedure:

Trang 109
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.77. Mã hoa hồng của các nhân viên trước thực thi proc_capnhat_mahh

Sau khi thực thi procedure:

Hình 4.78. Mã hoa hồng của các nhân viên sau thực thi proc_capnhat_mahh

4.7.6 Procedure cập nhật nhân viên phụ trách đơn hàng khi quyết định
thôi việc một nhân viên nào đó:

Ứng dụng:

Trang 110
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Procedure proc_capnhat_nhanvien_phutrachddh, trong nghiệp vụ quyết định cho


nhân viên thôi việc nhưng nhân viên đó đang phụ trách đơn hàng, người quản lý
phải xử lý bàn giao công việc cho nhân viên khác, lúc này có thể thực thi thủ tục
này.

Câu lệnh:

create procedure proc_capnhat_nhanvien_phutrachddh (manv_delete in


nhanvien.manv%type, manv_update in nhanvien.manv%type)

is

v_dem int;

begin

select count(manv) into v_dem from dondathang where manv = manv_delete;

if (v_dem >= 1) then

update dondathang set manv = manv_update where manv = manv_delete;

end if;

delete from nhanvien where manv = manv_delete;

end;

Kiểm thử:

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('QL10', 'Nguyen Khanh', 'Huyen', TO_DATE('2020-09-02', 'YYYY-
MM-DD'), 7000000, '0932478719', 'khanhhuyen1105@gmailcom', 'QL', 4);

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('QL11', 'Nguyen Khanh', 'Huyen', TO_DATE('2020-09-02', 'YYYY-
MM-DD'), 7000000, '0932478719', 'khanhhuyen1105@gmailcom', 'QL', 4);

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000050',

Trang 111
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

to_date('2021-09-16', 'YYYY-MM-DD'), 'KH0013', 'QL10', 4, 'CN06', 'Duc Hanh',


'30 Huyen Quang, Dinh Ke, Bac Giang', to_date('2021-09-19', 'YYYY-MM-DD'),
'0487364764' , NULL);

select manv from nhanvien where manv = 'QL10' or manv = 'QL11';

select manv as truoc from dondathang where maddh = 'DDH0000050';

exec proc_capnhat_nhanvien_phutrachddh('QL10', 'QL11');

select manv as sau from dondathang where maddh = 'DDH0000050';

select manv from nhanvien where manv = 'QL10';

Kết quả:

Trước thực thi procedure:

Hình 4.79. Trước khi thực thi proc_capnhat_nhanvien_phutrachddh

Sau khi thực thi procedure:

 Nhân viên phụ trách đơn:

Hình 4.80. Sau khi thực thi proc_capnhat_nhanvien_phutrachddh

 Nhân viên có mã QL10 đã cho thôi việc:

Hình 4.81. Giải quyết thôi việc thành công sau khi thực thi thủ tục

Trang 112
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.7.7 Procedure xem danh sách cafe còn tồn kho tại chi nhánh (macn)
mà người dùng nhập vào:

Ứng dụng:

Procedure proc_thongtin_tonkho, cho phép ngừoi dùng nhập vào mã chi nhánh
sau khi đã thực thi thủ tục để xem danh sách sản phẩm cà phê còn tồn lại trong kho
tại chi nhánh đó. Từ đó, đưa ra mức xuất – nhập kho phù hợp.

Câu lệnh:

create procedure proc_thongtin_tonkho (var_machinhanh in tonkho.macn%type)

is

cursor cur_tt_tonkho is

select macn, tencn, tencf, slton, dvt

from v_thongtin_tonkho

where macn = var_machinhanh;

rec_tt_tonkho v_thongtin_tonkho%rowtype;

var_tencn v_thongtin_tonkho.tencn%type;

var_dem int;

begin

select tencn into var_tencn

from chinhanh

where macn = var_machinhanh;

select count(tencn) into var_dem

from chinhanh

where macn = var_machinhanh;

Trang 113
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

if(var_dem = 0) then

dbms_output.put_line ('--Ma chi nhanh khong ton tai--');

else

open cur_tt_tonkho;

dbms_output.put_line ('--DANH SACH HANG TON KHO '||


upper(var_tencn) || '--');

loop

fetch cur_tt_tonkho into rec_tt_tonkho;

exit when cur_tt_tonkho%notfound;

dbms_output.put_line
('---------------------------------------------------------------------------------------------------'
);

dbms_output.put_line ('Ten cafe: ' || rec_tt_tonkho.tencf || ' So luong: ' ||


rec_tt_tonkho.slton || ' ' || rec_tt_tonkho.dvt);

end loop;

close cur_tt_tonkho;

end if;

end;

Kiểm thử:

set serveroutput on;

exec proc_thongtin_tonkho ('CN01');

Kết quả:

Trang 114
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.82. Danh sách số lượng tồn kho sau thực thi proc_thongtin_tonkho

4.7.8 Procedure tìm kiếm và xem thông tin của nhân viên có mã (manv)
được nhập vào bởi người dùng:

Ứng dụng:

Procedure proc_timkiem_nhanvien, cho phép người dùng tìm kiếm nhân viên
làm việc tại Starbuckvà xuất ra thông tin nhân viên đó. Chỉ cần thực thi thủ tục và
nhập mã nhân viên cần tìm kiếm thì thông tin nhân viên sẽ được xuất ra nhanh
chóng.

Câu lệnh:

create procedure proc_timkiem_nhanvien (var_manv in nhanvien.manv%type)

is

cursor cur_tt_nhanvien is

select manv, honv, tennv, tencv, ngayvaolam, luong, hoahong, sdt, email,
tenkv

from nhanvien nv join congviec cv on nv.macv = cv.macv

join khuvuc kv on nv.makv = kv.makv

Trang 115
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

join hoahong hh on nv.mahh = hh.mahh

where manv = var_manv;

rec_tt_nhanvien cur_tt_nhanvien%rowtype;

begin

open cur_tt_nhanvien;

loop

fetch cur_tt_nhanvien into rec_tt_nhanvien;

exit when cur_tt_nhanvien%notfound;

dbms_output.put_line ('Thong tin cua nhan vien co ma ' ||


upper(rec_tt_nhanvien.manv));

dbms_output.put_line ('--------------------------------------------');

dbms_output.put_line ('Ho va ten: ' || rec_tt_nhanvien.honv || ' ' ||


rec_tt_nhanvien.tennv);

dbms_output.put_line ('Cong viec: ' || rec_tt_nhanvien.tencv);

dbms_output.put_line ('Ngay vao lam: ' || rec_tt_nhanvien.ngayvaolam);

dbms_output.put_line ('Luong: ' || rec_tt_nhanvien.luong || ' VND');

dbms_output.put_line ('Hoa hong: ' || rec_tt_nhanvien.hoahong || ' VND');

dbms_output.put_line ('So dien thoai: ' || rec_tt_nhanvien.sdt);

dbms_output.put_line ('Khu vuc lam viec: ' || rec_tt_nhanvien.tenkv);

end loop;

close cur_tt_nhanvien;

end;

Kiểm thử:

Trang 116
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

set serveroutput on;

exec proc_timkiem_nhanvien('TV0004');

Kết quả:

Hình 4.83. Thông tin nhân viên sau thực thi proc_timkiem_nhanvien

4.7.9 Procedure cho phép xem danh sách cafe được bán từ chạy nhất đến
ít người mua nhất:

Ứng dụng:

Procedure proc_danhsach_banhang, cho phép người dùng thực thi thủ tục và
xem được các mặt hàng cà phê đã có trong các đơn đặt hàng. Danh sách sẽ được liệt
kê từ mặt hàng được mua nhiều nhất đến ít nhất.

Câu lệnh:

create procedure proc_danhsach_banhang

is

cursor cur_ds_banhang is

select ct.macf, tencf, sum(sl) as soluong

from ctdonhang ct join dscafe ds on ct.macf = ds.macf

group by ct.macf, tencf

order by sum(sl) desc;

rec_ds_banhang cur_ds_banhang%rowtype;

Trang 117
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

var_sodem int;

begin

var_sodem := 1;

open cur_ds_banhang;

loop

fetch cur_ds_banhang into rec_ds_banhang;

exit when cur_ds_banhang%notfound;

dbms_output.put_line ('--------------------------------------------------');

dbms_output.put_line (var_sodem || ' ' || rec_ds_banhang.macf || ' ' ||


rec_ds_banhang.tencf);

dbms_output.put_line (' So luong ban: ' || rec_ds_banhang.soluong);

var_sodem := var_sodem + 1;

end loop;

close cur_ds_banhang;

end;

Kiểm thử:

set serveroutput on;

exec proc_danhsach_banhang;

Kết quả:

Trang 118
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.84. Các mặt hàng đã có đơn sau thực thi proc_danhsach_banhang

4.7.10 Procedure nhập vào mã nhân viên (manv) và trả về các đơn đặt
hàng do nhân viên đó phụ trách:

Ứng dụng:

Procedure proc_thongtin_ddh_cuanvphutrach, cho phép người dùng xem các


đơn đặt hàng do nhân viên xác định phụ trách, sau khi thực thi thủ tục và nhập mã
nhân viên để thực hiện nghiệp vụ.

Câu lệnh:

create procedure proc_thongtin_ddh_cuanvphutrach(var_manv in nhanvien.manv


%type)

is

cursor cur_ddh is

select maddh, ngaylap, tenkh, ten_nguoinhan, diachi_giao, thoihan_giao,


sdt_nguoinhan, ghichu, tenkv, tencn

from dondathang dh join khachhang kh on dh.makh = kh.makh

Trang 119
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

join khuvuc kv on dh.makv = kv.makv

join chinhanh cn on dh.macn = cn.macn

where dh.manv = var_manv

order by maddh;

rec_ds_ddh cur_ddh%rowtype;

var_sodem int;

begin

var_sodem := 1;

open cur_ddh;

loop

fetch cur_ddh into rec_ds_ddh;

exit when cur_ddh%notfound;

dbms_output.put_line ('Don dat hang ' || var_sodem);

dbms_output.put_line ('--------------------------------------------------');

dbms_output.put_line ('Ma don hang: ' || rec_ds_ddh.maddh);

dbms_output.put_line ('Ngay lap: ' || rec_ds_ddh.ngaylap);

dbms_output.put_line ('Ten khach hang: ' || rec_ds_ddh.tenkh);

dbms_output.put_line ('Ten nguoi nhan: ' || rec_ds_ddh.ten_nguoinhan);

dbms_output.put_line ('Dia chi giao hang: ' || rec_ds_ddh.diachi_giao);

dbms_output.put_line ('Thoi han giao: ' || rec_ds_ddh.thoihan_giao);

dbms_output.put_line ('SDT nguoi nhan: ' || rec_ds_ddh.sdt_nguoinhan);

dbms_output.put_line ('Ghi chu: ' || rec_ds_ddh.ghichu);

dbms_output.put_line ('Chi nhanh giao hang: ' || rec_ds_ddh.tencn);

Trang 120
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

dbms_output.put_line ('Don thuoc khu vuc: ' || rec_ds_ddh.tenkv);

dbms_output.put_line ('');

var_sodem := var_sodem + 1;

end loop;

close cur_ddh;

end;

Kiểm thử:

set serveroutput on;

exec proc_thongtin_ddh_cuanvphutrach('TV0004');

Kết quả:

Hình 4.85. Các đơn hàng sau thực thi proc_thongtin_ddh_cuanvphutrach

4.7.11 Procedure thêm đơn đặt hàng với đánh số tự động:

Ứng dụng:

Trang 121
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Procedure proc_them_ddh, thủ tục này được sử dụng khi khác hàng mua các sản
phẩm từ Starbuck, người dùng (nhân viên) chỉ cần lên đơn thì mã đơn hàng tự động
đánh số, nhân viên không cần phải kiểm tra một cách máy móc.

Câu lệnh:

create procedure proc_them_ddh(var_makh in dondathang.makh%type,

var_manv in dondathang.manv%type,

var_makv in dondathang.makv%type,

var_macn in dondathang.macn%type,

var_ten_nguoinhan in dondathang.ten_nguoinhan%type,

var_diachi_giao in dondathang.diachi_giao%type,

var_thoihan_giao in dondathang.thoihan_giao%type,

var_sdt_nguoinhan in dondathang.sdt_nguoinhan%type,

var_ghichu in dondathang.ghichu%type)

is

var_maddh dondathang.maddh%type;

var_sq number(6);

begin

var_sq := sq_maddh.nextval;

var_maddh := to_char(to_number(mod(extract(year from sysdate),2000) ||


extract(month from sysdate))*1000000 + var_sq);

insert into dondathang(maddh, ngaylap, makh, manv, makv, macn,


ten_nguoinhan, diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu)

Trang 122
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

values(var_maddh, sysdate, var_makh, var_manv, var_makv, var_macn,


var_ten_nguoinhan, var_diachi_giao, var_thoihan_giao, var_sdt_nguoinhan,
var_ghichu);

end;

Kiểm thử:

exec proc_them_ddh('KH0001', 'TV0004', 2, 'CN03', 'Quoc Khanh', 'Duong 385,


phuong Tang Nhon Phu A, tp Thu Duc', to_date('2021-09-01', 'YYYY-MM-DD'),
'0838263820' , NULL);

select maddh from dondathang where substr(maddh,1,4) = '2111';

Kết quả:

Hình 4.86. Mã đơn đặt hàng thêm mới tự động sau thực thi proc_them_ddh

4.7.12 Procedure thêm khách hàng với đánh số tự động:

Ứng dụng:

Procedure proc_them_kh, thủ tục này hoạt động khi thêm khách hàng mới thì sẽ
tự động đánh mã số mới không trùng với bất kì khách hàng đã có trong danh sách.
Thuận tiện cho khách hàng tự đăng ký hoặc hạn chế mất thời gian khi nhân viên
phải kiểm tra lại.

Câu lệnh:

create procedure proc_them_kh (var_tenkh in khachhang.tenkh%type,

var_diachi in khachhang.diachi%type,

var_sdt in khachhang.sdt%type,

var_email in khachhang.email%type)

is

Trang 123
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

var_makh khachhang.makh%type;
var_sq number(4);
begin

var_sq := sq_makh.nextval;

if(length(var_sq) = 1) then
var_makh := to_char('KH000' || var_sq);
elsif (length(var_sq) = 2) then
var_makh := to_char('KH00' || var_sq);

elsif (length(var_sq) = 3) then

var_makh := to_char('KH0' || var_sq);

elsif (length(var_sq) = 4) then

var_makh := to_char('KH' || var_sq);

end if;

insert into khachhang (makh, tenkh, diachi, sdt, email)

values(var_makh, var_tenkh, var_diachi, var_sdt, var_email);

end;

Kiểm thử:

exec proc_them_kh('Nguyen Quoc Khanh', 'Duong 385, phuong Tang Nhon Phu A,
tp Thu Duc', '0838263820', 'quockhanh29@gmail.com');

select * from khachhang;

Kết quả:

Hình 4.87. Mã khách hàng tự động thêm mới sau thực thi proc_them_kh

Trang 124
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.7.13 Procedure thêm cafe với đánh số tự động:

Ứng dụng:

Procedure proc_them_cf, sau khi người dùng thực thi thủ tục này sẽ giúp người
dùng đánh mã số tự động khi thực hiện nghiệp vụ thêm một mặt hàng cà phê mới
vào CSDL.

Câu lệnh:

create procedure proc_them_cf (var_tencf in dscafe.tencf%type,

var_ngaysx in dscafe.ngaysx%type,

var_hsd in dscafe.hsd%type,

var_khoiluong in dscafe.khoiluong%type,

var_dvt in dscafe.dvt%type,

var_giaban in dscafe.giaban%type,

var_mota in dscafe.mota%type,

var_maloaicf in dscafe.maloaicf%type,

var_math in dscafe.math%type)

is

var_macf dscafe.macf%type;

var_sq number(4);

begin

var_sq := sq_macf.nextval;

if(length(var_sq) = 1) then

var_macf := to_char('CF000' || var_sq);

elsif (length(var_sq) = 2) then

Trang 125
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

var_macf := to_char('CF00' || var_sq);

elsif (length(var_sq) = 3) then

var_macf := to_char('CF0' || var_sq);

elsif (length(var_sq) = 4) then

var_macf:= to_char('CF' || var_sq);

end if;

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota,
maloaicf, math)

values(var_macf, var_tencf, var_ngaysx, var_hsd, var_khoiluong, var_dvt,


var_giaban, var_mota, var_maloaicf, var_math);

end;

Kiểm thử:

exec proc_them_cf('Cafe TNI King Coffee 450g', TO_DATE('2021-08-27',


'YYYY-MM-DD'), '2 nam ke tu nsx', 450, 'hop', 315000, 'test....', 'L02', 'TK');

Select macf, tencf, mota from dscafe order by macf;

Kết quả:

Hình 4.88. Mã mà phê được thêm mới sau khi thực thi proc_them_cf

4.7.14 Procedure cập nhật thành tiền của đơn hàng

Ứng dụng:

Procedure proc_capnhat_thanhtien_ddh giúp người dùng cập nhật thành tiền của
các đơn hàng có ngày lập từ một ngày nào đó trở về sau. Procedure này thường
được dùng sau khi thay đổi giá bán một sản phẩm. Khi giá cả thay đổi, thành tiền
của các đơn hàng trước khi sự kiện thay đổi giá cả sẽ không bị ảnh hưởng.

Trang 126
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Câu lệnh

create procedure proc_capnhat_thanhtien_ddh(var_ngay in dondathang.ngaylap


%type)

is

cursor cur_ddh is

select maddh

from dondathang

where ngaylap >= var_ngay;

rec_ds_ddh cur_ddh%rowtype;

var_thanhtien dondathang.thanhtien%type;

begin

open cur_ddh;

loop

fetch cur_ddh into rec_ds_ddh;

exit when cur_ddh%notfound;

var_thanhtien := f_thanhtien_ddh(rec_ds_ddh.maddh);

update dondathang set thanhtien = var_thanhtien where maddh =


rec_ds_ddh.maddh;

end loop;

close cur_ddh;

end;

Kiểm thử:

exec proc_capnhat_thanhtien_ddh(TO_DATE('2021-01-01', 'YYYY-MM-DD'));

Trang 127
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

select maddh, thanhtien from dondathang where ngaylap >= TO_DATE('2021-01-


01', 'YYYY-MM-DD');

select maddh, thanhtien from dondathang where ngaylap < TO_DATE('2021-01-


01', 'YYYY-MM-DD');

Kết quả:

 Trước khi thực thi thủ tục:

Hình 4.89. Kết quả thành tiền trước khi thực thi thủ tục

 Sau khi thực thi thủ tục:

Hình 4.90. Kết quả cập nhật thành tiền sau khi thực thi thủ tục

4.8 Trigger:

Ràng buộc toàn vẹn (trigger) là một khối PL / SQL được lưu trữ trong cơ sở dữ liệu
và được thực thi để đáp ứng với một sự kiện được chỉ định.

Trang 128
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Cơ sở dữ liệu Oracle tự động thực thi một ràng buộc toàn vẹn khi các điều kiện cụ
thể xảy ra.

4.8.1 Trigger kiểm tra thời hạn giao hàng của đơn hàng phải sau ngày
lập đơn:

Ứng dụng:

Khi lập đơn hàng, nếu sai sót trong việc ngày lập đơn sau ngày giao thì sẽ gây
hoang mang cho nhân viên giao và khác hàng. Vậy nên, cần có một ràng buộc toàn
vẹn kiểm tra thời hạn giao hàng của đơn hàng phải sau ngày lập đơn, người dùng sử
dụng trigger tg_ktra_thoihangiao_sau_ngaylapddh để giải quyết nghiệp vụ này.

Câu lệnh:

create trigger tg_ktra_thoihangiao_sau_ngaylapddh

after insert or update

on dondathang

for each row

begin

if (:new.thoihan_giao < :new.ngaylap) then

raise_application_error (-20511, 'Thoi han giao hang phai sau ngay lap don dat
hang');

end if;

end;

Kiểm thử 1:

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000051',
to_date('2021-09-16', 'YYYY-MM-DD'), 'KH0013', 'TV0011', 4, 'CN06', 'Duc

Trang 129
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hanh', '30 Huyen Quang, Dinh Ke, Bac Giang', to_date('2020-09-19', 'YYYY-MM-
DD'), '0487364764' , NULL);

Kết quả kiểm thử 1:

Hình 4.91. Kết quả kiểm thử ngày giao hàng trước ngày lập đơn

Kiểm thử 2:

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000051',
to_date('2021-09-16', 'YYYY-MM-DD'), 'KH0013', 'TV0011', 4, 'CN06', 'Duc
Hanh', '30 Huyen Quang, Dinh Ke, Bac Giang', to_date('2021-09-19', 'YYYY-MM-
DD'), '0487364764' , NULL);

select maddh, ngaylap, makh, manv, makv, thoihan_giao from dondathang where
maddh = 'DDH0000051';

Kết quả kiểm thử 2:

Hình 4.92. Kết quả kiểm thử ngày giao hàng sau ngày lập đơn

4.8.2 Trigger kiểm tra ngày vào làm phải nhỏ hơn hoặc bằng ngày hiện
hành:

Ứng dụng:

Cần tạo một ràng buộc toàn vẹn để kiểm tra ngày nhân viên vào làm phải nhỏ
hơn hoặc bằng ngày hiện tại và khi nhập ngày vào làm lớn hơn thì ngay lập tức sẽ
xuất ra lỗi. Để người dùng có thể dễ dàng hơn trong việc kiểm tra lỗi trong trường
hợp có nhầm lẫn xảy ra cần thực thi trigger tg_ktra_ngayvaolam.

Trang 130
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Câu lệnh:

create trigger tg_ktra_ngayvaolam

after insert or update

on nhanvien

for each row

begin

if (:new.ngayvaolam > sysdate) then

raise_application_error (-20513, 'Ngay vao lam phai nho hon hoac bang ngay
hien tai');

end if;

end;

Kiểm thử 1:

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('QL10', 'Nguyen Hoàng Mai', 'Anh', TO_DATE('2022-09-02',
'YYYY-MM-DD'), 7000000, '0932478719', 'khanhhuyen1105@gmailcom', 'QL',
4);

Kết quả kiểm thử 1:

Hình 4.93. Kết quả kiểm thử ngày vào làm của nhân viên sau ngày hiện tại

Kiểm thử 2:

insert into nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, macv,
makv) values ('QL10', 'Nguyen Hoàng Mai', 'Anh', TO_DATE('2020-09-02',

Trang 131
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

'YYYY-MM-DD'), 7000000, '0932478719', 'khanhhuyen1105@gmailcom', 'QL',


4);

select manv, honv || ' ' || tennv as "Ho Ten", ngayvaolam, luong, sdt, macv from
nhanvien;

Kết quả kiểm thử 2:

Hình 4.94. Kết quả kiểm thử ngày vào làm của nhân viên trước ngày hiện tại

4.8.3 Trigger khi xóa một loại cafe thì các sản phẩm thuộc loại đó sẽ
được cập nhật mã loại là “L00”:

Ứng dụng:

Khi ngừng sản xuất một loại cà phê nào đó, ta không thể nào bỏ hết tất cả sản
phẩm hiện có của loại cafe đó. Thế nên các sản phẩm thuộc loại cà phê đã bị xóa sẽ
được cập nhật thành một loại khác có mã loại cà phê là “L00” để tiếp tục bán cho
đến khi mặt hàng không còn trong kho nữa. Trigger
tg_capnhat_xoaloai_capnhatmaloai sẽ xử lý nghiệp vụ đó.

Câu lệnh:

create trigger tg_capnhat_xoaloai_capnhatmaloai

before delete
on loaicafe
for each row
begin
update dscafe set maloaicf = 'L00' where maloaicf = :old.maloaicf;

end;

Kiểm thử:

delete from loaicafe where maloaicf = 'L04';


Trang 132
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

select macf, tencf, maloaicf from dscafe where macf = 'CF0039';

Kết quả trước thực thi:

Hình 4.95. Kết quả loại cà phê trước thực thi

Kết quả sau thực thi:

Hình 4.96. Kết quả xóa loại cà phê sau khi đã thực thi

4.8.4 Trigger khi xóa một thương hiệu cafe thì các sản phẩm thuộc
thương hiệu đó sẽ được cập nhật mã thương hiệu là “00”:

Ứng dụng:

Khi ngừng kinh doanh một thương hiệu cà phê nào đó, ta không thể nào bỏ hết
tất cả sản phẩm hiện có của thương hiệu cafe đó. Thế nên các sản phẩm thuộc
thương hiệu cà phê đã bị xóa sẽ được cập nhật thành một thương hiệu khác có mã
thương hiệu cà phê là “00” để tiếp tục bán cho đến khi mặt hàng không còn trong
kho nữa. Trigger tg_capnhat_xoath_capnhatmath sẽ xử lý nghiệp vụ đó.

Câu lệnh:

create trigger tg_capnhat_xoath_capnhatmath

before delete

on thuonghieu

for each row

begin

update dscafe set math = '00' where math = :old.math;

end;

Trang 133
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kiểm thử:

delete from thuonghieu where math = 'NL';

Kết quả trước khi thực thi:

select macf, tencf, math from dscafe where math = 'NL' ;

Hình 4.97. Kết quả thương hiệu trước thực thi

Kết quả sau khi đã thực thi:

select macf, tencf, math from dscafe where math = '00' ;

Hình 4.98. Kết quả xóa thương hiệu sau khi đã thực thi

4.8.5 Trigger kiểm tra ngày sản xuất của cafe phải nhỏ hơn hoặc bằng
ngày hiện tại:

Ứng dụng:

Kiểm tra ngày sản xuất mặt hàng phải nhỏ hơn hoặc bằng ngày hiện tại và
khi nhập ngày sản xuất lớn hơn thì ngay lập tức sẽ xuất ra lỗi là một việc cần thiết
đối với người sử dụng hệ thống. Để người dùng có thể dễ dàng hơn trong việc kiểm
tra lỗi trong trường hợp có nhầm lẫn xảy ra, trigger tg_ktra_ngaysx đã được tạo ra.

Câu lệnh:

create trigger tg_ktra_ngaysx

Trang 134
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

after insert or update

on dscafe

for each row

begin

if (:new.ngaysx > sysdate) then

raise_application_error (-20514, 'Ngay san xuat nho hon hoac bang ngay hien
tai');

end if;

end;

Kiểm thử 1:

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math) values ('CF0055', 'Cafe urmet blend - 500gr', TO_DATE('2025-09-02',
'YYYY-MM-DD'), '24 thang ke tu nsx', 500, 'hop', 94100, 'nuoc pha mau nau den
sanh, huong vi dam da, loi cuon, ham luong caffeine: khoang 10%', 'L02', 'TN');

Kết quả kiểm thử 1:

Hình 4.99. Kết quả kiểm thử ngày sản xuất lớn hơn ngày hiện tại

Kiểm thử 2:

insert into dscafe (macf, tencf, ngaysx, hsd, khoiluong, dvt, giaban, mota, maloaicf,
math) values ('CF0055', 'Cafe urmet blend - 500gr', TO_DATE('2019-09-02',
'YYYY-MM-DD'), '24 thang ke tu nsx', 500, 'hop', 94100, 'nuoc pha mau nau den
sanh, huong vi dam da, loi cuon, ham luong caffeine: khoang 10%', 'L02', 'TN');

select macf, tencf, ngaysx, hsd from dscafe where macf = 'CF0055';

Trang 135
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Kết quả kiểm thử 2:

Hình 4.100. Kết quả kiểm thử ngày sản xuất nhỏ hơn ngày hiện tại

4.8.6 Trigger kiểm tra số lượng hàng được đặt phải nhỏ hơn số lượng tồn
hiện có của chi nhánh phụ trách đơn và cập nhật số lượng tồn khi thêm
một chi tiết đơn đặt hàng mới:

Ứng dụng:

Cần tạo một ràng buộc toàn vẹn, kiểm tra số lượng đặt hàng phải nhỏ hơn số
lượng tồn kho, để khi số lượng tồn không đủ yêu cầu đáp ứng cho số lượng đặt thì
sẽ thông báo lỗi cho người dùng biết, ngược lại, nếu số lượng tồn kho đủ để cung
cấp cho chi tiết đơn hàng đó, kho sẽ tự động cập nhật tồn kho. Trigger
tg_ktra_dat_nhohon_ton_i sẽ giúp người dùng làm được việc này từ kiểm tra số
lượng cho đến cập nhật số lượng tồn kho.

Câu lệnh:

create trigger tg_ktra_dat_nhohon_ton_i

after insert

on ctdonhang

for each row

declare

var_tonkho tonkho.slton%type;

var_chinhanh chinhanh.macn%type;

begin

select macn into var_chinhanh from dondathang where maddh = :new.maddh;

Trang 136
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

select slton into var_tonkho from tonkho where macf = :new.macf and macn =
var_chinhanh;

if(:new.sl > var_tonkho) then

raise_application_error (-20512, 'Kho khong du so luong de cung cap cho don


dat hang');

else

update tonkho set slton = slton - :new.sl where macf = :new.macf and macn =
var_chinhanh;

end if;

end;

Kiểm thử 1:

insert into dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, thoihan_giao, sdt_nguoinhan, ghichu) values ('DDH0000203',
to_date('2021-09-16', 'YYYY-MM-DD'), 'KH0013', 'TV0011', 4, 'CN01', 'Duc
Hanh', '30 Huyen Quang, Dinh Ke, Bac Giang', to_date('2021-09-19', 'YYYY-MM-
DD'), '0487364764' , NULL);

insert into ctdonhang values ('DDH0000203', 'CF0005',1111);

Kết quả thực thi 1:

Hình 4.101. Kết quả kiểm thử với số lượng tồn bé hơn số lượng đặt hàng

Kiểm thử 2:

insert into ctdonhang values ('DDH0000203', 'CF0016',50);

Kết quả thực thi 2:

Trang 137
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

Hình 4.102. Kết quả kiểm thử với số lượng tồn lớn hơn số lượng đặt hàng

4.8.7 Trigger kiểm tra số lượng hàng được đặt sau khi chỉnh sửa phải
nhỏ hơn số lượng tồn hiện có của chi nhánh phụ trách đơn và cập nhật số
lượng tồn khi chỉnh sửa một chi tiết đơn hàng:

Ứng dụng:

Cần tạo một ràng buộc toàn vẹn, để kiểm tra số lượng hàng được đặt, sau khi
cập nhật thì số lượng đặt phải nhỏ hơn số lượng tồn kho hiện có của chi nhánh phụ
trách đơn đồng thời cập nhật số lượng tồn khi chỉnh sửa một chi tiết đơn hàng.
Trigger tg_ktra_dat_nhohon_ton_u sẽ giúp người dùng làm được nghiệp vụ này một
các nhánh chóng và ít tốn thời gian.

Câu lệnh:

create trigger tg_ktra_dat_nhohon_ton_u

after update
on ctdonhang
for each row
declare
var_tonkho tonkho.slton%type;

var_chinhanh chinhanh.macn%type;

begin

select macn into var_chinhanh from dondathang where maddh = :new.maddh;

select slton into var_tonkho from tonkho where macf = :new.macf and macn =
var_chinhanh;

if(:new.sl > var_tonkho) then

Trang 138
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

raise_application_error (-20512, 'Kho khong du so luong de cung cap cho don


dat hang');

else

update tonkho set slton = slton - (:new.sl - :old.sl) where macf = :new.macf
and macn = var_chinhanh;

end if;

end;

Kiểm thử:

update ctdonhang set sl = 100 where maddh = 'DDH0000203' and macf = 'CF0001';

update ctdonhang set sl = 200 where maddh = 'DDH0000203' and macf = 'CF0002';

Kết quả:

 Trước khi cập nhật chi tiết đơn hàng:

Hình 4.103. Kết quả truy vấn trước khi cập nhật chi tiết đơn hàng

 Sau khi cập nhật chi tiết đơn hàng:

Hình 4.104. Kết quả sau khi thực thi trigger và cập nhật chi tiết đơn hàng

Trang 139
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

4.8.8 Trigger khi hủy đơn đặt hàng thì hủy cả các chi tiết của đơn hàng
đó và cập nhật lại số lượng tồn của sản phẩm:

Ứng dụng:

Khi hủy đơn đặt hàng thì người dùng phải hủy cả các chi tiết của đơn hàng
đó trước và cập nhật lại số lượng tồn của sản phẩm, việc đó mất khá nhiều thời gian
cũng như thao tác của người dùng. Trigger tg_huy_ct_khihuydon được tạo ra là một
giải pháp để giải quyết vấn đề này một cách nhanh chóng không cần phải thực hiện
các thao tác tính toán thủ công rườm rà. Vì vậy, trigger tg_huy_ct_khihuydon được
tạo ra để người dụng dễ sử dụng và tiết kiệm thời gian hơn, nâng cao hiệu suất làm
việc.

Câu lệnh:

create trigger tg_huy_ct_khihuydon

before delete

on dondathang

for each row

declare

cursor cur_huy_don is

select macf, sl

from ctdonhang

where maddh = :old.maddh;

rec_huy_don cur_huy_don%rowtype;

var_tinhtrang dondathang.tinhtrang%type;

begin

select tinhtrang into var_tinhtrang

Trang 140
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

from dondathang

where maddh = :old.maddh;

open cur_huy_don;

loop

fetch cur_huy_don into rec_huy_don;

exit when cur_huy_don%notfound;

if(var_tinhtrang = 'Chua duoc giao') then

update tonkho set slton = slton + rec_huy_don.sl where macf =


rec_huy_don.macf and macn = :old.macn;

end if;

end loop;

close cur_huy_don;

delete from ctdonhang where maddh = :old.maddh;

end;

Kiểm thử:

delete from dondathang

where maddh = 'DDH0000203';

Kết quả:

 Trước khi xóa đơn đặt hàng:

Hình 4.105. Kết quả truy vấn trước khi xóa đơn hàng

Trang 141
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

 Sau khi xóa đơn đặt hàng:

Hình 4.106. Kết quả đã thực thi trigger và xóa đơn đặt hàng

4.8.9 Trigger khi xóa một khách hàng ra khỏi hệ thống thì các đơn đặt
hàng của khách hàng đó cũng sẽ được xóa:

Ứng dụng:

Tương tự với khi xóa đơn hàng, không những thế, xóa khách hàng còn cần
nhiều thao tác hơn rất nhiều. Người dùng phải xóa tất cả chi tiết đơn hàng của các
đơn hàng của khách hàng đó, sau đó xóa toàn bộ đơn hàng của khách hàng, cuối
cùng mới có thể xóa được khách hàng. Trigger tg_huy_don_khihuykhachhang được
tạo ra để giải quyết vấn đề này và Trigger này cần sự giúp đỡ của Trigger
tg_huy_ct_khihuydon (mục 4.8.8) để có thể hoạt động.

Câu lệnh:

create trigger tg_huy_don_khihuykhachhang

before delete

on khachhang

for each row

declare

begin

delete from dondathang where makh = :old.makh;

end;

Kiểm thử:

delete from khachhang where makh = 'KH0009';

Trang 142
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

select * from khachhang where makh = 'KH0009';

select maddh, ngaylap, makh, manv, makv, ten_nguoinhan, sdt_nguoinhan,


thoihan_giao from dondathang where makh = 'KH0009';

Kết quả:

 Trước khi xóa khách hàng:

Hình 4.107. Kết quả truy vấn trước khi xóa khách hàng

 Sau khi xóa khách hàng:

Hình 4.108. Kết quả sau khi thực thi trigger và xóa khách hàng

Trang 143
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


5.1 Kết luận

5.1.1 Những kết quả đạt được

- Tìm hiểu về đối tượng nghiên cứu của đề tài: cửa hàng cafe Starbuck
- Tìm hiểu và sử dụng hệ quản trị cơ sở dữ liệu khi ứng dụng vào các nghiệp
vụ thực tế về quản lý bán hàng tại cửa hàng cafe Starbuck.
- Tạo được bộ cơ sở dữ liệu quản lý bán hàng trên nền tảng công cụ Oracle Sql
Developer.
- Thực hiện được các câu truy vấn nhiều hơn mục tiêu ban đầu đặt ra như:
Update, delete, index, select, sequence, function, view, stored procedure,
trigger,…
- Áp dụng được các truy vấn về một số nghiệp vụ liên quan về khách hàng,
đơn đặt hàng, mặt hàng cà phê, thương hiệu, loại cà phê, giá bán và thành
tiền cho đơn hàng, chi tiết đơn hàng.
- Ngoài ra còn mở rộng một số nghiệp vụ liên quan đến nhân viên, tiền lương
và hoa hồng (tiền thưởng) của nhân viên.

5.1.2 Hạn chế

- Do thời gian hoàn thành đề tài đồ án ngắn, một số dữ liệu để khởi tạo CSDL
còn hạn hẹp.
- Chưa khai thác hết được các nghiệp vụ liên quan đến quản lý bán hàng và
các chức năng trong cơ sở dữ liệu
- Cập nhật tự động số lượng tồn kho chưa thể giải quyết trường hợp đơn đã
được giao

5.2 Hướng phát triển

5.2.1 Hướng khắc phục hạn chế

- Tiếp tục hoàn thiện và bổ sung bộ dữ liệu đầy đủ hơn

Trang 144
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

- Nghiên cứu và khai thác các nghiệp vụ liên quan chưa được thực hiện trong
đồ án.
- Tìm hiểu thêm các kiến thức về bán hàng để hoàn thiện các chức năng

5.2.2 Hướng phát triển

- Có thể mở rộng dữ liệu và database để có thể quản lý kho hàng hoặc quản lý
nhân sự - tiền lương tại đây.
- Tạo các user quản lý hệ thống.

Trang 145
Quản trị cơ sở dữ liệu hệ thống bán hàng tại cafe Starbuck
Sinh viên thực hiện: Đoàn Phương Uyên – Nguyễn Thị Nam Trân

TÀI LIỆU THAM KHẢO


[1] Tài liệu bàng giảng học phần Hệ quản trị cơ sở dữ liệu 2, Thầy Hà Thanh Liêm.

Trang 146
Đồ án môn học Hệ quản trị cơ sở dữ liệu 2

You might also like