You are on page 1of 33

TRƯỜNG ĐẠI HỌC KINH TẾ

ĐẠI HỌC ĐÀ NẴNG


KHOA THỐNG KÊ – TIN HỌC
~*~*~

BÁO CÁO BÀI TẬP NHÓM


Môn: Quả n trị cơ sở dữ liệu

GVHD: Cao Thị Nhâ m


SVTH: NHÓ M 2
Nguyễn Đình Hiếu
Nguyễn Phạ m Hồ ng Ngọ c
Phạ m Huỳnh Yến Nhi
Đoà n Thị Thả o Nhung
Trầ n Khá nh Ninh
Huỳnh Anh Quâ n

Đà Nẵng, 12/2022
Mục lục
I. Hóa đơn nhóm chọn:...........................................................................................................5
II. Thiết kế cơ sở dữ liệu:.....................................................................................................6
1. Thiết kế cơ sở dữ liệu ở mức khái niệm:.....................................................................6
2. Thiết kế cơ sở dữ liệu ở mức logic:..............................................................................7
3. Thiết kế cơ sở dữ liệu ở mức vật lý:.............................................................................8
III. Xây dựng cơ sở dữ liệu:.................................................................................................10
1. Tạo dữ liệu cho bảng Tài khoản:.................................................................................10
2. Tạo dữ liệu cho bảng Nhà cung cấp:...........................................................................10
3. Tạo dữ liệu cho bảng Khách hàng:..............................................................................10
4. Tạo dữ liệu cho bảng Hàng:..........................................................................................11
5. Tạo dữ liệu cho bảng Hóa đơn:....................................................................................12
6. Tạo dữ liệu cho bảng Chi tiết hóa đơn:......................................................................12
7. Tạo dữ liệu cho bảng Phiếu nhập kho:.......................................................................12
8. Tạo dữ liệu cho bảng Chi tiết phiếu nhập kho:.........................................................13
IV. Xây dựng và tạo index cho các thuộc tính:.................................................................13
V. Xây dựng cơ chế bảo mật tương ứng cho cơ sở dữ liệu vừa tạo:.............................16
1. Tạo tài khoản Login với tên tài khoản là Admin......................................................16
2. Kết quả sau khi tạo, người dùng muốn vào CSDL thì phải đăng nhập vào tài
khoản với chế độ SQL server Authentication..................................................................16
3. Connect thành công với tài khoản vừa tạo................................................................17
VI. Xây dựng cơ chế backup phù hợp cho cơ sở dữ liệu vừa tạo:...............................19
VII. Phát triển ứng dụng:......................................................................................................20
1. Form Đăng nhập:............................................................................................................20
2. Form Bán hàng:...............................................................................................................20
3. Form Hóa đơn:................................................................................................................21
4. Form Chi tiết hóa đơn:...................................................................................................21
5. Form Hàng hóa:...............................................................................................................21
6. Form Nhà cung cấp:........................................................................................................22
7. Form Nhập hàng:............................................................................................................23
VIII. Phương án giải quyết vấn đề dữ liệu lớn:..............................................................24
1. Định nghĩa DEGOO:.........................................................................................................24
2. Nguyên tắc hoạt động:...................................................................................................25
3. Lý do chọn DEGOO:.........................................................................................................25
4. Tiến trình sử dụng:........................................................................................................26
5. Link lưu trữ file:.............................................................................................................28
IX. Đề phòng phương án hệ thống bị tấn công bằng SQL Injection:...........................28
1. Lý thuyết SQL Injection..................................................................................................28
2. Phương án giải quyết nhóm chọn...............................................................................28
Script code của nhóm:................................................................................................................31
Nhận xét của giảng viên
………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………….
………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………….
………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………….
………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………….
………………….
Định nghĩa các từ viết tắt:
STT Từ viết tắt Định nghĩa
1 NCC, MaNCC Nhà cung cấ p, mã nhà cung cấ p
2 SDT Số điện thoạ i
4 KH, MaKH, TenKH Khá ch hàng, mã khá ch hàng, tên khá ch hà ng
5 HDON, CT_HDON, MaHD Hó a đơn, chi tiết hó a đơn, mã hó a đơn
6 NK Nhậ p kho
7
8
9
10
11
12
I. Hóa đơn nhóm chọn:
Hó a đơn bá n:

