- Địa chỉ: 116 Hồ Nghinh, Phước Mỹ, Sơn Trà, Đà Nẵng 1.2 Các chức năng chính của hệ thống: - Yêu cầu xây dựng một phần mềm ứng dụng quản lý bán hàng: Người quản lý sẽ tiến hành quản lý h
Trang 1ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA THỐNG KÊ – TIN HỌC
––––––––––––––––––––––––
BÁO CÁO BÀI TẬP NHÓM
TÊN ĐỀ TÀI Cửa hàng thực phẩm Moon Milk
Nhóm: 05
Sinh viên thực hiện:
1 Trưởng nhóm: Nguyễn Hồng Sơn Lớp : 45K14
2 Thành viên: Nguyễn Tiến Dưỡng Lớp : 45K14
3 Thành viên: Nguyễn Văn Thanh Hiếu Lớp : 45K14
4 Thành viên : Phạm Văn Hiếu Lớp : 45K14
Giảng viên : Cao Thị Nhâm
Trang 2DANH SÁCH THÀNH VIÊN THAM GIA
1 Nguyễn Hồng Sơn 45K14 Trưởng nhóm
2 Nguyễn Tiến Dưỡng 45K14 Thành viên
3 Nguyễn Văn Thanh Hiếu 45K14 Thành viên
Trang 3Lời Mở Đầu
1 Mục tiêu nghiên cứu đề tài:
Đề tài này nghiên cứu xây dựng ứng dụng quản lý cửa hàng Moon Milke nhằm hỗ trợ công tác quản lý trong việc bán hàng Ứng dụng có các chức năng cơ bản như: hiển thị thông tin, thống kê, thêm mới, sửa, xóa, tìm kiếm thông tin…
2 Nhiệm vụ của đề tài:
Nghiên cứu, phân tích và thiết kế xây dựng ứng dụng quản lý bán hàng để quản lý, tối ưu hóa thời gian, chi phí cho việc vận hàng cửa hàng
3 Kết cấu của đề tài:
- Đề tài được tổ chức phần mở đầu, 2 chương nội dung và phần kết luận
Mở đầu: Giới thiệu tổng quan về cửa hàng thực phẩm Moon Milk.
Chương 1: Các yêu cầu cơ bản
Phần 1: Sưu tầm các hóa đơn, chứng từ tại cửa hàng thực phẩm Moon Milk (R1)
Phần 2: Thiết kế cơ sở dữ liệu (R2)
Phần 3: Xây dựng cơ sở dữ liệu cho bản thiết kế R2 ( R3)
Phần 4: Xác định và tạo các index cho các thuộc tính cần thiết và giải thích.(R4)
Phần 5: Xây dựng cơ chế bảo mật tương ứng cho CSDL vừa tạo và giải thích
ngắn gọn lí do lựa chọn giải pháp và triển khai giải pháp cho CSDL của nhóm (R5)
Phần 6: Xây dựng cơ chế backup dữ liệu phù hợp cho CSDL vừa tạo (R6)
Phần 7: Sử dụng 1 ngôn ngữ bất kì để phát triển một ứng dụng mang tên
TESTDB thực hiện chức năng: thêm, sửa, xóa và tìm kiếm cho CSDL vừa tạo (R7)
Chương 2: Các yêu cầu nâng cao
Phần 1: Giả sử lượng dữ liệu rất lớn, không đủ lưu trữ trong một ổ đĩa Nhóm dự
án hãy đưa ra phương án giải quyết TỐT NHẤT cho vấn đề đã đặt ra và thực hiện
trên CSDL đã xây dựng (Nêu lý do lựa chọn giải pháp và thực hiện triển khai giải
pháp cho hệ thống).(R8)
Phần 2: Để đề phòng phương án hệ thống TESTDB bị tấn công bằng SQL
Injection Nhóm dự án hãy đưa ra phương án tốt nhất và thực thi phương án đó
(Nêu lý do lựa chọn giải pháp và thực hiện triển khai giải pháp cho hệ thống).(R9)
Trang 4Mở đầu : Giới thiệu tổng quan 1.1 Tổng quan về cửa hàng thực phẩm Moon Milk:
- Công ty TNHH Moonmilk được thành lập từ năm 2013, với kinh nghiệm hơn 8 năm cung cấp thực phẩm cho nhà hàng, khách sạn cũng như hệ thống chuỗi Siêu thị thực phẩm Moonmilk, chúng tôi luôn đảm bảo cung cấp THỰC PHẨM SẠCH, thực phẩm
có nguồn gốc rõ ràng, tươi, ngon cập nhật hàng ngày
- Địa chỉ: 116 Hồ Nghinh, Phước Mỹ, Sơn Trà, Đà Nẵng
1.2 Các chức năng chính của hệ thống:
- Yêu cầu xây dựng một phần mềm ứng dụng quản lý bán hàng: Người quản lý sẽ tiến hành quản lý hàng hóa bằng ứng dụng này Hoạt động quản lý ứng dụng sẽ được thực hiện bởi các hoạt động: quản lý hàng hóa, quản lý nhân viên, quản lý chứng từ, thống
kê số lượng hàng hóa…
- Các chức năng chính của hệ thống:
+ Đăng nhập
+ Đăng ký
+ Hiển thị thông tin
+ Lưu thông tin
+ Thêm, sửa, xóa và tìm kiếm thông tin…
1.3 Định hướng hệ thống:
- là hệ thống giúp quản lý trong việc bán hàng dễ dàng hơn cũng như tối ưu việc quản
lý các sản phẩm trong từng loại hàng
- hỗ trợ các chức năng thêm, sửa, xóa, tìm kiếm thông tin hàng hóa
- dễ dàng quản lý nhân viên
1.3.1 Tên hệ thống
- Phần mềm quản lý bán hàng
1.3.2 Môi trường triển khai
- Visual studio 2013
- Microsoft SQL Server
- Ngôn ngữ lập trình C#
- Lập trình Windows Form
Trang 6Chương 1: Các yêu cầu cơ bản
Phần 1: Sưu tầm các hóa đơn, chứng từ: (tạm thời trống)
Phần 2: Thiết kế cơ sở dữ liệu:
2.1 Thiết kế cơ sở dữ liệu ở mức khái niệm:
2.1.1 Xây dựng ER cho Hóa đơn bán hàng
- Bước 1: Chọn lọc thông tin
Từ trong HSDL Từ rõ nghĩa Từ viết tắt
Trang 7Ngày Ngày Ngay Khách hàng Tên khách hàng TenKH
Địa chỉ Địa chỉ khách hàng DiaChi
Thành tiền Thành tiền ThanhTien
Tổng tiền hàng Tổng tiền hàng TongTienHang
Chiết khấu Chiết khấu ChietKhau
Tổng thanh toán Tổng thanh toán TongThanhToan
- Bước 2: Xác định các thực thể, thuộc tính:
* KHÁCH HÀNG (MaKH, TenKH, SDT, DiaChi)
* HÀNG HÓA (MaHH, MaLH, TenHang, SoLuong, DonGiaBan)
* LOẠI HÀNG (MaLH, TenLH, MoTa)
* NHÂN VIÊN (MaNV, TenNV, GioiTinh, ChucVu, NgayVaoLam, DiaChiNV, SDT, MatKhau)
- Lưu ý: Bổ sung thêm bảng NHÂN VIÊN
Từ trong HSDL Từ rõ nghĩa Từ viết tắt
Khách hàng Tên khách hàng TenKH
Địa chỉ Địa chỉ khách hàng DiaChi
Thành tiền Thành tiền ThanhTien
Tổng tiền hàng Tổng tiền hàng TongTienHang
Chiết khấu Chiết khấu ChietKhau
Tổng thanh toán Tổng thanh toán TongThanhToan
- Bước 3: Xác định quan hệ:
Trang 8- BÁN: (MaHD, MaNV, NgayHD, MaKH, ThanhTien, TongTienHang, ChietKhau,
TongThanhToan)
- Bước 4: Vẽ
2.2 Xây dựng ER cho phiếu nhập hàng (hóa đơn nhập hàng):
- Bước 1: Chọn lọc thông tin
Trang 9Từ trong HSDL Từ rõ nghĩa Từ viết tắt
Đơn vị bán hàng Nhà cung cấp hàng NCC Địa chỉ Địa chỉ nhà cung cấp hàng DiaChi Điện thoại Số điện thoại nhà cung cấp SDT
Tên hàng hóa, dịch vụ Tên hàng hóa, dịch vụ nhập TenHang
Số lượng Số lượng hàng nhập SoLuongNhap
Cộng tiền hàng Tổng tiền hàng nhập TongTienNhap Tiền thuế GTGT Thuế giá trị gia tăng ThueGTGT Tổng cộng tiền thanh toán Tổng cộng tiền thanh toán TongThanhToan Người mua hàng Người mua hàng/ nhập
- Bước 2: Xác định các thực thể, thuộc tính:
* HÀNG HÓA (MaHH, MaLH, TenHH, DVT, DonGiaNhap)
* LOẠI HÀNG (MaLH, TenLH, MoTa)
Trang 10* NHÂN VIÊN (MaNV, TenNV, GioiTinh, ChucVu, NgayVaoLam, DiaChiNV, SDT, MatKhau)
* NHÀ CUNG CẤP (MaNCC, TenNCC, DiaChiNCC, SDT)
Từ trong HSDL Từ rõ nghĩa Từ viết tắt
Số Mã hóa đơn nhập hàng MaPNH
Đơn vị bán hàng Nhà cung cấp hàng TenNCC
Địa chỉ Địa chỉ nhà cung cấp hàng DiaChiNCC
Điện thoại Số điện thoại nhà cung cấp SDT
Ngày Ngày nhập hàng NgayNhap
Tên hàng hóa, dịch vụ Tên hàng hóa, dịch vụ nhập TenHang
Số lượng Số lượng hàng nhập SoLuongNhap
Cộng tiền hàng Tổng tiền hàng nhập TongTienNhap Tiền thuế GTGT Thuế giá trị gia tăng ThueGTGT
Tổng cộng tiền thanh toán Tổng cộng tiền thanh toán TongThanhToan Người mua hàng Người mua hàng/ nhập
- Bước 3: Xác định quan hệ: (Nhập)
+ NHẬP (MaPNH, NgayNhap SoLuong, ThanhTien, TongTienNhap, ThueGTGT, TongThanhToan)
- Bước 4: Vẽ
Trang 11Tích hợp ER hóa đơn bán hàng và ER hóa đơn nhập hàng:
Trang 122.2 Thiết kế cơ sở dữ liệu ở mức Logic:
- Chuyển thực thể, thu được:
* KHÁCH HÀNG: (MaKH, TenKH, DiaChi, SDT)
* HÀNG HÓA: (MaHH, MaLH, TenHang, SoLuong, DonGiaBan)
* LOẠI HÀNG: (MaLH, TenLH, MoTa)
* NHÀ CUNG CẤP: (MaNCC, TenNCC, DiaChiNCC, SDT)
* NHÂN VIÊN: (MaNV, TenNV, GioiTinh, ChucVu, NgayVaoLam, DiaChiNV, SDT, MatKhau)
- Chuyển quan hệ, thu được:
Trang 13* BÁN: (MaHD, MaNV, MaKH, MaHH, NgayHD, ThanhTien, TongTienHang,
ChietKhau, TongThanhToan)
* NHẬP: (MaPNH, NgayNhap, SoLuong, ThanhTien, TongTienNhap, VAT,
TongThanhToan, MaNV, MaNCC, MaHH)
- Chuẩn hóa quan hệ BÁN, thu được:
* HoaDonBan: (MaHD, MaNV, MaKH, NgayHD)
* ChiTiet_HoaDonBan: (MaHD, MaHH, ThanhTien, TongTienHang, ChietKhau,
TongThanhToan)
- Chuẩn hóa quan hệ NHẬP, thu được:
* HoaDonNhap: (MaPNH, MaNV, MaNCC, NgayNhap)
* ChiTiet_HoaDonNhap: (MaPNH, MaHH, SoLuong, ThanhTien, TongTienNhap, VAT, TongThanhToan)
- Vẽ sơ đồ quan hệ:
Trang 14Phần 3: Xây dựng cơ sở dữ liệu cho bản thiết kế:
Phần 4: Xác định và tạo các index cho các thuộc tính cần thiết và giải thích:
I Các Index cần thiết tạo:
Tạo Index cho Tên Hàng Hóa để khi tìm hàng hóa trong bảng Hàng Hóa
nhanh hơn:
CREATE NONCLUSTERED INDEX IX_HangHoa_TenHH ON HangHoa(TenHH)
Tạo Index cho Loại Hàng Hóa để khi tìm hàng hóa theo nhóm hàng hóa
trong bảng Hàng Hóa nhanh hơn:
CREATE NONCLUSTERED INDEX IX_HangHoa_MaLH ON HangHoa(MaLH)
Tạo Index cho Mã Hàng Hóa và Mã Nhân Viên để khi tìm hàng hóa và
nhân viên bán trong bảng Chi Tiết Hóa Đơn Bán Nhanh hơn:
CREATE NONCLUSTERED INDEX IX_ChiTiet_HoaDonBan_MaHH_MaNV ON
ChiTiet_HoaDonBan(MaHH,MaNV)
Trang 15 Tạo Index cho Tên Loại Hàng để khi tìm loại hàng hóa trong bảng Loại
Hàng nhanh hơn:
CREATE NONCLUSTERED INDEX IX_LoaiHang_TenLH ON LoaiHang(TenLH)
Tạo Index cho Ngày Hóa Đơn để khi tìm ngày nớ có bao nhiêu hóa đơn
trong bảng Hóa Đơn Bán nhanh hơn:
CREATE NONCLUSTERED INDEX IX_HoaDonBan_NgayHD ON HoaDonBan(NgayHD)
Tạo Index cho Tên Khách Hàng để khi tìm khách hàng trong bảng
Khách Hàng nhanh hơn:
CREATE NONCLUSTERED INDEX IX_KhachHang_TenKH ON KhachHang(TenKH)
Tạo Index cho Tên Nhân Viên để khi tìm Nhân Viên trong bảng Nhân
Viên nhanh hơn:
CREATE NONCLUSTERED INDEX IX_NhanVien_TenNV ON NhanVien(TenNV)
Tạo Index cho Mã Hàng Hóa và Mã Nhân Viên để khi tìm hàng hóa và
nhân viên nhập trong bảng Chi Tiết Hóa Đơn Nhập nhanh hơn:
CREATE NONCLUSTERED INDEX IX_ChiTiet_HoaDonNhap_MaHH_MaNV ON
ChiTiet_HoaDonNhap(MaHH,MaNV)
Tạo Index cho Mã Nhân Viên và Nhà Cung Cấp để khi tìm nhân viên
nhập và nhà cung cấp trong bảng hóa đơn nhập nhanh hơn:
CREATE NONCLUSTERED INDEX IX_HoaDonNhap_MaNV_MaNCC ON
HoaDonNhap(MaNV,MaNCC)
Tạo Index cho Tên Nhà Cung Cấp để khi tìm nhà cùng câp trong bảng
Nhà Cung Cấp nhanh hơn:
CREATE NONCLUSTERED INDEX IX_NhaCungCap_TenNCC ON NhaCungCap(TenNCC)
II Các mặt lợi khi tạo các Index như trên:
1 Tìm kiếm bản ghi:
Việc sử dụng phổ biến nhất cho một chỉ mục trong SQL Server là tìm một bản ghi hoặc tập hợp các bản ghi phù hợp với điều kiện mệnh đề WHERE
Ví dụ: SELECT * FROM HANGHOA WHERE TenHH = ‘Bia larue’
Truy vấn SQL Select ở trên nhận được lợi ích từ chỉ mục mà chúng
ta đã tạo trên cột TenHH Điều này là do tên hàng hóa được sắp xếp theo thứ tự bảng chữ cái trong chỉ mục Từ chỉ mục, thật dễ dàng để
Trang 16xác định các bản ghi ‘B ’ và sử dụng địa chỉ hàng, các bản ghi tương ứng từ bảng có thể được tìm nạp nhanh chóng
Trong SQL Server, không chỉ câu lệnh SELECT mà cả câu lệnh DELETE và UPDATE đều có thể nhận được lợi ích từ chỉ mục bởi
vì để cập nhật hoặc xóa một hàng, trước tiên máy chủ SQL cần phải tìm hàng đó và chỉ mục có thể giúp tìm kiếm và tìm thấy hàng cụ thể
đó một cách nhanh chóng, điều này cuối cùng sẽ cải thiện hiệu suất của truy vấn
2 Sắp xếp bản ghi
Khi chúng ta yêu cầu một tập hợp kết quả được sắp xếp, trước tiên,
cơ sở dữ liệu sẽ cố gắng tìm một chỉ mục và cố gắng tránh sắp xếp các kết quả trong quá trình thực thi truy vấn
Ví dụ: SELECT * FROM HoaDonBan ORDER BY NgayHD
Khi chúng ta có một chỉ mục trên cột NgayHD của bảng Hóa Đơn Bán, các khoản Ngày Hóa Đơn đã được sắp xếp Ở đây, công cụ cơ
sở dữ liệu chỉ cần quét chỉ mục từ mục nhập đầu tiên đến mục nhập cuối cùng và truy xuất các hàng theo thứ tự được sắp xếp Điều này tránh việc sắp xếp các hàng trong quá trình thực thi truy vấn, điều này có thể cải thiện đáng kể thời gian xử lý
3 Nhóm bản ghi
Chúng ta có thể sử dụng mệnh đề GROUP BY để nhóm các bản ghi
và giá trị tổng hợp Ví dụ , đếm số lượng nhân viên cho từng bộ phận Để xử lý một truy vấn với mệnh đề GROUP BY, cơ sở dữ liệu thường sẽ sắp xếp kết quả trên các cột có trong mệnh đề GROUP
BY Hiện tại, chúng tôi không có bất kỳ chỉ mục nào trên cột bộ phận Vì vậy, trước tiên chúng ta hãy tạo một chỉ mục trên cột bộ phận
o Ví dụ: CREATE NONCLUSTERED INDEX IX_HangHoa_MaLH ON HangHoa(MaLH)
Truy vấn sau đây đếm số lượng nhân viên tại mỗi bộ phận bằng cách nhóm các bản ghi lại với nhau có cùng giá trị bộ phận
SELECT MaLH, COUNT(TenHH) AS SoLuongHangHoa From HangHoa GROUP BY MaLH
Ở đây, để nhóm các Hàng Hóa có cùng nhóm hàng, công cụ truy vấn
có thể sử dụng chỉ mục IX_HangHoa_MaLH để truy xuất các mã hàng hóa đã được sắp xếp Vì các mã hàng hóa phù hợp có mặt trong các mục nhập chỉ số liên tiếp, nên việc đếm tổng số hàng hóa tại mỗi
mã hàng một cách nhanh chóng