Professional Documents
Culture Documents
Quản Lý Bán Hàng Tại Quán Coffee Aloha 1 1
Quản Lý Bán Hàng Tại Quán Coffee Aloha 1 1
Để hoàn thành được đề tài này, trước hết chúng em xin gửi đến Ban Giám hiệu Trường
Đại học Kinh tế - Đại học Đà Nẵng lời cảm ơn sâu sắc vì đã cho chúng em cơ hội được
học tập và trải nghiệm những điều mới mẻ, bổ ích ở trường.
Học tập được những kiến thức từ cơ bản đến nâng cao từ quý thầy cô trong khoa Thống
kê – Tin học cùng các bạn sinh viên trong và ngoài lớp, các anh chị khóa trên đã giúp
nhóm chúng em hoàn thành đề tài “Quản lý bán hàng tại quán coffee Aloha”
Để có đủ kiến thức chuyên ngành, hoàn thiện được đề tài này, chúng em cũng xin gửi lời
cảm ơn chân thành nhất đến giảng viên hướng dẫn nhóm: Ths. Cao Thị Nhâm đã thường
xuyên kiểm tra, góp ý cho nhóm trong quá trình học tập.
Do kiến thức còn nhiều hạn chế và những hiểu biết trong thực tế còn hạn hẹp, nên đề tài
của nhóm còn thiếu sót. Hy vọng chúng em sẽ nhận được sự góp ý từ phía cô và các bạn.
PHẦN MỞ ĐẦU.................................................................................................................9
3.5 Xác định và tạo các index cho các thuộc tính...........................................................27
3.6 Xây dựng cơ chế backup dữ liệu phù hợp cho CSDL vừa tạo..................................39
3.7 Phương án giải quyết TỐT NHẤT cho vấn đề lượng dữ liệu rất lớn, không đủ lưu
trữ trong một ổ đĩa...........................................................................................................50
3.8 Phương án đề phòng hệ thống TESTDB bị tấn công bằng SQL Injection...............51
Hình 1.1 Hóa đơn mua hàng của quán tại nhà phân phối Phương Hiền............................10
Hình 1.2 Hóa đơn mua hàng của quán tại nhà phân phối Trường......................................11
Hình 1.3 Hóa đơn bán hàng cho khách..............................................................................12
Hình 2.1 Mô hình 3 lớp......................................................................................................16
Hình 3.1 Mô hình E-R đặt hàng.........................................................................................19
Hình 3.2 Mô hình E-R bán hàng........................................................................................20
Hình 3.3 Tích hợp ER-1 và ER-2.......................................................................................21
Hình 3.4 Sơ đồ quan hệ......................................................................................................22
Hình 3.5 Sơ đồ cơ sở dữ liệu..............................................................................................26
Hình 3.6 Clustered index của bảng Hang...........................................................................27
Hình 3.7 Clustered index của bảng DatChiTiet..................................................................28
Hình 3.8 Tạo tài khoản Login nhân viên............................................................................30
Hình 3.9 Phân quyền cho tài khoản QLCFNv....................................................................31
Hình 3.10 Tạo tài khoản login Admin................................................................................32
Hình 3.11 Phân quyền truy cập vào Database (toàn quyền)...............................................33
Hình 3.12 Login vào Server bằng tài khoản QLCFNv.......................................................34
Hình 3.13 Truy cập Database ngoài...................................................................................34
Hình 3.14 Quyền của Nhân viên........................................................................................35
Hình 3.15 Quyền của Nhân viên........................................................................................35
Hình 3.16 Quyền của Nhân viên........................................................................................36
Hình 3.17 Login vào Server bằng tài khoản QLCFAdmin................................................36
Hình 3.18 Truy cập Database ngoài...................................................................................37
Hình 3.19 Quyền backup database.....................................................................................37
Hình 3.20 Backup thành công............................................................................................38
Hình 3.21 Tạo backup-full.................................................................................................39
Hình 3.22 Media option backup-full..................................................................................40
Hình 3.23 Backup option backup-full................................................................................40
Hình 3.24 Backup thành công............................................................................................41
Hình 3.25 Tạo backup-differential.....................................................................................41
Hình 3.26 Tạo backup-differential.....................................................................................42
Hình 3.27 Media option backup-differential......................................................................43
Hình 3.28 Backup option backup-differential....................................................................43
Hình 3.29 Backup thành công............................................................................................44
Hình 3.30 Tạo new Job backup-differential.......................................................................44
Hình 3.31 Job Step backup-full..........................................................................................45
Hình 3.32 Job Step backup-full(scrip)................................................................................45
Hình 3.33 Job Step backup-diff..........................................................................................46
Hình 3.34 Job Step backup-diff (scrip)..............................................................................46
Hình 3.35 Các bước backup...............................................................................................47
Hình 3.36 New Job Schedule.............................................................................................47
Hình 3.37 Kiểm tra lịch sử backup.....................................................................................48
Hình 3.38 Nơi lưu trữ bản backup......................................................................................49
Hình 3.39 Thư mục Database QLCF đã được đưa lên Microsoft Onedrive......................49
Hình 3.40 Toàn bộ dữ liệu được lưu trong file .sql của thư mục Database QLCF............50
Hình 3.41 File .sql ở Microsoft One drive được đồng bộ dữ liệu với máy tính.................50
Hình 3.42 Hàm InsertXuatHDChiTiet sử dựng parameter.................................................51
Hình 3.43 Hàm Login sử dựng parameter..........................................................................51
Hình 4.1 Giao diện đăng nhập............................................................................................52
Hình 4.2 Báo lỗi khi nhập sai tên đăng nhập hoặc mật khẩu.............................................52
Hình 4.3 Giao diện chính....................................................................................................53
Hình 4.4 Thực hiện order cho khách..................................................................................54
Hình 4.5 Thanh toán cho khách hàng.................................................................................54
Hình 4.6 Trạng thái bàn sau khi thanh toán sẽ thay đổi.....................................................55
Hình 4.7 Mục thông tin tài khoản.......................................................................................55
Hình 4.8 Giao diện Thông tin tài khoản.............................................................................56
Hình 4.9 Mục Mua.............................................................................................................57
Hình 4.10 Nhân viên sẽ không truy cập được vào mục Bán..............................................57
Hình 4.11 Giao diện Mua...................................................................................................58
Hình 4.12 Giao diện tab Hóa đơn nhập trong mục Mua....................................................59
Hình 4.13 Mục Bán............................................................................................................59
Hình 4.14 Giao diện Bán....................................................................................................60
Hình 4.15 Giao diện tab Tài khoản trong Bán....................................................................61
Hình 4.16 Giao diện Hóa đơn trong Bán............................................................................61
Hình 4.17 Mục Đăng xuất..................................................................................................62
Hình 4.18 Xác thực để dừng chương trình.........................................................................63
DANH MỤC BẢNG BIỂU
Bảng 3.1 Những thông tin có trên hóa đơn đặt hàng..........................................................19
Bảng 3.2 Những thông tin có trên hóa đơn bán hàng.........................................................21
Bảng 3.3 Hàng hóa.............................................................................................................24
Bảng 3.4 Người đặt hàng....................................................................................................24
Bảng 3.5 Đặt.......................................................................................................................24
Bảng 3.6 Món.....................................................................................................................25
Bảng 3.7 Bàn......................................................................................................................25
Bảng 3.8 Account...............................................................................................................25
Bảng 3.9 Xuất hóa đơn.......................................................................................................26
Bảng 3.10 Xuất hóa đơn chi tiết.........................................................................................26
Bảng 3.11 Đặt chi tiết.........................................................................................................27
Bảng 3.12 Nhà cung cấp.....................................................................................................27
PHẦN MỞ ĐẦU
Tìm hiểu được môi trường kinh doanh thực tế để xây dựng cơ sở dữ liệu.
Có thể thiết kế và xây dựng cơ sở dữ liệu theo đúng quy trình cần có.
Hiểu về index và tính ứng dụng của nó vào chính cơ sở dữ liệu đang xây dựng.
Biết cách bảo mật cho cơ sở dữ liệu.
Biết cách backup dữ liệu phù hợp cho cơ sở dữ liệu đang xây dựng.
Có thể sử dụng một ngôn ngữ lập trình để phát triển một ứng dụng cho cơ sở dữ
liệu vừa xây dựng.
Sưu tầm các hóa đơn, chứng từ tại cơ sở kinh doanh nhóm lựa chọn.
Thiết kế cơ sở dữ liệu ở mức khái niệm, logic và một phần cơ bản của thiết kế vật
lý.
Xây dựng cơ sở dữ liệu cho bản thiết kế trên.
Xác định và tạo các index cho các thuộc tính cần thiết.
Xây dựng cơ chế bảo mật tương ứng cho cơ sở dữ liệu vừa tạo.
Xây dựng cơ chế backup dữ liệu phù hợp cho cơ sở dữ liệu vừa tạo.
Sử dụng một ngôn ngữ lập trình để phát triển một ứng dụng mang tên TESTDB
thực hiện các chức năng: thêm, sửa, xóa và tìm kiếm cho cơ sở dữ liệu vừa tạo.
Đề tài được tổ chức gồm phần mở đầu, 4 chương nội dung, phần kết luận, tài liệu
tham khảo và phụ lục kèm theo.
Phần mở đầu
Chương 1: Coffee Aloha và các chứng từ thu thập được
Chương 2: Cơ sở lý thuyết và phương pháp nghiên cứu
Chương 3: Thiết kế, xây dựng cơ sở dữ liệu và giải quyết các vấn đề về cơ sở dữ
liệu
Chương 4: Triển khai hệ thống
Kết quả và hướng phát triển
Tài liệu tham khảo
Phụ lục
CHƯƠNG 1: COFFEE ALOHA VÀ CÁC CHỨNG TỪ THU THẬP ĐƯỢC
Hình 1.1 Hóa đơn mua hàng của quán tại nhà phân phối Phương Hiền
Hình 1.2 Hóa đơn mua hàng của quán tại nhà phân phối Trường
Hóa đơn xuất:
Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức, thường được lưu trữ
và truy cập điện tử từ hệ thống máy tính. Khi cơ sở dữ liệu phức tạp hơn, chúng
thường được phát triển bằng cách sử dụng các kỹ thuật thiết kế và mô hình hóa chính
thức.
SQL (Structured Query Language) là ngôn ngữ truy vấn mang tính cấu trúc, là một
loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản trị cơ sở dữ
liệu quan hệ. SQL là ngôn ngữ chuẩn cho hệ cơ sở dữ liệu quan hệ. Tất cả các hệ
thống quản lý cơ sở dữ liệu quan hệ (RDMS) như MySQL, MS Access, Oracle,
Sybase, Informix, Postgres và SQL Server đều sử dụng SQL làm ngôn ngữ cơ sở dữ
liệu chuẩn.
T-SQL hay còn gọi là Transact-SQL, là một phần mở rộng của ngôn ngữ SQL và phát
triển dựa theo chuẩn ISO (International Organization for Standardization) và ANSI
(American National Standards Institute).
Data Definition Language (DDL): Là tập hợp những lệnh dùng để xử lý dữ liệu
như các lệnh như Create, Alter và Drop table, các lệnh này dùng để định nghĩa
cấu trúc của một table.
Data Control Language (DCL): Dùng để phân quyền user truy cập vào các đối
tượng table, view, function ... Nhóm này gồm các câu truy vấn như Grant, Deny,
Revoke.
Data Manipulation Language (DML): Là tập hợp các câu lệnh dùng để thao tác
sàng lọc dữ liệu như: Select, Insert, Update, Delete. Những lệnh này giúp chúng
ta truy vấn tìm kiếm dữ liệu một cách chính xác nhất.
Ngôn ngữ thủ tục được thiết kế để mở rộng khả năng của SQL trong khi có khả năng
tích hợp tốt với SQL. Một số tính năng như các biến địa phương và xử lý chuỗi/dữ liệu
được thêm vào.
Giai đoạn 1 - Thiết kế cơ sở dữ liệu ở mức khái niệm: Xây dựng mô hình liên kết
Tạo ra cấu trúc dữ liệu trừu tượng để thể hiện các đối tượng trong thế giới thực một
cách chân thực nhất.
- Bước 4: Vẽ sơ đồ: Vẽ thực thể, vẽ mối quan hệ, sắp xếp lại cho cân đối, dễ
nhìn, bổ sung thuộc tính, gạch chân thuộc tính định danh và xác định bản số
Chuyển mô hình khái niệm thành mô hình dữ liệu logic (mô hình quan hệ)
- Chỉ cần xem xét các quan hệ mới phát sinh ở bước 2 (biểu diễn quan hệ)
Giai đoạn 3 - Thiết kế cơ sở dữ liệu ở mức vật lý: xây dựng bảng và mối quan hệ.
C# (C Sharp) là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ, được phát
triển bởi Microsoft và được xây dựng trên nền tảng của 2 ngôn ngữ mạnh nhất là C++
và Java. C# với sự hỗ trợ mạnh mẽ của .NET Framework giúp cho việc tạo một ứng
dụng Windows Forms hay WPF (Windows Presentation Foundation), phát triển game,
ứng dụng Web, ứng dụng Mobile trở nên rất dễ dàng.
Winform hay còn gọi là Windows form là giải pháp chạy trên nền Windows. Winform
là công nghệ của Microsoft, cho phép lập trình các ứng dụng Windows trên PC.
Windows Form có các phần cơ bản như Form, Panel, Button, Textbox, ComboBox,
RadioButton, v.v.
Mô hình 3 lớp hay còn được gọi là mô hình Three Layer (3-Layer), mô hình này ra đời
nhằm phân chia các thành phần trong hệ thống, các thành phần cùng chức năng sẽ
được nhóm lại với nhau và phân chia công việc cho từng nhóm để dữ liệu không bị
chồng chéo và chạy lộn xộn.
- Data Access Object (DAO): Lớp này phân ra 2 thành nhiệm vụ: (1) Đây là nơi
đáp ứng các yêu cầu thao tác dữ liệu của GUI layer, xử lý chính nguồn dữ liệu từ
Presentation Layer trước khi truyền xuống Data Access Layer và lưu xuống hệ
quản trị CSDL. (2) Đây còn là nơi kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ
dữ liệu, thực hiện tính toán và xử lý các yêu cầu nghiệp vụ, trước khi trả kết quả
về Presentation Layer.
- Data Transfer Object (DTO): Lớp này có chức năng giao tiếp với hệ quản trị
CSDL như thực hiện các công việc liên quan đến lưu trữ và truy vấn dữ liệu (tìm
kiếm, thêm, xóa, sửa…).
DataTable là đối tượng chứa dữ liệu, nó có tên, các dòng, cột qua đó nó là ánh xạ của
một bảng (Table) của CSDL.
DataSet là một cấu trúc phức tạp, thành phần cơ bản của ADO.NET. Nó ánh xạ CSDL
nguồn (SQL Database) vào thành các đối tượng trong bộ nhớ. DataSet là một đối tượng
có thể chứa nhiều DataTable cùng với mối liên hệ giữa chúng (relationship) và kể cả các
ràng buộc (constraint) được lưu hoàn toàn trong bộ nhớ để làm việc offline.
Namespace: System.Data
Một DataSet như một tập tin database vật lý hoàn chỉnh nhưng được lưu trong bộ nhớ.
DataSet bao gồm các DataTable, DataTable bao gồm các DataColumn, DataRow và
các constraint. Các property của DataSet và DataTable dùng để lưu trữ các collection.
Ngoài cách nạp dữ liệu vào DataSet từ database, còn có thể tạo dữ liệu động cho
DataTable thông qua các collection Columns và Rows.
Bảng 3.1 Những thông tin có trên hóa đơn đặt hàng
Bước 4: Vẽ
Bảng 3.2 Những thông tin có trên hóa đơn bán hàng
Bước 4: Vẽ
Hình 3.6 Mô hình E-R bán hàng
Bước 4: Vẽ sơ đồ quan hệ
Hình 3.8 Sơ đồ quan hệ
3.3 Mô tả thuộc tính các quan hệ
3.5 Xác định và tạo các 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
Btree.
- Lưu trữ bản ghi dữ liệu trong một cấu trúc sắp xếp dựa trên các giá trị khóa của nó.
Một bảng chỉ có một clustered index vì các bản ghi dữ liệu chỉ có thể được sắp xếp
theo một thứ tự.
- Non - clustered index là một cấu trúc dữ liệu giúp cải thiện tốc độ truy xuất dữ liệu
từ các bảng. Không giống như clustered index, nonclustered index sắp xếp và lưu
trữ dữ liệu riêng biệt với các bản ghi trong bảng. Nó là một bản sao dữ liệu của các
cột được chọn từ một bảng được liên kết.
Khi khai báo PRIMARY KEY thì mặc định SQL Server sẽ tạo một clustered index trên
khóa chính đó.
- Vì đây là mô hình kinh doanh nhỏ, nên lượng dữ liệu lưu trữ ít như bảng bàn:
quán chỉ có 20 bàn, bảng món: quán chỉ phục vụ 10 món, bảng nhà cung cấp: chỉ
có 5 nhà cung cấp,...
- Các bảng xuất hóa đơn, xuất hóa đơn chi tiết, đặt, đặt chi tiết thường xuyên được
cập nhật và thêm mới với tần suất lớn
- Đối với tất cả các bảng có 1 khóa chính (Account, Ban, Mon, NhaCC, NgDatHang,
Hang, Dat, XuatHD) đã được mặc định tạo sẵn 1 clustered index trên chính khóa
chính của bảng.
Lý do lựa chọn:
- Bởi vì mỗi bảng trong cơ sở dữ liệu đều có khóa chính, SQL tự động tạo một
clustered index tương ứng dựa trên các cột có trong khóa chính.
- Việc sử dụng clustered index giúp truy vấn dữ liệu nhanh hơn (nhanh hơn non -
clustered index). Còn nếu không sử dụng clustered index, việc truy vấn dữ liệu sẽ
gặp khó khăn, không thể sử dụng ngôn ngữ truy vấn dữ liệu (Select), ngôn ngữ
thao tác dữ liệu (Insert, Update, Delete).
- Không cần thêm dung lượng ổ đĩa để lưu trữ index (giảm chi phí)
Tuy nhiên, việc sử dụng clustered index cũng mang lại những bất lợi nhất định: các thao
tác thêm sửa xóa sẽ chậm hơn một chút so với non - clustered index
Giải thích rõ hơn một số lý do không sử dụng non - clustered index cho các thuộc tính
trong các bản ghi của cơ sở dữ liệu chính là vì đặc điểm của cơ sở dữ liệu Quản lý quán
cafe đã được nhắc đến ở trên: vì là mô hình kinh doanh hộ gia đình nhỏ nên cơ sở dữ
liệu chỉ có các bản ghi nhỏ, lượng dữ liệu ít, một số bảng thường xuyên diễn ra hoạt
động update, insert.
3.5 Xây dựng cơ chế bảo mật tương ứng cho CSDL.
- Windows Authentication:
User chỉ cần được cấp account trong Windows. SQL Server sẽ dựa vào
Windows để chứng thực cho user gọi là kết nối tin tưởng. Khi kết nối đến
SQL Server theo cách này thì có nghĩa là được ủy nhiệm bảo mật của
Windows.
Người quản trị CSDL lập tài khoản cho người dùng bằng tên đăng nhập và
mật khẩu đã cấp cho họ. Trong quá trình lập tài khoản, quản trị viên sẽ phân
quyền cho tài khoản đó: cho phép tài khoản đó truy cập được vào database
nào.
- Khi chỉ định 1 login account là user của một database thì user thuộc về public
database role. Có thể thông qua role để chỉnh sửa quyền user.
- Khi gán 1 login account là thành viên của một database role trong một database
(QLCF), thì nó sẽ trở thành một user của database này.
- Mặc định user name trùng tên với login account.
- dbo là một user đặc biệt có tất cả các quyền trên database.
- Một login account là thành viên của db_owner database role thì cũng có quyền
như dbo.
Cơ sở dữ liệu và quản trị CSDL là một trong những vấn đề cốt lõi. Xét cho cùng ứng
dụng SQL Server để giải quyết các bài toán thì phải giải quyết vấn đề xây dựng CSDL
và xây dựng thuật toán xử lý chúng và cần đảm bảo tính bảo mật cho CSDL đó. Khi
CSDL càng lớn nhu cầu xử lý phức tạp, yêu cầu bảo mật càng cao thì vấn đề quản trị
CSDL càng phức tạp. Để bảo mật CSDL trước tiên sử dụng Authentication để xác
nhận tài khoản truy cập login có hợp lệ và kết nối với SQL Server hay không. Dùng
Authorization cụ thể là Database access security để kiểm soát truy cập vào một
database cụ thể và Permission security để kiểm soát một user thực hiện thao tác cụ thể
trên database.
Trong quá trình lập tài khoản, bên cạnh việc cho phép truy cập vào database, người
quản trị sẽ cấp các quyền cần thiết để tài khoản thao tác trong database đó.
Hình 3.13 Phân quyền cho tài khoản QLCFNv
Tạo tài khoản Admin: Đối với tài khoản Admin, tài khoản này sẽ được cấp toàn quyền
sử dụng database.
Hình 3.14 Tạo tài khoản login Admin
Hình 3.15 Phân quyền truy cập vào Database (toàn quyền)
Sau khi đã được cấp quyền, tài khoản chỉ vào được duy nhất database QLCF (Database
được cấp quyền truy cập) và không truy cập được vào database khác.
Tuy nhiên đối với tài khoản nhân viên sẽ không có quyền tạo thêm bảng trong database.
Hình 3.20 Quyền của Nhân viên
Login bằng tài khoản QLCFAdmin (toàn quyền sử dụng database QLCF).
Tài khoản này cũng giống như tài khoản của nhân viên, chỉ có thể truy cập vào database
đã được cấp phép và không vào được những database khác.
Hình 3.22 Truy cập Database ngoài
Còn đối với database đã được cấp phép truy cập, tài khoản Admin có toàn quyền thao
tác như thêm, sửa, xóa bản ghi, bảng,... Và đặc biệt tài khoản này được quyền backup lại
toàn bộ dữ liệu trong database đó.
3.6 Xây dựng cơ chế backup dữ liệu phù hợp cho CSDL vừa tạo.
Việc buôn bán xảy ra hàng ngày, dữ liệu được cập nhật liên tục. Để tránh tình trạng mất,
thất lạc dữ liệu thì chúng ta cần phải xây dựng một cơ chế backup phù hợp cho cơ sở dữ
liệu.
Vì đặc trưng của cơ sở dữ liệu quản lý bán hàng tại quán coffee Aloha là dữ liệu được
thay đổi, cập nhập liên tục trong một ngày nên lựa chọn đầu tiên chính là cơ chế:
Automatic Daily Database Backup và chọn 2 loại backup chính là Full Backup và
Differential Backup.
- Đối với việc lựa chọn cơ chế Automatic Daily Database Backup là để có thể thiết
lập tự động sao lưu hàng ngày cho CSDL theo đúng thời gian quy định là vào
11:00 pm hàng ngày và file dữ liệu sao lưu sẽ được lưu vào F:\MSSQL\Backup.
- Đối với Full Backup, việc backup sẽ được thực hiện vào 11:00 pm chủ nhật hàng
tuần.
- Còn đối với Differential Backup, việc backup sẽ được thực hiện vào 11:00 pm từ
thứ 2 đến thứ 7 hàng tuần.
Những thiết lập đó nhằm đảm bảo việc sao lưu dữ liệu sẽ không làm ảnh hưởng đến quá
trình kinh doanh của quán.
Bước 1: Kết nối SQL server --> Tạo backupfull lựa chọn nơi lưu trữ bản backup
Hình 3.25 Tạo backup-full
Bước 2: Tạo backup differential lựa chọn nơi lưu trữ bản backup
Vào thời gian: 12:45:00 SA ngày 25/12/2020 bắt đầu backup. Backup hằng ngày
và kết thúc backup vào ngày 27/12/2020.
Truy cập vào thư mục Backup (C:\MSSQL\Backup) để kiểm tra xem việc backup
có được diễn ra theo đúng thiết lập không.
Ở đây, các file backup được lưu ở một ổ đĩa riêng biệt, khác ổ đĩa với file cơ sở dữ
liệu gốc nhằm đảm bảo tính an toàn cho dữ liệu.
Hình 3.42 Nơi lưu trữ bản backup
3.7 Phương án giải quyết TỐT NHẤT cho vấn đề lượng dữ liệu rất lớn, không đủ
lưu trữ trong một ổ đĩa.
Lý do lựa chọn giải pháp: Vì dữ liệu lưu trữ rất lớn nên dung lượng trong một ổ đĩa sẽ
không đủ để lưu trữ lượng dữ liệu đó. Việc sử dụng Microsoft Onedrive - dịch vụ lưu
trữ đám mây - cho phép người sử dụng có thể lưu trữ tất cả các tập tin quan trọng một
cách an toàn và có thể truy cập chúng ở mọi nơi, đồng thời có thể đồng bộ với dữ liệu
trong máy tính và lưu trữ với lượng dữ liệu lớn.
Triển khai phương án giải quyết: Nhóm đã đề ra phương án là thực hiện lưu trữ toàn
bộ dữ liệu vào 1 file .sql, sau đó thực hiện phương án đưa dữ liệu lên Microsoft One
drive để lưu trữ, đồng thời đồng bộ dữ liệu với máy tính, giúp việc lưu trữ dữ liệu trở
nên dễ dàng hơn.
Hình 3.43 Thư mục Database QLCF đã được đưa lên Microsoft Onedrive
Hình 3.44 Toàn bộ dữ liệu được lưu trong file .sql của thư mục Database QLCF
Hình 3.45 File .sql ở Microsoft One drive được đồng bộ dữ liệu với máy tính
3.8 Phương án đề phòng hệ thống TESTDB bị tấn công bằng SQL Injection.
SQL injection là kỹ thuật của người dùng độc hại phá hoại cơ sở dữ liệu bằng cách thêm
các dòng lệnh SQL inject vào câu lệnh SQL thông thường thông qua trường nhập liệu trên
web.
Các dòng lệnh Inject SQL có thể thay đổi câu lệnh SQL và gây nguy hiểm cho khả năng
bảo mật của hệ thống. Khi cơ sở dữ liệu có lỗ hổng, kẻ xấu có thể gây ra SQL Injection
dựa trên 1=1 luôn đúng, hoặc dựa trên “” = “” luôn đúng.
Để bảo vệ cơ sở dữ liệu khỏi các cuộc tấn công SQL Injection, chúng ta sử dụng các tham
số SQL. Các tham số SQL là các giá trị được thêm vào từ các truy vấn SQL tại thời gian
thực hiện, trong một cách thức có kiểm soát. Các công cụ SQL kiểm tra từng thông số để
đảm bảo rằng nó là đúng cho cột và được thực thi theo nghĩa đen, và không phải là một
phần của SQL được thực thi.
Bên cạnh đó, việc cộng chuỗi sẽ tạo ra lỗ hổng cho cơ sở dữ liệu, tạo cơ hội cho kẻ xấu có
thể tấn công, vì vậy chúng ta không cộng chuỗi để tạo SQL mà thay vào đó sẽ sử dụng
parameter. Nếu dữ liệu truyền vào không hợp pháp, SQL Engine sẽ tự động báo lỗi, ta
không cần dùng code để check.
Nhân viên hoặc quản lý sử dụng tên đăng nhập và mật khẩu mặc định được cấp để đăng
nhập khi muốn truy cập vào hệ thống.
Nếu một trong hai yếu tố bị nhập sai hoặc để trống hệ thống sẽ thông báo “Sai tên đăng
nhập hoặc mật khẩu!”, sau đó có thể nhập lại thông tin cho chính xác hoặc chọn button
“Cancel” để thoát hoàn toàn khỏi hệ thống.
Hình 4.49 Báo lỗi khi nhập sai tên đăng nhập hoặc mật khẩu
Sau khi đăng nhập thành công sẽ được chuyển đến giao diện chính của hệ thống.
Ở giao diện chính này, nhân viên sẽ thao tác để order món cho khách bằng cách lựa
chọn bàn mà khách ngồi, thêm món mà khách chọn và click vào button Thêm.
Lúc này bàn đó sẽ chuyển từ tình trạng Trống thành Có người. Còn đối với khách.mua
mang về, chỉ cần chọn bàn 0 và thao tác như trên. Nếu khách muốn đổi bàn, gộp bàn chỉ
cần chọn bàn tương ứng và chọn button Chuyển bàn / Gộp bàn.
Hình 4.51 Thực hiện order cho khách
Khi khách hàng muốn thanh toán, chỉ cần click vào button Thanh toán và xác nhận
thanh toán hóa đơn thì hóa đơn của bàn đó sẽ được thanh toán và bàn sẽ chuyển từ Có
khách thành Trống.
Khi đưa chuột vào mục Tài khoản, nhân viên có thể truy cập vào thông tin tài khoản cá
nhân của mình.
Ở giao diện Thông tin cá nhân này, nhân viên có thể tiến hành cập nhật mật khẩu mới và
tên hiển thị của mình.
Khi đưa chuột vào mục Quản lý, đối với tài khoản của quản lý, đều có thể truy cập vào
cả danh mục Mua và Bán.
Hình 4.56 Mục Mua
Còn đối với tài khoản của nhân viên thì chỉ có thể truy cập vào danh mục Mua.
Hình 4.57 Nhân viên sẽ không truy cập được vào mục Bán
Khi truy cập vào danh mục mua, người dùng có thể thao tác trên các tab Nguyên vật
liệu, Người đặt hàng, Nhà cung cấp, Hóa đơn nhập.
Đối với các tab Nguyên vật liệu, Người đặt hàng, Nhà cung cấp, người dùng có thể thực
hiện các chức năng thêm, sửa, xóa, tìm kiếm theo nhu cầu.
Đối với tab Hóa đơn nhập, người dùng khi mua hàng hóa về sẽ chọn người đặt hàng,
nhà cung cấp và click vào button Thêm hóa đơn. Sau đó sẽ chọn nguyên vật liệu và số
lượng đã mua và click vào button Thêm hàng để thêm những hàng hóa đã mua vào hóa
đơn Sau đó, click vào button Thanh toán để cập nhật tình trạng của Hóa đơn nếu như đã
thanh toán.
Hình 4.59 Giao diện tab Hóa đơn nhập trong mục Mua
Muốn truy cập được vào mục Bán, bắt buộc tài khoản đang đăng nhập phải là tài khoản
quản lý.
Đối với tab Tài khoản, người dùng chỉ có thể xem được tên hiển thị, loại tài khoản và
tên đăng nhập. Và cũng chỉ có thể thay đổi tên hiển thị và loại tài khoản chứ không thể
thay đổi tên đăng nhập. Đối với trường hợp quên mật khẩu thì có thể click vào button
Đặt lại mật khẩu mặc định để hệ thống tự động cập nhập lại mật khẩu mặc định cho tài
khoản bị quên mật khẩu.
Hình 4.62 Giao diện tab Tài khoản trong Bán
Ở tab Hóa đơn, người dùng có thể xem lại các hóa đơn đã thanh toán trong khoảng thời
gian đã lựa chọn. Còn đối với các hóa đơn hiện đang chưa thanh toán thì sẽ không xem
được.
Ở giao diện chính nếu muốn thoát khỏi tài khoản quay về giao diện đăng nhập, chỉ cần
vào Tài khoản và chọn Đăng xuất.
Còn nếu muốn tắt hẳn chương trình thì chỉ cần click vào dấu “X” ở góc trên cùng bên
phải và xác nhận để dừng chương trình.
Hình 4.65 Xác thực để dừng chương trình
KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN
Sau bài tập lớn này, nhóm sẽ tiếp tục thực hành nhiều hơn nữa để có thể nâng cao khả
năng, trình độ của bản thân nhằm phục vụ và giúp ích cho công việc sau này
TÀI LIỆU THAM KHẢO
1. https://www.totolink.vn/article/600-microsoft-onedrive-la-gi-loi-ich-khi-su-dung-
microsoft-onedrive.html
2. http://elearning.due.udn.vn/pluginfile.php/266991/mod_resource/content/1/
Bai4_Security%20.pdf
3. http://elearning.due.udn.vn/mod/resource/view.php?id=56148
4. https://securitybox.vn/1162/4-khai-niem-bao-mat-database-trong-sql-server/
5. https://bizflycloud.vn/tin-tuc/cac-kieu-du-lieu-trong-sql-20180907094857355.htm