Hó a đơn bên Nhà cung cấ p  Phiếu nhậ p bên mình:


II. Thiết kế cơ sở dữ liệu:
1. Thiết kế cơ sở dữ liệu ở mức khái niệm:
Xâ y dự ng ER cho hó a đơn bá n hà ng và nhậ p kho
 Thự c thể:
NCC (MaNCC, TenNCC, SDT, DiaChi)
KHACHHANG (MaKH, TenKH, SDT, DiaChi)
HANG (MaHang, TenHang, SoLuong, GiaNhap, GiaBan)
HDON (MaHD, MaKH, NgayBan, TongTien, ChietKhau, ThanhToan)
CT_HDON (MaHD, MaHang, SoLuong, ThanhTien)
PHIEUNK (MaNK, MaNCC, NgayNhap, TongTien, ChietKhau, ThanhToan)
CT_PHIEUNK (MaNK, MaHang, SoLuong, ThanhTien)
 ER – Nhậ p:
Nhap (MaNK, NgayNhap, SoLuong, ThanhTien, TongTien, ChietKhau,
ThanhToan)
 ER - Bá n:
Ban (MaHD, NgayBan, SoLuong, ThanhTien, TongTien, ChietKhau,
ThanhToan)

2. Thiết kế cơ sở dữ liệu ở mức logic:


 ER tích hợ p:

 Chuyển hó a thự c thể:


NCC (MaNCC, TenNCC, SDT, DiaChi)
KHACHHANG (MaKH, TenKH, SDT, DiaChi)
HANG (MaHang, TenHang, SoLuong, GiaNhap, GiaBan)
 Chuyển hó a quan hệ:
Nhap (MaNK, SoLuong, NgayNhap, ThanhTien, ChietKhau, TongTien,
ThanhToan, MaHang, MaNCC)
Ban (MaHD, SoLuong, NgayBan, ThanhTien, TongTien, ChietKhau,
ThanhToan, MaKH, MaHang)
 Chuẩ n hó a quan hệ Bá n:
Bá n (MaHD, MaKH, NgayBan, TongTien, ChietKhau, ThanhToan)
CT_Bá n (MaHD, MaHang, SoLuong, ThanhTien)
 Chuẩ n hó a quan hệ Nhậ p kho:
Nhậ p (MaNK, MaNCC, NgayNhap, ChietKhau, TongTien, ThanhToan)
CT_Nhậ p (MaNK, MaHang, SoLuong, ThanhTien)

 Sơ đồ rà ng buộ c quan hệ:

3. Thiết kế cơ sở dữ liệu ở mức vật lý:


Bảng Tài khoản:

Bảng Nhà cung cấp:


Bảng Khách hàng:

Bảng Hàng:

Bảng Hóa đơn:


Bảng Chi tiết hóa đơn:

Bảng Phiếu nhập kho:

Bảng Chi tiết phiếu nhập kho:

III. Xây dựng cơ sở dữ liệu:


1. Tạo dữ liệu cho bảng Tài khoản:

Kết quả:
2. Tạo dữ liệu cho bảng Nhà cung cấp:

Kết quả:

3. Tạo dữ liệu cho bảng Khách hàng:

Kết quả:
4. Tạo dữ liệu cho bảng Hàng:

Kết quả:

5. Tạo dữ liệu cho bảng Hóa đơn:

Kết quả:
6. Tạo dữ liệu cho bảng Chi tiết hóa đơn:

Kết quả:

7. Tạo dữ liệu cho bảng Phiếu nhập kho:

Kết quả:
8. Tạo dữ liệu cho bảng Chi tiết phiếu nhập kho:

Kết quả

IV. Xây dựng và tạo index cho các thuộc tính:


Index là mộ t cấ u trú c liên kết vớ i mộ t bả ng hoặ c mộ t view dù ng để tă ng tố c
độ truy vấn dữ liệu. Index chứ a cá c khó a đượ c tạ o từ mộ t hay nhiều cộ t và
đượ c lưu trữ dướ i dạ ng B-tree.

