Tài liệu nghiên cứu và học tập về thiết kế hệ thống, lập trình quản lý dữ liệu. Giúp cho người học và nghiên cứu nắm bắt được cách tổ chức cơ sở dữ liệu và lập trình khai thác dữ liệu như cập nhật, thống kê,...
Trang 1Chương 1 NHỮNG VẤN ĐỀ CHUNG
1 Các khái niệm cơ bản:
1.1 Khái niệm phân tích hệ thống:
- Phân tích hệ thống là phương pháp dùng để mô hình hoá hay còn gọi là quan niệm hệ thống thông tin Phương pháp này ra đời đã rất lâu, đựơc bắt nguồn
từ nước Pháp Sau một thời gian được sử dụng và phổ biến nhờ vào những đặc tính ưu việt của nó như:
+ Cơ sở khoa học vững chắc
+ Phân tích cụ thể
+ Xử lý triệt để
- Có nhiều mô hình phân tích hệ thống:
+ Mô hình quan niệm cho dữ liệu (MCD)
+ Mô hình luận lý cho dữ liệu (MLD)
+ Mô hình vật lý cho dữ liệu (MPD)
+ Mô hình quan niệm cho xử lý (MCT)
+ Mô hình tổ chức cho xử lý (MOT)
+ Mô hình vật lý cho xử lý (MPT)
1.2 Mô hình quan niệm cho dữ liệu (MCD):
MCD là một cách phân tích hệ thống thông tin, khi dùng mô hình MCD cần nắm vững các khái niệm qui tắc sau:
- Thực thể: Là một nhóm đối tượng có thực thể có tồn tại trong thế giới mà chúng ta khảo sát Nó tồn tại một cách độc lập, các đối tượng được nhóm lại dựa vào một số thuộc tính chung nào đó
Trang 2- Thuộc tính: Thuộc tính là một dữ liệu mà người ta nhận biết trên một thực thể hoặc một liên kết Tên của thuộc tính được ghi bên dưới thực thể hoặc liên kết
Kí hiệu: Bảng số tối đa: (1 – n)
Bảng số tối thiểu: (0 – 1)
- Khoá:
+ Khoá của thực thể: Là một thuộc tính đặc biệt của thực thể sao cho với mỗi giá trị của thuộc tính này tương ứng với một và chỉ một thể hiện của thực thể Các khoá này thường được ghi đầu tiên trong danh sách các thuộc tính của thực thể và phải gạch dưới
+ Khoá của liên kết: Thường được tạo thành bởi tất cả các khoá của các thực thể tạo nên liên kết đó
- Phụ thuộc hàm:
+ Phụ thuộc hàm giữa các thuộc tính: Là tồn tại một phụ thuộc hàm giữa các thuộc tính A và thuộc tính B, nếu với mỗi giá trị của thuộc tính A đều xác định duy nhất một thuộc tính B
Ký hiệu: A B + Phụ thuộc hàm sơ cấp giữa các thuộc tính: Tồn tại một phụ thuộc hàm sơ cấp giữa hai thuộc tính A và B, nếu tồn tại một phụ thuộc hàm giữa A và
B và không tồn tại 1 thuộc tính con nào của A để xác định được B
+ Phụ thuộc hàm sơ cấp trực tiếp giữa các thuộc tính: Tồn tại một phụ thuộc hàm sơ cấp trực tiếp giữa hai thuộc tính A và B nếu có:
+ Tồn tại một phụ thuộc hàm sơ cấp trực tiếp giữa A và B + Không tồn tại một thuộc tính C nào, sao cho C phụ thuộc với
A rồi C cũng phụ thuộc hàm với B
<Tên liên kết>
<DS các thuộc tính của thực thể>
Trang 3- Các quy tắc chuẩn hoá mô hình MCD:
Chuẩn hoá mô hình MCD là nhằm để loại bỏ sự lặp đi lặp lại của các thuộc tính trong các thực thể của các quan hệ, nhằm tránh sự dư thừa dữ liệu, giải quyết sự nhọc nhằn giữa các mối quan hệ của các thực thể
+ Quy tắc 1: Đối với bất kỳ một thể hiện nào của thực thể hay của một liên kết, mọi thuộc tính đều phải có ý nghĩa và phải có giá trị duy nhất
+ Quy tắc 2: Mọi thuộc tính của một thực thể đều phụ thuộc vào khoá của thực thể đó bằng một phụ thuộc hàm sơ cấp trực tiếp
+ Quy tắc 3: Mọi thuộc tính của liên kết phải phụ thuộc vào khoá của liên kết đó bằng một phụ thuộc hàm sơ cấp trực tiếp
1.3 Mô hình luận lý cho dữ liệu (MLD)
Là việc chuyển đổi mô hình MCD sang mô hình MLD để gần gủi với máy tính hơn Mục đích của MLD là nhằm tổ chức dữ liệu được tối ưu hóa Để thực hiện một cách nhanh chóng dễ dàng và chính xác từ mô hình MCD sang mô hình MLD cần phải nắm vững các quy tắc sau:
+ Mỗi thực thể trong MCD sẽ được chuyển thành một quan hệ trong MLD Khóa của thực thể trở thành khóa chính của quan
+ Một liên kết không phụ thuộc hàm của MCD, sẽ trở thành một quan hệ trong MLD Quan hệ này gồm có khoá của các thực thể liên kết với nó và các thuộc tính của liên kết
2 Bài toán quản lý
2.1 Thu thập thông tin:
- Thông tin ban đầu
- Các bảng báo cáo
- Giải quyết xử lý
2.2 Ứng dụng quản lý:
- Bài toán quản lý có ở hầu hết mọi đơn vị, tổ chức, thậm chí với cả một số
cá nhân Những bài toán quản lý có thể kể đến như:
Trang 4- Đặc điểm chung của những bài toán này:
o Không cần sử dụng những thuật toán phức tạp mà yêu cầu chủ yếu là: thống kê, tìm kiếm, lọc thông tin
o Khối lượng dữ liệu thường là rất lớn Đặc điểm này thực sự là một thách thức lớn nếu chúng ta phải quản lý thủ công (việc tìm kiếm, thống kê, lọc cho nên mất rất nhiều thời gian và không chính xác)
Trang 8Xử lý sự cố cho Trigia (Object: txtTrigia; Procedurre: Getfocus)
If f_phatsinh.dongia<>0 and f_phatsinh.soluong<>0
repl f_phatsinh.trigia with f_phatsinh.soluong*f_phatsinh.dongia
Trang 9Form f_nhanviendonvi:
Thiết kế giao diện xem hoá đơn đã phát sinh theo tháng: (f_xemhoadon)
Chọn thực hiện sẽ hiển thị báo cáo các hoá đơn theo tháng nhập (ví dụ 4)
Use phatsinh alias PS
do while not EOF("PS")
If thisform.xthang.value=month(PS.ngay) then
scatter memvar
sele CTPS
Trang 10gọi thành phần khác ngay vi trí này (ví dụ báo cáo vào tháng 4)
Thiết kế Form dùng để lọc dữ liệu: (f_hanghoa)
Trang 11If not empty(.xdongia.value) then
If not left(alltrim(.xdongia.value),1) $"=><" then
.xdongia.value="="+.xdongia.value
Trang 12If not empty(dk) then
Set filte to &dk
1 Thiết kế các Form nhập liệu cho tất cả các table còn lại
2 Thiết kế form xem hoá đơn phát sinh theo:
- Lý do nhập xuất : N hoặc X
- Trị giá : từ giá trị 1 đến giá trị 2
3 Thiết kế Form lọc dữ liệu cho table nhân viên
4 Thiết kế Form điều khiển các thành phần đã thiết kế như trên có dạng như sau:
Trang 13- Nhân viên của công ty khi được tuyển vào sẽ có một chức vụ Trong công ty
có nhiều phòng ban và những nhân viên này được tuyển dụng vào các phòng ban đó
Công ty cần phải báo cáo danh sách nhân viên của từng phòng ban theo mẫu:
PHÒNG BAN
Tổng số có: nhân viên
Trang 14- Báo cáo danh sách nhân viên theo độ tuổi
Địa chỉ
Hôn nhân
Ngày vào Đoàn
Ngày vào Đảng Ghi chú
- Báo cáo danh sách trích ngang CB – CNV:
Ngày tuyển dụng Ghi chú
- Báo cáo danh sách tới hạn lên lương:
DANH SÁCH NÂNG LƯƠNG
Năm : ……
STT Họ tên Giới
tính
Ngày sinh
Ngày tuyển dụng Chức vụ Ghi chú
- Báo cáo danh sách nghỉ hưu:
DANH SÁCH NGHỈ HƯU
Trang 15- Danh sách đảng viên, đoàn viên:
DANH SÁCH ĐOÀN VIÊN
DANH SÁCH ĐẢNG VIÊN
- Báo cáo tổng hợp:
BÁO CÁO SỐ NHÂN VIÊN THEO PHÒNG BAN
BÁO CÁO SỐ NHÂN VIÊN THEO GIỚI TÍNH
1
2
Nam
Nữ
BÁO CÁO SỐ NHÂN VIÊN THEO ĐỘ TUỔI
Trang 162.2 Phân tích thông tin
Trang 18+ Danh mục trình độ chuyên môn
+ Danh mục trình độ văn hóa
- Xử lý
+ Chi tiết trình độ chuyên môn của nhân viên
+ Lọc nhân viên theo danh sách trích ngang
+ Nghỉ hưu của nhân viên
+ Nâng lương của nhân viên
- In
+ Danh sách nhân viên theo phòng ban
+ Danh sách nhân viên theo độ tuổi
+ Danh sách đảng viên, đoàn viên
+ Thống kê nhân viên theo phòng ban
+ Thống kê nhân viên theo giới tính
+ Thống kê nhân viên theo độ tuổi
- Thoát
Trang 19Chương 4
QUẢN LÝ ĐIỂM 4.1 Bài toán thực tế:
- Mỗi học sinh khi nhập trường cần nắm một số thông tin như sau: họ tên, giới tính, nơi sinh, địa chỉ và gán cho mỗi học sinh một mã số
- Nhà trường cần quản lý thêm lý lịch của học sinh: họ tên cha mẹ, năm sinh, nghề nghiệp địa chỉ
- Để quản lý giáo viên của trường cần phải biết một số thông tin như sau:họ tên, ngày sinh, giới tính, tổ chuyên môn, địa chỉ, số điện thoại
- Trong một học kỳ có nhiều môn và mỗi giáo viên dạy một hoặc nhiều môn
- Nhà trường có nhiều lớp, mỗi lớp được phân biệt bằng một mã lớp, tên lớp
và do một giáo viên chủ nhiệm
- Cuối mỗi học kỳ học sinh sẽ thi học kỳ và mỗi môn thi có 2 dạng: môn kiểm tra hoặc môn thi được tính theo cách tính như sau:
+ Môn kiểm tra:
Trang 204.2 Mô hình MCD và MLD:
HOCSINH(MAHS, HOTEN, GIOITINH, NOISINH, DIACHI, MSCHA, MSME, MALOP) CHA(MSCHA, HOTEN, NAMSINH, NGHENGHIEP, DIACHI)
ME(MSME, HOTEN, NAMSINH, NGHENGHIEP, DIACHI)
GIAOVIEN(MAGV, HOTEN, NOISSINH, GIOITINH, TOCHUYENMON, DIACHI,
1,1 1,n
1,n
1,n 1,n
1,n
1,1
0,1
1,1
Trang 211 Môi trường nhiều người dùng:
Vấn đề trao đổi thông tin trên môi trường nhiều người dùng sẽ dẫn đến một
số vấn đề tranh chấp dữ liệu cần phải giải quyết trong quá trình lập trình ứng dụng Việc thiết lập cơ sở dữ liệu dùng chung cho nhiều người sẽ giúp tiết kiệm đáng kể tài nguyên và nhân lực Ngoài ra nó còn đảm bảo tính nhất quán dữ liệu
so với cách tổ chức nhiều cơ sở dữ liệu riêng lẻ, vốn sẽ dẫn đến tình trạng tại một thời điểm thông tin xác định về một nhân viên nào đó lại không giống nhau
Một số kỹ thuật vấn đề tranh chấp dữ liệu:
- Phân quyền khai thác: mỗi người dùng được qui định bằng tên truy cập ứng dụng và mật mã, với một số quyền truy cập xác định
- Phân cấp công việc: khi có sự tranh chấp dã liệu, công việc nào có quyền
ưu tiên cao hơn sẽ được thi hành trước
- Thứ tự thực hiện trước sau: ưu tiên cho người dùng truy cập dữ liệu trước bằng những lệnh khóa toàn bộ table hay khóa từng record
Xây dựng chương trình mhkt, trong đó có hai hàm mahoa và kiemtra có công dụng như sau:
- mahoa: nhận vào một chuổi (mật mã), hàm sẽ thực hiện chuyển đổi chuổi
và trả lại một chuỗi số
- kiemtra: nhận vào hai chuỗi tên và mật mã người dùng Hàm sẽ tìm tên người dùng trong table Nếu tìm thấy hàm sẽ so sánh chuỗi số đã lưu trong field password đã lưu với chuổi số trả lại sau khi chuyển đổi mật mã đã nhập Nếu tên người dùng và mật mã đều phù hợp, hàm sẽ trả lại giá trị T., ngược lại hàm sẽ trả lại F Biết rằng, cấu trúc của table như sau:
Trang 22Private i,j
j=0
For i=1 to len (matma)
j=j+ asc ( substr (matma,i,1))*(i+1)
Use USER SHARED
Set order to tag username
Trang 23thisform user ReadOnly =.T
thisform pass ReadOnly =.T
thisform quyen ReadOnly =.T
IF user right <>"SUPERVISOR" AND user right <>"USER" AND
user right <>"EVERYBODY" THEN
= MESSAGEBOX ("Phai la SUPERVISOR,USER,EVERYBODY",24,"Thong bao")
REPLACE user right WITH "EVERYBODY"
ENDIF
Trang 24Them.click
IF thisform Them Caption ="Them"
doi=.T
thisform Them Caption ="Luu"
thisform Xoa caption ="Bo"
thisform Thoat enabled =.F
thisform user ReadOnly =.F
thisform pass ReadOnly =.F
thisform quyen ReadOnly =.F
thisform Them Caption ="Them"
thisform Xoa caption ="Xoa"
thisform Thoat enabled =.T
thisform user ReadOnly =.T
thisform pass ReadOnly =.T
thisform quyen ReadOnly =.T
Trang 25- Đưa form user vào trong hệ thống menu của ứng dụng
- Thiết kế form dangnhap theo mẫu sau:
Đăng nhập: chương trình sẽ kiểm tra tên và mật mã người dùng xem có tồn tại trong table user hay không Nếu chưa có thì hiển thị thông báo lỗi và chờ nhập lại Nếu đúng thì xác định quyền truy cập của người dùng gọi chương trình batdau để nạp menu chính Có thể liệt kê một số quyền như sau: + SUPERVISOR: mọi chức năng trong chương trình
+ OPERATOR: mọi chức năng nhưng không thể đăng ký người dùng mới
+ USER: không thể truy xuất các chức năng trong Xem Table, không thể thêm người dùng mới
+ EVERYBODY: chỉ xem được các report Không thể sử dụng các chức năng cập nhật, thêm người dùng mới
Trang 26Thuchien.Click
if EMPTY ( thisform old Value ) then
= MESSAGEBOX ("Nhap mat ma cu",24,"Thong bao")
ELSE
SET PROCEDURE TO mhkt
= MESSAGEBOX ("Mat ma cu khong co",24,"Thong bao")
ELSE
IF ALLTRIM ( thisform new1 Value )<> ALLTRIM ( thisform new2 Value ) then
= MESSAGEBOX ("Nhap mat ma khong hop le",24,"Thong bao")
= MESSAGEBOX ("Mat ma da duoc doi",24,"Thong bao")
ENDIF
ENDIF
SET PROCEDURE TO
ENDIF
Vào menu bổ sung mục đổi mật mã vào mục hệ thống
2 Tạo Help trong ứng dụng
Khi thiết kế ứng dụng, có một phần tuy phụ nhưng không kém phần quan
Trang 27Tập tin tablehelp có cấu trúc tương tự sau:
Ví dụ: Có thể nhập liệu cho table trên như sau:
Dang ky
nguoi dung
Đăng ký người dùng chương trình mới 1
Doi mat ma Đổi mật mã của người dùng đang login chương
trình
1
Cap nhat Cập nhật KHÓA HỌC
Gọi các giao diện để người dùng cập nhật dữ liệu vào Table KHOAHOC
SET HELP TO helptable
Mở menu, hiệu chỉnh lại các thủ tục biến cố của những mục chọn trong menu đã thiết
kế
Dang ky nguoi dung procedure
ON KEY LABEL LABEL F1 HELP Dang ky nguoi dung
DO FORM USER
Trang 28Doi mat ma procedure
ON KEY LABEL LABEL F1 HELP Doi mat ma
Ket thuc procedure
IF MESSAGEBOX ("Thoat khoi ung dung",20,"quan ly diem")=6
SET HELP OFF
CLOSE ALL
QUIT
Endif
Khi chạy menu, gõ F1 cửa sổ sẽ mở như hình sau:
Chọn Dang ky nguoi dung, hiển thị như sau: