You are on page 1of 70

HỌC VIỆN NGÂN HÀNG

KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ

BÁO CÁO BÀI TẬP LỚN


HỌC PHẦN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

ĐỀ 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

STT HỌ VÀ TÊN MÃ SINH VIÊN

1 VŨ LÝ NGỌC 24A4040452

2 HÀ TRỌNG CƯỜNG 24A4042429

3 ĐỖ THỊ HỒNG 24A4043046

4 TRẦN THU TRANG 24A4040430

5 PHẠM BẢO KHÁNH 23A4040058

Hà Nội, tháng 12 năm 2023


LỜI CẢM ƠN

Để 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.

Nhóm 13 xin chân thành cảm ơn!

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

Họ và tên Mã sinh viên Tỉ lệ đóng góp Chữ Ký

Vũ Lý Ngọc 24A4040452 21%

Hà Trọng Cường 24A4042429 20%

Đỗ Thị Hồng 24A4043046 21%

Trần Thu Trang 24A4040430 20%

Phạm Bảo Khánh 23A4040058 18%

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:

Ngọc Hồng Trang Khánh Cường


Giai Lập được Lập được kế Đọc và tìm Đọc và tìm Đọc và tìm hiểu
đoạn 1 kế hoạch hoạch thực hiểu về bài hiểu về bài về bài toán
(5/11- thực hiện hiện dự án. toán toán
15/11) dự án. Đọc và tìm
Đọc và tìm hiểu về bài
hiểu về bài toán
toán
Thiết kế
được cơ sở
dữ liệu cho
bài toán ở
mức khái
niệm

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

1 Phát Ngọc 16/11- 16/11- 100% Mô tả Đã đưa ra Hoàn


biểu
2 bài 25/11 25/11 bài được các thành và
toán, toán lý do, đúng tiến
lý do
chọn tính cấp độ dự án
bài thiết
vii
toán, đúng với
tính
cấp yêu cầu
thiết. thực hiện

1 Phân Khánh 16/11- 16/11- 100% Phân Đã phân Hoàn


tích
3 yêu 25/11 25/11 tích tích được thành và
cầu bài yêu những đúng tiến
toán
cầu bài yêu cầu độ dự án
toán của bài
toán quản
lý giày
dép như
ai dùng
hệ thống,
chúng
quản lý
những
gì…

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ý.

1 Định Trang 26/11- 26/11- 100% CSDL Đã xây Hoàn


nghĩa
5 được 4/12 4/12 trên dựng, tạo thành và
cơ sở oracle chèn dữ đúng tiến
dữ liệu
cho liệu cho độ dự án
bài cơ sở dữ
ix
toán liệu
trên
Oracle
1 Đề Hồng 5/12- 5/12- 100% Truy Đưa ra Hoàn
xuất
6 và giải 15/12 15/12 van được các thành và
quyết SQL đề xuất đúng tiến
được
các và thực độ dự án
yêu hiện
cầu
truy được các
vấn, câu truy
thao
tác dữ vấn đã
liệu, chạy và
truy
xuất ra kết quả
dữ liệu trên
bằng
SQL. SQLdeve
loper

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

1 Tạo và Trang 5/12- 5/12- 100% tạo và Đã tạo Hoàn


quản
8 lý 15/12 15/12 quản lý được tài thành và
người người khoản và đúng tiến
dùng
tạo tài dùng phân chia độ dự án
khoản; được các
người
dùng; quyền
nhóm cho từng
quyền;
phân đối tượng
quyền,
xi
phân
nhóm
quyền

1 Đề Khánh 5/12- 5/12- 100% Sao Đưa ra Hoàn


xuất
9 chiến 15/12 15/12 lưu dữ được các thành và
lược liệu và chiến đúng tiến

thực phục lược độ dự án
hiện hồi nhưng
nhiệm
vụ sao chưa thực
lưu/ hiện
phục
hồi dữ được
liệu nhiệm vụ
sao lưu
với dữ
liệu của
bài toán
sau đó đã
sưa và bổ
sung

1 Làm Ngọc 16/12- 16/12- 100% Word Hoàn


Word
10 và 22/12 22/12 trình bày thành và
Slide sạch đẹp, đúng tiến
văn độ dự án
phong
khoa học.

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

2. Hình ảnh làm việc trên GoogleMeet

3. Hình ảnh làm việc trên Zalo

xiv
xv
MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

KẾ HOẠCH THỰC HIỆN DỰ ÁN iv

1. Xác Định Mục Tiêu Dự Án iv

2. Triển khai dự án iv

KIỂM SOÁT TIẾN ĐỘ DỰ ÁN VÀ CHẤT LƯỢNG SẢN PHẨM vii

1. Hình ảnh làm việc trên GoogleDocs xiv

2. Hình ảnh làm việc trên GoogleMeet xiv

3. Hình ảnh làm việc trên Zalo xiv

I. MÔ TẢ BÀI TOÁN 1

1. Phát biểu bài toán 1

2. Lý do chọn đề tài 1

3. Phân tích yêu cầu bài toán 2

4. Sơ đồ thực thể liên kết 4

5. Sơ đồ quan hệ 5

II. TRIỂN KHAI BÀI TOÁN 5

xvi
1. Tạo cơ sở dữ liệu 5

1.1. Tạo bảng 5

1.2. Nhập dữ liệu 7

1.3. Tablespace 14

2. Thực hiện yêu cầu truy vấn 15

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.7. Các khách hàng mua nhiều sản phẩm nhất 18

2.8. Thống kê các sản phẩm chưa bán được 19

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.5. Báo cáo doanh thu bán hàng trong tháng 25

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

4. Thực hiện quản trị cơ sở dữ liệu 32

4.1. Quản lý người dùng 32

xviii
4.2. Phân quyền 33

5. Sao lưu dữ liệu (Backup) 34

5.1. Các cách sao lưu cơ sở dữ liệu: 34

5.2. Phục hồi dữ liệu (Recovery) 39

5.3. Phục hồi (recovery) 43

III. KẾT LUẬN 46

1. Ưu điểm 46

2. Nhược điểm 46

TÀI LIỆU THAM KHẢO 47

xix
DANH MỤC HÌNH ẢNH

Hình 1. Biểu đồ ERM 5


Hình 2. Sơ đồ quan hệ 5
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 16
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 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 17
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 17
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 18
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
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 19
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 19
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’ 19
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á 20
Hình 13. Có 3 dòng được cập nhật 20
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á 20

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ệ

II. TRIỂN KHAI BÀI TOÁN


1. Tạo cơ sở dữ liệu
1.1. Tạo bảng
CREATE TABLE CHUCVU
(
MACV NVARCHAR2(10)
CONSTRAINT CV_PK PRIMARY KEY,
TENCV NVARCHAR2(30)
);
5
CREATE TABLE DONGSANPHAM
(
MADONG NVARCHAR2(10)
CONSTRAINT DSP_PK PRIMARY KEY,
TENDONG NVARCHAR2(30)
);

CREATE TABLE KHACHHANG


(
MAKH NVARCHAR2(10)
CONSTRAINT KH_PK PRIMARY KEY,
TENKH NVARCHAR2(30) ,
SDTKH NVARCHAR2(10) ,
DIACHIKH NVARCHAR2(30)
);

CREATE TABLE NHACUNGCAP


(
MANCC NVARCHAR2(10)
CONSTRAINT NCC_PK PRIMARY KEY,
TENNCC NVARCHAR2(30) ,
DIACHINCC NVARCHAR2(30) ,
SDTNCC NVARCHAR2(10)
);

CREATE TABLE NHANVIEN


(
MANV NVARCHAR2(10)
CONSTRAINT NV_PK PRIMARY KEY,
MACV NVARCHAR2(10),
TENNV NVARCHAR2(30) NOT NULL,
GIOITINH NVARCHAR2(4) NOT NULL,
NGAYSINH DATE NOT NULL,
SDTNV NVARCHAR2(10) NOT NULL,
DIACHINV NVARCHAR2(30) NOT NULL,
CONSTRAINT NV_FK FOREIGN KEY (MACV) REFERENCES CHUCVU(MACV)
);

