Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 100 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
100
Dung lượng
1,7 MB
Nội dung
Đ IăH CăĐĨăN NG TR NGăĐ IăH CăS ăPH M TR NăDUYăBỊNH NGHIểNăC Uă NGăD NGăANCHORăMODELINGă VĨăKHUNGăNHỊNăTH CăĐ ăNỂNGăCAOăHI UăQU ă QU NăLụăĐI M H CăSINHăT IăTR NGăTHPTă BA GIA T NHăQU NGăNGĩI LU NăVĔNăTH CăSƾ H ăTH NGăTHỌNGăTIN ĐƠăN ng,ănĕmă2019 Đ IăH CăĐĨăN NG TR NGăĐ IăH CăS ăPH M TR NăDUYăBỊNH NGHIểNăC Uă NGăD NGăANCHORăMODELINGă VĨăKHUNGăNHỊNăTH CăĐ ăNỂNGăCAOăHI UăQU ă QU NăLụăĐI M H CăSINHăT IăTR NGăTHPTă BAăGIAăT NHăQU NGăNGĩI ChuyênăngƠnh:ăH ăTH NGăTHỌNGăTIN Mưăs :ă848.01.04 LU NăVĔNăTH CăSƾ NG IăH NGăDẪNăKHOAăH C: TS NGUY NăTR NăQU CăVINH ĐƠăN ng,ănĕmă2019 ii M CL C L IăCAMăĐOAN i M CăL C ii DANHăM CăT ăVI TăT T iv DANHăM CăCỄCăB NG v DANHăM CăCỄCăHỊNH vi M ăĐ U 1 Lý ch n đ tài Mục tiêu nghiên c u Đ i tượng ph m vi nghiên c u Phương pháp nghiên c u Ý nghĩa c a đ tài B cục luận văn CH NGă1 T NGăQUANăV ăANCHOR MODELING VÀ KHUNG NHÌN TH C 1.1 Tổng quan v Anchor Modeling 1.1.1 Giới thiệu 1.1.2 Những khái niệm b n v mơ hình hóa AM 1.1.3 Cơ s liệu có yếu t th i gian 1.1.4 Truy cập liệu 10 1.2 Tổng quan v khung nhìn thực 10 1.2.1 Giới thiệu chung 10 1.2.2 ng dụng KNT hệ qu n tr c s liệu Microsoft SQL Server 12 1.2.3 Cập nhật khung nhìn thực 14 1.3 Kết luận Chương 14 CH NG GI Iă PHỄPă NỂNGă CAOă HI Uă NĔNGă H ă TH NGă B NG ANCHORăMODELINGăVĨăKHUNGăNHỊNăTH C 16 2.1 Qu n lý m h c sinh trư ng THPT 16 2.1.1 Yêu cầu 16 2.1.2 Thực tr ng 16 2.1.3 Đ xuất gi i pháp 16 2.2 Hệ th ng thông tin qu n lý m h c sinh t i trư ng THPT Ba Gia tỉnh Qu ng Ngãi 17 2.2.1 Mô t hệ th ng 17 2.2.2 Mô t ch c c a hệ th ng 19 iii 2.3 Mơ hình s liệu t i 20 2.3.1 Các m i kết hợp 20 2.3.2 Dữ liệu t i 24 2.3.3 Mơ t q trình thao tác liệu c a s ch c 25 2.4 Mơ hình hóa liệu theo AM 34 2.4.1 Mơ t thuộc tính AM 34 2.4.2 Mô t m i quan hệ AM 37 2.4.3 Mơ hình AM với CSDL t i 47 2.5 ng dụng khung nhìn thực CSDL AM 50 2.5.1 ng dụng khung nhìn thực 50 2.5.2 Xây dựng Trigger 53 2.6 Kết luận Chương 55 CH NGă3 TH CăNGHI MăVĨăĐỄNHăGIỄ 56 3.1 Một s kết qu thu 56 3.2 Nhận xét, đánh giá 60 3.3 Kết luận Chương 61 K TăLU NăVĨăH NGăPHỄTăTRI N 63 TĨIăLI UăTHAMăKH O 64 PH ăL C QUY TăĐ NHăGIAOăĐ ăTĨIăLU NăVĔNă(b năsao) iv DANH M C T STT VI T T T Vi tăt t Di năgi i AM Anchor Modeling CSDL Cơ s liệu HQT Hệ qu n tr KNT Khung nhìn thực THPT Trung h c phổ thông v DANH M C CÁC B NG S h u Tên b ng b ng Trang 2.1 Mơ t thuộc tính c a b ng 24 2.2 Mô t truy vấn t o b ng 25 2.3 Mô t truy vấn nhập liệu vào b ng 26 2.4 Mơ t truy vấn tính m trung bình mơn h c 27 2.5 Mơ t truy vấn tính m trung bình tất c môn h c 28 2.6 Mô t truy vấn xếp lo i h c lực h c sinh cu i h c kỳ 30 2.7 Mô t truy vấn th ng kê s lượng theo xếp lo i h c lực 32 2.8 Mơ t thuộc tính theo AM 35 2.9 Mô t m i quan hệ theo AM 37 2.10 Truy vấn tính m trung bình mơn có ng dụng AM 37 2.11 Truy vấn tính m trung bình tất c mơn h c có ng dụng AM 40 2.12 Truy vấn xếp lo i h c lực h c sinh có ng dụng AM 43 2.13 Truy vấn tính m trung bình mơn có ng dụng KNT 50 2.14 Truy vấn tính m trung bình mơn h c có ng dụng KNT 52 2.15 Truy vấn xếp lo i h c lực h c sinh có ng dụng KNT 53 2.16 Truy vấn th ng kê có ng dụng KNT 53 3.1 Mô t liệu thử nghiệm 56 3.2 Th i gian thực truy vấn 60 3.3 Th i gian thực truy vấn Update liệu 61 vi DANH M C CÁC HÌNH S hi u hình Tên hình Trang 1.1 Mơ hình hóa tập thực th đơn gi n 1.2 Các m i quan hệ 1.3 Sử dụng KNT 11 2.1 Mô t hệ th ng 18 2.2 Bi u đồ tự s ch c 19 2.3 Mô hình thực th kết hợp 21 2.4 Mơ hình liệu quan hệ 23 2.5 Mơ hình AM 49 2.6 Liên hệ b ng g c, khung nhìn, KNC Trigger 55 3.1 Truy vấn tính m trung bình mơn h c SQL Server 56 3.2 Truy vấn tính m trung bình mơn h c SQL Server 57 3.3 Truy vấn tính m trung bình mơn h c có ng dụng KNT 57 3.4 Truy vấn tính m trung bình mơn có ng dụng KNT 58 3.5 Truy vấn xếp lo i h c lực h c sinh có ng dụng KNT 58 3.6 Truy vấn xem m theo th i gian 59 3.7 Truy vấn xem m t i th i m cu i 59 [diem1].Metadata_diem1, [diem1].diem1_diem1_diem1_ID, [diem1].Metadata_diem1_diem1, [diem1].diem1_diem1_ChangedAt, [diem1].diem1_diem1_diem_hs1_diem_l1, [mm].diem1_mm_diem1_ID, [mm].Metadata_diem1_mm, [mm].diem1_mm_diem_hs1_ma_mon, [mhs].diem1_mhs_diem1_ID, [mhs].Metadata_diem1_mhs, [mhs].diem1_mhs_diem_hs1_ma_hs, [mhk].diem1_mhk_diem1_ID, [mhk].Metadata_diem1_mhk, [mhk].diem1_mhk_diem_hs1_ma_hky, [lkt].diem1_lkt_diem1_ID, [lkt].Metadata_diem1_lkt, [lkt].diem1_lkt_diem_hs1_lan_kt FROM [dbo].[diem1_diem_hs1] [diem1] LEFT JOIN [dbo].[diem1_diem1_diem_hs1_diem_l1] [diem1] ON [diem1].diem1_diem1_diem1_ID = [diem1].diem1_ID AND [diem1].diem1_diem1_ChangedAt = ( SELECT max(sub.diem1_diem1_ChangedAt) FROM [dbo].[diem1_diem1_diem_hs1_diem_l1] sub WHERE sub.diem1_diem1_diem1_ID = [diem1].diem1_ID ) LEFT JOIN [dbo].[diem1_mm_diem_hs1_ma_mon] [mm] ON [mm].diem1_mm_diem1_ID = [diem1].diem1_ID LEFT JOIN [dbo].[diem1_mhs_diem_hs1_ma_hs] [mhs] ON [mhs].diem1_mhs_diem1_ID = [diem1].diem1_ID LEFT JOIN [dbo].[diem1_mhk_diem_hs1_ma_hky] [mhk] ON [mhk].diem1_mhk_diem1_ID = [diem1].diem1_ID LEFT JOIN [dbo].[diem1_lkt_diem_hs1_lan_kt] [lkt] ON [lkt].diem1_lkt_diem1_ID = [diem1].diem1_ID; GO Point-in-time perspective - pdiem1_diem_hs1 viewed as it was on the given timepoint CREATE FUNCTION [dbo].[pdiem1_diem_hs1] ( @changingTimepoint datetime2(7) ) RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT [diem1].diem1_ID, [diem1].Metadata_diem1, [diem1].diem1_diem1_diem1_ID, [diem1].Metadata_diem1_diem1, [diem1].diem1_diem1_ChangedAt, [diem1].diem1_diem1_diem_hs1_diem_l1, [mm].diem1_mm_diem1_ID, [mm].Metadata_diem1_mm, [mm].diem1_mm_diem_hs1_ma_mon, [mhs].diem1_mhs_diem1_ID, [mhs].Metadata_diem1_mhs, [mhs].diem1_mhs_diem_hs1_ma_hs, [mhk].diem1_mhk_diem1_ID, [mhk].Metadata_diem1_mhk, [mhk].diem1_mhk_diem_hs1_ma_hky, [lkt].diem1_lkt_diem1_ID, [lkt].Metadata_diem1_lkt, [lkt].diem1_lkt_diem_hs1_lan_kt FROM [dbo].[diem1_diem_hs1] [diem1] LEFT JOIN [dbo].[rdiem1_diem1_diem_hs1_diem_l1](@changingTimepoint) [diem1] ON [diem1].diem1_diem1_diem1_ID = [diem1].diem1_ID AND [diem1].diem1_diem1_ChangedAt = ( SELECT max(sub.diem1_diem1_ChangedAt) FROM [dbo].[rdiem1_diem1_diem_hs1_diem_l1](@changingTimepoint) sub WHERE sub.diem1_diem1_diem1_ID = [diem1].diem1_ID ) LEFT JOIN [dbo].[diem1_mm_diem_hs1_ma_mon] [mm] ON [mm].diem1_mm_diem1_ID = [diem1].diem1_ID LEFT JOIN [dbo].[diem1_mhs_diem_hs1_ma_hs] [mhs] ON [mhs].diem1_mhs_diem1_ID = [diem1].diem1_ID LEFT JOIN [dbo].[diem1_mhk_diem_hs1_ma_hky] [mhk] ON [mhk].diem1_mhk_diem1_ID = [diem1].diem1_ID LEFT JOIN [dbo].[diem1_lkt_diem_hs1_lan_kt] [lkt] ON [lkt].diem1_lkt_diem1_ID = [diem1].diem1_ID; GO C.ăXơyăd ngăcácăTrigger Đ cập nhật l i m hệ s thay đổi theo th i gian, ta xây dựng Trigger sau: CREATE table Tdhs1_diem1_dhs1_ID_ChangedAt (dhs1_diem1_dhs1_ID int, maxTime datetime) GO insert into Tdhs1_diem1_dhs1_ID_ChangedAt SELECT dhs1_diem1_dhs1_ID, MAX(dhs1_diem1_ChangedAt) AS maxTime FROM dbo.dhs1_diem1_diem_hs1_diem_l1 AS sub GROUP BY dhs1_diem1_dhs1_ID GO /* T o trigger cho b ng "Tdhs1_diem1_dhs1_ID_ChangedAt" */ CREATE TRIGGER tg_Tdhs1_diem1_dhs1_ID_ChangedAt ON dbo.dhs1_diem1_diem_hs1_diem_l1 FOR INSERT,DELETE AS BEGIN DECLARE @dhs1_diem1_dhs1_ID INT DECLARE @maxTime DATETIME DECLARE @dhs1_diem1_dhs1_ID_U INT DECLARE @maxTime_U DATETIME DECLARE @Sodong1 INT DECLARE @Sodong2 INT SELECT @Sodong1 = COUNT(dhs1_diem1_dhs1_ID) FROM dbo.Tdhs1_diem1_dhs1_ID_ChangedAt SELECT @Sodong2 = COUNT(dhs1_diem1_dhs1_ID) FROM dbo.dhs1_diem1_diem_hs1_diem_l1 Insert DECLARE contro CURSOR SCROLL FOR SELECT Inserted.dhs1_diem1_dhs1_ID,Inserted.dhs1_diem1_ChangedAt FROM Inserted OPEN contro FETCH LAST FROM contro INTO @dhs1_diem1_dhs1_ID,@maxTime WHILE (@@FETCH_STATUS = 0) BEGIN IF (@Sodong1 < @Sodong2) BEGIN INSERT INTO dbo.Tdhs1_diem1_dhs1_ID_ChangedAt VALUES (@dhs1_diem1_dhs1_ID, dhs1_diem1_dhs1_ID - int @maxTime maxTime - datetime) SET @Sodong1 = @Sodong1 + END FETCH PRIOR FROM contro INTO @dhs1_diem1_dhs1_ID,@maxTime END CLOSE contro DEALLOCATE contro Delete DECLARE contro CURSOR FOR SELECT Deleted.dhs1_diem1_dhs1_ID FROM Deleted OPEN contro FETCH NEXT FROM contro INTO @dhs1_diem1_dhs1_ID WHILE (@@FETCH_STATUS = 0) BEGIN IF (@Sodong1 > @Sodong2) BEGIN DELETE FROM dbo.Tdhs1_diem1_dhs1_ID_ChangedAt WHERE dhs1_diem1_dhs1_ID = @dhs1_diem1_dhs1_ID SET @Sodong1 = @Sodong1 - END FETCH NEXT FROM contro INTO @dhs1_diem1_dhs1_ID END CLOSE contro DEALLOCATE contro END GO /* Trigger Update */ CREATE TRIGGER tg_U_Tdhs1_diem1_dhs1_ID_ChangedAt ON dbo.dhs1_diem1_diem_hs1_diem_l1 FOR UPDATE AS BEGIN DECLARE @dhs1_diem1_dhs1_ID INT DECLARE @maxTime DATETIME DECLARE contro CURSOR FOR SELECT Inserted.dhs1_diem1_dhs1_ID,Inserted.dhs1_diem1_ChangedAt FROM Inserted OPEN contro FETCH NEXT FROM contro INTO @dhs1_diem1_dhs1_ID,@maxTime WHILE (@@FETCH_STATUS = 0) BEGIN UPDATE dbo.Tdhs1_diem1_dhs1_ID_ChangedAt SET maxTime = @maxTime WHERE dhs1_diem1_dhs1_ID = @dhs1_diem1_dhs1_ID FETCH NEXT FROM contro INTO @dhs1_diem1_dhs1_ID,@maxTime END CLOSE contro DEALLOCATE contro END GO Đ cập nhật l i KNT tong1, tong2, tong3 Insert, Delete, Update, ta xây dựng Trigger sau: /* Trigger cập nhật b ng tong1 Insert */ CREATE TRIGGER tg_I_tong1 ON dbo.tong1 FOR INSERT AS BEGIN DECLARE @bdiem_mm_bangdiem_ma_mon NVARCHAR(5); DECLARE @bdiem_mhs_bangdiem_ma_hs NVARCHAR(5); DECLARE @bdiem_mhk_bangdiem_ma_hky NVARCHAR(5); DECLARE @tong1 INT; DECLARE @dem1 INT; DECLARE @Sodongtong1 INT; DECLARE @Sodongtong2 INT; SELECT @Sodongtong1 = COUNT(tong1) FROM dbo.tong1; SELECT @Sodongtong2 = COUNT(tong2) FROM dbo.tong2; DECLARE contro CURSOR SCROLL FOR SELECT Inserted.bdiem_mm_bangdiem_ma_mon, Inserted.bdiem_mhs_bangdiem_ma_hs, Inserted.bdiem_mhk_bangdiem_ma_hky, Inserted.tong1, Inserted.dem1 FROM Inserted; OPEN contro; FETCH NEXT FROM contro INTO @bdiem_mm_bangdiem_ma_mon, @bdiem_mhs_bangdiem_ma_hs, @bdiem_mhk_bangdiem_ma_hky, @tong1, @dem1; WHILE (@@FETCH_STATUS = 0) BEGIN IF (@Sodongtong1 > @Sodongtong2) BEGIN INSERT INTO dbo.tong12 VALUES ( @bdiem_mm_bangdiem_ma_mon, bdiem_mm_bangdiem_ma_mon - nvarchar(5) @bdiem_mhs_bangdiem_ma_hs, bdiem_mhs_bangdiem_ma_hs - nvarchar(5) @bdiem_mhk_bangdiem_ma_hky, bdiem_mhk_bangdiem_ma_hky - nvarchar(5) @tong1, tong12 - int @dem1 dem12 - int ); END; ELSE BEGIN UPDATE dbo.tong12 SET tong12 = tong12 + @tong1, dem12 = dem12 + @dem1 WHERE bdiem_mm_bangdiem_ma_mon = @bdiem_mm_bangdiem_ma_mon; END; FETCH NEXT FROM contro INTO @bdiem_mm_bangdiem_ma_mon, @bdiem_mhs_bangdiem_ma_hs, @bdiem_mhk_bangdiem_ma_hky, @tong1, @dem1; END; CLOSE contro; DEALLOCATE contro; END; GO /* Trigger cập nhật b ng tong2 Insert */ CREATE TRIGGER tg_I_tong2 ON dbo.tong2 FOR INSERT AS BEGIN DECLARE @bdiem_mm_bangdiem_ma_mon NVARCHAR(5); DECLARE @bdiem_mhs_bangdiem_ma_hs NVARCHAR(5); DECLARE @bdiem_mhk_bangdiem_ma_hky NVARCHAR(5); DECLARE @tong2 INT; DECLARE @dem2 INT; DECLARE @Sodongtong1 INT; DECLARE @Sodongtong2 INT; SELECT @Sodongtong1 = COUNT(tong1) FROM dbo.tong1; SELECT @Sodongtong2 = COUNT(tong2) FROM dbo.tong2; DECLARE contro CURSOR SCROLL FOR SELECT Inserted.bdiem_mm_bangdiem_ma_mon, Inserted.bdiem_mhs_bangdiem_ma_hs, Inserted.bdiem_mhk_bangdiem_ma_hky, Inserted.tong2, Inserted.dem2 FROM Inserted; OPEN contro; FETCH NEXT FROM contro INTO @bdiem_mm_bangdiem_ma_mon, @bdiem_mhs_bangdiem_ma_hs, @bdiem_mhk_bangdiem_ma_hky, @tong2, @dem2; WHILE (@@FETCH_STATUS = 0) BEGIN IF (@Sodongtong2 > @Sodongtong1) BEGIN INSERT INTO dbo.tong12 VALUES ( @bdiem_mm_bangdiem_ma_mon, bdiem_mm_bangdiem_ma_mon - nvarchar(5) @bdiem_mhs_bangdiem_ma_hs, bdiem_mhs_bangdiem_ma_hs - nvarchar(5) @bdiem_mhk_bangdiem_ma_hky, bdiem_mhk_bangdiem_ma_hky - nvarchar(5) @tong2 * 2, tong12 - int @dem2 * dem12 - int ); END; ELSE BEGIN UPDATE dbo.tong12 SET tong12 = tong12 + @tong2, dem12 = dem12 + @dem2 WHERE bdiem_mm_bangdiem_ma_mon = @bdiem_mm_bangdiem_ma_mon; END; FETCH NEXT FROM contro INTO @bdiem_mm_bangdiem_ma_mon, @bdiem_mhs_bangdiem_ma_hs, @bdiem_mhk_bangdiem_ma_hky, @tong2, @dem2; END; CLOSE contro; DEALLOCATE contro; END; GO /* Trigger cập nhật b ng tong1 Update*/ CREATE TRIGGER tg_U_tong1 ON dbo.tong1 FOR UPDATE AS BEGIN IF UPDATE(tong1) UPDATE dbo.tong12 SET tong12 = tong12 + (Inserted.tong1 - Deleted.tong1) FROM dbo.tong12 INNER JOIN Deleted ON Deleted.bdiem_mm_bangdiem_ma_mon = tong12.bdiem_mm_bangdiem_ma_mon INNER JOIN Inserted ON Inserted.bdiem_mm_bangdiem_ma_mon = Deleted.bdiem_mm_bangdiem_ma_mon; END; GO /* Trigger cập nhật b ng tong2 Update */ CREATE TRIGGER tg_U_tong2 ON dbo.tong2 FOR UPDATE AS BEGIN IF UPDATE(tong2) UPDATE dbo.tong12 SET tong12 = tong12 + (Inserted.tong2 - Deleted.tong2) FROM dbo.tong12 INNER JOIN Deleted ON Deleted.bdiem_mm_bangdiem_ma_mon = tong12.bdiem_mm_bangdiem_ma_mon INNER JOIN Inserted ON Inserted.bdiem_mm_bangdiem_ma_mon= deleted.bdiem_mm_bangdiem_ma_mon; END; GO /* Trigger cập nhật b ng tong1 Delete */ CREATE TRIGGER tg_D_tong1 ON dbo.tong1 FOR DELETE AS BEGIN UPDATE dbo.tong12 SET tong12 = tong12 - Deleted.tong1 FROM Deleted JOIN dbo.tong12 ON tong12.bdiem_mm_bangdiem_ma_mon = Deleted.bdiem_mm_bangdiem_ma_mon; END; GO /* Trigger cập nhật b ng tong2 Delete */ CREATE TRIGGER tg_D_tong2 ON dbo.tong2 FOR DELETE AS BEGIN UPDATE dbo.tong12 SET tong12 = tong12 - Deleted.tong2 * FROM Deleted JOIN dbo.tong12 ON tong12.bdiem_mm_bangdiem_ma_mon = Deleted.bdiem_mm_bangdiem_ma_mon; END; GO /* Trigger cập nhật b ng tong3 Insert */ CREATE TRIGGER tg_insert_tong3 ON ldhs3_diem_hs3 FOR INSERT AS BEGIN DECLARE @mamon VARCHAR(10); DECLARE @mahs VARCHAR(10); DECLARE @mahk VARCHAR(10); DECLARE @diem VARCHAR(5); DECLARE cursorInsert CURSOR FOR SELECT dhs3_mm_diem_hs3_ma_mon, dhs3_mhs_diem_hs3_ma_hs, dhs3_mhk_diem_hs3_ma_hky, dhs3_diem3_diem_hs3_diem_l3 FROM inserted; OPEN cursorInsert; FETCH NEXT FROM cursorInsert INTO @mamon, @mahs, @mahk, @diem; WHILE @@FETCH_STATUS = BEGIN INSERT INTO tong3 VALUES (@mamon, @mahs, @mahk, @diem); FETCH NEXT FROM cursorInsert INTO @mamon, @mahs, @mahk; END; CLOSE cursorInsert; DEALLOCATE cursorInsert; END; GO /* Trigger cập nhật b ng tong3 Delete */ CREATE TRIGGER tg_delete_tong3 ON ldhs3_diem_hs3 FOR DELETE AS BEGIN DECLARE @mamon VARCHAR(10); DECLARE @mahs VARCHAR(10); DECLARE @mahk VARCHAR(10); DECLARE cursorDelete CURSOR FOR SELECT dhs3_mhk_diem_hs3_ma_hky, dhs3_mhs_diem_hs3_ma_hs, dhs3_mm_diem_hs3_ma_mon FROM deleted; OPEN cursorDelete; FETCH NEXT FROM cursorDelete INTO @mamon, @mahs, @mahk; WHILE @@FETCH_STATUS = BEGIN DELETE tong3 WHERE bdiem_mm_bangdiem_ma_mon = @mamon AND bdiem_mhs_bangdiem_ma_hs = @mahs AND bdiem_mhk_bangdiem_ma_hky = @mahk; FETCH NEXT FROM cursorDelete INTO @mamon, @mahs, @mahk; END; CLOSE cursorDelete; DEALLOCATE cursorDelete; END; GO /* Trigger cập nhật b ng tong3 Update */ CREATE TRIGGER tg_update_tong3 ON ldhs3_diem_hs3 FOR UPDATE AS BEGIN DECLARE @mamon VARCHAR(10); DECLARE @mahs VARCHAR(10); DECLARE @mahk VARCHAR(10); DECLARE @diem VARCHAR(5); DECLARE cursorUpdate CURSOR FOR SELECT dhs3_mhk_diem_hs3_ma_hky, dhs3_mhs_diem_hs3_ma_hs, dhs3_mm_diem_hs3_ma_mon, dhs3_diem3_diem_hs3_diem_l3 FROM inserted; OPEN cursorUpdate; FETCH NEXT FROM cursorUpdate INTO @mamon, @mahs, @mahk, @diem; WHILE @@FETCH_STATUS = BEGIN UPDATE tong3 SET tong3 = @diem WHERE bdiem_mm_bangdiem_ma_mon = @mamon AND bdiem_mhs_bangdiem_ma_hs = @mahs AND bdiem_mhk_bangdiem_ma_hky = @mahk; FETCH NEXT FROM cursorUpdate INTO @mamon, @mahs, @mahk, @diem; END; CLOSE cursorUpdate; DEALLOCATE cursorUpdate; END; ... tài: ? ?Nghiên c u ng dụng Anchor Modeling khung nhìn thực để nâng cao hiệu quản lý điểm học sinh trường THPT Ba Gia tỉnh Quảng Ngãi? ?? đ làm luận văn th c sỹ 2.ăM cătiêu? ?nghiên? ?c u - Nghiên c u v Anchor. .. ng dụng KNT việc qu n lý m h c sinh t i trư ng THPT Ba Gia như: khung nhìn tong1, khung nhìn tong2, khung nhìn tong3, khung nhìn tong12, khung nhìn tam 1.2.2 ng dụng KNT hệ quản trị cở sở liệu... v Anchor Modeling (AM) KNT - Phân tích hệ th ng qu n lý m t i trư ng trung h c phổ thông (THPT) Ba Gia tỉnh Qu ng Ngãi - Mô hình hóa liệu với AM - Xây dựng khung nhìn thực cho s khung nhìn cu