1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo cuối kì quản lý bán hàng quán coffee aloha môn quản trị cơ sở dữ liệu

67 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản Lý Bán Hàng Quán Coffee Aloha
Tác giả Nguyễn Ngọc Quỳnh Anh, Phạm Thị Thanh Hà, Trần Thị Kim Phú, Đỗ Nguyễn Minh Thư
Người hướng dẫn Ths. Cao Thị Nhâm
Trường học Đại Học Kinh Tế - Đại Học Đà Nẵng
Chuyên ngành Quản Trị Cơ Sở Dữ Liệu
Thể loại báo cáo
Năm xuất bản 2021
Thành phố Đà Nẵng
Định dạng
Số trang 67
Dung lượng 6,25 MB

Cấu trúc

  • 1. Mục tiêu nghiên cứu của đề tài (9)
  • 2. Nhiệm vụ của đề tài (9)
  • 3. Kết cấu của đề tài (9)
  • CHƯƠNG 1: COFFEE ALOHA VÀ CÁC CHỨNG TỪ THU THẬP ĐƯỢC (11)
    • 1.1 Địa điểm tìm hiểu (11)
    • 1.2 Các chứng từ thu thập được (11)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU (14)
    • 2.1. Cơ sở dữ liệu – SQL Server (14)
    • 2.2. C# và lập trình winforms (16)
    • 2.3. DataSet và DataTable (18)
  • 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 (19)
    • 3.1 Xây dựng mô hình liên kết (19)
    • 3.2 Thiết kế cơ sở dữ liệu mức logic (22)
    • 3.3 Mô tả thuộc tính các quan hệ (25)
    • 3.4 Mô hình cơ sở dữ liệu (Database Diagram) (28)
    • 3.5 Xác định và tạo các index cho các thuộc tính (28)
    • 3.6 Xây dựng cơ chế backup dữ liệu phù hợp cho CSDL vừa tạo (40)
    • 3.8 Phương án đề phòng hệ thống TESTDB bị tấn công bằng SQL Injection (52)
  • CHƯƠNG 4. TRIỂN KHAI HỆ THỐNG (54)
    • 4.1 Giao diện đăng nhập (54)
    • 4.2 Giao diện chính (55)
    • 4.3 Giao diện Thông tin cá nhân (58)
    • 4.4 Giao diện Quản lý Mua (58)
    • 4.5 Giao diện Quản lý Bán (61)
    • 4.6 Một số tiện ích khác (64)
  • TÀI LIỆU THAM KHẢO (10)

Nội dung

Mục tiêu nghiên cứu của đề tài

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

Nhiệm vụ của đề tài

 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 ứng dụng TESTDB với các chức năng chính là thêm, sửa, xóa và tìm kiếm trong cơ sở dữ liệu đã được tạo.

Kết cấu của đề tài

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

 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

COFFEE ALOHA VÀ CÁC CHỨNG TỪ THU THẬP ĐƯỢC

Địa điểm tìm hiểu

 Địa chỉ: 182 Sóng Hồng, Phú Bài, Hương Thủy, Thừa Thiên Huế.

 Mô hình kinh doanh: nhỏ, hộ gia đình.

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ình 1.3 Hóa đơn bán hàng cho khách

CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Cơ sở dữ liệu – SQL Server

Cơ sở dữ liệu là một tập hợp dữ liệu được tổ chức và lưu trữ điện tử trên hệ thống máy tính Khi cơ sở dữ liệu trở nên phức tạp, chúng thường được phát triển thông qua các kỹ thuật thiết kế và mô hình hóa chính thức.

SQL (Structured Query Language) is a widely used programming language designed for creating, modifying, and retrieving data from relational database management systems (RDBMS) It serves as the standard language for relational databases, utilized by various systems such as MySQL, MS Access, Oracle, Sybase, Informix, Postgres, and SQL Server.

SQL Server is a relational database management system (RDBMS) that utilizes SQL (Transact-SQL) commands for data exchange between client machines and the SQL Server installation.

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

T-SQL được chia ra làm 3 nhóm chính như sau:

