MỤC LỤC
DANH MỤC CÁC BẢNG
2
DANH MỤC CÁC HÌNH
3
Trong thời đại CNTT phát triển mạnh mẽ như hiện nay,việc ứng dụng
CNTT vào việc quản lý rất được chú trọng. Hơn nữa, việc ứng dụng CNTT đã
đáp ứng được nhu cầu quản lý của con người, giảm thiểu thời gian và công
sức lao động của con người.
Đối với một siêu thị máy tính, việc quản lý mua,bán, nhập kho, xuất kho
là việc làm rất tốn thời gian và công việc lưu trữ bằng tài liệu thô rất vất vả. Vì
vậy, em đã xây dựng ứng dụng quản lý siêu thị bằng ngôn ngữ C# cho siêu thị
máy tính Trần Anh.
Mục tiêu của em là xây dựng thành công ứng dụng quản lý siêu thị máy
tính bằng ngôn ngữ C# cho siêu thị máy tính Trần Anh.
Nhiệm vụ đặt ra đầu tiên là phải đáp ứng tốt căn bản quản lý nhập hang,
xuất hang, mua và bán, thống kê lượng hang tồn kho bằng các thao tác thêm,
sửa, xóa, và các câu lệnh truy vấn, Sử dụng Hệ quản trị cơ sở dữ liệu SQL
Server là môi trường lưu trữ dữ liệu cho ứng dụng. Kế đó là xây dựng giao
diện trực quan, dễ sử dụng.
Nội dung báo cáo này bao gồm 4 chương.Trong đó, chương 1 là việc
khảo sát, phân tích thiết kế hệ thống. Chương 2 là các giải pháp công nghệ.
Chương 3 là giao diện và cài đặt chương trình và cuối cùng là kết luận hướng
phát triển của ứng dụng quản lý siêu thị này.
Em xin chân thành cảm ơn cô trong thời gian qua đã cho em nhiều kiến
thức quý giá về lĩnh vực lập trình trên ngôn ngữ C# để em có thể hoàn thành
đề tài này một cách tốt nhất. Tuy nhiên, sự hiểu biết của em về lĩnh vực này
còn chưa sâu sắc nên chắc chắn sẽ có nhiều sai sót, em mong cô thông cảm
và góp ý thêm cho em . Em xin chân thành cảm ơn cô.
4
Chương 1. KHẢO SÁT, PHÂN TÍCH THIẾT KẾ HỆ THỐNG
1.1Khảo sát đề tài
1.1.1 Giới thiệu về siêu thị máy tính
1.1.2 Bài toán đặt ra và yêu cầu
Bài toán đặt ra : Một siêu thị máy tính (Trần Anh là 1 ví dụ), cần 1
chương trình quản lý siêu thị của mình. Yêu cầu đặt ra là phải quản lý nhân
sự, sản phẩm,… của siêu thị. Nhân viên quản lý có thể truy cập vào hệ thống,
truy cập để thêm sửa xóa các chức năng quản lý của hệ thống. Nhân viên bán
hàng có thể truy cập vào hệ thống và chỉ đảm nhiệm thêm , sửa, xóa các hóa
đơn nhập hàng từ các nhà cung cấp, và sẽ thêm các sản phẩm.
Chương trình này như là để giải quyết bài toán trên, phần nào đó giải
quyết được yêu cầu của bài toán, nhằm đáp ứng nhu cầu của thị trường là
cần 1 chương trình quản lý siêu thị, giảm nhẹ sức lào động, giảm nhẹ chi tiêu,
….
- Chức năng
• Quản lý nhà cung cấp
• Quản lý nhân viên
• Quản lý sản phẩm(hiện có trong kho)
• Quản lý chủng loại sản phẩm
• Quản lý khách mua hàng
• Quản lý các hóa đơn(nhập hang từ nhà cung cấp và đơn bán hàng)
- Trong đó mỗi nghiệp vụ quản lý đều có thể thêm, sửa , xóa
- Có sự ràng buộc toàn vẹn cơ sở dữ liệu
a. Chức năng hệ thống quản lý siêu thị máy tính
Nhập hàng:
Khi nhập hàng hóa từ nhà cung cấp, nhân viên nhập hàng sẽ tiến hành lập
phiếu nhập và cập nhật hàng hóa vào cơ sở dữ liệu.
Bán hàng:
Khi có yêu cầu xuất hàng lên quầy, nhân viên xuất hàng sẽ kiểm tra hàng
trong kho, tiến hành lập phiếu xuất hàng và cập nhật hàng vào cơ sở dữ liệu.
Khi khách đến mua hàng và yêu cầu thanh toán, nhân viên thâu ngân sẽ
tính tiền cho khách, lập hoá đơn và cập nhật vào cơ sở dữ liệu.
Kiểm kê hàng hoá:
Cuối mỗi ngày hay bất kỳ thời điểm nào có nhu cầu kiểm kê lại số lượng
hàng hóa trong siêu thị, nhân viên kiểm kê sẽ tiến hành lập phiếu kiểm kê để
biết số lượng thực tế của một mặt hàng cụ thể.
Báo cáo thống kê:
5
Cuối mỗi ngày hay mỗi kỳ hoạt động, nhân viên tin học sẽ chịu trách nhiệm lập
báo cáo dựa trên các thông tin về hóa đơn bán hàng, phiếu nhập, phiếu
xuất…
b. Yêu cầu hệ thống
Hệ thống phải đáp ứng đầy đủ các yêu cầu về nghiệp vụ như
quản lý đặt phòng, trả phòng, thanh toán, quản lý dịch vụ, vật từ,
quản lý phòng, hóa đơn…
Ngoài ra hệ thống phải đáp ứng đủ một số yêu cầu khác như
giao Giao diện hệ thống phải dễ sử dụng, trực quan, thân thiện với
mọi người dùng. Cho phép truy cập dữ liệu đa người dùng. Tính bảo
mật và độ an toàn cao. Tốc độ xử lý của hệ thống phải nhanh chóng
và chính xác.Người sử dụng phần mềm có thể sẽ không biết nhiều về
tin học nhưng vẫn sử dụng một cách dễ dàng nhờ vào sự trợ giúp
của hệ thống.Phần hướng dẫn sử dụng phần mềm phải ngắn gọn, dễ
hiểu và sinh động.Cấp quyền chi tiết cho người sử dụng.
1.2Phân tích thiết kế hệ thống thông tin
1.2.1 Phân tích yêu cầu
a. Các quy trình nghiệp vụ
Nhập hàng từ nhà cung cấp:
Khi nhà cung cấp giao hàng, nhân viên nhập hàng sẽ tiếp nhận hàng
hóa, đồng thời kiểm tra xem thông tin về nhà cung cấp và những hàng hóa
được nhập có sẵn trong danh mục chưa. Nếu chưa có thông tin về nhà cung
cấp lẫn hàng hóa được nhập tức đây là mặt được nhập lần đầu, nhân viên
phải nhập đầy đủ thông tin của nhà cung cấp và hàng hóa. Trong trường hợp
chỉ thiếu thông tin nhà cung cấp hoặc thông tin hàng thì nhân viên chỉ cần tạo
danh mục cho thông tin còn thiếu. Khi đã có đầy đủ thông tin, nhân viên nhập
hàng sẽ tiến hành lập phiếu nhập hàng, in và lưu trữ phiếu. Khi phiếu nhập
được lập xong, số lượng hàng hóa mới sẽ tự động cập nhật vào cơ sở dữ
liệu.
Bán hàng:
Khi khách đến mua hàng và có yêu cầu thanh toán, nhân viên thu ngân
sẽ tiếp nhận yêu cầu thanh toán. Nhân viên phải kiểm tra xem mã sản phẩm
có tồn tại không,số lượng trong kho có còn không, nếu không có mã sản
phẩm, nhân viên này sẽ yêu cầu nhân viên quản lý kiểm tra lại. Ngược lại,
nhân viên sẽ tiến hành tính tiền và lập hóa đơn cho khách hàng. Hóa đơn sau
khi lập được in cho khách hàng và lưu trữ lại. Số lượng hàng được tự động
cập nhật vào cơ sở dữ liệu.
Kiểm kê hàng hóa:
6
Cuối ngày hoạt động hay bất cứ khi nào có yêu cầu kiểm kê hàng hóa,
nhân viên kiểm kê sẽ tiến hành lập phiếu kiểm kê cho mặt hàng cần phải kiểm
kê. Đồng thời đối chiếu với các phiếu nhập, phiếu xuất, hóa đơn bán ra để biết
số lượng hàng hóa lưu thông như thế nào.
Lập các báo cáo thống kê:
Tùy thuộc vào quy định của siêu thị mà các báo cáo được lập cuối ngày,
cuối tháng hay cuối mỗi kỳ hoạt động. Khi có yêu cầu lập báo cáo, nhân viên
tin học sẽ lựa chọn hình thức và tiêu chí lập báo cáo phù hợp với yêu cầu đề
ra. Các loại hình báo cáo có thể như: báo cáo bán hàng, báo cáo nhập hàng,
báo cáo xuất hàng, báo cáo hàng tồn, và các tiêu chí báo cáo như: báo cáo
theo ngày, chi tiết theo nhà cung cấp, theo từng loại hàng hóa… Tùy theo yêu
cầu của người quản lý mà nhân viên sẽ chọn ra hình thức lập báo cáo phù
hợp.
c. Phân quyền hệ thống
Người quản lý:
Mô tả Là giám đốc siêu thị hoặc những người quản lý các
bộ phận trong siêu thị.
Vai trò Chịu trách nhiệm quản lý hoạt động của siêu thị hay
các bộ phận riêng lẻ.
Quyền Sử dụng toàn bộ các chức năng của hệ thống.
Bảng 1.1 Phân quyền đối với người quản lý
Nhân viên nhập hàng:
Mô tả Nhân viên làm việc trong siêu thị, thực hiện nghiệp
vụ nhập hàng hóa vào kho.
Vai trò Chịu trách nhiêm trong khâu nhập hàng từ nhà cung
cấp, lập phiếu nhập hàng.
Quyền Sử dụng các chức năng: lập phiếu nhập; quản lý
thông tin nhóm hàng, ngành hàng, hàng hóa và nhà
cung cấp.
Bảng 1.2 Phân quyền đối với nhân viên nhập hàng
Nhân viên bán hàng:
Mô tả Nhân viên làm việc trong siêu thị, thực hiện nghiệp
vụ xuất hàng hóa lên quầy. Nhân viên làm việc trong
siêu thị, thực hiện nghiệp vụ thu ngân.
Vai trò Chịu trách nhiệm trong khâu xuất hàng từ kho lên
quầy, lập phiếu xuất hàng. Chịu trách nhiệm trong khâu
thanh toán cho khách hàng.
Quyền Sử dụng các chức năng: lập phiếu xuất; xem thông
tin hàng hóa, kiểm tra hàng tồn,lập hóa đơn bán.
Bảng 1.3 Phân quyền đối với nhân viên bán hàng
7
Nhân viên kiểm kê:
Mô tả Nhân viên làm việc trong siêu thị, thực hiện nghiệp
vụ kiểm kê hàng hoá.
Vai trò Chịu trách nhiệm trong khâu kiểm kê, thống kê số
lượng hàng hóa trong siêu thị.
Quyền Sử dụng các chức năng: lập phiếu kiểm kê, xem
thộng tin các phiếu nhập và xuất, kiểm tra hàng tồn.
Bảng 1.4 Phân quyền đối với nhân viên kiểm kê
Đây là chức quyền hạn chung của nhân viên trong siêu thị
1.2.2 Phân tích hệ thống quản lý
a. Xây dựng mô hình phân cấp chức năng:
Hình 1.1 Mô hình phân cấp chức năng hệ thống quản lý siêu thị máy tinh
Mô hình phân cấp chức năng có chức năng chính là Quản lý siêu thị máy
tính. Trong đó có các chức năng con là: Quản lý nhà cung cấp, Quản lý nhân
viên, Quản lý sản phẩm, Quản lý hóa đơn, Quản lý khách hàng, Báo cáo
thống kê.
Quản lý nhà cung cấp: Quản lý thông tin các nhà cung cấp sản phẩm cho
siêu thị. Người sử dụng có thể them, sửa, xóa thông tin này.
Quản lý nhân viên: Thông tin nhân viên làm việc trong siêu thị được quản
lý bởi chức năng này. Người sử dụng(ở đây là quản lý, người quản trị viên)
thực hiện them khi có nhân viên mới vào, sửa thông tin, xóa thông tin nhân
viên khi nhân viên có xin nghỉ việc hoặc bị sa thải
Quản lý sản phẩm: Bao gồm thông tin sản phẩm, số lượng nhập vào, xuất
ra, cập nhật liên tục khi nhân viên bán hàng cho khách hàng hoặc nhập hàng
từ nhà cung cấp. Sản phẩm được phẩm loại theo từng loại để tiện quản lý
8
Quản lý khách hàng: Khách hàng tới mua hàng tại siêu thị, thông tin khách
hàng sẽ được lưu lại. Khách hàng khi mua sản phẩm sẽ được tích điểm và
nhận khuyến mại sau này.
Quản lý hóa đơn(bao gồm hóa đơn bán hàng và nhập hàng): Hóa đơn sau
khi nhập hàng, xuất hàng được lưu lại
Báo cáo thống kê: Chức năng này cho phép người dùng thống kê lại số
lượng hàng tồn, lượng hàng đã bán, số tiền lãi mỗi tháng, năm,… .
b. Xây dựng mô hình luồng dữ liệu mức khung cảnh:
Hình 1.2 Mô hình luồng dữ liệu mức khung cảnh
Xây dựng mô hình này cần xác định các tác nhân tác động đến hệ thống,
đó là các tác nhân ngoài: nhân viên,quản lý
Nhân viên và quản lý thực hiện toàn bộ thao tác liên quan tới chức năng
chính của hệ thống
9
c. Mô hình luồng dữ liệu mức đỉnh:
Hình 1.3 Mô hình luồng dữ liệu mức đỉnh
Ở mô hình luồng dữ liệu mức đỉnh, chức năng lớn được tách thành 6 chức
năng nhỏ đó là: Quản lý nhà cung cấp, Quản lý sản phẩm, Quản lý khách
hàng, Quản lý hóa đơn , Quản lý nhân viên, Báo cáo thống kê.
d. THUỘC TÍNH VÀ RÀNG BUỘC CƠ SỞ DỮ LIỆU
Xác định thực thể:
Thực thể 1:NHANVIEN
- Mỗi thực thể tượng trưng cho một nhân viên trong siêu thị
- Các thuộc tính: MaNV (thuộc tính khóa để phân biệt nhân viên này với
nhân viên khác);
AnhDaiDien; HotenNV; Gioitinh; CMND; NgaySinh; DiaChi;
SoDienThoai ;Email;
Thực thể 2:CHUCVU
- Mỗi thực thể tượng trưng cho một chức vụ của nhân viên trong siêu thị
- Các thuộc tính: MaCV (thuộc tính khóa để phân biệt chức vụ này với
chức vụ khác); TenCV.
10
Thực thể 3:QUYEN_DANGNHAP
- Mỗi thực thể tượng trưng cho quyền đăng nhập của nhân viên tùy theo
chức vụ của nhân viên đó.
- Các thuộc tính: TenDN (thuộc tính khóa); MatKhau.
Thực thể 4:SANPHAM
- Mỗi thực thể tượng trưng cho một loại hàng hóa trong siêu thị.
- Các thuộc tính: MaSP (thuộc tính khóa để phân biệt sản phẩm này với
sản phẩm khác); HinhAnh;
TenSP;HangSX;XuatXu;GiaBan;Soluong;ThoihanBH.
Thực thể 5:LOAISP
- Mỗi thực thể tượng trưng cho một nhóm hàng trong siêu thị
- Các thuộc tính: Maloai (thuộc tính khóa); TenLoai.
Thực thể 6:NHACC
- Mỗi thực thể tượng trưng cho một nhà cung cấp hàng hóa cho siêu thị.
- Các thuộc tính: MaNCC (thuộc tính khóa); TenNCC; DiaChi; Sodt; Fax;
Email; NgayHopTac.
Thực thể 7:KHACHHANG
- Mỗi thực thể tượng trưng cho một khách hàng mua hàng trong siêu thị.
- Các thuộc tính: MaKH; TenKH;Gioitinh;CMND; DiaChi; Sodt; Email;
DiemTT.
Thực thể 8:HOADONNHAP
- Mỗi thực thể tượng trưng cho một hóa đơn nhập hàng của siêu thị.
- Các thuộc tính: MaHDN;NgayNhap;NgayGiaoHang.
Thực thể 9:CHITIETHOADONNHAP
- Mỗi thực thể tượng trưng cho một sản phẩm nằm trong đơn hàng đã
nhập.
- Các thuộc tính: MaHDN, MaSP,TenSP;LoaiSP;Soluong;XuatXu;GiaMua;
TongTien
Thực thể 10:HOADONBAN
- Mỗi thực thể tượng trưng cho một hóa đơn bán hàng của siêu thị
- Các thuộc tính: MaHDB; HotenKH;GioiTinh;CMND;NgayMua.
Thực thể 11:CHITIETHOADONBAN
- Mỗi thực thể tượng trưng cho một sản phẩm nằm trong đơn hàng đã
bán.
11
- Các thuộc tính: MaHDB,
MaSP,TenSP;Soluong;GiaBan;ThanhToan;KhauTru;
e. Xây dựng bảng thuộc tính:
Bảng LOAISP
Mục đích của bảng LOAISP là lưu trữ các loại mặt hàng mà siêu thị này
bán.
Bảng Loaisp có các trường: Maloai, tenloai. Trong đó maloai là khóa
chính.
Tên thuộc tính Kiểu dữ liệu Ghi chú
Maloai Nvarchar(10), not null Khóa chính
Tenloai Nvarchar(30), null
Bảng 1.5 Bảng thực thể loại sản phẩm
Bảng SANPHAM
Tên thuộc tính Kiểu dữ liệu Ghi chú
MaSP Nvarchar(10) not null Khóa chính
HinhAnh Image, not null
TenSP Nvarchar(10), not null
MaLoai Nvarchar(10), null Khóa ngoại (bảng
LOAISP)
HangSX Nvarchar(30), null
Xuatxu Nvarchar(20), null
Giaban Numeric(20,0) null
Soluong Numeric(5,0) null
ThoihanBH Numeric(2,0) null
Bảng 1.6 Bảng thực thể sản phẩm
Bảng CHUCVU
Tên thuộc tính Kiểu dữ liệu Ghi chú
Machucvu Nvarchar(10), not null Khóa chính
TenChucvu Nvarchar(30), null
Bảng 1.7 Bảng thực thể chức vụ nhân viên
Bảng NHANVIEN
Tên thuộc tính Kiêu dữ liệu Ghi chú
MaNV Nvarchar(10) not null Khóa chính
AnhDaiDien image
HotenNV nvarchar(35)
Gioitinh nvarchar(8)
CMND Numeric(9,0) null
Ngaysinh Date, null
12
Diachi nvarchar(35)
Sodt Numeric(5,0) null
Email nvarchar(30)
Ngayvaolam Date, null
MaChucVu nvarchar(10) Khóa ngoại
Bảng 1.8 Bảng thực thể nhân viên
Bảng NHACC
Tên thuộc tính Kiểu dữ liệu Ghi chú
MaNCC Nvarchar(10), not null Khóa chính
TenNCC Nvarchar(30), not null
Diachi Nvarchar(50), null
Sodt Numeric(11,0), null
Fax Numeric(11,0), null
Ngayhoptac date
Bảng 1.9 Bảng thực thể nhà cung cấp
13
Bảng KHACHHANG
Tên thuộc tính Kiểu dữ liệu Ghi chú
MaKH Nvarchar(10), not null Khóa chính
HoTenKH Nvarchar(35), not null
Gioitinh Nvarchar(10), not null
CMND Numeric(9,0), not null
Diachi Nvarchar(40), null
SDT Numeric(11,0), null
Email Nvarchar(35), null
DiemTT Numeric(5,2), null
Bảng 1.10 Bảng thực thể Khách hàng
f. Thiết kế CSDL mức vật lý cho chương trình quản lý điểm
Qua phân tích và thiết kế CSDL mức logic ở trên ta xây dựng được các
bảng gồm các trường và kiểu dữ liệu như sau:
Hình 1.4 Xây dựng bảng ‘Dangnhap’
Hình 1.5 Xây dựng bảng ”Chucvu”
14
Hình 1.6 Xây dựng bảng “Nhanvien”
Hình 1.7 Xây dựng bảng “Nhacungcap”
Hình 1.8 Xây dựng bảng “Loaisp”
15
Hình 1.9 Xây dựng bảng “Sanpham”
Hình 1.10 Xây dựng bảng “Khachhang”
16
Hình 1.11 Xây dựng bảng “Hoadonban”
Hình 1.12 Xây dựng bảng “ChitietHDB”
17
Hình 1.13 Xây dựng bảng “Hoadonnhap”
Hình 1.14 Xây dựng bảng “ChitietHDN”
g. Mô hình thực thể liên kết
Sau khi tạo các bảng từ các bảng thực thể trên ta sẽ được mô hình thực
thể liên kết của hệ thống(Diagram)
18
Hình 1.4 Mô hình liên kết thực thể hệ thống
19
Chương 2. CÁC GIẢI PHÁP CÔNG NGHỆ
2.1 Ngôn ngữ lập trình C# (C Sharp)
2.1.1 Giới thiệu ngôn ngữ C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi
Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. Tên của ngôn ngữ bao
gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số
thường. Microsoft phát triển C# dựa trên C++ và Java. C# được miêu tả là
ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java.
2.1.2 Ưu điểm
- C# kế thừa những ưu điểm của C/C++, bỏ đi dư thừa không cần thiết gây
khó khăn cho người dùng.
- Câu lệnh C# đơn giản, ít từ khóa
- Tính năng debug rất thuận tiện
- Ngôn ngữ lập trình C# được đánh giá là dễ học và kết hợp nhiều ưu
điểm của lập trình hướng đối tượng java và C++
- Ngôn ngữ C# là cơ sở để phát triển các ứng dụng WindowsForm,
ASP.NET,
2.1.3 Nhược điểm
Chỉ có thể chạy trên nền tảng .NET Framework và nền là hệ điều hành
Windows.
2.2 Công cụ lập trình Visual Studio 2012
Visual Studio là bộ công cụ lập trình chuyên dụng dành cho những người
lập trình trên nền tảng .NET và ngôn ngữ C#, ngoài ngôn ngữ C#, Visual
Studio còn hỗ trợ ngôn ngữ C, C++,…
Giao diện lập trình trực quan,
2.3 Hệ quản trị cơ sở dữ liệu SQL Server
Hệ quản trị cơ sở dữ liệu (Database Management System): Là một hệ
thống phần mềm cho phép tạo lập cơ sở dữ liệu và điều khiển mọi truy cập đối
với cơ sở dữ liệu đó. Trên thị trường phần mềm hiện nay đã xuất hiện khá
nhiều phần mềm hệ quản trị cơ sở dữ liệu như: Microsoft Access, SQL Server,
SQLite, Oracle,…
Hệ quản trị cơ sở dữ liệu quan hệ (Relation Database Management
System): là hệ quản trị cơ sở dữ liệu theo mô hình quan hệ.
2.3.1 Các khả năng của hệ quản trị CSDL
- Có hai khả năng chính cho phép phân biệt các hệ quản trị cơ sở dữ liệu
với các Kiểu dữ liệu hệ thống lập trình khác:
- Khả năng quản lý dữ liệu tồn tại lâu dài: đặc điểm này chỉ ra rằng có một
cơ sở dữ liệu tồn tại trong một thời gian dài, nội dung của cơ sở dữ liệu này là
các dữ liệu mà hệ quản trị CSDL truy nhập và quản lý.
- Khả năng truy nhập các khối lượng dữ liệu lớn một cách hiệu quả.
- Ngoài hai khả năng cơ bản trên, hệ quản trị CSDL còn có các khả năng
khác mà có thể thấy trong hầu hết các hệ quản trị CSDL đó là:
- Hỗ trợ ít nhất một mô hình dữ liệu hay một sự trừu tượng toán học mà
qua đó người sử dụng có thể quan sát dữ liệu.
- Ðảm bảo tính độc lập dữ liệu hay sự bất biến của chương trình ứng dụng
đối với các thay đổi về cấu trúc trong mô hình dữ liệu.
- Hỗ trợ các ngôn ngữ cao cấp nhất định cho phép người sử dụng định
nghĩa cấu trúc dữ liệu, truy nhập dữ liệu và thao tác dữ liệu.
- Quản lý giao dịch, có nghĩa là khả năng cung cấp các truy nhập đồng
thời, đúng đắn đối với CSDL từ nhiều người sử dụng tại cùng một thời
điểmÐiều khiển truy nhập, có nghĩa là khả năng hạn chế truy nhập đến các dữ
liệu bởi những người sử dụng không được cấp phép và khả năng kiểm tra tính
đúng đắn của CSDL.
- Phục hồi dữ liệu, có nghĩa là có khả năng phục hồi dữ liệu, không làm
mất mát dữ liệu với các lỗi hệ thống.
2.3.2 Đặc điểm của một hệ quản trị CSDL
a. Sự trừu tượng hoá dữ liệu
Ðể cho hệ thống có thể sử dụng được, hệ quản trị CSDL phải tra cứu hay
tìm kiếm dữ liệu một cách có hiệu quả. Ðiều này dẫn đến việc thiết kế các cấu
trúc dữ liệu phức tạp để biểu diễn dữ liệu trong CSDL này. Người phát triển
che dấu tính phức tạp này thông qua một số mức trừu tượng để đơn giản hoá
các tương tác của người sử dụng đối với hệ thống.
Mức vật lý: Mức thấp nhất của sự trừu tượng mô tả dữ liệu được lưu trữ
một cách thực sự như thế nào. Tại mức vật lý, các cấu trúc dữ liệu mức thấp
phức tạp được mô tả chi tiết.
- Mức logic: Mức cao tiếp theo của sự trừu tượng hoá mô tả những dữ liệu
nào được lưu trữ và các mối quan hệ nào tồn tại giữa các dữ liệu này. Mức
logic của sự trừu tượng được xác định người quản trị CSDL, cụ thể phải quyết
định những thông tin gì được lưu trữ trong CSDL.
- Mức khung nhìn: Mức cao nhất của sự trừu tượng mô tả chỉ một phần
của toàn bộ CSDL. Mặc dù sử dụng các cấu trúc đơn giản mức logic, một số
phức tập vẫn còn tồn tại do kích thước lớn của CSDL. Thực chất những người
sử dụng chỉ cần truy nhập đến một phần CSDL, do vậy sự tương tác của họ
với hệ thống này là đơn giản hoá và mức khung nhìn của sự trừu tượng được
xác định. Hệ thống có thể được cung cấp nhiều khung nhìn đối với cùng một
cơ sở dữ liệu.
b. Ngôn ngữ cơ sở dữ liệu
Một hệ quản trị cơ sở dữ liệu thường cung cấp hai Kiểu dữ liệu ngôn ngữ
khác nhau đó là: ngôn ngữ mô tả sơ đồ cơ sở dữ liệu và ngôn ngữ biểu diễn
các truy vấn và các cập nhật cơ sở dữ liệu.
- Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL)
+ Một sơ đồ CSDL đặc tả bởi một tập các định nghĩa được biểu diễn bởi
một ngôn ngữ đặc biệt được gọi là ngôn ngữ định nghĩa dữ liệu. Kết quả của
việc dịch các ngôn ngữ này là một tập các bảng được lưu trữ trong một tệp
đặc biệt được gọi là từ điển dữ liệu hay thư mục dữ liệu.
+ Một từ điển dữ liệu là một tệp chứa các siêu dữ liệu có nghĩa là các dữ
liệu về dữ liệu. Tệp này được tra cứu trước khi dữ liệu thực sự được đọc hay
được sửa đổi trong hệ CSDL.
+ Cấu trúc và các phương pháp truy nhập được sử dụng bởi hệ CSDL
được đặc tả bởi một tập các định nghĩa trong một Kiểu dữ liệu đặc biệt của
DDL là ngôn ngữ định nghĩa và lưu trữ dữ liệu.
- Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): + Các
yêu cầu về thao tác dữ liệu bao gồm:
• Tìm kiếm thông tin được lưu trữ trong CSDL.
• Thêm thông tin mới vào CSDL.
• Xoá thông tin từ CSDL.
• Thay đổi thông tin được lưu trữ trong CSDL.
+ Một ngôn ngữ thao tác dữ liệu (DML) là một ngôn ngữ cho phép người
sử dụng truy nhập hay thao tác dữ liệu được tổ chức bởi mô hình dữ liệu thích
hợp. Có hai Kiểu dữ liệu ngôn ngữ thao tác dữ liệu cơ bản:
• Các DML thủ tục đòi hỏi người sử dụng phải đặc tả dữ liệu nào cần tìm
kiếm và tìm kiếm những dữ liệu này như thế nào.
• Các DML phi thủ tục đòi hỏi người sử dụng đặc tả dữ liệu nào cần tìm
kiếm mà không phải đặc tả tìm kiếm những dữ liệu này như thế nào.
c. Xử lý câu hỏi
Công việc của bộ xử lý câu hỏi là biến đổi một truy vấn hay một thao tác
CSDL có thể được biểu diễn ở các mức cao thành một dãy các yêu cầu đối
với các dữ liệu lưu trữ trong CSDL.
Thường phần khó nhất của nhiệm vụ xử lý câu hỏi là tối ưu hoá câu hỏi,
có nghĩa là lựa chọn một kế hoạch tốt nhất đối với hệ thống lưu trữ để trả lời
truy vấn này nhanh nhất.
d. Quản trị giao dịch
Thông thường một số thao tác trên CSDL hình thành một đơn vị logic công
việc. Ðiều này có nghĩa là hoặc tất cả các thao tác được thực hiện hoặc không
thao tác nào được thực hiện. Hơn nữa sự thực hiện các thao tác này phải
đảm bảo tính nhất quán của CSDL. Một giao dịch là một tập hợp các thao tác
mà xử lý như một đơn vị không chia cắt được. Các hệ quản trị CSDL điển
hình cho phép người sử dụng một hay nhiều nhóm thao tác tra cứu hay thay
đổi CSDL thành một giao dịch.
e. Quản lý lưu trữ
Các CSDL thường đòi hỏi một khối lượng lớn không gian lưu trữ. Do bộ
nhớ chính của máy tính không thể lưu trữ nhiều thông tin như vậy, các thông
tin này được lưu trữ ở các thiết bị nhớ ngoài như đĩa cứng, đĩa mềm,.v.v… Khi
xử lý, dữ liệu cần phải được di chuyển từ đĩa từ vào bộ nhớ chính; sự di
chuyển này là khá chậm so với tốc độ xử lý của bộ nhớ trung tâm, do vậy các
hệ CSDL phải tổ dữ liệu vật lý sao cho tốt, tối thiểu hoá số yêu cầu chuyển dữ
liệu giữa đĩa từ vào bộ nhớ chính.
2.4 Công cụ thiết kế giao diện TeleRik– RadControl
2.5 Ứng dụng mô hình 3 lớp ADO.NET
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống,
cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành
phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng
nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau.
Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu
trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp
vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương,
còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không
cần biết.
Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức
năng này. Thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một
chứcnăng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là
GUI Layer(Lớp giao tiếp người dùng), Business Logic (Lớp xử lý chính dữ
liệu), và Data Access (Lớp thao tác nói chuyện với Database). Các lớp này sẽ
giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để
tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà
chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Mô hình 3 layer là một mô hình chuẩn khi phát triển một phần mềm mà
chúng ta sẽ bắt gặp nó hay là “con em” của nó ở bất kỳ project mà chúng ta
làm (theo xu hướng người ta sẽ làm theo mô hình n-layer nhưng nó lấy cơ sở
từ mô hình 3-layer để nó phát triên lên).
2.5.1 Presentation Layer (Lớp giao tiếp người dùng)
Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và
hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử
dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp.
Trong .NET thì bạn có thể dùng Windows Forms, ASP.NET hay Mobile Forms
để hiện thực lớp này.
+ Là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho
người dùng cuối. Trong Windows Forms thì những thành phần này có thể là
các TextBox, các Button, DataGrid…
+ Có nhiệm vụ xử lý, kiểm tra các dữ liệu nhập vào (ví như ở TextBox này
nó phải là số, số phải từ 1-9….).
+ Tiếp nhận các Event của người dùng, kiểm tra dữ liệu được nhập vào,
gửi yêu cầu xử lý xuống tầng kế tiếp.
Lưu ý : lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data
Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi
bạn sử dụng trực tiếp như vậy, bạn có thể bỏ qua các ràng buộc, các logic
nghiệp vụ mà ứng dụng cần phải có.
2.5.2 Business Logic Layer (Lớp xử lý chính dữ liệu)
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ
do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation.
Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd
parties) để thực hiện công việc của mình.
Đây là layer xử lý chính các dữ liệu trước khi được đưa lên hiển thị trên
màn hình hoặc xử lý các dữ liệu trước khi lưu dữ liệu xuống cơ sở dữ liệu.
Đây là nơi để kiểm tra các yêu cầu nghiệp vụ, tính toán các yêu cầu nghiệp
vụ.
2.5.3 Data Access Layer (Lớp thao tác trực tiếp với cơ sở dữ liệu)
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu
của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ
sở dữ liệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong
lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive
Agents).
Layer này sẽ lo nhiệm vụ là đọc cơ sở dữ liệu lên, cập nhật cơ sở dữ liệu,
update cơ sở dữ liệu.
* Quá trình hiển thị dữ liệu
Data Access layer nói chuyện với Database và lấy dữ liệu lên theo một
cách nào đó (có thể là bằng câu lệnh select hay thông qua proceduce), lúc
này sau khi lấy được dữ liệu lên thì nó sẽ đẩy lên Business layer, tại đây
Business điều chỉnh tùy biến phù hợp với yêu cầu rồi đẩy nó lên trên GUI và
tại GUI nó sẽ hiển thị lên cho người dùng.
* Quá trình đưa dữ liệu xuống
Người dùng thao tác với GUI layer sau đó ra lệnh thực hiện (ví như Insert)
sau đó hệ thống sẽ kiểm tra các thông tin người dùng nhập vào nếu thỏa đi
xuống tiếp layer Business để tiếp tục được nhào nặn, tính toán và kiểm tra
sau khi xong thì dữ liệu được đẩy xuống thông tin phía dưới Data Access
Layer sau đó tại DataAccess Layer sẽ thực thi nó xuống database.
* Cách xử lý “lỗi” trong mô hình 3 layer
Một khi gặp lỗi (các trường hợp không đúng dữ liệu) thì đang ở layer nào
thì đưa lên trên layer cao hơn nó 1 bậc cho tới GUI thì sẽ đưa ra cho người
dùng biết.