CREATE TABLE HOADONBAN


(
MAHD NVARCHAR2(10)
CONSTRAINT HD_PK PRIMARY KEY,
MANV NVARCHAR2(10),
MAKH NVARCHAR2(10),
6
NGAYLAPHDB DATE,
TONGSPB NUMBER,
TONGTIEN NUMBER ,
CONSTRAINT HD_FK1 FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV),
CONSTRAINT HD_FK2 FOREIGN KEY (MAKH) REFERENCES KHACHHANG(MAKH)
);

CREATE TABLE SANPHAM


(
MASP NVARCHAR2(10)
CONSTRAINT SP_PK PRIMARY KEY,
MADONG NVARCHAR2(10),
MANCC NVARCHAR2(10),
TENSP NVARCHAR2(30) ,
CHATLIEU NVARCHAR2(30) ,
MAU NVARCHAR2(20),
SIZESP NUMBER ,
SOLUONGTON NUMBER ,
THELOAI NVARCHAR2(20),
CONSTRAINT SP_FK1 FOREIGN KEY (MADONG) REFERENCES DONGSANPHAM(MADONG),
CONSTRAINT SP_FK2 FOREIGN KEY (MANCC) REFERENCES NHACUNGCAP(MANCC)
);

CREATE TABLE CHITIETHOADON


(
MAHD NVARCHAR2(10),
MASP NVARCHAR2(10),
SOLUONGBAN NUMBER,
GIABAN NUMBER,
GIAMGIA NUMBER,
CONSTRAINT CT_FK1 FOREIGN KEY (MAHD) REFERENCES HOADONBAN(MAHD),
CONSTRAINT CT_FK2 FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP)
);

CREATE TABLE HOADONNHAP


(
MASP NVARCHAR2(10),
MANCC NVARCHAR2(10),
DONGIA NUMBER,
SOLUONGNHAP NUMBER,
NGAYLAPHDN DATE,
CONSTRAINT HDN_FK1 FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP),
CONSTRAINT HDN_FK2 FOREIGN KEY (MANCC) REFERENCES NHACUNGCAP(MANCC)

);

7
1.2. Nhập dữ liệu
--BANG CHUC VU
INSERT INTO CHUCVU(MACV, TENCV)
VALUES('CV01', 'QUAN LY');

INSERT INTO CHUCVU(MACV, TENCV)


VALUES('CV02', 'NHAN VIEN BAN HANG');

INSERT INTO CHUCVU(MACV, TENCV)


VALUES('CV03', 'KE TOAN');

INSERT INTO CHUCVU(MACV, TENCV)


VALUES('CV04', 'NHAN VIEN MARKETING');

INSERT INTO CHUCVU(MACV, TENCV)


VALUES('CV05', 'NHAN VIEN DONG HANG');

--BANG DONG SAN PHAM


INSERT INTO DONGSANPHAM(MADONG, TENDONG)
VALUES('D01', 'ADIDAS');

INSERT INTO DONGSANPHAM(MADONG, TENDONG)


VALUES('D02', 'NIKE');

INSERT INTO DONGSANPHAM(MADONG, TENDONG)


VALUES('D03', 'MLB');

INSERT INTO DONGSANPHAM(MADONG, TENDONG)


VALUES('D04', 'CONVERSE');

INSERT INTO DONGSANPHAM(MADONG, TENDONG)


VALUES('D05', 'BITI"S');

INSERT INTO DONGSANPHAM(MADONG, TENDONG)


VALUES('D06', 'BALENCIAGA');

INSERT INTO DONGSANPHAM(MADONG, TENDONG)


VALUES('D07', 'PUMA');

--BANG KHACH HANG


INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)
VALUES('KH001', 'DO THI HONG', 0311752463, 'THAI BINH' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH004', 'TRAN THUY LINH', 0311876452, 'HA NOI' );
8
INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)
VALUES('KH002', 'TRAN THU TRANG', 0336782672, 'THAI NGUYEN' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH003', 'VU LY NGOC', 0352678286, 'HA GIANG' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH005', 'NGUYEN THI THUY', 0811798463, 'HA NOI' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH006', 'TRAN VAN DAI', 0389669679, 'HA NOI' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH007', 'NGUYEN VAN SANG', 0385356143, 'HA NOI' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH008', 'NGUYEN THI HOA', 0392427654, 'NAM DINH' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH009', 'DUONG TRUNG DUC', 0862452768, 'HA NOI' );

INSERT INTO KHACHHANG(MAKH, TENKH, SDTKH, DIACHIKH)


VALUES('KH010', 'NGUYEN VAN LONG', 0388761143, 'HA NOI' );

--BANG NHA CUNG CAP


INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)
VALUES('NCC01', 'BQ', 'DA NANG', 0905457252 );

INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)


VALUES('NCC02', 'VINA GIAY', 'TP. HCM', 0287306562 );

INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)


VALUES('NCC03', 'EVASHOES', 'HA NOI', 0437932702 );

INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)


VALUES('NCC04', 'GIAY THUONG DINH', 'HA NOI', 0919843252 );

INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)


VALUES('NCC05', 'VINACONEX 21', 'HA NOI', 0385678548 );

INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)


VALUES('NCC06', 'SHOEPASSION VIETNAM', 'HA NOI', 0389127252 );

INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)


VALUES('NCC07', 'DONG HUNG GROUP', 'TP. HCM', 0388452569 );
9
INSERT INTO NHACUNGCAP(MANCC, TENNCC, DIACHINCC, SDTNCC)
VALUES('NCC08', 'BITIS', 'HA NOI', 0982378990 );

--BANG NHAN VIEN


INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,
DIACHINV)
VALUES('NV001', 'CV01', 'LE TUNG LAM', ' NAM',
TO_DATE('20/10/2002', 'DD/MM/YYYY'), 0365875643, 'HA DONG-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV002', 'CV02', 'NGUYEN PHUONG HUYEN', ' NU',
TO_DATE('20/12/2003', 'DD/MM/YYYY'), 0382554643, 'BA DINH-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV003', 'CV03', 'HOANG THANH TU', ' NAM',
TO_DATE('03/06/2000', 'DD/MM/YYYY'), 0388926775, 'DONG DA-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV004', 'CV04', 'DUONG THU DUYEN', ' NU',
TO_DATE('22/11/1998', 'DD/MM/YYYY'), 0365854743, 'TAY HO-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV005', 'CV05', 'NGUYEN DOAN SANG', ' NAM',
TO_DATE('18/10/2001', 'DD/MM/YYYY'), 0365875643, 'THANH TRI-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV006', 'CV02', 'TRAN THU HA', ' NU',
TO_DATE('20/10/1999', 'DD/MM/YYYY'), 0365467625, 'CAU GIAY-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV007', 'CV02', 'NGUYEN VAN AN', ' NAM',
TO_DATE('20/02/1997', 'DD/MM/YYYY'), 0964537282, 'HA DONG-HA NOI');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV008', 'CV04', 'MA THI HAI', ' NU',
TO_DATE('10/01/2003', 'DD/MM/YYYY'), 0846235631, 'DONG ANH-HA NOI');

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');

INSERT INTO NHANVIEN(MANV, MACV, TENNV, GIOITINH, NGAYSINH, SDTNV,


DIACHINV)
VALUES('NV010', 'CV02', 'NGUYEN VAN QUAN', ' NAM',
TO_DATE('07/02/1999', 'DD/MM/YYYY'), 0362535643, 'BA VI-HA NOI');

--BANG HOA DON BAN


INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)
VALUES('HD001', 'NV002', 'KH005', TO_DATE('11/12/2023',
'DD/MM/YYYY'),01, 540000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD002', 'NV006', 'KH003', TO_DATE('14/12/2023',
'DD/MM/YYYY'),01, 250000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD003', 'NV006', 'KH002', TO_DATE('15/12/2023',
'DD/MM/YYYY'),02, 1250000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD004', 'NV007', 'KH001', TO_DATE('20/12/2023',
'DD/MM/YYYY'),01, 560000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD005', 'NV002', 'KH005', TO_DATE('22/12/2023',
'DD/MM/YYYY'),01, 150000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD006', 'NV006', 'KH010', TO_DATE('25/12/2023',
'DD/MM/YYYY'),01, 1440000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD007', 'NV002', 'KH006', TO_DATE('27/12/2023',
'DD/MM/YYYY'),01, 900000);

INSERT INTO HOADONBAN(MAHD, MANV, MAKH, NGAYLAPHDB, TONGSPB, TONGTIEN)


VALUES('HD008', 'NV010', 'KH009', TO_DATE('27/12/2023',
'DD/MM/YYYY'),01, 1440000);

--BANG SAN PHAM


INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,
SIZESP, SOLUONGTON, THELOAI)
11
VALUES('SP001', 'D01', 'NCC01', 'SNEAKER', 'VAI TONG HOP' ,
'TRANG' , 38, 99, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP002', 'D01', 'NCC01', 'SNEAKER' , 'VAI TONG HOP' ,
'DEN' , 40, 98, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP003', 'D02', 'NCC02', 'SNEAKER' , 'VAI TONG HOP' ,
'XANH' , 39, 99, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP004', 'D03', 'NCC01', 'DEP CAO GOT' , 'DA' , 'NAU' ,
39, 98, 'DEP');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP005', 'D04', 'NCC04', 'GIAY BET' , 'VAI TONG HOP' ,
'TRANG' , 37, 100,'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP006', 'D05', 'NCC07', 'SNEAKER' , 'VAI TONG HOP' ,
'TRANG' , 38, 100, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP007', 'D02', 'NCC06', 'GIAY LUOI ' , 'VAI ' , 'DEN' ,
39, 100, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP008', 'D01', 'NCC05', 'GIAY CAO GOT' , 'DA NHAN
TAO' , 'HONG' , 38, 98, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)
VALUES('SP009', 'D01', 'NCC01', 'SNEAKER' , 'VAI TONG HOP' ,
'BAC' , 41, 100, 'GIAY');

INSERT INTO SANPHAM(MASP, MADONG, MANCC, TENSP, CHATLIEU, MAU,


SIZESP, SOLUONGTON, THELOAI)

12
VALUES('SP010', 'D01', 'NCC01', 'SANDAN NU' , 'DA NHAN TAO' ,
'VANG' , 38, 99, 'SANDAN');

--BANG CHI TIET HOA DON


INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)
VALUES('HD001', 'SP001', 1 ,600000 , 0.1);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD002', 'SP004', 1 ,350000 , 0);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD003', 'SP002', 1 ,1000000 , 0.1);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD003', 'SP004', 1 ,350000 , 0);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD004', 'SP003', 1 ,700000 , 0.2);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD005', 'SP010', 1 ,150000 , 0);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD006', 'SP008', 1 ,1600000 , 0.1);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD007', 'SP002', 1 ,1000000 , 0.1);

INSERT INTO CHITIETHOADON(MAHD, MASP, SOLUONGBAN, GIABAN, GIAMGIA)


VALUES('HD006', 'SP008', 1 ,1600000 , 0.1);

--BANG HOA DON NHAP


INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)
VALUES('SP001', 'NCC01',
450000,100,TO_DATE('11/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP002', 'NCC01', 450000,
100,TO_DATE('21/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP003', 'NCC02', 600000,
100,TO_DATE('10/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)

13
VALUES('SP004', 'NCC01', 300000,
100,TO_DATE('17/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP005', 'NCC04', 100000,
100,TO_DATE('18/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP006', 'NCC07', 800000,
100,TO_DATE('20/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP007', 'NCC06', 90000,
100,TO_DATE('11/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP008', 'NCC05', 700000,
100,TO_DATE('19/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP009', 'NCC01', 500000,
100,TO_DATE('13/11/2023','DD/MM/YYYY'));

INSERT INTO HOADONNHAP(MASP, MANCC, DONGIA, SOLUONGNHAP, NGAYLAPHDN)


VALUES('SP010', 'NCC01', 100000,
100,TO_DATE('12/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;

CREATE TABLESPACE MYSPACE2


DATAFILE 'D:\HQT\TABLESPACE02.DBF'
SIZE 100M
AUTOEXTEND ON NEXT 100M MAXSIZE 1024M
EXTENT MANAGEMENT LOCAL;

c. Phân vùng dữ liệu


ALTER TABLE CHUCVU MOVE TABLESPACE MYSPACE1;
ALTER TABLE NHACUNGCAP MOVE TABLESPACE MYSPACE1;
ALTER TABLE NHANVIEN MOVE TABLESPACE MYSPACE1;
ALTER TABLE SANPHAM MOVE TABLESPACE MYSPACE1;
ALTER TABLE DONGSANPHAM MOVE TABLESPACE MYSPACE1;

ALTER TABLE HOADONBAN MOVE TABLESPACE MYSPACE2;


ALTER TABLE HOADONNHAP MOVE TABLESPACE MYSPACE2;
ALTER TABLE CHITIETHOADON MOVE TABLESPACE MYSPACE2;
ALTER TABLE KHACHHANG MOVE TABLESPACE MYSPACE2;
2. Thực hiện yêu cầu truy vấn
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
SELECT B.TENNCC, B.MANCC, SUM(A.SOLUONGNHAP) AS TONG_SOLUONGNHAP
FROM HOADONNHAP A JOIN NHACUNGCAP B ON A.MANCC = B.MANCC
GROUP BY B.MANCC, B.TENNCC
ORDER BY TONG_SOLUONGNHAP DESC;

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ọ

2.7. Các khách hàng mua nhiều sản phẩm nhất


SELECT C.MAKH, C.TENKH, SUM(A.SOLUONGBAN) AS TONGSANPHAM_KHMUA
FROM CHITIETHOADON A JOIN HOADONBAN B ON A.MAHD=B.MAHD JOIN KHACHHANG
C ON B.MAKH=C.MAKH
GROUP BY C.MAKH, C.TENKH
HAVING SUM(A.SOLUONGBAN)>= ALL(SELECT SUM(SOLUONGBAN)
FROM CHITIETHOADON A JOIN HOADONBAN B ON
A.MAHD=B.MAHD

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

2.8. Thống kê các sản phẩm chưa bán được


SELECT MASP, TENSP
FROM SANPHAM
WHERE MASP NOT IN (SELECT MASP
FROM CHITIETHOADON );
Kết quả

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 13. Có 3 dòng được cập nhật

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. Thực hiện các yêu cầu nghiệp vụ

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

3.5. Báo cáo doanh thu bán hàng trong tháng


DECLARE
v_Thang NUMBER;
v_Nam NUMBER;
v_DoanhThu NUMBER;
BEGIN
v_Thang := TO_NUMBER('&NhapThang');
v_Nam := TO_NUMBER('&NhapNam');
SELECT NVL(SUM(TongTien), 0) INTO v_DoanhThu
FROM HoaDonBan
WHERE EXTRACT(MONTH FROM NgayLapHDB) = v_Thang AND EXTRACT(YEAR
FROM NgayLapHDB) = v_Nam;
IF v_DoanhThu > 0 THEN
DBMS_OUTPUT.PUT_LINE('Doanh thu ban hang trong thang ' ||
v_Thang || '/' || v_Nam || ' la: ' || v_DoanhThu);
ELSE
DBMS_OUTPUT.PUT_LINE('Khong co du lieu doanh thu ban hang
trong thang ' || v_Thang || '/' || v_Nam);
END IF;
25
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Co loi xay ra.');
END;
Kết quả:

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)

4. Thực hiện quản trị cơ sở dữ liệu


4.1. Quản lý người dùng
a. Quản lý
Trong hệ thống quản lý cơ sở dữ liệu của cửa hàng, quản lý có toàn quyền
trên cơ sở dữ liệu. Thực hiện các công việc như backup CSDL, giải quyết sự cố
nếu có vấn đề xảy ra với CSDL
Có thể xác định các vai trò cụ thể và chức năng của Quản lý như sau:

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.

Quản lý Người Dùng:


 Tạo và quản lý tài khoản người dùng trong hệ thống.
 Gán quyền truy cập và giám sát hoạt động của nhân viên trong hệ thống.

Lập Báo Cáo và Thống Kê:


• Tạo và phân tích báo cáo, thống kê về doanh số bán hàng, tồn kho, và các hoạt
động khác của cửa hàng.

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

CREATE USER NHANVIEN IDENTIFIED BY "MKNHANVIEN";


ALTER USER NHANVIEN QUOTA UNLIMITED ON MYSPACE1;
ALTER USER NHANVIEN QUOTA UNLIMITED ON MYSPACE2;
GRANT CREATE SESSION TO NHANVIEN;
GRANT CREATE VIEW TO NHANVIEN;
GRANT UNLIMITED TABLESPACE TO NHANVIEN;
GRANT SELECT ANY TABLE TO NHANVIEN;
ALTER USER NHANVIEN
DEFAULT TABLESPACE USERS;
ALTER USER NHANVIEN
TEMPORARY TABLESPACE TEMP;
GRANT SELECT, ALTER, UPDATE ON HOADONBAN TO NHANVIEN;
GRANT SELECT, ALTER, UPDATE ON HOADONNHAP TO NHANVIEN;
GRANT SELECT, ALTER, UPDATE ON CHITIETHOADON TO NHANVIEN;
GRANT SELECT, ALTER, UPDATE ON KHACHHANG TO NHANVIEN;

4.2. Phân quyền


Bảng KHACHHANG
 Quản lý: Thêm, sửa, xóa
 Nhân viên: Thêm, sửa, xóa

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

5. Sao lưu dữ liệu (Backup)


5.1. Các cách sao lưu cơ sở dữ liệu:
a. Sử Dụng RMAN (Recovery Manager):
 Ưu điểm:
 RMAN là công cụ quản lý sao lưu và phục hồi tích hợp của Oracle.
 Hỗ trợ sao lưu đầy đủ, sao lưu Incremental, và sao lưu chỉ định.
 Có khả năng thực hiện sao lưu online mà không làm gián đoạn hoạt
động của cơ sở dữ liệu.
 Cách tiến hành:
 Sử dụng lệnh RMAN từ dòng lệnh hoặc kịch bản để tạo và quản lý các
bản sao lưu. Ví dụ: BACKUP DATABASE; để sao lưu toàn bộ cơ sở
dữ liệu.

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.

d. Sử Dụng Export/Import Utilities:


 Ưu điểm:
 Sử dụng công cụ exp (export) và imp (import) để sao lưu và phục hồi
cơ sở dữ liệu.
 Cách tiến hành:
 Sử dụng lệnh exp để xuất dữ liệu và lệnh imp để nhập lại dữ liệu từ
file xuất.

e. Sử Dụng Data Pump Utilities:


 Ưu điểm:
 Cung cấp tính năng mạnh mẽ hơn so với Export/Import Utilities.
 Cách tiến hành:
• Sử dụng lệnh expdp để xuất dữ liệu và impdp để nhập lại dữ liệu.
Cung cấp các tùy chọn linh hoạt như sao lưu chỉ một phần dữ liệu, nén
dữ liệu, và chạy đồng thời nhiều công việc.

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.

 Các đặc điểm nổi bật của RMAN:


 Có các hàm để chạy lệnh backup.
 Có API để tương thích với các phần mềm backup.
 Có thể backup data file, control file, archive log, parameter file.
 Có thể backup dữ liệu ra đĩa hoặc băng từ.
 Cung cấp cấp báo cáo chi tiết về các hoạt động sao lưu.
 Chỉ RMAN cung cấp khả năng thực hiện sao lưu mã hóa.

f. Phương án sao lưu cơ sở dữ liệu:


 Backup Toàn Bộ Cơ Sở Dữ Liệu (Full Backup) : Full Backup là quá
trình sao lưu toàn bộ cơ sở dữ liệu hoặc một bảng không gian cụ thể.
Mọi dữ liệu và trạng thái của cơ sở dữ liệu được sao lưu.
 Backup Incremental : chỉ sao lưu những phần của cơ sở dữ liệu đã thay
đổi kể từ lần sao lưu trước đó
 Backup Differential : Differential Backup sao lưu toàn bộ cơ sở dữ liệu
hoặc một phần đã thay đổi kể từ lần sao lưu đầy đủ cuối cùng. Khác với
Incremental Backup, nó không phụ thuộc vào các lần sao lưu trước đó.
Nhóm sẽ chọn phương án full backup để đảm bảo sao lưu toàn bộ 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.

h. Các bước tiến hành:


B1 : Mở phần mềm SQL Plus để bật chế độ ARCHIVELOG

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.

a. Khắc phục khi mất control file (khôi phục từ AutoBackup)

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)

B1 : RMAN > RESTORE DATABASE;

40
B2 : Thực hiện quá trình phục hồi: RMAN> RECOVER DATABASE;

B3 : Mở cơ sở dữ liệu: RMAN> ALTER DATABASE OPEN;

c. Phục hồi toàn bộ cơ sở dữ liệu

B1 : Chạy RMAN để bắt đầu phục hồi rman target /;

B2 : Bắt đầu quá trình phục hồi:


RUN {
SET UNTIL SCN TIME;
RESTORE DATABASE;
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:

5.3. Phục hồi (recovery)


Trong quá trình sử dụng, database có thể xuất hiện những lỗi như sau:
• Statement failure
• User process failure
• Network failure
• User or application error
• Instance failure
• Media failure
Những lỗi trên có thể xảy ra khi mất control file, data file hoặc một nhóm redo log,
… Ở đây, nhóm đưa ra cách khắc phục khi bị mất control file và data file.

a. Khắc phục khi mất control file (khôi phục từ AutoBackup)


(1) Tắt database (nếu đang mở) RMAN → shutdown immediate;

43
RMAN → startup nomount;

(2) Khôi phục lại control file bằng cách copy control file đã backup RMAN

→ restore controlfile from autobackup;

RMAN → alter database mount; RMAN → recover database;

(3) Khởi động lại database Alter database open resetlogs;

b. Khắc phục khi mất data file


TH1: Database ở chế độ NOARCHIVELOG (bất kì data file nào bị mất)
(1) Tắt database (nếu đang mở)

RMAN → shutdown immediate; RMAN → startup nomount;

44
(2) Phục hồi lại toàn bộ database, bao gồm: data file, control file RMAN →

restore datafile ‘corrupted_data_file_name_path’1;

RMAN → restore controlfile from autobackup; RMAN → recover

database; RMAN → recover database;

(3) Khởi động lại database

Alter database open resetlogs;

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

Nhâm, C. T. (2012). Cơ sở Dữ liệu II.


Thomas, B. (n.d.). Oracle Database 12c Administrator Certified Associate.
Dặng, Duy Xuân. “Quản lý Tablespace trong Oracle Database 12c - Đào tạo Oracle”. Đặng Xuân

Duy, 2021, https://dangxuanduy.com/database/oracle-12c-quan-ly-tablespace/ Accessed 22

December 2023.

null. “Tablespace là gì.” WAK, 2018, http://wak.vn/wiki:tablespace . Accessed 22 December 2023.

47

You might also like