6. Bố cục luận văn
2.3.3. Mô tả quá trình thao tác dữ liệu của một số chức năng
Bảng 2.2. Mô tả truy vấn tạo bảng
Dữ liệu vào:
Dữ liệu ra: Các bảng chứa dữ liệu HOCSINH, GIAOVIEN, BANGDIEM, … Xử lý Tạo bảng học sinh Tạo bảng giáo viên Tạo bảng diem_hs1 Tạo bảng diem_hs2
create table hocsinh
(ma_hs nvarchar(5),hodem_hs nvarchar (30),
ten_hs nvarchar(30),ma_lop nvarchar(5),
ma_kh nvarchar(5),ma_ph nvarchar(5),
gt_hs nvarchar(30),ns_hs date,
dt_hs nvarchar(30),tg_hs nvarchar(30),
dc_hs nvarchar(30),sdt_hs nvarchar(30));
create table giaovien
(ma_gv nvarchar(5),ten_gv nvarchar(30),
sdt_gv nvarchar(30),dc_gv nvarchar(30),
ma_truong nvarchar(5),ma_mon nvarchar(5));
create table diem_hs1
( ma_mon nvarchar(5),ma_hs nvarchar(5),ma_hky nvarchar(5),
diem_l1 decimal(3,1), lankt int);
create table diem_hs2
( ma_mon nvarchar(5),ma_hs nvarchar(5),ma_hky nvarchar(5),
diem_l2 decimal(3,1), lankt int);
Tạo bảng diem_hs3
Tạo bảng bangdiem
( ma_mon nvarchar(5),ma_hs nvarchar(5),ma_hky nvarchar(5),
diem_l3 decimal(3,1), lankt int);
create table bangdiem
( ma_mon nvarchar(5),ma_hs nvarchar(5),ma_hky nvarchar(5));
Bảng 2.3. Mô tả truy vấn nhập dữ liệu vào bảng
Dữ liệu vào: HOCSINH
Dữ liệu ra: Danh sách học sinh được cập nhật vào bảng HOCSINH Xử lý:
Nhập từng bản ghi:
Nhập nhiều bản ghi từ file có sẵn:
Xóa bản ghi theo điều kiện nào đó: Xóa toàn bộ dữ liệu trong bảng học sinh:
insert into hocsinh values ('10001','tran van','an','10a1','a001','hk199','nam','22/12/1999','kinh','khong', 'quảng ngãi','0915457831')
Insert Into HOCSINH Select * From DSHS Delete From HOCSINH
Where MA_HS=MA_HS1 delete HOCSINH
Nhận xét:
- Vào đầu năm học phải nhập toàn bộ thông tin học sinh vào chương trình, hoặc khi có học sinh chuyển từ trường khác đến cũng phải nhập vào chương trinh.
- Trong năm học có học sinh chuyển trường hay bỏ học chúng ta phải xóa tên học sinh đó khỏi danh sách lớp.
- Trong khi đã xóa thông tin học sinh khỏi danh sách, nhưng sau này muốn trích lại thông tin của học sinh này không còn nữa. Vì thế chức năng cần hỗ trợ Ancho Modeling.
Bảng 2.4. Mô tả truy vấn tính điểm trung bình từng môn học Dữ liệu vào: bangdiem, diemhs1, diemhs2, diemhs3, hocky, namhoc Dữ liệu ra: Bảng điểm trung bình từng môn học của học sinh theo học kỳ Xử lý: select tong12.ma_mon, tong12.ma_hs,tong12.ma_hky,
(max(tong12.tong12)+max(tong3.tong3)*3)/(max(tong12.de m12)+3) as tbmon
from
(select tong1.ma_mon, tong1.ma_hs,tong1.ma_hky, (max(tong1.tong1)+max(tong2.tong2)*2) as tong12,
(max(tong1.dem1)+max(tong2.dem2)*2) as dem12 from
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs1.diem_l1) as tong1,
count(diem_hs1.diem_l1) as dem1
from bangdiem join diem_hs1 on
bangdiem.ma_mon=diem_hs1.ma_mon
and
bangdiem.ma_hky=diem_hs1.ma_hky
and bangdiem.ma_hs=diem_hs1.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong1
join
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs2.diem_l2) as tong2,
count(diem_hs2.diem_l2) as dem2
from bangdiem join diem_hs2 on
bangdiem.ma_mon=diem_hs2.ma_mon
and
bangdiem.ma_hky=diem_hs2.ma_hky
and bangdiem.ma_hs=diem_hs2.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong2 on
and tong1.ma_hky=tong2.ma_hky
and tong1.ma_hs=tong2.ma_hs
group by tong1.ma_mon, tong1.ma_hs,tong1.ma_hky) as tong12
join
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky, max(diem_hs3.diem_hs3) as tong3 from bangdiem join diem_hs3 on
bangdiem.ma_mon=diem_hs3.ma_mon
and bangdiem.ma_hky=diem_hs3.ma_hky
and bangdiem.ma_hs=diem_hs3.ma_hs
group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong3 on
tong12.ma_mon=tong3.ma_mon
and tong12.ma_hky=tong3.ma_hky
and tong12.ma_hs=tong3.ma_hs
group by tong12.ma_mon, tong12.ma_hs,tong12.ma_hky Nhận xét:
- Vào cuối mỗi học kỳ ta phải thực hiện tính điểm trung bình từng môn học - Để tính được điểm trung bình từng môn học ta phải thực hiện nhiều phép nối và thống kê Sum và Count.
Tiểu kết: chức năng cần hỗ trợ cả Anchor Modeling và khung nhìn thực
Bảng 2.5. Mô tả truy vấn tính điểm trung bình tất cả các môn học
Dữ liệu vào: hocsinh, bangdiem, diem_hs1, diem_hs2, diem_hs3, hocky, namhoc Dữ liệu ra: Bảng điểm trung bình các môn của học sinh theo từng học kỳ Xử lý: select hocsinh.ma_hs,hocsinh.hodem_hs, hocsinh.ten_hs,
AVG(tam.tbmon) as tbcacmonhky from
(select tong12.ma_mon,
tong12.ma_hs,tong12.ma_hky,
(max(tong12.tong12)+max(tong3.tong3)*3)/(max(tong12.de m12)+3) as tbmon
from
(select tong1.ma_mon, tong1.ma_hs,tong1.ma_hky, (max(tong1.tong1)+max(tong2.tong2)*2) as tong12,
(max(tong1.dem1)+max(tong2.dem2)*2) as dem12 from
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs1.diem_l1) as tong1,
count(diem_hs1.diem_l1) as dem1
from bangdiem join diem_hs1 on
bangdiem.ma_mon=diem_hs1.ma_mon
and
bangdiem.ma_hky=diem_hs1.ma_hky
and bangdiem.ma_hs=diem_hs1.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong1
join
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs2.diem_l2) as tong2,
count(diem_hs2.diem_l2) as dem2
from bangdiem join diem_hs2 on
bangdiem.ma_mon=diem_hs2.ma_mon
and
bangdiem.ma_hky=diem_hs2.ma_hky
and bangdiem.ma_hs=diem_hs2.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong2 on
tong1.ma_mon=tong2.ma_mon
and tong1.ma_hky=tong2.ma_hky
and tong1.ma_hs=tong2.ma_hs
group by tong1.ma_mon, tong1.ma_hs,tong1.ma_hky) as tong12
join
(select bangdiem.ma_mon,
max(diem_hs3.diem_hs3) as tong3 from bangdiem join diem_hs3 on
bangdiem.ma_mon=diem_hs3.ma_mon
and bangdiem.ma_hky=diem_hs3.ma_hky
and bangdiem.ma_hs=diem_hs3.ma_hs
group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong3 on
tong12.ma_mon=tong3.ma_mon
and tong12.ma_hky=tong3.ma_hky
and tong12.ma_hs=tong3.ma_hs
group by tong12.ma_mon, tong12.ma_hs,tong12.ma_hky) as tam,hocsinh
where tam.ma_hs=hocsinh.ma_hs
group by hocsinh.ma_hs,hocsinh.hodem_hs,hocsinh.ten_hs order by hocsinh.ten_hs
Nhận xét:
- Vào cuối mỗi học kỳ ta phải thực hiện tính điểm trung bình của từng học sinh - Để tính được điểm trung bình của từng học sinh ta phải thực hiện nhiều phép nối và nhiều phép thống kê Sum và Count.
Tiểu kết: chức năng cần hỗ trợ cả Anchor Modeling và khung nhìn thực.
Bảng 2.6. Mô tả truy vấn xếp loại học lực học sinh cuối học kỳ
Dữ liệu vào: hocsinh, bangdiem, diem_hs1, diem_hs2, diem_hs3, hocky, namhoc Dữ liệu ra: Bảng tổng hợp xếp loại học sinh cuối kỳ
Xử lý: select tam1.ma_hs,tam1.hodem_hs, tam1.ten_hs,tam1.tbcacmonhky,
case
when ((tam1.tbcacmonhky>=8) and (tam1.minmon)>=6.5) then
'Gioi'
when ((tam1.tbcacmonhky>=6.5)and(tam1.minmon)>=5) then 'Kha'
when ((tam1.tbcacmonhky>=5) and (tam1.minmon)>=3.5) then
'TBinh'
when ((tam1.tbcacmonhky>=3.5)and(tam1.minmon)>=2) then 'Yeu'
else 'Kem'
end as xeploai from
AVG(tam.tbmon) as tbcacmonhky,min(tam.tbmon) as minmon from
(select tong12.ma_mon, tong12.ma_hs,tong12.ma_hky, (max(tong12.tong12)+max(tong3.tong3)*3)/(max(tong12.dem 12)+3) as tbmon
from
(select tong1.ma_mon, tong1.ma_hs,tong1.ma_hky, (max(tong1.tong1)+max(tong2.tong2)*2) as tong12,
(max(tong1.dem1)+max(tong2.dem2)*2) as dem12 from
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs1.diem_l1) as tong1,
count(diem_hs1.diem_l1) as dem1
from bangdiem join diem_hs1 on
bangdiem.ma_mon=diem_hs1.ma_mon
and
bangdiem.ma_hky=diem_hs1.ma_hky
and bangdiem.ma_hs=diem_hs1.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong1
join
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs2.diem_l2) as tong2,
count(diem_hs2.diem_l2) as dem2
from bangdiem join diem_hs2 on
bangdiem.ma_mon=diem_hs2.ma_mon
and
bangdiem.ma_hky=diem_hs2.ma_hky
and bangdiem.ma_hs=diem_hs2.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong2 on
tong1.ma_mon=tong2.ma_mon
and tong1.ma_hs=tong2.ma_hs
group by tong1.ma_mon, tong1.ma_hs,tong1.ma_hky) as tong12
join
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky, max(diem_hs3.diem_hs3) as tong3 from bangdiem join diem_hs3
on bangdiem.ma_mon=diem_hs3.ma_mon
and bangdiem.ma_hky=diem_hs3.ma_hky
and bangdiem.ma_hs=diem_hs3.ma_hs
group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong3 on tong12.ma_mon=tong3.ma_mon
and tong12.ma_hky=tong3.ma_hky
and tong12.ma_hs=tong3.ma_hs
group by tong12.ma_mon, tong12.ma_hs,tong12.ma_hky) as tam,hocsinh
where tam.ma_hs=hocsinh.ma_hs
group by hocsinh.ma_hs,hocsinh.hodem_hs,hocsinh.ten_hs) as tam1 Nhận xét:
Để xếp được loại học lực của học sinh ta phải thực hiện nhiều phép nối và nhiều phép thống kê.
Tiểu kết: chức năng cần hỗ trợ khung nhìn thực.
Bảng 2.7. Mô tả truy vấn thống kê số lượng theo xếp loại học lực Dữ liệu vào: bangdiem, diemhs1, diemhs2, diemhs3, hocsinh, hocky Dữ liệu ra: Bảng tổng hợp số lượng học sinh khá cuối kỳ
Xử lý: select count(tamxeploai.xeploai)
from
(select tam1.ma_hs,tam1.hodem_hs, tam1.ten_hs,tam1.tbcacmonhky,
case
when ((tam1.tbcacmonhky>=8) and (tam1.minmon)>=6.5) then
'Gioi'
when ((tam1.tbcacmonhky>=6.5)and(tam1.minmon)>=5) then 'Kha'
when ((tam1.tbcacmonhky>=5) and (tam1.minmon)>=3.5) then
'TBinh'
when ((tam1.tbcacmonhky>=3.5)and(tam1.minmon)>=2) then 'Yeu'
end as xeploai from
(select hocsinh.ma_hs,hocsinh.hodem_hs, hocsinh.ten_hs,
AVG(tam.tbmon) as tbcacmonhky, min(tam.tbmon) as minmon from
(select tong12.ma_mon,
tong12.ma_hs,tong12.ma_hky,
(max(tong12.tong12)+max(tong3.tong3))/(max(tong12.dem1 2)+1) as tbmon
from
(select tong1.ma_mon, tong1.ma_hs,tong1.ma_hky, (max(tong1.tong1)+max(tong2.tong2)) as tong12,
(max(tong1.dem1)+max(tong2.dem2)) as dem12 from
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs1.diem_l1) as tong1,
count(diem_hs1.diem_l1) as dem1
from bangdiem join diem_hs1 on
bangdiem.ma_mon=diem_hs1.ma_mon
and ngdiem.ma_hky=diem_hs1.ma_hky
and bangdiem.ma_hs=diem_hs1.ma_hs group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong1
join
(select bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky,
sum(diem_hs2.diem_l2) as tong2,
count(diem_hs2.diem_l2) as dem2
from bangdiem join diem_hs2 on
bangdiem.ma_mon=diem_hs2.ma_mon
and
bangdiem.ma_hky=diem_hs2.ma_hky
and bangdiem.ma_hs=diem_hs2.ma_hs group by bangdiem.ma_mon,
on tong1.ma_mon=tong2.ma_mon
and tong1.ma_hky=tong2.ma_hky
and tong1.ma_hs=tong2.ma_hs
group by tong1.ma_mon, tong1.ma_hs,tong1.ma_hky) as tong12
join
(select bangdiem.ma_mon, bangdiem.ma_hs,bangdiem.ma_hky, max(diem_hs3.diem_hs3) as tong3
from bangdiem join diem_hs3
on bangdiem.ma_mon=diem_hs3.ma_mon
and bangdiem.ma_hky=diem_hs3.ma_hky
and bangdiem.ma_hs=diem_hs3.ma_hs
group by bangdiem.ma_mon,
bangdiem.ma_hs,bangdiem.ma_hky) as tong3 on tong12.ma_mon=tong3.ma_mon
and tong12.ma_hky=tong3.ma_hky
and tong12.ma_hs=tong3.ma_hs
group by tong12.ma_mon, tong12.ma_hs,tong12.ma_hky) as tam,hocsinh
where tam.ma_hs=hocsinh.ma_hs
group by hocsinh.ma_hs,hocsinh.hodem_hs,hocsinh.ten_hs
) as tam1) as tamxeploai
where tamxeploai.xeploai='khá'
Nhận xét:
Để thống kê được số lượng học sinh xếp loại theo học lực ta phải thực hiện nhiều phép nối và nhiều phép thống kê.
Tiểu kết: chức năng cần hỗ trợ khung nhìn thực.