Professional Documents
Culture Documents
ĐỀ TÀI
HỆ THỐNG QUẢN LÝ BÁN GIÀY DÉP
GIẢNG VIÊN HƯỚNG DẪN: GIANG THỊ THU HUYỀN
SINH VIÊN THỰC HIỆN: NHÓM 13
1 VŨ LÝ NGỌC 24A4040452
Để có thể hoàn thành dự án cần rất nhiều sự đóng góp, giúp đỡ của bạn bè, thầy cô.
Nhóm 13 xin gửi lời cảm ơn chân thành đến khoa Hệ thống thông tin quản lý, Học viện
Ngân hàng đã tạo điều kiện thuận lợi cho nhóm 13 học tập và hoàn thành đề tài nghiên cứu
này. Đặc biệt, nhóm xin bày tỏ lòng biết ơn sâu sắc đến cô Giang Thị Thu Huyền, người đã
quan tâm, giúp đỡ và chia sẻ kinh nghiệm để chúng em hiểu rõ hơn về kỹ năng làm việc
nhóm cũng như quá trình thực hiện dự án trong thời gian qua.
Tuy nhiên, trong quá trình nhóm cũng gặp một số khó khăn. Bên cạnh đó, nhóm vẫn
có những bất đồng quan điểm nhưng cả nhóm đã chia sẻ, giúp đỡ nhau đi đến thống nhất
và có thể hoàn thành báo cáo 1 cách hoàn thiện nhất.
Do điều kiện thời gian và kinh nghiệm còn nhiều thiếu sót và hạn chế nên báo cáo
tổng kết còn một số khiếm khuyết. Nhóm 13 chúng em rất mong nhận được sự góp ý của
thầy cô để nâng cao kiến thức, khắc phục những hạn chế trong quá trình làm việc nhóm để
chúng em có thể làm thật tốt trong chặng đường học tập sắp tới.
i
LỜI CAM ĐOAN
Nhóm 13 xin cam đoan đề tài nghiên cứu: “HỆ THỐNG QUẢN LÝ BÁN
GIÀY DÉP” mà nhóm thực hiện là sản phẩm duy nhất, được tiến hành một cách
công khai với sự hướng dẫn và giúp đỡ nhiệt tình từ giảng viên Giang Thị Thu
Huyền. Tất cả các số liệu, thông tin trong bài nghiên cứu đều trung thực, được xác
nhận từ các cơ quan trực tiếp chủ quản, không có bất cứ sự sao chép số liệu nghiên
cứu khảo sát từ nghiên cứu tương tự nào trước đó.
Nếu phát hiện bất kỳ sự sao chép, gian dối nào trong kết quả của nghiên cứu,
nhóm xin hoàn toàn chịu trách nhiệm và chấp nhận quyết định kỷ luật của khoa và
nhà trường.
ii
BẢNG ĐÁNH THÀNH VIÊN NHÓM
iii
KẾ HOẠCH THỰC HIỆN DỰ ÁN
1. Xác Định Mục Tiêu Dự Án
Mục tiêu của hệ thống quản lý giày dép là tối ưu hóa quá trình kinh doanh bằng cách
cung cấp một nền tảng hiệu quả cho việc theo dõi và quản lý đơn hàng. Hệ thống sẽ
giúp cửa hàng có cái nhìn toàn diện về tình trạng của sản phẩm, từ nguồn cung đến
điểm bán hàng cuối cùng.
2. Triển khai dự án
Yêu cầu các thành viên trong nhóm:
Hoàn thành nhiệm vụ đúng hạn.
Công việc trong các giai đoạn của dự án phải được hoàn thành.
Chất lượng công việc được đảm bảo.
Dự án thực hiện qua 5 giai đoạn:
Giai Phát biểu Thiết kế Tìm hiểu Phân tích Đọc và tìm hiểu
đoạn 2 bài toán, lý được cơ sở cơ sở dữ yêu cầu bài về các thao tác
(16/11- do chọn bài dữ liệu cho liệu cho dữ liệu, truy
iv
25/11) toán, tính bài toán ở bài toán toán xuất dữ liệu
cấp thiết. mức logic trên Oracle bằng PL/SQL
Kiểm soát Đọc và tìm Tìm hiểu
được tiến hiểu về các về sao lưu
độ thực yêu cầu truy và phục
hiện dự án vấn nghiệp hồi dữ liệu
và chất vụ, các yêu
lượng sản cầu thao tác
phẩm dữ liệu, truy
xuất dữ liệu
bằng SQL.
Giai Kiểm soát Đề xuất các Định nghĩa Đề xuất Đề xuất các yêu
đoạn 3 được tiến yêu cầu để được cơ sở chiến lược cầu thao tác dữ
(26/11- độ thực truy xuất dữ dữ liệu cho sao lưu/ liệu, truy xuất
4/12) hiện dự án liệu bài toán phục hồi dữ liệu bằng
và chất trên Oracle dữ liệu PL/SQL
lượng sản
phẩm
Giai Kiểm soát Giải quyết Tạo và Thực hiện Giải quyết các
đoạn 4 được tiến được các yêu quản lý nhiệm vụ yêu cầu thao tác
(5/12- độ thực cầu truy vấn người sao lưu/ dữ liệu, truy
15/12) hiện dự án nghiệp vụ, dùng phục hồi xuất dữ liệu
và chất các yêu cầu dữ liệu bằng PL/SQL
lượng sản thao tác dữ
v
phẩm liệu, truy
xuất dữ liệu
bằng SQL.
Giai Hoàn thiện Chỉnh sửa Chỉnh sửa Chỉnh sửa Chỉnh sửa nội
đoạn 5 word và nội dung nội dung nội dung dung (nếu có)
(16/12 - slide thuyết (nếu có) (nếu có) (nếu có)
22/12) trình
vi
KIỂM SOÁT TIẾN ĐỘ DỰ ÁN VÀ CHẤT LƯỢNG SẢN PHẨM
ST Nội Người Tiến Tiến Mức Sản Đánh giá Tổng kết
T dung thực độ kế độ độ phẩm chất
công hiện hoạch thực hoàn (link lượng
việc tế thành google sản
công doc) phẩm
việc
1 Lập kế Ngọc 5/11 - 5/11 - 100% Lập kế Đã đưa ra Hoàn
hoạch
1 thực Hồng 15/11 15/11 hạch chi tiết cụ thành và
hiện thực thể các đúng tiến
dự án.
hiện nhiệm vụ độ dự án
dự án cho các
thành
viên, chia
dự án
thành
nhiều
giai đoạn
giúp dễ
thực hiện
hơn
viii
1 Thiết Ngọc 5/11- 5/11- 100% ERD + Đã xây Hoàn
kế
4 được Hồng 15/11 15/11 Sơ đồ dựng thành và
cơ sở quan được cơ đúng tiến
dữ liệu
cho hệ sở dữ độ dự án
bài liệu ở
toán ở
mức mức khái
khái niệm và
niệm
và logic.
logic Mặc dù
còn phải
chỉnh sửa
lại do có
những
điểm
chưa hợp
lý.
x
1 Giải Cường 5/12- 5/12- 100% PL/ Đã đưa ra Hoàn
quyết
7 các 15/12 15/12 SQL được các thành và
yêu yêu cầu đúng tiến
cầu
thao và truy độ dự án
tác dữ vấn bằng
liệu,
truy câu lệnh
xuất PL/SQL
dữ liệu
bằng và ra kết
PL/SQ quả
L
xii
Slide
đẹp, rõ
ràng
xiii
MINH CHỨNG LÀM VIỆC TRÊN MÔI TRƯỜNG SỐ
1. Hình ảnh làm việc trên GoogleDocs
xiv
xv
MỤC LỤC
LỜI CẢM ƠN i
KIỂM SOÁT TIẾN ĐỘ DỰ ÁN VÀ CHẤT LƯỢNG SẢN PHẨM vii
I. MÔ TẢ BÀI TOÁN 1
2. Lý do chọn đề tài 1
5. Sơ đồ quan hệ 5
xvi
1. Tạo cơ sở dữ liệu 5
1.3. Tablespace 14
2.1. Sắp xếp nhà cung cấp cung cấp số lượng sản phẩm theo thứ tự giảm
dần 15
2.2. Thống kê tổng tiền sản phẩm bán được theo tháng 16
2.3. Đưa ra số lượng đã nhập của mỗi sản phẩm 16
2.4. Thống kê số tiền nhập vào của mỗi nhà cung cấp và sắp xếp theo thứ tự
giảm dần 17
2.5. Đưa ra sản phẩm được bán chạy nhất và cho biết chúng thuộc dòng sản
phẩm nào 17
2.6. Đưa ra nhân viên bán được nhiều sản phẩm nhất và cho biết họ giữ
chức vụ gì 18
2.9. Cho biết tổng số tiền lãi khi bán sản phẩm có mã là ‘SP002’ 19
2.10. Cập nhật giảm giá 5% cho khách hàng có hóa đơn trên 1000000 19
xvii
3. Thực hiện các yêu cầu nghiệp vụ 20
3.1. Nhập mã sản phẩm và cho biết sản phẩm được bán trong hóa đơn nào
20
3.2. Nhập mã khách hàng và cho biết khách hàng đã mua những sản phẩm
nào 21
3.3. Tìm sản phẩm bán chạy nhất trong tháng và số lượng sản phẩm đó bán
được trong tháng đấy 22
3.4. Thống kê những sản phẩm được nhập hàng trong ngày 24
3.6. Thống kê các hóa đơn do nhân viên đảm nhận trong một khoảng thời
gian nhất định 26
3.7. Kiểm tra sản phẩm có đủ số lượng tồn trong kho để bán 28
3.8. Nhập mã sản phẩm và cho biết tỷ lệ bán ra được của sản phẩm đó 29
3.9. Hiển thị những sản phẩm có tổng số lượng bán được trong ngày nhiều
hơn một số lượng cụ thể 30
3.10. Nhập mã khách hàng và cho biết tổng số tiền mà khách hàng đã mua
tại cửa hàng 31
xviii
4.2. Phân quyền 33
1. Ưu điểm 46
2. Nhược điểm 46
xix
DANH MỤC HÌNH ẢNH
xx
Hình 15. Kết quả câu truy vấn khi nhập mã sản phẩm và cho biết sản
phẩm được bán trong hóa đơn nào (sản phẩm đã được bán) 21
Hình 16. Kết quả câu truy vấn khi nhập mã sản phẩm và cho biết sản
phẩm được bán trong hóa đơn nào (sản phẩm chưa được bán) 21
Hình 17. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết
khách hàng đã mua những sản phẩm nào (khách hàng đã mua sản phẩm) 22
Hình 18. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết
khách hàng đã mua những sản phẩm nào (khách hàng chưa mua sản phẩm) 22
Hình 19. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết
khách hàng đã mua những sản phẩm nào (khách hàng không có trong hệ thống) 22
Hình 20. Kết quả của câu truy vấn khi tìm sản phẩm bán chạy nhất trong
tháng và số lượng sản phẩm đó bán được trong tháng đấy (khi sản phẩm nhập
vào là sản phẩm bán chạy nhất trong tháng) 23
Hình 21. Kết quả của câu truy vấn khi tìm sản phẩm bán chạy nhất trong
tháng và số lượng sản phẩm đó bán được trong tháng đấy (khi tháng đó không
bán được sản phẩm) 23
Hình 22. Kết quả của câu truy vấn khi nhập sai định dạng tháng năm 24
Hình 23. Kết quả của câu truy vấn thống kê những sản phẩm được nhập
trong ngày (Khi sản phẩm được nhập trong ngày) 25
Hình 24. Kết quả của câu truy vấn thống kê những sản phẩm được nhập
trong ngày (Khi sản phẩm không được nhập trong ngày) 25
Hình 25. Kết quả của câu truy vấn khi nhập sai định dạng ngày 25
Hình 26. Kết quả của câu truy vấn báo cáo doanh thu hàng tháng (khi
tháng đó bán được hàng) 26
Hình 27. Kết quả của câu truy vấn báo cáo doanh thu hàng tháng (khi
tháng đó không bán được hàng) 26
Hình 28. Kết quả của câu truy vấn khi nhập sai định dạng tháng, năm 26
xxi
Hình 29. Kết quả của câu truy vấn thống kê các hóa đơn do nhân viên
đảm nhận trong một thời gian nhất định (Nhân viên đó đảm nhận hóa đơn) 27
Hình 30. Kết quả của câu truy vấn thống kê các hóa đơn do nhân viên
đảm nhận trong một thời gian nhất định (Nhân viên đó không đảm nhận hóa
đơn) 28
Hình 31. Kết quả của câu truy vấn khi nhập sai định dạng ngày 28
Hình 32. Kết quả của câu truy vấn để kiểm tra sản phẩm có đủ số lượng
tồn trong kho để bán (trong kho còn hàng tồn để bán) 29
Hình 33. Kết quả truy vấn khi nhập mã sản phẩm và cho biết tỷ lệ bán ra
được của sản phẩm đó (khi sản phẩm có trong hệ thống) 29
Hình 34. Kết quả truy vấn khi nhập mã sản phẩm và cho biết tỷ lệ bán ra
được của sản phẩm đó (khi sản phẩm có trong hệ thống và chưa bán được) 30
Hình 35. Kết quả truy vấn khi nhập mã sản phẩm và cho biết tỷ lệ bán ra
được của sản phẩm đó (khi sản phẩm không có trong hệ thống) 30
Hình 36. Kết quả của câu truy vấn của sản phẩm bán trong ngày nhiều
hơn một số cụ thế (khi sản phẩm bán trong ngày nhiều hơn một số cụ thể) 31
Hình 37. Kết quả của câu truy vấn của sản phẩm bán trong ngày nhiều
hơn một số cụ thế (khi sản phẩm bán trong ngày không nhiều hơn một số cụ
thể) 31
Hình 38. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết
tổng số tiền mà khách hàng đã mua tại cửa hàng (khi khách hàng đã mua sản
phẩm tại cửa hàng) 32
Hình 39. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết
tổng số tiền mà khách hàng đã mua tại cửa hàng (khi khách hàng chưa mua sản
phẩm tại cửa hàng) 32
xxii
I. MÔ TẢ BÀI TOÁN
1. Phát biểu bài toán
Một cửa hàng bán giày dép cần quản lý việc buôn bán của cửa hàng. Sau
đây là mô tả theo nghiệp vụ hàng ngày của cửa hàng.
Mỗi sản phẩm giày dép được bán trong cửa hàng đều có màu cho khách hàng
lựa chọn, được bán theo các mùa khác nhau, được phân chia theo từng đối tượng,
từng thể loại, từng cỡ giày dép khác nhau. Mỗi sản phẩm giày dép đều có mã giày
dép, tên giày dép, số lượng, đơn giá nhập, đơn giá bán. Một sản phẩm chỉ thuộc
một loại chất liệu duy nhất, gồm có mã chất liệu, tên chất liệu.
Mỗi khi cần thêm sản phẩm, nhân viên sẽ nhập thêm từ nhà cung cấp. Mỗi
khi nhập thêm sản phẩm, nhân viên sẽ ghi hóa đơn nhập để thanh toán cho nhà
cung cấp, trong đó sẽ có số hóa đơn nhập, mã nhân viên, ngày nhập, mã nhà cung
cấp, tổng tiền. Nhân viên lưu lại hóa đơn chi tiết để biết hàng hóa đã nhập vào
gồm: số hóa đơn nhập, mã giày dép, số lượng, đơn giá, giảm giá, thành tiền.
Mỗi nhà cung cấp cung cấp cho cửa hàng đều có mã nhà cung cấp, tên nhà
cung cấp, địa chỉ và số điện thoại.
Mỗi nhân viên của cửa hàng đều có thông tin cá nhân như mã nhân viên, tên
nhân viên, mã công việc, giới tính, ngày sinh, điện thoại và địa chỉ.
Mỗi nhân viên đều có công việc riêng. Nhân viên có nhiệm vụ là bán hàng
cho khách hàng. Mỗi khi nhân viên xuất hàng bán cho khách nhân viên sẽ ghi hóa
đơn cho khách để thanh toán gồm: số hóa đơn bán, mã nhân viên, ngày bán, mã
khách, tổng tiền. Nhân viên sẽ lưu vào hóa đơn bán chi tiết để biết doanh thu các
đơn hàng gồm: số hóa đơn bán, mã giày dép, số lượng, giảm giá, tổng tiền.
Khách hàng đến mua hàng tại cửa hàng sẽ có mã khách, tên khách, địa chỉ và
số điện thoại.
2. Lý do chọn đề tài
1
Hiện nay, ngành công nghệ thông tin ở nước ta đang phát triển rất nhanh và
mạnh, khoa học công nghệ đã mang lại nhiều lợi ích cho nền kinh tế xã hội, đặc
biệt là trong nền kinh tế nhiều thành phần như hiện nay thì việc quản lý bán hàng
mang tính quyết định chính trong hiệu quả kinh doanh. Với sự phát triển của công
nghệ thông tin, thì việc bán hàng thủ công không còn phù hợp nữa, các phần mềm
quản lý bán hàng đang nhận được sự tin tưởng của rất nhiều các công ty, doanh
nghiệp. Điều này thay thế các phương pháp quản lý truyền thống đã trở nên lỗi thời
và đang tác động không nhỏ đến hiệu quả kinh doanh của doanh nghiệp. Ngoài ra,
điều này sẽ giúp các công ty quản lý và kiểm soát chính xác mọi thứ trong hệ thống
công việc của mình. Để triển khai một hệ thống quản lý bán hàng, nhà quản trị cần
nắm được một số mấu chốt công việc như: quản lý nhân viên, quản lý đơn hàng…
Việc chuyển đổi từ việc bán hàng theo cách truyền thống sang các phần mềm
quản lý sẽ giúp cho: thông tin về đối tượng quản lý được phong phú, được thường
xuyên cập nhật nhanh chóng. Việc lưu trữ, bảo quản thông tin sản phẩm trở nên dễ
dàng hơn, thông tin lưu trữ cũng sẽ được nhất quán, hạn chế bị trùng lặp giữa các
bộ phận. Đặc biệt là giảm thiểu nhiều thời gian và công sức để thống kê, phân tích
thông tin của sản phẩm, của khách hàng rồi đưa ra những quyết định phù hợp.
Ngoài ra, giúp lưu trữ được nhiều thông tin, tăng độ bảo mật và tiết kiệm chi phí từ
đó mang lại hiệu quả lớn trong kinh doanh.
Vì vậy chúng em xây dựng hệ thống quản lý bán giày dép với mục đích: Giúp
cho công ty bán được hàng, giúp cho công ty ổn định hoạt động bán hàng, phát
triển năng lực bán hàng: Nhờ các chuẩn mực đã được xây dựng trong hệ thống mà
nhân viên luôn phải nỗ lực từng ngày để đạt chuẩn và phát triển hơn bản thân.
3. Phân tích yêu cầu bài toán
Xây dựng một hệ thống quản lý bán giày dép không chỉ là một nhu cầu kỹ
thuật, mà còn là một chiến lược chiều sâu, đòi hỏi sự hiểu biết sâu rộng về xu
hướng thị trường và xu hướng của người tiêu dùng. Hiện nay, khi sự đa dạng về
2
sản phẩm và mong muốn của khách hàng ngày càng tăng cao, việc xây dựng và
phát triển một hệ thống giúp quản quy trình quản lý bán hàng trở nên quan trọng và
trở thành nhu cầu thiết yếu để doanh nghiệp tồn tại và phát triển.
Trong bối cảnh cạnh tranh khốc liệt giữa các doanh nghiệp, khả năng quản lý
tồn kho đúng mức trở thành một trong những yếu tố then chốt. Một hệ thống quản
lý không chỉ giúp theo dõi số lượng hàng tồn kho mà còn đưa ra những thông báo
về lượng tồn kho của từng loại sản phẩm. Ngoài ra, hệ thống còn hỗ trợ đối với
hủy hàng và các đơn hàng đổi trả, giúp doanh nghiệp tránh được tình trạng thiếu
hụt hoặc dư thừa lượng tồn kho. Quản lý bán hàng và giao hàng cũng trở nên hiệu
quả hơn thông qua việc tối ưu hóa quá trình đặt hàng, theo dõi đơn đặt hàng, và tự
động quản lý giao hàng. Điều này không chỉ giúp doanh nghiệp tiết kiệm thời gian
mà còn đảm bảo rằng mọi giao dịch diễn ra một cách trơn tru. Đồng thời, có thể
tích hợp với chính sách giảm giá và khuyến mãi để doanh nghiệp có thể linh hoạt
thích ứng với thị trường và nhu cầu của khách hàng, giúp tạo dựng uy tín cho
doanh nghiệp và lấy được lòng tin từ khách hàng.
Khi quy mô kinh doanh tăng lên và mô hình quản lý truyền thống không còn
đáp ứng được nhu cầu, đây là lúc mà một doanh nghiệp cần đến một hệ thống cơ
sở dữ liệu để mở rộng quy mô hoạt động, tự tạo dựng được ưu thế riêng so với đối
thủ cạnh tranh bằng sự hiệu quả và minh bạch trong quy trình kinh doanh.
Đối tượng sử dụng hệ thống bao gồm nhân viên bán hàng và quản lý, với mục
đích tối ưu hóa hoạt động kinh doanh và cung cấp trải nghiệm mua sắm tốt nhất
cho khách hàng. Hệ thống giúp theo dõi thông tin khách hàng, từ lịch sử mua sắm
đến sở thích cá nhân, tạo ra cơ hội để cá nhân hóa dịch vụ và tăng cường mối quan
hệ khách hàng. Sử dụng hệ quản trị cơ sở dữ liệu Oracle để lưu trữ và quản lý dữ
liệu một cách an toàn và hiệu quả.
Mục đích cuối cùng của hệ thống không chỉ là để tối ưu hóa quy trình kinh
doanh mà còn để cung cấp dịch vụ tốt nhất cho khách hàng. Hệ thống giúp doanh
3
nghiệp duy trì và phát triển mối quan hệ với khách hàng thông qua cung cấp thông
tin chi tiết và đáp ứng nhanh chóng đối với nhu cầu của họ. Điều này không chỉ là
về việc bán sản phẩm mà còn là về việc xây dựng một trải nghiệm mua sắm toàn
diện và tích cực.
Ngoài những lợi ích mà hệ thống mang lại thì doanh nghiệp cũng phải đối mặt
với một số thách thức. Một trong những vấn đề quan trọng là bảo mật thông tin.
Với việc lưu trữ dữ liệu nhạy cảm về sản phẩm, khách hàng, và giao dịch tài chính,
hệ thống cần có các biện pháp bảo mật mạnh mẽ để ngăn chặn truy cập trái phép
và đảm bảo an toàn cho thông tin quan trọng của khách hàng và doanh nghiệp. Bên
cạnh đó, chi phí để bảo trì và nâng cấp hệ thống đôi khi có thể tốn kém, đặc biệt
khi doanh nghiệp mở rộng quy mô hoạt động. Ngoài ra, một thách thức khác là tích
hợp dữ liệu từ các nguồn khác nhau. Dữ liệu có thể đến từ nhiều hệ thống khác
nhau như thanh toán, quảng cáo, hay nguồn cung ứng, và việc đảm bảo tính nhất
quán và chính xác trong mọi giao dịch là một thách thức đặc biệt.
4. Sơ đồ thực thể liên kết
4
Hình 1. Biểu đồ ERM
5. Sơ đồ quan hệ
Hình 2. Sơ đồ quan hệ
);
7
1.2. Nhập dữ liệu
--BANG CHUC VU
INSERT INTO CHUCVU(MACV, TENCV)
VALUES('CV01', 'QUAN LY');
10
INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,
DIACHINV)
VALUES('NV009', 'CV05', 'LE VAN LUONG', ' NAM',
TO_DATE('07/08/1999', 'DD/MM/YYYY'), 0754323343, 'LONG BIEN-HA NOI');
12
VALUES('SP010', 'D01', 'NCC01', 'SANDAN NU' , 'DA NHAN TAO' ,
'VANG' , 38, 99, 'SANDAN');
13
VALUES('SP004', 'NCC01', 300000,
100,TO_DATE('17/11/2023','DD/MM/YYYY'));
1.3. Tablespace
a. Mục đích
Quản lý tablespace trong Oracle đặc biệt quan trọng trong việc cấp vùng dữ liệu làm
việc cho user, đóng vai trò quan trọng trong việc cấp phát không gian lưu trữ và điều
chỉnh tính sẵn dùng của dữ liệu trong cơ sở dữ liệu.
Chế độ Online và Offline: Tablespace có thể được chuyển đổi giữa chế độ online và
offline để điều chỉnh tính sẵn dùng của dữ liệu. Việc này linh hoạt và cho phép quản trị
viên thích ứng với các yêu cầu, mục đích sử dụng và chiến lược quản lý khác nhau, đảm
bảo hiệu suất, an toàn và bảo mật dữ liệu tốt hơn.
Cấp phát không gian cho người dùng khác nhau: Tablespaces cho phép cấp phát
không gian lưu trữ cho nhiều người dùng khác nhau trong hệ thống. Điều này giúp tối ưu
hóa quản lý không gian và đáp ứng nhu cầu cụ thể của từng phần của cơ sở dữ liệu.
Backup và Recover phần riêng: Sự linh hoạt của tablespace cho phép backup và
recover từng phần của cơ sở dữ liệu một cách dễ dàng. Việc chuyển tablespace sang chế
độ chỉ đọc (read-only) giúp hạn chế các thủ tục khi sao lưu và phục hồi mà không ảnh
hưởng đến phần lớn dữ liệu không thay đổi.
14
Mở rộng không gian lưu trữ: Khi cần thêm không gian lưu trữ, tablespace giúp quản
trị viên gắn thêm ổ cứng và cấp phát vùng không gian mới cho dữ liệu. Việc này giúp mở
rộng không gian lưu trữ mà không ảnh hưởng đến toàn bộ cơ sở dữ liệu.
Quản lý truy cập và dùng Tablespaces: Tablespaces cho pháp quản trị viên quản lý truy
cập và dùng cụ thể cho mỗi phần của cơ sở dữ liệu. Nếu một phần không còn cần truy xuất, có
thể dùng tablespaces tương ứng mà không ảnh hưởng đến toàn bộ hệ thống.
b. Tạo tablespace
CREATE TABLESPACE MYSPACE1
DATAFILE 'D:\HQT\TABLESPACE01.DBF'
SIZE 100M
AUTOEXTEND ON NEXT 100M MAXSIZE 1024M
EXTENT MANAGEMENT LOCAL;
15
Kết quả
Hình 3. Kết quả của câu truy vấn sắp xếp nhà cung cấp cung cấp số lượng sản
phẩm theo thứ tự giảm dần
2.2. Thống kê tổng tiền sản phẩm bán được theo tháng
SELECT EXTRACT(MONTH FROM(NGAYLAPHDB)) AS THANG, SUM(TONGTIEN) AS
TONGTIEN
FROM HOADONBAN
GROUP BY EXTRACT(MONTH FROM(NGAYLAPHDB));
Kết quả
Hình 4. Kết quả của câu truy vấn thống kê tổng tiền sản phẩm bán được theo tháng
2.3. Đưa ra số lượng đã nhập của mỗi sản phẩm
SELECT A.MASP, SUM(SOLUONGNHAP) AS SOLUONGNHAP_MOISANPHAM
FROM HOADONNHAP A JOIN SANPHAM B ON A.MASP = B.MASP
GROUP BY A.MASP
ORDER BY MASP ASC;
Kết quả
16
Hình 5. . Kết quả của câu truy vấn đưa ra số lượng đã nhập của mỗi sản phẩm
2.4. Thống kê số tiền nhập vào của mỗi nhà cung cấp và sắp xếp theo
thứ tự giảm dần
SELECT MANCC, SUM(DONGIA*SOLUONGNHAP) AS TONGTIENNHAP_THEOTUNGNCC
FROM HOADONNHAP
GROUP BY MANCC
ORDER BY TONGTIENNHAP_THEOTUNGNCC DESC;
Kết quả
Hình 6. Kết quả của câu truy vấn thống kê số tiền nhập vào của mỗi nhà cung cấp
và sắp xếp theo thứ tự giảm dần
2.5. Đưa ra sản phẩm được bán chạy nhất và cho biết chúng thuộc
dòng sản phẩm nào
SELECT B.MASP, B.TENSP, C.MADONG, C.TENDONG, SUM(SOLUONGBAN) AS SLMAX
FROM CHITIETHOADON A JOIN SANPHAM B ON A.MASP=B.MASP JOIN DONGSANPHAM
C ON B.MADONG=C.MADONG
GROUP BY B.MASP, B.TENSP, C.MADONG, C.TENDONG
17
HAVING SUM(SOLUONGBAN)>= ALL(SELECT SUM(SOLUONGBAN)
FROM CHITIETHOADON
GROUP BY (MASP));
Kết quả
Hình 7. Kết quả của câu truy vấn đưa ra sản phẩm được bán chạy nhất và cho biết
chúng thuộc dòng sản phẩm nào
2.6. Đưa ra nhân viên bán được nhiều sản phẩm nhất và cho biết họ
giữ chức vụ gì
SELECT C.MANV, C.TENNV, D.MACV, D.TENCV, SUM(A.SOLUONGBAN) AS
TONGSANPHAMDABAN
FROM CHITIETHOADON A JOIN HOADONBAN B ON A.MAHD=B.MAHD JOIN NHANVIEN
C ON B.MANV=C.MANV JOIN CHUCVU D ON C.MACV=D.MACV
GROUP BY C.MANV, C.TENNV, D.MACV, D.TENCV
HAVING SUM(SOLUONGBAN)>= ALL(SELECT SUM(SOLUONGBAN)
FROM CHITIETHOADON A JOIN HOADONBAN B ON
A.MAHD=B.MAHD
GROUP BY B.MANV);
Kết quả
Hình 8. Kết quả của câu truy vấn đưa ra nhân viên bán được nhiều sản phẩm nhất
và cho biết chức vụ của họ
18
GROUP BY B.MAKH);
Kết quả
Hình 9. . Kết quả của câu truy vấn các khách hàng mua nhiều sản phẩm nhất
Hình 10. Kết quả của câu truy vấn thống kê các sản phẩm chưa bán được
2.9. Cho biết tổng số tiền lãi khi bán sản phẩm có mã là ‘SP002’
SELECT DISTINCT B.MASP, B.TENSP, (C.SOLUONGNHAP-
B.SOLUONGTON)*((A.GIABAN-C.DONGIA)-A.GIABAN*A.GIAMGIA) AS
TONG_TIEN_LAI
FROM CHITIETHOADON A JOIN SANPHAM B ON A.MASP = B.MASP JOIN
HOADONNHAP C ON B.MASP=C.MASP
WHERE B.MASP = 'SP002';
Kết quả
Hình 11. Kết quả của câu truy vấn tổng tiền lãi khi bán sản phẩm có mà là ‘SP002’
2.10. Cập nhật giảm giá 5% cho khách hàng có hóa đơn trên 1000000
UPDATE HOADONBAN SET TONGTIEN=0.95*TONGTIEN
19
WHERE TONGTIEN>=1000000;
SELECT TONGTIEN;
Kết quả
Hình 12. Kết quả của câu truy vấn tổng tiền hóa đơn trước khi cập nhật giảm giá
Hình 14. Kết quả của câu truy vấn tổng tiền hóa đơn sau khi cập nhật giảm giá
3.1. Nhập mã sản phẩm và cho biết sản phẩm được bán trong hóa đơn nào
DECLARE
V_MASP CHITIETHOADON.MASP%TYPE;
V_COHD BOOLEAN := FALSE;
CURSOR C_HOADON IS
SELECT MAHD
FROM CHITIETHOADON
WHERE MASP = V_MASP;
V_HOADON CHITIETHOADON.MAHD%TYPE;
BEGIN
V_MASP := UPPER(TRIM('&NHAPMASANPHAM'));
OPEN C_HOADON;
LOOP
FETCH C_HOADON INTO V_HOADON;
EXIT WHEN C_HOADON%NOTFOUND;
V_COHD := TRUE;
DBMS_OUTPUT.PUT_LINE('SAN PHAM ' || V_MASP || ' DUOC BAN
TRONG HOA DON: ' || V_HOADON);
END LOOP;
CLOSE C_HOADON;
IF NOT V_COHD THEN
DBMS_OUTPUT.PUT_LINE('SAN PHAM ' || V_MASP || ' KHONG CO
TRONG HOA DON NAO.');
20
END IF;
END;
Kết quả:
Hình 15. Kết quả câu truy vấn khi nhập mã sản phẩm và cho biết sản phẩm được
bán trong hóa đơn nào (sản phẩm đã được bán)
Hình 16. Kết quả câu truy vấn khi nhập mã sản phẩm và cho biết sản phẩm
được bán trong hóa đơn nào (sản phẩm chưa được bán)
3.2. Nhập mã khách hàng và cho biết khách hàng đã mua những sản phẩm
nào
DECLARE
V_MAKH KHACHHANG.MAKH%TYPE;
V_KHACHHANGTONTAI INTEGER := 0;
V_SOSANPHAM INTEGER := 0;
CURSOR C_SANPHAM IS
SELECT DISTINCT SP.TENSP
FROM CHITIETHOADON CTHD
JOIN HOADONBAN HDB ON CTHD.MAHD = HDB.MAHD
JOIN SANPHAM SP ON CTHD.MASP = SP.MASP
WHERE HDB.MAKH = V_MAKH;
V_TENSANPHAM SANPHAM.TENSP%TYPE;
BEGIN
V_MAKH := UPPER(TRIM('&NHAPMAKHACHHANG'));
SELECT COUNT(*) INTO V_KHACHHANGTONTAI FROM KHACHHANG WHERE MAKH
= V_MAKH;
IF V_KHACHHANGTONTAI > 0 THEN
OPEN C_SANPHAM;
LOOP
FETCH C_SANPHAM INTO V_TENSANPHAM;
EXIT WHEN C_SANPHAM%NOTFOUND;
V_SOSANPHAM := V_SOSANPHAM + 1;
21
DBMS_OUTPUT.PUT_LINE('KHACH HANG ' || V_MAKH || ' DA MUA
SAN PHAM: ' || V_TENSANPHAM);
END LOOP;
CLOSE C_SANPHAM;
IF V_SOSANPHAM = 0 THEN
DBMS_OUTPUT.PUT_LINE('KHACH HANG ' || V_MAKH || ' CHUA
MUA SAN PHAM NAO.');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('KHACH HANG ' || V_MAKH || ' KHONG CO
TRONG HE THONG.');
END IF;
END;
Kết quả:
Hình 17. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết khách hàng
đã mua những sản phẩm nào (khách hàng đã mua sản phẩm)
Hình 18. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết khách hàng
đã mua những sản phẩm nào (khách hàng chưa mua sản phẩm)
Hình 19. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết khách hàng
đã mua những sản phẩm nào (khách hàng không có trong hệ thống)
3.3. Tìm sản phẩm bán chạy nhất trong tháng và số lượng sản phẩm đó
bán được trong tháng đấy
DECLARE
22
V_THANG NUMBER;
V_NAM NUMBER;
V_SANPHAMBANCHAY SANPHAM.TENSP%TYPE;
V_SOLUONGBAN NUMBER := 0;
BEGIN
V_THANG := TO_NUMBER('&NHAPTHANG');
V_NAM := TO_NUMBER('&NHAPNAM');
SELECT SP.TENSP, SUM(CTHD.SOLUONGBAN) AS TONGSOLUONGBAN
INTO V_SANPHAMBANCHAY, V_SOLUONGBAN
FROM CHITIETHOADON CTHD
JOIN HOADONBAN HDB ON CTHD.MAHD = HDB.MAHD
JOIN SANPHAM SP ON CTHD.MASP = SP.MASP
WHERE EXTRACT(MONTH FROM HDB.NGAYLAPHDB) = V_THANG
AND EXTRACT(YEAR FROM HDB.NGAYLAPHDB) = V_NAM
GROUP BY SP.TENSP
ORDER BY SUM(CTHD.SOLUONGBAN) DESC
FETCH FIRST 1 ROWS ONLY;
DBMS_OUTPUT.PUT_LINE('SAN PHAM BAN CHAY NHAT TRONG THANG ' ||
V_THANG || '/' || V_NAM || ' LA ' || V_SANPHAMBANCHAY || ' VOI SO
LUONG BAN RA LA ' || V_SOLUONGBAN);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('KHONG CO DU LIEU CHO THANG ' || V_THANG
|| '/' || V_NAM);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('CO LOI XAY RA.');
END;
Kết quả:
Hình 20. Kết quả của câu truy vấn khi tìm sản phẩm bán chạy nhất trong tháng và
số lượng sản phẩm đó bán được trong tháng đấy (khi sản phẩm nhập vào là sản phẩm
bán chạy nhất trong tháng)
23
Hình 21. Kết quả của câu truy vấn khi tìm sản phẩm bán chạy nhất trong tháng và
số lượng sản phẩm đó bán được trong tháng đấy (khi tháng đó không bán được sản
phẩm)
Hình 22. Kết quả của câu truy vấn khi nhập sai định dạng tháng năm
3.4. Thống kê những sản phẩm được nhập hàng trong ngày
DECLARE
V_NGAY DATE;
V_MASP HOADONNHAP.MASP%TYPE;
V_TENSP SANPHAM.TENSP%TYPE;
V_SOLUONGNHAP HOADONNHAP.SOLUONGNHAP%TYPE;
V_CONHAPHANG NUMBER := 0;
BEGIN
V_NGAY := TO_DATE('&NHAPNGAY', 'DD/MM/YYYY');
DBMS_OUTPUT.PUT_LINE('THONG TIN NHAP HANG VAO NGAY ' ||
TO_CHAR(V_NGAY, 'DD/MM/YYYY') || ':');
FOR BANGHI IN (
SELECT HDN.MASP, SP.TENSP, HDN.SOLUONGNHAP
FROM HOADONNHAP HDN
JOIN SANPHAM SP ON HDN.MASP = SP.MASP
WHERE TRUNC(HDN.NGAYLAPHDN) = TRUNC(V_NGAY)
) LOOP
V_MASP := BANGHI.MASP;
V_TENSP := BANGHI.TENSP;
V_SOLUONGNHAP := BANGHI.SOLUONGNHAP;
DBMS_OUTPUT.PUT_LINE('MA SAN PHAM: ' || V_MASP || ' - TEN SAN
PHAM: ' || V_TENSP || ' - SO LUONG NHAP: ' || V_SOLUONGNHAP);
V_CONHAPHANG := V_CONHAPHANG + 1;
END LOOP;
IF V_CONHAPHANG = 0 THEN
DBMS_OUTPUT.PUT_LINE('KHONG CO DU LIEU NHAP HANG VAO NGAY '
|| TO_CHAR(V_NGAY, 'DD/MM/YYYY'));
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('CO LOI XAY RA.');
END;
24
Kết quả:
Hình 23. Kết quả của câu truy vấn thống kê những sản phẩm được nhập trong ngày
(Khi sản phẩm được nhập trong ngày)
Hình 24. Kết quả của câu truy vấn thống kê những sản phẩm được nhập trong ngày
(Khi sản phẩm không được nhập trong ngày)
Hình 25. Kết quả của câu truy vấn khi nhập sai định dạng ngày
Hình 26. Kết quả của câu truy vấn báo cáo doanh thu hàng tháng (khi tháng đó
bán được hàng)
Hình 27. Kết quả của câu truy vấn báo cáo doanh thu hàng tháng (khi tháng đó
không bán được hàng)
Hình 28. Kết quả của câu truy vấn khi nhập sai định dạng tháng, năm
3.6. Thống kê các hóa đơn do nhân viên đảm nhận trong một khoảng thời
gian nhất định
DECLARE
V_MANV NVARCHAR2(10);
V_TUNGAY DATE;
V_DENNGAY DATE;
CURSOR C_HOADON IS
SELECT *
FROM HOADONBAN
WHERE MANV = V_MANV
AND NGAYLAPHDB BETWEEN V_TUNGAY AND V_DENNGAY;
V_HOADON HOADONBAN%ROWTYPE;
V_COHOADON NUMBER := 0;
BEGIN
26
V_MANV := '&NHAPMANHANVIEN';
V_TUNGAY := TO_DATE('&NHAPTUNGAY', 'DD/MM/YYYY');
V_DENNGAY := TO_DATE('&NHAPDENNGAY', 'DD/MM/YYYY');
DBMS_OUTPUT.PUT_LINE('THONG TIN VE CAC HOA DON DO NHAN VIEN CO MA
' || V_MANV || ' DAM NHAN TU NGAY ' || TO_CHAR(V_TUNGAY,
'DD/MM/YYYY') || ' DEN NGAY ' || TO_CHAR(V_DENNGAY, 'DD/MM/YYYY') ||
':');
OPEN C_HOADON;
LOOP
FETCH C_HOADON INTO V_HOADON;
EXIT WHEN C_HOADON%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('MA HOA DON: ' || V_HOADON.MAHD || ' -
NGAY LAP HOA DON: ' || TO_CHAR(V_HOADON.NGAYLAPHDB, 'DD/MM/YYYY') ||
' - TONG SO SAN PHAM: ' || V_HOADON.TONGSPB || ' - TONG TIEN: ' ||
V_HOADON.TONGTIEN);
V_COHOADON := V_COHOADON + 1;
END LOOP;
IF V_COHOADON = 0 THEN
DBMS_OUTPUT.PUT_LINE('NHAN VIEN KHONG DAM NHAN HOA DON
NAO.');
ELSE
DBMS_OUTPUT.PUT_LINE('TONG SO HOA DON: ' || V_COHOADON);
END IF;
CLOSE C_HOADON;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('DA CO LOI XAY RA.');
END;
Kết quả:
Hình 29. Kết quả của câu truy vấn thống kê các hóa đơn do nhân viên đảm nhận
trong một thời gian nhất định (Nhân viên đó đảm nhận hóa đơn)
27
Hình 30. Kết quả của câu truy vấn thống kê các hóa đơn do nhân viên đảm nhận
trong một thời gian nhất định (Nhân viên đó không đảm nhận hóa đơn)
Hình 31. Kết quả của câu truy vấn khi nhập sai định dạng ngày
3.7. Kiểm tra sản phẩm có đủ số lượng tồn trong kho để bán
DECLARE
V_MASP SANPHAM.MASP%TYPE;
V_SOLUONGTON SANPHAM.SOLUONGTON%TYPE;
V_SOLUONGBAN CHITIETHOADON.SOLUONGBAN%TYPE;
V_FLAG NUMBER := 0;
V_MESS NVARCHAR2(4000);
BEGIN
FOR BANGHI IN (SELECT MASP FROM SANPHAM) LOOP
V_MASP := BANGHI.MASP;
SELECT SOLUONGTON INTO V_SOLUONGTON
FROM SANPHAM
WHERE MASP = V_MASP;
SELECT COALESCE(SUM(SOLUONGBAN), 0) INTO V_SOLUONGBAN
FROM CHITIETHOADON
WHERE MASP = V_MASP;
IF (V_SOLUONGTON <= V_SOLUONGBAN) THEN
V_FLAG := 1;
V_MESS := V_MESS || 'SAN PHAM CO MA LA ' || V_MASP || '
KHONG DU SO LUONG DE BAN. ' || CHR(10);
ELSE
V_MESS := V_MESS || 'SAN PHAM CO MA LA ' || V_MASP || '
DU SO LUONG DE BAN. ' || CHR(10);
END IF;
END LOOP;
IF (V_FLAG = 1) THEN
DBMS_OUTPUT.PUT_LINE(V_MESS);
ELSE
DBMS_OUTPUT.PUT_LINE('TAT CA CAC SAN PHAM DEU DU SO LUONG DE
BAN.');
END IF;
END;
Kết quả:
28
Hình 32. Kết quả của câu truy vấn để kiểm tra sản phẩm có đủ số lượng tồn trong
kho để bán (trong kho còn hàng tồn để bán)
3.8. Nhập mã sản phẩm và cho biết tỷ lệ bán ra được của sản phẩm đó
DECLARE
V_MASP SANPHAM.MASP%TYPE;
V_TONGSOLUONG NUMBER;
V_SOLUONGBAN NUMBER;
V_PHANTRAM NUMBER := 0;
BEGIN
V_MASP := '&NHAPMASP';
SELECT NVL(SUM(SOLUONGBAN), 0) INTO V_SOLUONGBAN FROM
CHITIETHOADON WHERE MASP = V_MASP;
SELECT NVL(SUM(SOLUONGTON), 0) INTO V_TONGSOLUONG FROM SANPHAM
WHERE MASP = V_MASP;
IF V_TONGSOLUONG IS NOT NULL AND V_TONGSOLUONG > 0 THEN
V_PHANTRAM := ROUND((V_SOLUONGBAN / V_TONGSOLUONG) * 100, 2);
DBMS_OUTPUT.PUT_LINE('SAN PHAM CO MA LA ' || V_MASP || ' BAN
DUOC ' || V_PHANTRAM || '%');
ELSE
DBMS_OUTPUT.PUT_LINE('KHONG TIM THAY THONG TIN VE SAN PHAM CO
MA LA ' || V_MASP);
END IF;
END;
Kết quả:
Hình 33. Kết quả truy vấn khi nhập mã sản phẩm và cho biết tỷ lệ bán ra được của
sản phẩm đó (khi sản phẩm có trong hệ thống)
29
Hình 34. Kết quả truy vấn khi nhập mã sản phẩm và cho biết tỷ lệ bán ra được của
sản phẩm đó (khi sản phẩm có trong hệ thống và chưa bán được)
Hình 35. Kết quả truy vấn khi nhập mã sản phẩm và cho biết tỷ lệ bán ra được của
sản phẩm đó (khi sản phẩm không có trong hệ thống)
3.9. Hiển thị những sản phẩm có tổng số lượng bán được trong ngày nhiều
hơn một số lượng cụ thể
DECLARE
V_SOLUONG NUMBER := &NHAPSOLUONG;
V_FLAG NUMBER := 0;
CURSOR C_TONGSLB IS
SELECT HDB.NGAYLAPHDB, CTHD.MASP, SP.TENSP,
SUM(CTHD.SOLUONGBAN) AS TONGSOLUONGBAN
FROM HOADONBAN HDB
JOIN CHITIETHOADON CTHD ON HDB.MAHD = CTHD.MAHD
JOIN SANPHAM SP ON CTHD.MASP = SP.MASP
GROUP BY HDB.NGAYLAPHDB, CTHD.MASP, SP.TENSP
HAVING SUM(CTHD.SOLUONGBAN) > V_SOLUONG;
BEGIN
DBMS_OUTPUT.PUT_LINE('THONG TIN VE NHUNG SAN PHAM CO TONG
SO LUONG BAN TRONG NGAY LON HON ' || V_SOLUONG || ':');
FOR BANGHI IN C_TONGSLB LOOP
V_FLAG := 1;
DBMS_OUTPUT.PUT_LINE('MA SAN PHAM: ' || BANGHI.MASP ||
' - TEN SAN PHAM: ' || BANGHI.TENSP || ' - NGAY BAN: ' ||
TO_CHAR(BANGHI.NGAYLAPHDB, 'DD/MM/YYYY') || ' - TONG SO LUONG
BAN: ' || BANGHI.TONGSOLUONGBAN);
END LOOP;
IF V_FLAG = 0 THEN
30
DBMS_OUTPUT.PUT_LINE('KHONG CO SAN PHAM NAO CO TONG SO
LUONG BAN TRONG NGAY LON HON ' || V_SOLUONG);
END IF;
END;
Kết quả:
Hình 36. Kết quả của câu truy vấn của sản phẩm bán trong ngày nhiều hơn một số
cụ thế (khi sản phẩm bán trong ngày nhiều hơn một số cụ thể)
Hình 37. Kết quả của câu truy vấn của sản phẩm bán trong ngày nhiều hơn một số
cụ thế (khi sản phẩm bán trong ngày không nhiều hơn một số cụ thể)
3.10. Nhập mã khách hàng và cho biết tổng số tiền mà khách hàng đã mua tại
cửa hàng
DECLARE
v_MaKhachHang KhachHang.MaKH%TYPE := '&NhapMaKH';
v_TongTien NUMBER;
BEGIN
SELECT NVL(SUM(TongTien), 0)
INTO v_TongTien
FROM HoaDonBan
WHERE MaKH = v_MaKhachHang;
IF v_TongTien > 0 THEN
DBMS_OUTPUT.PUT_LINE('Tong so tien ma khach hang ' ||
v_MaKhachHang || ' da mua la: ' || v_TongTien);
ELSE
DBMS_OUTPUT.PUT_LINE('Khong tim thay thong tin ve tong so
tien ma khach hang co ma ' || v_MaKhachHang || ' da mua.');
END IF;
END;
Kết quả:
31
Hình 38. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết tổng số
tiền mà khách hàng đã mua tại cửa hàng (khi khách hàng đã mua sản phẩm tại cửa
hàng)
Hình 39. Kết quả của câu truy vấn khi nhập mã khách hàng và cho biết tổng số tiền
mà khách hàng đã mua tại cửa hàng (khi khách hàng chưa mua sản phẩm tại cửa hàng)
Quản lý Dữ Liệu:
Có quyền truy cập và quản lý toàn bộ cơ sở dữ liệu của cửa hàng bán giày.
Thực hiện các thao tác như thêm, sửa, xóa dữ liệu để duy trì thông tin cập nhật.
Câu lệnh
CREATE USER QUANLY IDENTIFIED BY "HQT";
GRANT CONNECT,RESOURCE,DBA TO QUANLY;
32
ALTER USER QUANLY QUOTA UNLIMITED ON MYSPACE1;
ALTER USER QUANLY QUOTA UNLIMITED ON MYSPACE2;
ALTER USER QUANLY
DEFAULT TABLESPACE USERS;
ALTER USER QUANLY
TEMPORARY TABLESPACE TEMP;
GRANT UNLIMITED TABLESPACE TO QUANLY;
b. Nhân viên
• Trong hệ thống quản lý cơ sở dữ liệu của cửa hàng, có thể xác định các vai trò
cụ thể và chức năng của Nhân viên như sau:
• Thực hiện việc nhập, sửa, cập nhật thông tin khách hàng.
• Quản lý tồn kho: Theo dõi và cập nhật thông tin về tồn kho để đảm bảo sự
chính xác và đủ hàng cho việc bán.
• Bán hàng: Thực hiện giao dịch bán hàng, nhập thông tin hóa đơn và thanh toán
từ khách hàng.
• Tìm kiếm và xem dữ liệu: Tìm kiếm thông tin về sản phẩm, đơn hàng, khách
hàng để cung cấp hỗ trợ và thông tin cho khách hàng.
Câu lệnh
33
Bảng NHANVIEN
Quản lý: Thêm, sửa, xóa
Nhân viên: Xem
Bảng CHUCVU
Quản lý: Thêm, sửa, xóa
Nhân viên: Xem
Bảng SANPHAM
Quản lý: Thêm, sửa, xóa
Nhân viên: Xem
Bảng DONGSANPHAM
Quản lý: Thêm, sửa, xóa
Nhân viên: Xem
Bảng NHACUNGCAP
Quản lý: Thêm, sửa, xóa
Nhân viên: Xem
Bảng HOADONNHAP
Quản lý: Thêm, sửa, xóa
Nhân viên: Thêm, sửa, xóa
Bảng HOADONBAN
Quản lý: Thêm, sửa, xóa
Nhân viên: Thêm, sửa, xóa
Bảng CHITIETHOADON
Quản lý: Thêm, sửa, xóa
Nhân viên: Thêm, sửa, xóa
34
b. Sử Dụng Enterprise Manager (EM):
Ưu điểm:
EM cung cấp giao diện đồ họa dễ sử dụng để quản lý sao lưu.
Cung cấp khả năng lên lịch hóa và giám sát các hoạt động sao lưu.
Cách tiến hành:
Mở EM và chọn "Database" -> "Backup & Recovery" để sử dụng giao
diện đồ họa thân thiện cho việc sao lưu và phục hồi.
c. Sử Dụng SQL*Plus:
Ưu điểm:
SQL*Plus là công cụ dòng lệnh của Oracle, hỗ trợ các lệnh SQL cũng
như các lệnh quản lý hệ thống.
Cách tiến hành:
Sử dụng lệnh SQL*Plus để kết nối vào cơ sở dữ liệu và sử dụng lệnh
SQL CREATE DATABASE LINK để tạo link đến một cơ sở dữ liệu
khác, sau đó sử dụng lệnh CREATE TABLE AS SELECT để tạo bản
sao lưu của các bảng cần sao lưu.
Trong đề tài này, nhóm quyết định sử dụng RMAN để thực hiện sao lưu dữ liệu
vì đây là một công cụ tích hợp của Oracle Database, cung cấp khả năng thực hiện
35
sao lưu đầy đủ, sao lưu tăng cường, và sao lưu phục hồi. Nó đơn giản hóa đáng kể
việc sao lưu, khôi phục và phục hồi cơ sở dữ liệu.
g. Chế độ backup:
Cold/Consistent (nguội): Cold backup được thực hiện khi cơ sở dữ liệu
đang ở trạng thái "nguội" hoặc đã bị đóng. Tại thời điểm này, không có
giao dịch hoặc thay đổi dữ liệu nào đang diễn ra.
Hot/Inconsistent (nóng): Hot backup được thực hiện khi cơ sở dữ liệu
đang ở trạng thái "nóng" hoặc đang hoạt động, mở.
Nhóm chọn cold backup vì việc sao lưu nguội thường dễ dàng hơn để quản lý
quá trình sao lưu và phục hồi. Đối với các bản sao lưu nguội, cơ sở dữ liệu không
yêu cầu ở chế độ nhật ký lưu trữ và do đó sẽ có mức tăng hiệu suất nhỏ vì cơ sở dữ
liệu không cắt nhật ký lưu trữ vào đĩa.
36
B2 : Chuyển sang Command Prompt
B3 : Gõ câu lệnh rman target / ;
B4 : Kiểm tra và xác nhận các thiết lập backup SHOW ALL;
B5 : Câu lệnh sao lưu toàn bộ dữ liệu BACKUP DATABASE;
37
B6 : Lưu các file đã backup vào Folder cụ thể : RUN { BACKUP
DATABASE FORMAT 'D:\backup\%U'; }
(%U trong mẫu tên tệp thường được sử dụng để tạo ra các tên tệp duy nhất và
đảm bảo tính chất không trùng lặp giữa các bản sao lưu.)
B7 : Kiểm tra các tập tin sao lưu đã tạo và xác nhận backup: LIST BACKUP;
38
5.2. Phục hồi dữ liệu (Recovery)
Trong quá trình sử dụng, database có thể xuất hiện những lỗi như sau:
Statement Failure (Lỗi Câu Lệnh): Xảy ra khi một câu lệnh SQL không thể thực
hiện đúng cách, chẳng hạn như cú pháp SQL sai hoặc tham chiếu đến một đối
tượng không tồn tại.
User Process Failure (Lỗi Quy Trình Người Sử Dụng): Một quy trình của người
sử dụng không thể hoạt động đúng cách, chẳng hạn như lỗi kết nối hoặc lỗi ứng
dụng.
Network Failure (Lỗi Mạng): Xảy ra khi có sự cố với mạng kết nối giữa người sử
dụng và cơ sở dữ liệu.
User or Application Error (Lỗi Người Sử Dụng hoặc Ứng Dụng): Lỗi xảy ra do
người sử dụng hoặc lỗi trong ứng dụng.
Instance Failure (Lỗi Thực Thể): Là lỗi xảy ra khi một instance của cơ sở dữ liệu
không thể hoạt động đúng cách.
Media Failure (Lỗi Phương Tiện): Lỗi xảy ra khi các phương tiện lưu trữ (đĩa
cứng, băng từ, vv.) gặp sự cố.
Nguyên nhân gây ra lỗi có thể là mất control file, data file hoặc một nhóm redolog, ... Dưới
đây là cách khắc phục khi bị mất control file và data file.
B1 : Sử dụng RMAN để kiểm tra xem có bản sao lưu control file tự động nào
không RMAN> LIST BACKUP OF CONTROLFILE;
39
B2 : Khởi động database và mount : RMAN> STARTUP FORCE NOMOUNT;
B3 : Sử dụng lệnh RESTORE để khôi phục control file từ bản sao lưu : RMAN>
RESTORE CONTROLFILE FROM AUTOBACKUP;
B4 : Mount lại database sau khi control file đã được khôi phục và mở nó :
RMAN> ALTER DATABASE MOUNT;
RMAN> ALTER DATABASE OPEN RESETLOGS;
b. Khắc phục khi mất data file (Khôi phục từ bản sao lưu)
40
B2 : Thực hiện quá trình phục hồi: RMAN> RECOVER DATABASE;
41
B3 : Mở cơ sở dữ liệu và cập nhật: RMAN> ALTER DATABASE OPEN
RESETLOGS;
B4: Thoát RMAN : EXIT;
(1) Backup toàn bộ CSDL
42
(2) Hoàn tất backup ta sẽ được các file:
43
RMAN → startup nomount;
(2) Khôi phục lại control file bằng cách copy control file đã backup RMAN
44
(2) Phục hồi lại toàn bộ database, bao gồm: data file, control file RMAN →
45
III. KẾT LUẬN
1. Ưu điểm
Bài làm của nhóm về cơ bản đã xây dựng được cơ sở dữ liệu phục vụ cho công
việc quản lý trong lĩnh vực bán hàng.
• Thông tin được lưu trữ có hệ thống: liên kết giữa các bảng được đơn giản hóa và
tối ưu, giúp công việc tạo lập, lưu trữ, truy xuất được thực hiện chính xác, nhanh
chóng.
• Đảm bảo an toàn dữ liệu: dữ liệu được phân vùng cụ thể, cấp quyền và nhóm
quyền cho các đối tượng người dùng khác nhau. Ngoài ra, nhóm đã có phương án
sao lưu, phục hồi dữ liệu cụ thể, đảm bảo dữ liệu được lưu trữ trong thời gian dài.
• Dữ liệu có tính thực tế: các dữ liệu được nêu trong bài là kết quả của quá trình tìm
hiểu, chắt lọc với tính chính xác cao của nhóm. Các truy vấn và thao tác nghiệp vụ
cũng là những thông số, thông tin được đa số người xem quan tâm.
2. Nhược điểm
Ngoài những ưu điểm đạt được, bài làm vẫn còn nhiều thiếu sót do đây là lần đầu
nhóm cùng nhau tự thực hiện xây dựng một cơ sở dữ liệu về lĩnh vực khá mới, tài
liệu tham khảo còn hạn chế.
• Lĩnh vực bán hàng còn nhiều mảng nội dung có thể khai thác, tìm hiểu (quảng
cáo,...). Nhưng trong khuôn khổ bài tập lớn, nhóm chưa thể truyền tải đầy đủ đến
cô cũng như các bạn về lĩnh vực đầy tiềm năng này.
• Chưa đưa ra được cách phục hồi các trường hợp phức tạp hơn
46
TÀI LIỆU THAM KHẢO
December 2023.
47