Data Definition Language (DDL) refers to a set of commands used for managing and defining the structure of database objects, including essential operations such as Create, Alter, and Drop table These commands play a crucial role in establishing and modifying the framework of tables within a database.

 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) encompasses a set of commands used to manipulate and filter data, including Select, Insert, Update, and Delete These commands enable precise querying and retrieval of data.

Ngôn ngữ thủ tục được phát triển nhằm nâng cao khả năng của SQL, đồng thời đảm bảo tích hợp mượt mà với SQL Nó bổ sung một số tính năng quan trọng như biến địa phương và khả năng xử lý chuỗi/dữ liệu.

2.1.2 Xây dựng cơ sở dữ liệu

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 1: Chọn lọc thông tin → Từ điển dữ liệu

- Bước 2: Xác định thực thể

- Bước 3: Xác định mối quan hệ

Bước 4 trong quy trình thiết kế cơ sở dữ liệu là vẽ sơ đồ, bao gồm việc xác định và vẽ các thực thể cùng mối quan hệ giữa chúng Cần sắp xếp sơ đồ một cách cân đối và dễ nhìn để tăng tính trực quan Đồng thời, bổ sung các thuộc tính cho từng thực thể, gạch chân thuộc tính định danh và xác định bản số để đảm bảo tính chính xác và đầy đủ của thông tin.

Giai đoạn 2 - Thiết kế cơ sở dữ liệu ở mức logic

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ệ)

- Thực hiện chuẩn hóa theo quy tắc

- Các quan hệ nên để ở dạng chuẩn 3

- Loại đi những quan hệ thừa

- Chính xác hóa các từ đồng nghĩa

- Hợp nhất các quan hệ cùng khóa

→ KẾT QUẢ: các quan hệ có cấu trúc tốt

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# và lập trình winforms

C# (C Sharp) là ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ do Microsoft phát triển, được xây dựng trên nền tảng của C++ và Java Với sự hỗ trợ của NET Framework, C# giúp việc phát triển ứng dụng Windows Forms, WPF, game, ứng dụng web và ứng dụng di động trở nên dễ dàng hơn.

Winform, hay còn gọi là Windows Form, là giải pháp phát triển ứng dụng chạy trên nền tảng Windows Đây là công nghệ do Microsoft phát triển, cho phép lập trình viên tạo ra các ứng dụng Windows trên máy tính cá nhân một cách hiệu quả.

Windows Form có các phần cơ bản như Form, Panel, Button, Textbox, ComboBox, RadioButton, v.v.

- Bước 1: Tạo một Project mới

- Bước 2: Kết nối Database SQL Server trong C#

- Bước 3: Thiết kế các form để tạo ra giao diện người dùng cuối cùng

- Bước 4: Lập trình chức năng cho form

- Bước 5: Hoàn thành và chạy thử chương trình

Mô hình 3 lớp, hay còn gọi là mô hình Three Layer (3-Layer), được thiết kế để phân chia các thành phần trong hệ thống Mô hình này nhóm các thành phần có chức năng tương tự lại với nhau và phân chia công việc cho từng nhóm, nhằm tránh tình trạng dữ liệu bị chồng chéo và hoạt động không hiệu quả.

Mô hình 3-layer gồm có 3 phần chính:

Lớp Giao Diện Người Dùng (GUI) đóng vai trò quan trọng trong việc tương tác với người dùng Nó bao gồm các thành phần giao diện như winform và webform, thực hiện các chức năng như nhập liệu, hiển thị dữ liệu và kiểm tra tính chính xác của dữ liệu trước khi chuyển giao cho lớp Xử Lý Doanh Nghiệp (BLL).

Data Access Object (DAO) đóng vai trò quan trọng trong việc xử lý dữ liệu giữa các lớp của ứng dụng Nhiệm vụ chính của DAO là đáp ứng các yêu cầu thao tác dữ liệu từ lớp giao diện người dùng (GUI), xử lý nguồn dữ liệu từ lớp trình bày (Presentation Layer) trước khi truyền xuống lớp truy cập dữ liệu (Data Access Layer) và lưu trữ vào hệ quản trị cơ sở dữ liệu (CSDL) Ngoài ra, DAO còn kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ của dữ liệu, thực hiện các phép tính và xử lý yêu cầu nghiệp vụ, trước khi trả kết quả về lớp trình bày.

- 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…).