Index chia thà nh 2 loạ i: Clustered index và Non-clustered index


Trong cơ sở dữ liệu củ a mình, nhó m đã tạ o 1 số index sau:
- HOADON (MaHD) -> Tra cứu hóa đơn
Implicit Index
Bở i vì mỗ i hó a đơn bá n hà ng có 1 mã riêng biệt nên khi muố n tra cứ u thô ng
tin củ a 1 hó a đơn nà o đó thì chỉ cầ n tìm mã hó a đơn sẽ biết đượ c toà n bộ
thô ng tin chi tiết hó a đơn đó . Khô ng cầ n tạ o index vì SQL đã tạ o sẵ n index cho
khó a chính.
- PhieuNK (MaNK) -> Tra cứu phiếu nhập kho
Implicit Inde
Bở i vì mỗ i phiếu nhậ p kho có 1 mã riêng biệt nên khi muố n tra cứ u thô ng tin
củ a lầ n nhậ p kho nà o đó thì chỉ cầ n tìm mã nhậ p kho sẽ biết đượ c toà n bộ
thô ng tin chi tiết phiếu nhậ p kho đó . Khô ng cầ n tạ o index vì SQL đã tạ o sẵ n
index cho khó a chính.
- HANG(TenHang) -> Tìm hàng hóa
Composite Index
Bở i vì trên mỗ i mặ t hà ng có dá n giá bao gồ m (tên, mã ), khi thự c hiện thủ tụ c
bá n hà ng hoặ c tra cứ u thô ng tin hà ng hó a ngườ i bá n sẽ kiểm tra tên hà ng
hoặ c mã hà ng. Khô ng cầ n tạ o index cho mã hà ng vì đó ng vai trò là khó a chính
mà SQL đã tạ o sẵ n index cho khó a chính rồ i.
 Tạ o index:

 Kết quả thu đượ c:

- NCC (TenNCC) -> Tìm nhà cung cấp


Single - Column Index
Mặ c dù mã NCC là riêng biệt có thể tìm thấ y chính xá c nhưng rấ t khó để nhớ
đượ c mã NCC đó là gì. Vậ y nên tìm tên NCC là lự a chọ n tố t nhấ t.
 Tạ o index:

 Kết quả thu đượ c:

- KHACHHANG (SDT) -> Tìm khách hàng


Unique Index
Bở i vì số điện thoạ i củ a mỗ i ngườ i là khá c nhau (duy nhấ t) nên khi tìm số
điện thoạ i sẽ nhanh chó ng tìm thấ y rằ ng hệ thố ng đã có khá ch hàng đó hay
chưa.
 Tạ o index:

 Kết quả thu đượ c:

V. Xây dựng cơ chế bảo mật tương ứng cho cơ sở dữ liệu vừa tạo:
1. Tạo tài khoản Login với tên tài khoản là Admin
2. Kết quả sau khi tạo, người dùng muốn vào CSDL thì phải đăng nhập vào
tài khoản với chế độ SQL server Authentication

3. Connect thành công với tài khoản vừa tạo

 Data security:

Mã hó a dữ liệu là chuyển dữ liệu từ dạ ng này sang dạ ng khá c hoặ c sang dạ ng


code mà chỉ có ngườ i có quyền truy cậ p và o khó a giả i mã hoặ c có  mậ t khẩ u mớ i
có thể đọ c đượ c nó . Mã hoá là mộ t phương phá p quan trọ ng nhằ m bả o mậ t dữ
liệu. Nhữ ng dữ liệu nhạ y cả m như số CMT, số thẻ tín dụ ng, mậ t khẩ u và thô ng tin
cá nhâ n như số điện thoạ i khá ch hà ng,… cầ n phả i đượ c bả o vệ trướ c vô và n mố i
nguy hiểm tấ n cô ng hiện nay.

Nhó m sử dụ ng mã hó a mộ t chiều MD5 để mã hó a dữ liệu:

- Mã hó a mậ t khẩ u vớ i mã hó a mộ t chiều MD5 (thuậ t toá n mã hó a MD5 là mã


hó a mộ t chiều, khô ng có thể dịch ngượ c lạ i. Và bấ t kỳ ký tự mã hó a trong md5
cho kết quả tố i đa khô ng quá 32 ký tự ).
 Truy vấ n trướ c khi mã hó a:

 Thự c hiện dù ng hà m để mã hó a:

 Kết quả sau khi mã hó a:


VI. Xây dựng cơ chế backup phù hợp cho cơ sở dữ liệu vừa tạo:
- Thự c hiện full backup:

- Thự c hiện Differential backup:

- Thự c hiện log backup tạ i 1 thờ i điểm cụ thể:

- Sau khi backup thà nh cô ng cá c file sẽ xuấ t hiện ở đườ ng dẫ n đã chỉ định:
VII. Phát triển ứng dụng:
1. Form Đăng nhập:

2. Form Bán hàng:


3. Form Hóa đơn:

4. Form Chi tiết hóa đơn:

5. Form Hàng hóa:


 Chi tiết – chứ c nă ng thêm, sử a thô ng tin hà ng hó a:

6. Form Nhà cung cấp:


 Chi tiết – chứ c nă ng thêm, sử a thô ng tin nhà cung cấ p:

7. Form Nhập hàng:


 Chi tiết – chứ c nă ng thêm tin phiếu nhậ p:

VIII. Phương án giải quyết vấn đề dữ liệu lớn:


Khi lượ ng dữ liệu rấ t lớ n, chiếm khá nhiều vị trí bộ nhớ ổ đĩa trong má y,
khô ng đủ để lưu trữ vì thế nhó m cầ n dịch vụ lưu trữ đá m mâ y để giả i quyết vấ n đề
nà y. Vấ n đề đặ t ra là nhữ ng file code SQL như index, backup tạ o ra tố n khá nhiều
dung lượ ng nhưng Google Drive lạ i cho ít dung lượ ng miễn phí. Vì vậ y nhó m quyết
định chọ n dịch vụ lưu trữ đá m mâ y DEGOO.

1. Định nghĩa DEGOO:


Degoo là dịch vụ lưu trữ đá m mâ y vớ i khả năng gử i dữ liệu vớ i dung lượ ng lớ n,
Ngườ i dù ng có thể tả i nhiều dữ liệu hay cá c định dạ ng khá c nhau lên Degoo, sau đó
gử i cho bấ t kỳ ai để họ tả i dữ liệu cầ n thiết xuố ng thiết bị.
2. Nguyên tắc hoạt động:
Ngườ i dù ng Degoo sẽ chia sẻ, lưu trữ tệp (hình ả nh, tà i liệu, video, file nhạ c,…)
trự c tuyến và có thể truy cậ p chú ng bấ t kỳ lú c nà o, bằ ng cá c thiết bị di độ ng đượ c
kết nố i Internet như: Smartphone, má y tính bả ng, laptop,... Trên nhiều hệ điều hà nh
như: Android, iOS, Windows,…

3. Lý do chọn DEGOO:
- Đượ c sử dụ ng miễn phí 20GB để lưu trữ , nhiều hơn 5GB so vớ i lưu trữ trên
Google Drive là 15GB (hình ả nh minh họ a để so sá nh bộ nhớ lưu trữ giữ a
Degoo và Google Drive)

- Tố c độ tả i lên/xuố ng nhanh
- Ngườ i dù ng có thể gử i dữ liệu nhanh chó ng mà khô ng cầ n phả i thô ng qua
nhữ ng dịch vụ như email hay lưu trữ đá m mâ y quen thuộ c.
- Có nhiều tính năng nổ i bậ t như:
 Lưu trữ và sao lưu dữ liệu:
Chỉ cầ n cầ n tả i tệp cầ n thiết lên Degoo và truy cậ p, nhữ ng tệp đó sẽ tự
độ ng đượ c lưu trữ trên ứ ng dụ ng, khi cầ n sử dụ ng bạ n chỉ cầ n tả i
nhữ ng tệp đó và má y.
 Chia sẻ dữ liệu:
Chỉ vớ i mộ t đườ ng liên kết ngườ i dù ng có thể chia sẻ dữ liệu, điều nà y
giú p tiết kiệm rấ t nhiều thờ i gian, dung lượ ng khi là m việc nhó m.
 Xem tệp với nhiều định dạng:
Có thể lưu trữ và xem tệp trên Degoo vớ i nhiều định dạ ng khá c nhau
như:
o Tệp nén (.ZIP, .RAR, tar, gzip).
o Định dạ ng â m thanh (MP3, MPEG, WAV, .ogg).
o Tệp hình ả nh (.PNG, .GIF, .BMP).
o Tệp đá nh dấ u/mã (.CSS, .HTML, .PHP, .C, .CPP, .H, .HPP, .JS).
o Tệp văn bả n (.TXT).
o Tệp video
(WebM, .MPEG4, .3GPP, .MOV, .AVI, .MPEGPS, .WMV, .FLV).
4. Tiến trình sử dụng:
- Truy cậ p và o trang chủ Degoo và Đă ng kí/ Đă ng nhậ p (nếu đã có tà i khoả n)

- Tạ o thư mụ c, ở đâ y nhó m tạ o thư mự c “QT CSDL” để lưu trữ dữ liệu bà i bá o


cá o củ a nhó m
- Tả i cá c file liên qua đến bá o cá o củ a nhó m lên

- Đưa file lên thà nh cô ng


5. Link lưu trữ file:
https://cloud.degoo.com/share/dkAbxrbB5E-AWu3YtNGMvw

IX. Đề phòng phương án hệ thống bị tấn công bằng SQL Injection:

1. Lý thuyết SQL Injection


SQL injection là mộ t kỹ thuậ t cho phép nhữ ng kẻ tấ n cô ng lợ i dụ ng lỗ hổ ng
củ a việc kiểm tra dữ liệu đầ u và o trong cá c ứ ng dụ ng web và cá c thô ng bá o lỗ i củ a
hệ quả n trị cơ sở dữ liệu trả về để inject (tiêm và o) và thi hành cá c câ u lệnh SQL bấ t
hợ p phá p. SQL injection có thể cho phép nhữ ng kẻ tấ n cô ng thự c hiện cá c thao tá c,
delete, insert, update, v.v. trên cơ sở dữ liệu củ a ứ ng dụ ng, thậ m chí là server mà
ứ ng dụ ng đó đang chạ y.

2. Phương án giải quyết nhóm chọn


Có nhiều cá ch để giả m thiểu và phò ng ngừ a SQL Injection. Phương á n mà
nhó m đã chọ n có 3 cá ch:

- Tố i thiểu hó a đặ c quyền: chỉ cấ p quyền cho tà i khoả n Admin – tạ o ra cho


ngườ i quả n trị database – ngườ i có quyền cao nhấ t mớ i thự c hiện hết cá c
chứ c nă ng trong databsae (thêm, sử a, xó a, truy vấ n, … ).
- Khô ng cộ ng chuỗ i để tạ o SQL: Sử dụ ng parameter thay vì cộ ng chuỗ i.

- Khô ng hiển thị exception, message lỗ i: Tin tặ c có thể dự a và o message lỗ i để


tìm ra cấ u trú c database. Vì vậ y, khi có lỗ i, trang web chỉ nên hiển thị thô ng
bá o lỗ i (khô ng hiển thị thô ng tin nhạ y cả m về lỗ i) để trá nh bị tin tặ c lợ i dụ ng. 
- Ngoà i ra, nên sao lưu dữ liệu thườ ng xuyên: Dữ liệu cầ n đượ c sao lưu thườ ng
xuyên để trong trườ ng hợ p xấ u nhấ t là bị tin tặ c xoá thì doanh nghiệp vẫn có
thể khô i phụ c.
Script code của nhóm:
- Link github:
https://github.com/Nhung04102002/Nhom2_46K21.1
- Link code tổ ng hợ p:
https://cloud.degoo.com/share/dkAbxrbB5E-AWu3YtNGMvw

You might also like