DataSet và DataTable

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 và là thành phần cơ bản của ADO.NET, cho phép ánh xạ cơ sở dữ liệu SQL vào các đối tượng trong bộ nhớ Nó có khả năng chứa nhiều DataTable cùng với các mối liên hệ và ràng buộc, tất cả được lưu trữ hoàn toàn trong bộ nhớ, giúp người dùng làm việc offline hiệu quả.

Cấu trúc của DataSet và DataTable

A DataSet is a complete physical database file stored in memory It consists of DataTables, which in turn include DataColumns, DataRows, and constraints The properties of both DataSet and DataTable are utilized to store collections effectively.

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.

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

Xây dựng mô hình liên kết

3.1.1 Xây dựng ER cho ĐƠN ĐẶT HÀNG

Bước 1: Chọn lọc thông tin

Từ trong HSDL Từ rõ nghĩa Viết tắt

Tên khách Tên người đặt hàng TenNDH Địa chỉ Địa chỉ DiaChi

Tên hàng Tên hàng TenHang ĐVT Đơn vị tính DonVi

Số lượng Số lượng SoLuong Đơn giá Đơn giá DonGia

Thành tiền Thành tiền ThanhTien

Thời gian Thời gian đặt hàng ThoiGian

Số Mã đơn đặt hàng MaDDH

Tên nhà cung cấp Tên nhà cung cấp TenNCC Địa chỉ cung cấp Địa chỉ cung cấp DiaChi

Số điện thoại Số điện thoại nhà cung cấp SDT

Tổng cộng Tổng thành tiền TongTien

Bảng 3.1 Những thông tin có trên hóa đơn đặt hàng

Bước 2: Xác định thực thể, thuộc tính

- NGƯỜI ĐẶT HÀNG (MaNDH, TenNDH, DiaChi)

- HÀNG (MaHang, TenHang, DonVi, DonGia)

- NHÀ CUNG CẤP (MaNCC, TenNCC, DiaChi, SDT)

Bước 3: Xác định quan hệ

- ĐẶT (MaDDH, SoLuong, ThanhTien, ThoiGian, TongTien)

Hình 3.5 Mô hình E-R đặt hàng

3.1.2 Xây dựng ER cho PHIẾU XUẤT HÓA ĐƠN

Bước 1: Chọn lọc thông tin

Từ trong HSDL Từ rõ nghĩa Viết tắt

Số HD Số hóa đơn xuất SoHDX

Giờ vào Giờ khách vào GioVao

Giờ ra Giờ khách ra GioRa

Ngày Ngày xuất hóa đơn NgayXuat

Tên món Tên món TenMon

Số lượng Số lượng SoLuong Đơn giá Đơn giá DonGia

Thành tiền 1 Thành tiền ThanhTien

Tổng tiền Tổng cộng TongCong

Bàn Vị trí bàn Ban

Bảng 3.2 Những thông tin có trên hóa đơn bán hàng

Bước 2: Xác định thực thể

Bước 3: Xác định quan hệ

- XUẤT (SoHDX, GioVao, GioRa, NgayXuat, SoLuong, ThanhTien, TongCong)

Hình 3.6 Mô hình E-R bán hàng

Hình 3.7 Tích hợp ER-1 và ER-2

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

Bước 1: Chuyển thực thể, thu được:

- NGƯỜI ĐẶT HÀNG (MaNDH, TenNDH, DiaChi)

- HÀNG (MaHang, TenHang, DonVi, DonGia)

- MÓN (MaMon, TenMon, DonGia, TinhTrang)

- NHÀ CUNG CẤP (MaNCC, TenNCC, DiaChi, SDT)

Bước 2: Chuyển quan hệ, thu được:

- XUẤT HÓA ĐƠN (SoHDX, GioVao, GioRa, NgayXuat, SoLuong, ThanhTien, TongCong, TinhTrang, MaMon, SoBan)

- ĐẶT (MaDDH, MaNCC, SoLuong, ThanhTien, TongTien, ThoiGian, MaHang, MaNDH)

- Chuẩn hóa quan hệ ĐẶT, thu được:

 ĐẶT (MaDDH, MaNDH, MaNCC, ThoiGian, TongTien, TinhTrang)

 ĐẶT_ChiTiet (MaDDH, MaHang, SoLuong, ThanhTien)

- Chuẩn hóa quan hệ XUẤT, thu được:

 XUẤT_HD (SoHDX, SoBan, GioVao, GioRa, NgayXuat, TongCong, TinhTrang)

 XUẤT_HD_ChiTiet (SoHDX, MaMon, SoLuong, ThanhTien)

Bước 4: Vẽ sơ đồ quan hệ

Hình 3.8 Sơ đồ quan hệ

Mô tả thuộc tính các quan hệ

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaHang Primary Key Int Mã hàng hóa

2 TenHang Nvarchar(50) Tên hàng hóa

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaNDH Primary Key Int Mã người đặt hàng

2 TenNDH Nvarchar(50) Tên người đặt hàng

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaDDH Primary Key Int Mã đơn đặt hàng

2 MaNDD Foreign Key Int Mã người đặt hàng

3 MaNCC Foreign Key Int Mã nhà cung cấp

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaMon Primary Key Int Mã món

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 SoBan Primary Key Int Số bàn

2 TinhTrang Nvarchar(50) Tình trạng của bàn

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 TenDN Primary Key Varchar(50) Tên đăng nhập

2 TenHienThi Nvarchar(50) Tên hiển thị

4 Loai Varchar(20) Loại tài khoản

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 SoHDX Primary Key Int Số hóa đơn xuất

2 SoBan Foreign Key Int Số bàn

Bảng 3.9 Xuất hóa đơn 3.3.8 Bảng Xuất hóa đơn chi tiết

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaMon Foreign Key Int Mã món

2 SoHDX Foreign Key Int Số hóa đơn xuất

Bảng 3.10 Xuất hóa đơn chi tiết 3.3.9 Bảng Đặt chi tiết

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaDDH Foreign Key Int Mã đơn đặt hàng

2 MaHang Foreign Key Int Mã hàng

STT Thuoc Tinh Khoa KieuDuLieu MoTaDuLieu

1 MaNCC Primary Key Int Mã nhà cung cấp

2 TenNCC Nvarchar(50) Tên nhà cung cấp

4 SDT Varchar(13) Số điện thoại

Mô hình cơ sở dữ liệu (Database Diagram)

Hình 3.9 Sơ đồ cơ sở dữ liệu

Xác định và tạo các index cho các thuộc tính

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

Có 2 loại Index: Clustered index và non - clustered index.

Bản ghi dữ liệu được lưu trữ trong một cấu trúc sắp xếp dựa trên các giá trị khóa, với mỗi bảng chỉ có một chỉ mục clustered Điều này là do các bản ghi dữ liệu chỉ có thể được sắp xếp theo một thứ tự duy nhất.

Non-clustered index là một cấu trúc dữ liệu quan trọng giúp tăng tốc độ truy xuất dữ liệu từ các bảng Khác với clustered index, non-clustered index lưu trữ và sắp xếp dữ liệu một cách riêng biệt so với các bản ghi trong bảng gốc Nó hoạt động như một bản sao dữ liệu của các cột được chọn từ bảng, giúp cải thiện hiệu suất truy vấn.

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 đó Đặc điểm cơ sở dữ liệu:

Mô hình kinh doanh nhỏ này có lượng dữ liệu lưu trữ hạn chế, với chỉ 20 bàn phục vụ, 10 món ăn trong thực đơn và 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

Lựa chọn index cho cơ sở dữ liệu:

Tất cả các bảng như Account, Ban, Mon, NhaCC, NgDatHang, Hang, Dat và XuatHD đều được thiết lập sẵn một clustered index trên khóa chính của chúng.

Hình 3.10 Clustered index của bảng Hang

- Đối với các bảng có 2 thuộc tính gộp thành 1 khóa chính (DatChiTiet, XuatHDChiTiet) cũng được mặc định tạo ra 1 clustered index trên chính khóa chính của bảng.

Hình 3.11 Clustered index của bảng DatChiTiet

Mỗi bảng trong cơ sở dữ liệu đều có khóa chính, và SQL tự động tạo một chỉ mục phân cụm (clustered index) tương ứng dựa trên các cột trong khóa chính.

Việc áp dụng clustered index trong cơ sở dữ liệu mang lại lợi ích vượt trội, giúp tăng tốc độ truy vấn dữ liệu so với non-clustered index Nếu không sử dụng clustered index, quá trình truy vấn sẽ trở nên khó khăn, và việc thực hiện các thao tác dữ liệu như Select, Insert, Update, Delete sẽ gặp nhiều trở ngại.

- Không cần thêm dung lượng ổ đĩa để lưu trữ index (giảm chi phí)

Mặc dù clustered index mang lại nhiều lợi ích, nhưng nó cũng có những nhược điểm nhất định, như việc các thao tác thêm, sửa, và xóa dữ liệu sẽ chậm hơn so với non-clustered index.

Không sử dụng non-clustered index cho các thuộc tính trong cơ sở dữ liệu quản lý quán cafe là do đặc điểm của mô hình kinh doanh hộ gia đình nhỏ, nơi mà cơ sở dữ liệu chứa ít bản ghi và lượng dữ liệu không lớn Hơn nữa, một số bảng thường xuyên có hoạt động update và insert, khiến cho việc áp dụng non-clustered index không mang lại hiệu quả tối ưu.

3.5 Xây dựng cơ chế bảo mật tương ứng cho CSDL.

SQL Server cung cấp 2 cơ chế bảo mật:

Người dùng chỉ cần được cấp tài khoản trong Windows để kết nối với SQL Server Kết nối này được gọi là kết nối tin tưởng, trong đó SQL Server sử dụng hệ thống xác thực của Windows Khi người dùng kết nối theo cách này, họ sẽ được ủy quyền bảo mật từ Windows.

Người quản trị CSDL tạo tài khoản cho người dùng bằng tên đăng nhập và mật khẩu được cung cấp Trong quá trình này, quản trị viên sẽ phân quyền cho tài khoản, xác định quyền truy cập vào các cơ sở dữ liệu cụ thể.

Database access security is crucial after granting a login account for SQL Server It is essential to assign the login account the necessary permissions to function as a user within a specific database.

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

Lý do lựa chọn bảo mật bằng cả 2 cơ chế (Authentication and Authorization)

Cơ sở dữ liệu và quản trị CSDL là vấn đề cốt lõi trong việc ứng dụng SQL Server để giải quyết các bài toán Việc xây dựng CSDL và thuật toán xử lý là cần thiết, đồng thời đảm bảo tính bảo mật cho CSDL Khi CSDL mở rộng, nhu cầu xử lý phức tạp và yêu cầu bảo mật tăng cao, dẫn đến quản trị CSDL trở nên phức tạp hơn Để bảo mật CSDL, việc đầu tiên là sử dụng Authentication để xác thực tài khoản truy cập login và đảm bảo kết nối an toàn với SQL Server.

Specific authorization involves database access security, which regulates access to a particular database, and permission security, which governs the actions a user can perform within that database.

Hình 3.12 Tạo tài khoản Login nhân viên

Trong quá trình tạo tài khoản, người quản trị không chỉ cấp quyền truy cập vào cơ sở dữ liệu mà còn cung cấp các quyền cần thiết để tài khoản có thể thực hiện các thao tác trong cơ sở dữ liệu đó.

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)

Login bằng tài khoản QLCFNv

Hình 3.16 Login vào Server bằng tài khoản QLCFNv

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.

Hình 3.17 Truy cập Database ngoài

Nhân viên sẽ có quyền xem, thêm dữ liệu vào bảng.

Hình 3.18 Quyền của Nhân viên

Hình 3.19 Quyền của Nhân viên

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

Hình 3.21 Login vào Server bằng tài khoản QLCFAdmin

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

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 diễn ra hàng ngày và dữ liệu liên tục được cập nhật, do đó, để tránh mất mát và thất lạc dữ liệu, chúng ta cần xây dựng một cơ chế sao lưu phù hợp cho cơ sở dữ liệu.

Cơ sở dữ liệu quản lý bán hàng tại quán coffee Aloha cần được cập nhật liên tục trong suốt cả ngày, do đó, việc lựa chọn cơ chế sao lưu tự động hàng ngày là rất quan trọng Hai loại sao lưu chính được áp dụng là Sao lưu đầy đủ (Full Backup) và Sao lưu chênh lệch (Differential Backup).

Việc lựa chọn cơ chế Sao lưu CSDL Tự động Hàng ngày giúp thiết lập quy trình sao lưu tự động vào lúc 11:00 tối mỗi ngày Dữ liệu sao lưu sẽ được lưu trữ tại thư mục F:\MSSQL\Backup, đảm bảo an toàn và dễ dàng truy cập khi cần thiết.

- Đố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.26 Media option backup-full

Hình 3.27 Backup option backup-full

 Bước 2: Tạo backup differential lựa chọn nơi lưu trữ bản backup

Hình 3.31 Media option backup-differential

Hình 3.32 Backup option backup-differential

- Tạo backup differental thành công

Hình 3.34 Tạo new Job backup-differential

Thực hiện lên kế hoạch các bước backup

2 Sau khi thực hiện backup full từ dữ liệu của đó thực hiện backup differential.

Hình 3.35 Job Step backup-full

Hình 3.36 Job Step backup-full(scrip)

Hình 3.37 Job Step backup-diff

Hình 3.38 Job Step backup-diff (scrip)

 Tạo lịch backup tự động

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.

 Bước 4: Hoàn thành tạo Job backup_diff

- Kiểm tra SQL Server Agent để đảm bảo tạo ra bản sao lưu

 Bước 5: Kiểm tra lịch sử backup

Hình 3.41 Kiểm tra lịch sử backup

Để đảm bảo việc sao lưu dữ liệu được thực hiện đúng cách, bạn cần truy cập vào thư mục Backup (C:\MSSQL\Backup) và kiểm tra các file backup Những file này được lưu trữ trên một ổ đĩa riêng biệt, khác với ổ đĩa chứa cơ sở dữ liệu gốc, nhằm tăng cường tính an toàn cho dữ liệu.

Hình 3.42 Nơi lưu trữ bản backup

 Bước 7: Xây dựng 2 loại backup theo kế hoạch đã đề ra

Thiết lập cơ chế backup như kế hoạch đã đề ra.

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 lưu trữ dữ liệu là do dung lượng ổ đĩa không đủ cho lượng dữ liệu lớn Sử dụng Microsoft OneDrive, dịch vụ lưu trữ đám mây, giúp người dùng lưu trữ an toàn tất cả các tập tin quan trọng, truy cập dễ dàng từ mọi nơi và đồng bộ hóa với dữ liệu trên máy tính, đáp ứng nhu cầu lưu trữ khối lượng lớn.

Nhóm đã quyết định lưu trữ toàn bộ dữ liệu vào một file sql và sau đó tải dữ liệu lên Microsoft OneDrive Phương pháp này không chỉ giúp lưu trữ dữ liệu an toàn mà còn đồng bộ hóa với máy tính, mang lại sự thuận tiện trong việc quản lý và truy cập dữ liệu.

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

Phương án đề phòng hệ thống TESTDB bị tấn công bằng SQL Injection

SQL injection là một kỹ thuật tấn công mà kẻ xấu sử dụng để xâm nhập và phá hoại cơ sở dữ liệu bằng cách chèn các lệnh SQL độc hại vào câu lệnh SQL hợp lệ thông qua các trường nhập liệu trên website.

Các dòng lệnh Inject SQL có thể làm thay đổi câu lệnh SQL, gây nguy hiểm cho bảo mật hệ thống Khi cơ sở dữ liệu có lỗ hổng, kẻ xấu có thể thực hiện SQL Injection dựa trên các điều kiện luôn đúng như 1=1 hoặc "" = "" Để bảo vệ cơ sở dữ liệu khỏi các cuộc tấn công này, việc sử dụng tham số SQL là cần thiết Các tham số SQL là các giá trị được thêm vào từ các truy vấn SQL trong thời gian thực hiện một cách có kiểm soát, giúp các công cụ SQL kiểm tra từng thông số để đảm bảo tính chính xác và ngăn ngừa việc thực thi mã độc.

Việc cộng chuỗi trong SQL có thể tạo ra lỗ hổng bảo mật cho cơ sở dữ liệu, tạo điều kiện cho kẻ xấu tấn công Do đó, thay vì cộng chuỗi, chúng ta nên sử dụng tham số để đảm bảo an toàn Nếu dữ liệu đầu vào không hợp lệ, SQL Engine sẽ tự động thông báo lỗi mà không cần phải viết thêm mã kiểm tra.

Hình 3.46 Hàm InsertXuatHDChiTiet sử dụng parameter

Hình 3.47 Hàm Login sử dụng parameter

TRIỂN KHAI HỆ THỐNG

Giao diện đăng nhập

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

Hình 4.48 Giao diện đăng nhập

Nếu bạn nhập sai tên đăng nhập hoặc mật khẩu, hệ thống sẽ hiển thị thông báo “Sai tên đăng nhập hoặc mật khẩu!” Bạn có thể nhập lại thông tin chính xác hoặc nhấn vào nút để thực hiện thao tác khác.

“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

Giao diện chính

Sau khi đăng nhập thành công, người dùng sẽ được chuyển đến giao diện chính của hệ thống Tại đây, nhân viên có thể thực hiện việc đặt món cho khách bằng cách chọn bàn mà khách đang ngồi, thêm các món ăn mà khách đã chọn, và nhấn nút "Thêm" để hoàn tất quá trình order.

Khi khách hàng ngồi vào bàn, trạng thái của bàn sẽ chuyển từ Trống sang Có người Đối với khách mua mang về, chỉ cần chọn bàn 0 và thực hiện các thao tác tương tự Nếu khách muốn đổi hoặc gộp bàn, họ chỉ cần chọn bàn tương ứng và nhấn nút Chuyển bàn hoặc Gộp bàn.

Hình 4.51 Thực hiện order cho khách

Khi khách hàng thực hiện thanh toán, chỉ cần nhấn vào nút "Thanh toán" và xác nhận hóa đơn Sau khi hoàn tất, hóa đơn sẽ được thanh toán và trạng thái bàn sẽ chuyển từ "Có khách" sang "Trống".

Hình 4.52 Thanh toán cho khách hàng

Hình 4.53 Trạng thái bàn sau khi thanh toán sẽ thay đổi

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.

Hình 4.54 Mục thông tin tài khoản

Giao diện Thông tin cá nhân

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

Hình 4.55 Giao diện Thông tin tài khoản

Giao diện Quản lý Mua

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.

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 như Nguyên vật liệu, Người đặt hàng, Nhà cung cấp và Hóa đơn nhập Trong các tab Nguyên vật liệu, Người đặt hàng và Nhà cung cấp, người dùng có khả năng thực hiện các chức năng như thêm, sửa, xóa và tìm kiếm theo nhu cầu của mình.

Khi sử dụng tab Hóa đơn nhập, người dùng cần chọn người đặt hàng và nhà cung cấp trước khi nhấn vào nút Thêm hóa đơn Tiếp theo, họ sẽ chọn nguyên vật liệu cùng số lượng đã mua và nhấn nút Thêm hàng để cập nhật hóa đơn Cuối cùng, để xác nhận tình trạng thanh toán, người dùng chỉ cần nhấn vào nút Thanh toán.

Hình 4.59 Giao diện tab Hóa đơn nhập trong mục Mua

Giao diện Quản lý Bán

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

Hình 4.60 Mục Bán Ở giao diện Bán, 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

Trong tab Tài khoản, người dùng có thể xem tên hiển thị, loại tài khoản và tên đăng nhập, nhưng chỉ có thể thay đổi tên hiển thị và loại tài khoản, không thể thay đổi tên đăng nhập Nếu quên mật khẩu, người dùng có thể nhấn nút Đặt lại mật khẩu mặc định để hệ thống tự động cập nhật lại mật khẩu cho tài khoản.

Trong tab Tài khoản của giao diện Bán, người dùng có thể kiểm tra lại các hóa đơn đã thanh toán trong khoảng thời gian đã chọn Tuy nhiên, các hóa đơn chưa thanh toán sẽ không hiển thị để người dùng xem.

Hình 4.63 Giao diện Hóa đơn trong Bán Đối với các form Bán và Mua, nếu muốn quay lại giao diện chính chỉ cần click vào dấu

“X” ở góc trên cùng bên phải để qua lại.

Ngày đăng: 19/12/2023, 15:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w