Đề tài Tổng quan về hệ thống quản lý thi trắc nghiệm

Tài liệu Đề tài Tổng quan về hệ thống quản lý thi trắc nghiệm: CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ THI TRẮC NGHIỆM ĐẶC TẢ YÊU CẦU: Mỗi một khoa trong một khoá học của trường Đại Học Dân Lập Kỹ Thuật Công Nghệ có rất nhiều sinh viên, mỗi sinh viên chỉ học tại một lớp mà lớp học đó chỉ thuộc mốt khoá học và thuộc một khoa duy nhất. Khoá học được hiểu là năm bắt đầu của sinh viên khi trúng tuyển vào trường. Thông tin về sinh viên gồm mã sinh viên, họ tên sinh viên, phái ngày sinh, nơi sinh, … . Thông tin về lớp gồm mã lớp, tên lớp mã khoa, mã khoá học. Do việc nâng cao chất lượng đào tạo ngày một phù hợp với thực tế, nên một số môn học của các khoa trong các khoá học sẽ giống nhau. Ví dụ nhu khoa Công nghệ thông tin và khoa Điện tử sẽ có một số môn học giống nhau ở giai đoạn đại cương; do đó việc làm bài thi với những câu hỏi giống nhau cũng không ngoại lệ. Câu hỏi sẽ được các giáo viên ra đề ứ...

doc130 trang | Chia sẻ: hunglv | Lượt xem: 997 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Tổng quan về hệ thống quản lý thi trắc nghiệm, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
CHÖÔNG 1 TOÅNG QUAN VEÀ HEÄ THOÁNG QUAÛN LYÙ THI TRAÉC NGHIEÄM ÑAËC TAÛ YEÂU CAÀU: Moãi moät khoa trong moät khoaù hoïc cuûa tröôøng Ñaïi Hoïc Daân Laäp Kyõ Thuaät Coâng Ngheä coù raát nhieàu sinh vieân, moãi sinh vieân chæ hoïc taïi moät lôùp maø lôùp hoïc ñoù chæ thuoäc moát khoaù hoïc vaø thuoäc moät khoa duy nhaát. Khoaù hoïc ñöôïc hieåu laø naêm baét ñaàu cuûa sinh vieân khi truùng tuyeån vaøo tröôøng. Thoâng tin veà sinh vieân goàm maõ sinh vieân, hoï teân sinh vieân, phaùi ngaøy sinh, nôi sinh, … . Thoâng tin veà lôùp goàm maõ lôùp, teân lôùp maõ khoa, maõ khoaù hoïc. Do vieäc naâng cao chaát löôïng ñaøo taïo ngaøy moät phuø hôïp vôùi thöïc teá, neân moät soá moân hoïc cuûa caùc khoa trong caùc khoaù hoïc seõ gioáng nhau. Ví duï nhu khoa Coâng ngheä thoâng tin vaø khoa Ñieän töû seõ coù moät soá moân hoïc gioáng nhau ôû giai ñoaïn ñaïi cöông; do ñoù vieäc laøm baøi thi vôùi nhöõng caâu hoûi gioáng nhau cuõng khoâng ngoaïi leä. Caâu hoûi seõ ñöôïc caùc giaùo vieân ra ñeà öùng vôùi caùc moân hoïc maø giaùo vieân ñoù coù theå giaûng daïy. Thoâng tin veà moân hoïc goàm maõ moân hoïc, teân moân hoïc, soá tieát hoïc cuûa moân hoïc ñoù. Thoâng tin caù nhaân cuûa giaùo vieân goàm maõ giaùo vieân, hoï teân giaùo vieân, phaùi, ngaøy sinh, nôi sinh, … . vaø caâu hoûi seõ ñöôïc xaùc ñònh vôùi nhöõng thoâng tin: maõ caâu hoûi, noäi dung caâu hoûi, ñoä khoù deã, giaùo vieân soaïn caâu hoûi, caâu hoûi thuoäc moân hoïc naøo vaø traïng thaùi cuûa caâu hoûi naøy; caâu hoûi coøn ñöôïc söû duïng nöõa hay khoâng. Vì laø caâu hoûi thi traéc nghieäm neân töông öùng vôùi caâu hoûi thi seõ coù caùc caâu choïn ñeå traû lôøi cho caâu hoûi ñoù, moät caâu hoûi ñöôïc giôùi haïn toái ña laø 6 caâu choïn, vaø chæ coù moät caâu choïn laø ñuùng cho moät caâu hoûi. Thoâng tin veà caâu choïn goàm maõ caâu choïn, ñaùp aùn ñuùng cuûa caâu choïn ñoù, vaø maõ caâu hoûi cuûa caâu choïn. Trong moät hoïc kyø, ngoaøi kyø thi chính thöùc cho nhöõng moân hoïc ñöôïc giaûng daïy trong hoïc kyø ñoù, khoa coøn toå chöùc caùc kyø thi laïi hoaëc kyø thi hoïc laïi cho nhöõng sinh vieân khoâng ñaït. Thoâng tin veà kyø thi veà goàm maõ kyø thi, teân kyø thi. Trong moãi ñôït thi seõ coù thoâng baùo veà thôøi gian thi, moân thi cuûa ñôït thi naøy, ñôït thi cuûa khoaù naøo, khoa naøo, thi cho kyø thi gì… Ñeå ñaùnh giaù vieäc hoïc taäp cuûa sinh vieân, keát quaû naøy seõ döïa vaøo baøi thi cuûa sinh vieân. Baøi thi cuûa sinh vieân goàm moät soá caâu hoûi ñöôïc laáy ngaãu nhieân khi sinh vieân nhaäp vaøo maõ soá cuøng vôùi maät khaåu cuûa mình ñeå log vaøo phaàn laøm baøi thi daønh cho sinh vieân, trong soá caâu hoûi thi seõ coù tyû leä caâu hoûi khoù, baøi thi coøn goàm nhöõng thoâng tin nhö maû baøi thi, maõ ñôït thi, maõ sinh vieân, soá caâu laøm ñuùng, keát quaû, traïng thaùi baøi thi ñaõ ñöôïc laøm hay chöa Beân treân laø nhöõng thoâng tin cô baûn caàn thieát ñeå baét ñaàu cho coâng vieäc phaân tích vaø thieát keá heä thoáng. II. XAÂY DÖÏNG MOÂ HÌNH QUAN NIEÄM DÖÕ LIEÄU THEO MOÂ HÌNH THÖÏC THEÅ KEÁT HÔÏP EER (Enteded Entity Relationship): II.1 Moâ Taû Thöïc Theå –YÙ Nghóa LOP (MALOP, TEN LOP, GHICHU) Moãi lôùp coù moät maõ lôùp (MALOP) vaø teân lôùp (TENLOP) ñeå phaân bieät vôùi caùc lôùp hoïc khaùc nhau vaø ghi chuù (GHICHU) ñeå ghi chuù theâm thoâng tin veà lôùp hoïc ñoù. SINHVIEN ( MASV, HOTENSV, PHAI, NGAYSINH, NOISINH, DIACHI, DTHOAI, HINH, GHICHU) Moãi sinh vieân coù moät maõ sinh vieân (MASV) ñeå phaân bieät vôùi caùc sinh vieân khaùc vaø coù hoï teân (HOTENSV), phaùi (PHAI), ngaøy sinh (NGAYSINH), nôi sinh (NOISINH), ñòa chæ (DIACHI), ñieän thoaïi (DTHOAI) vaø hình (HINH) keøm vôùi ghi chuù ( GHICHU) töông öùng vôùi sinh vieân ñoù. KHOA ( MAKHOA, TENKHOA, GHICHU) Moãi khoa coù moät maõ khoa (MAKHOA) teân khoa (TENKHOA) ñeå phaân bieät vôùi caùc khoa khaùc keøm vôùi ghi chuù (GHICHU) Dñeå ghi chuù theâm thoâng tin veà khoa. KHOAHOC (MAKH, TENKH, GHICHU) Moãi khoùa hoïc coù moät maõ khoaù hoïc (MAKH) teân khoùa hoïc (TENKH) ñeå phaân bieät vôùi caùc khoùa hoïc khaùc keøm vôùi ghi chuù (GHICHU) ñeå ghi chuù theâm thoâng tin veà khoaù hoïc ñoù. MONHOC (MAMH, TENMH, SOTIET, GHICHU) Moãi moân hoïc coù moät maõ moân hoïc (MAMH) teân moân hoïc (TENMH) ñeå phaân bieät vôùi caùc moân hoïc khaùc, soá tieát cuûa moân hoïc ñoù ( SOTIET) vôùi ghi chuù (GHICHU) ñeå ghi chuù theâm thoâng tin veà moân hoïc ñoù. CAUHOI (MACH, NDUNGCH, DOKHODE, HINH, TRANGTHAI, GHICHU) Moãi caâu hoûi coù moät maõ caâu hoûi (MACH), noäi dung caâu hoûi (NDUNGCH) ñeà phaân bieät vôùi caùc caâu hoûi khaùc, ñoä khoù deã cuûa caâu hoûi (DOKHODE), hình aûnh minh hoaï cho caâu hoûi ñoù (HINH), traïng thaùi cuûa caâu hoûi ( TRANGTHAI) xem caâu hoûi ñoù coøn ñöôïc söû duïng nöõa hay khoâng, vaø ghi chuù (GHICHU) ñeå ghi chuù theâm thoâng tin cho caâu hoûi ñoù neáu caàn thieát. GIAOVIEN (MAGV, HOTENGV, PHAI, NGAYSINH, NOISINH, DIACHI, DTHOAI, HOCVI, HINH, GHICHU) Moãi giaùo vieân coù moät maõ giaùo vieân (MAGV) ñeå phaân bieät vôùi caùc giaùo vieân khaùc vaø coù hoï teân (HOTENGV), phaùi (PHAI), ngaøy sinh (NGAYSINH), nôi sinh (NOISINH), ñòa chæ (DIACHI), ñieän thoaïi (DTHOAI) vaø hình (HINH) keøm vôùi ghi chuù ( GHICHU) töông öùng vôùi giaùo vieân ñoù. CAUCHON (MACC, NDUNGCC, DANDUNGSAI, GHICHU) Moãi caâu choïn coù moät maõ rieâng (MACC), noäi dung caâu choïn (NDUNGCC) ñeå phaân bieät vôùi caùc caâu choïn khaùc, caâu choïn ñoù laø ñuùng hay laø sai (DANDUNGSAI) vaø ghi chuù (GHICHU) ñeå moâ taû theâm thoâng tin veà caâu choïn ñoù. BAITHI (MABT, SOCAUDUNG, KETQUA, THAMGIA, GHICHU) Moãi baøi thi coù moät maõ baøi thi xaùc ñònh (MABT), soá caâu ñuùng cuûa baøi thi (SOCAUDUNG), keát quaû baøi thi (KETQUA), traïng thaùi baøi thi ñaõ ñöôïc thi hay chöa (THAMGIA) vaø ghi chuù (GHICHU) ñeå ghi chuù thoâng tin cuûa baøi thi. KYTHI ( MAKT, TENKT, GHICHU) Moãi kyø thi coù moät maõ kyø thi phaân bieät (MAKT), vaø teân cuûa kyø thi ñoù (TENKT) vaø ghi chuù (GHICHU) veà kyø thi naøy. DOTTHI (MADT, TENDT, NGAYTHI, KETTHUC, TGIANTHI, SOCAUHOI, PTCAUKHO, GHICHU) Moãi ñôït thi ñöôïc môû ra goàm coù maõ ñôït thi (MADT), teân ñôït thi (TENDT), ngaøy thi (NGAYTHI), thôøi gian thi (TGIANTHI), soá caâu hoûi trong ñôït thi naøy (SOCAUHOI), phaàn traêm caâu khoù trong toång soá caâu cuûa ñôtï thi naøy (PTCAUKHO), trang thaùi cuûa ñôït thi ñaõ keát thuùc hay chöa (KETTHUC) vaø ghi chuù (GHICHU) ñeå moâ taû theâm thoâng tin veà ñôït thi naøy. II.2 Moâ taû moái keát hôïp cuûa caùc thöïc theå: Moät sinh vieân chæ thuoäc moät lôùp, vaø moät lôùp coù nhieàu sinh vieân. 1,n 1,1 Co3 LOP SINHVIEN Moät khoa toå chöùc nhieàu lôùp, vaø moät lôùp chæ thuoäc moät khoa LOP KHOA 0,n 1,1 ToChuc Moät khoaù hoïc coù nhieàu lôùp , moät lôùp chæ thuoäc moät khoùa hoïc. 1,1 0,n Thuoc 7 LOP KHOAHOC Moät moân hoïc seõ coù nhieàu ñôït thi, moät ñôït thi chæ thuoäc moät moân hoïc. 1,n 1,1 Thuoc 6 DOTTHI MONHOC Moät khoùa hoïc seõ coù nhieàu ñôït thi, moät ñôït thi chæ thuoäc moät khoùa hoïc. 1,n 1,1 Thuoc 3 DOTTHI KHOAHOC Moät khoa seõ coù nhieàu ñôït thi, moät ñôït thi chæ thuoäc moät khoa. 1,n 1,1 Thuoc 4 DOTTHI KHOA 1,1 1,n Moät kyø thi seõ coù nhieàu ñôït thi, moät ñôït thi chæ thuoäc moät kyø thi. Thuoc 5 DOTTHI KYTHI Moät sinh vieân coù nhieàu baøi thi, moät baøi thi chæ thuoäc moät sinh vieân Lam 1,1 1,n SINHVIEN BAITHI Moät baøi thi chæ thuoäc moät ñôït thi, moät ñôït thi coù nhieàu baøi thi BAITHI 1,n 1,1 Thuoc 2 DOTTHI Moät baøi thi coù nhieàu caâu hoûi, moät caâu hoûi coù trong nhieàu baøi thi. 0,n 1,n BAILAMSV BAITHI CAUHOI Moät caâu hoûi coù nhieàu caâu choïn, moät caâu choïn chæ thuoäc moät caâu hoûi CAUCHON CAUHOI Co 1 1,1 1,n Moät giaùo vieân ra nhieàu caâu hoûi, moät caâu hoûi ñöôïc ra bôûi moät giaùo vieân 1,1 Soan GIAOVIEN CAUHOI 0,n Quan heä môùi ñöôïc sinh ra töø moái lieân keát BAILAMSV (MABT, MACH) Moät baøi laøm cuûa sinh vieân chæ coù moät caâu choïn laø ñuùng cho moät caâu hoûi, moät caâu choïn coù theå xuaát hieän trong nhieàu baøi laøm cuûa caùc sinh vieân. Moái lieân keát giöõa BAILAMSV vaø CAUCHON BAILAMSV 1,n CAUCHON Co3 1,1 II.3 Xaây döïng moâ hình thöïc theå ERD: IV. THIEÁT LAÄP CAÙC TABLE: LOP ( MALOP, TENLOP, MAKHOA, MAKH, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MALOP Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät lôùp hoïc TENLOP Varchar(20) Teân lôùp hoïc cuûa khoa trong khoaù hoïc MAKHOA Khoaù ngoaïi Varchar(10) Lôùp hoïc naøy thuoäc khoa naøo MAKH Khoaù ngoaïi Varchar(10) Lôùp hoïc naøy thuoäc khoaù hoïc naøo GHICHU Nvarchar(1000) Ghi chuù thoâng tin veà lôùp hoïc Null SINHVIEN ( MASV, HOTENSV, PHAI, NGAYSINH, NOISINH, DIACHI, DTHOAI, MALOP, MATKHAU, HINH, ONLINE, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MASV Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät sinh vieân HOTENSV Varchar(30) Hoï vaø teân cuûa sinh vieân PHAI Bit Sinh vieân laø nam hay nöõ NGAYSINH Datetime Ngaøy sinh cuûa sinh vieân NOISINH Varchar(30) Nôi sinh cuûa sinh vieân DIACHI Varchar(50) Ñòa chæ thöôøng truù cuûa sinh vieân DTHOAI Varchar(20) Soá ñieän thoaïi lieân laïc Null MALOP Khoaù ngoaïi Varchar(10) Maõ lôùp maø sinh vieân theo hoïc MATKHAU Varchar(15) Maät khaåu ñeå ñaêng nhaäp vaøo heä thoáng HINH Image Hình aûnh sinh vieân ONLINE Bit Trang thaùi coù online hay khoâng GHICHU Varchar(1000) Ghi chuù theâm thoâng tin sinh vieân Null KHOA ( MAKHOA, TENKHOA, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MAKHOA Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät khoa TENKHOA Varchar(20) Teân cuûa khoa GHICHU Varchar(1000) Ghi chuù thoâng tin veà khoa Null KHOAHOC ( MAKH, TENKH, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MAKH Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät khoaù hoïc TENKH Varchar(20) Teân cuûa khoaù hoïc GHICHU Varchar(1000) Ghi chuù thoâng tin veà khoaù hoïc Null MONHOC ( MAMH, TENMH, SOTIET, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MAMH Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät moân hoïc TENMH Varchar(20) Teân cuûa moân hoïc SOTIET Char(5) Soá tieát hoïc cuûa moät moân hoïc GHICHU Varchar(1000) Ghi chuù thoâng tin veà moân hoïc Null CAUHOI ( MACH, NDUNGCH, DOKHODE, HINH, MAGV, MAMH, TRANGTHAI, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MACH Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät caâu hoûi NDUNGCH Varchar(1000) Noäi dung cuûa caâu hoûi DOKHODE Bit Ñoä khoù deã cuûa caâu hoûi HINH Image Hình veõ minh hoaï cho caâu hoûi MAGV Khoaù ngoaïi Varchar(10) Maõ giaùo vieân ra caâu hoûi MAMH Khoaù ngoaïi Varchar(10) Caâu hoûi thuoäc moân hoïc naøo TRANGTHAI Bit Caâu hoûi coøn ñöôïc söû duïng hay khoâng GHICHU Varchar(1000) Ghi chuù thoâng tin veà caâu hoûi Null GIAOVIEN ( MAGV, HOTENGV, PHAI, NGAYSINH, NOISINH, DIACHI, DTHOAI, HOCVI, MANHOM, MATKHAU, HINH, ONLINE, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MAGV Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät giaùo vieân HOTENGV Varchar(30) Hoï vaø teân cuûa giaùo vieân PHAI Bit Giaùo vieân laø nam hay nöõ NGAYSINH Datetime Ngaøy sinh cuûa sinh vieân NOISINH Varchar(30) Nôi sinh cuûa sinh vieân DIACHI Varchar(50) Ñòa chæ thöôøng truù cuûa sinh vieân DTHOAI Varchar(20) Soá ñieän thoaïi lieân laïc Null HOCVI Varchar(15) Hoïc vò cuûa giaùo vieân HINH Image Hình aûnh cuûa giaùo vieân Null MATKHAU Varchar(15) Maät khaåu ñeå ñaêng nhaäp vaøo heä thoáng ONLINE Bit Traïng thaùi coù online hay khoâng GHICHU Varchar(1000) Ghi chuù theâm thoâng tin veà giaùo vieân Null CAUCHON ( MACC, NDUNGCC, DANDUNGSAI, MACH, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MACC Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät caâu choïn NDUNGCC Varchar(1000) Noäi dung cuûa caâu choïn DANDUNGSAI Bit Ñaùp aùn ñuùng sai cuûa caâu choïn MACH Khoaù ngoaïi Varchar(10) Maõ caâu hoûi öùng vôùi caùc caâu choïn GHICHU Varchar(1000) Ghi chuù thoâng tin veà caâu choïn Null BAITHI ( MABT, MADT, MASV, SOCAUDUNG, KETQUA, THAMGIA, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MABT Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät baøi thi MADT Khoaù ngoaïi Varchar(10) Maõ baøi thi seõ thuoäc kyø thi naøo MASV Khoaù ngoaïi Varchar(10) Maõ baøi thi cuûa sinh vieân naøo SOCAUDUNG Char(5) Soá caâu sinh vieân laøm ñuùng KETQUA Bit Sinh vieân ñaäu hay rôùt THAMGIA Bit Sinh vieân coù thi hay chöa GHICHU Varchar(1000) Ghi chuù thoâng tin veà baøi thi Null KYTHI (MAKT, TENKT, GHI CHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MAKT Khoaù chính Int(4) Maõ duy nhaát cuûa moät baøi thi TENKT Varchar(20) Maõ duy nhaát cuûa moät caâu hoûi GHICHU Varchar(1000) Maõ caâu choïn cuûa sinh vieân öùng vôùi caâu hoûi Null DOTTHI ( MADT, TENDT, MAKT, MAKH, MAKHOA, MAMH, NGAYTHI, TGIANTHI, SOCAUHOI, KETTHUC, PTCAUKHO, GHICHU) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MADT Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät ñôït thi TENDT Varchar(20) Teân cuûa ñôït thi MAKT Khoaù ngoaïi Int(4) Maõ kyø thi thuoäc ñôït thi naøo MAKH Khoaù ngoaïi Varchar(10) Maõ khoaù hoïc thuoäc ñôït thi naøo MAKHOA Khoaù ngoaïi Varchar(10) Maõ khoa thuoäc ñôït thi naøo MAMH Khoaù ngoaïi Varchar(10) Maõ moân hoïc thuoäc ñôït thi naøo NGAYTHI Datetime Ngaøy thi cuûa moät moân hoïc KETTHUC Bit Traïng thaùi cuûa ñôït thi TGIANTHI Datetime Thôøi gian thi cho moät moân hoïc SOCAUHOI Char(5) Soá caâu hoûi cho moät moân thi PTCAUKHO GHICHU Varchar(1000) Null BAILAMSV ( MABT, MACH, MACC, DUNGSAI) Teân vieát taét Raøng buoäc Kieåu döõ lieäu Dieãn giaûi Ghi chuù MABT Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät baøi thi MACH Khoaù chính Varchar(10) Maõ duy nhaát cuûa moät caâu hoûi MACC Khoaù ngoaïi Varchar(10) Maõ caâu choïn cuûa sinh vieân öùng vôùi caâu hoûi DUNGSAI Bit Caâu chon naøy la ñuùng hay sai Moái quan heä giöõa caùc table (cuoái chöông) VI. CAØI ÑAËT CAÙC RAØNG BUOÄC TOAØN VEÏN VAØ TAÀM AÛNH HÖÔÛNG: VI. 1. Raøng buoäc toaøn veïn coù boái caûnh laø moät quan heä: Raøng buoäc toaøn veïn veà mieàn giaù trò: R1 . Ngaøy sinh cuûa sinh vieân phaûi coù naêm sinh sao cho tuoåi sinh vieân lôùn hôn hoaëc baèng 16 tuoåi vaø nhoû hôn 60 tuoåi Bieåu dieãn: " sv Î SINHVIEN Year (now () – Year (sv.[NGAYSINH]) >=16 and Year (now () – Year (sv.[NGAYSINH]) < 60 Cuoái " Taàm aûnh höôûng: R1 Theâm Xoaù Söûa SINHVIEN + - + R2 . Ngaøy sinh cuûa giaùo vieân phaûi coù naêm sinh sao cho tuoåi giaùo vieân lôùn hôn hoaëc baèng 18 tuoåi vaø nhoû hôn hoaëc baèng 60 tuoåi Bieåu dieãn: " sv Î GIAOVIEN Year (now () – Year (sv.[NGAYSINH]) >=18 and Year (now () – Year (sv.[NGAYSINH]) < 60 Cuoái " Taàm aûnh höôûng: R2 Theâm Xoaù Söûa GIAOVIEN + - + b. Raøng buoäc toaøn veïn lieân thuoäc tính: khoâng coù c. Raøng buoäc toaøn veïn lieân boä: R3 . Moãi sinh vieân coù moät maõ sinh vieân khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î SINHVIEN q1. MASV q2. MASV Cuoái " Taàm aûnh höôûng: R3 Theâm Xoaù Söûa SINHVIEN + - + R4 . Moãi lôùp coù moät maõ lôùp khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î LOP q1. MALOP q2. MALOP Cuoái " Taàm aûnh höôûng: R4 Theâm Xoaù Söûa LOP + - + R5 . Moãi khoa coù moät maõ khoa khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î KHOA q1. MAKHOA q2. MAKHOA Cuoái " Taàm aûnh höôûng: R5 Theâm Xoaù Söûa KHOA + - + R6 . Moãi khoaù hoïc coù moät maõ khoaù hoïc khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î KHOAHOC q1. MAKH q2. MAKH Cuoái " Taàm aûnh höôûng: R6 Theâm Xoaù Söûa KHOAHOC + - + R7 . Moãi moân hoïc coù moät maõ moân hoïc khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î MONHOC q1. MAMH q2. MAMH Cuoái " Taàm aûnh höôûng: R7 Theâm Xoaù Söûa MONHOC + - + R8 . Moãi caâu hoûi coù moät maõ caâu hoûi khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î CAUHOI q1. MACH q2. MACH Cuoái " Taàm aûnh höôûng: R8 Theâm Xoaù Söûa CAUHOI + - + R9 . Moãi giaùo vieân coù moät maõ giaùo vieân khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î GIAOVIEN q1. MAGV q2. MAGV Cuoái " Taàm aûnh höôûng: R9 Theâm Xoaù Söûa GIAOVIEN + - + R10 . Moãi caâu choïn coù moät maõ caâu choïn khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î CAUCHON q1. MACC q2. MACC Cuoái " Taàm aûnh höôûng: R10 Theâm Xoaù Söûa CAUCHON + - + R11 . Moãi ngöôøi ñieàu haønh coù moät maõ ñieàu haønh khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î DIEUHANH q1. MADH q2. MADH Cuoái " Taàm aûnh höôûng: R11 Theâm Xoaù Söûa DIEUHANH + - + R12 . Moãi baøi thi coù moät maõ baøi thi khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î BAITHI q1. MABT q2. MABT Cuoái " Taàm aûnh höôûng: R12 Theâm Xoaù Söûa BAITHI + - + R13 . Moãi baøi laøm cuûa sinh vieân coù moät maõ baøi thi vaø maõ caâu hoûi khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î BAILAMSV q1. MABT q2. MABT q1. MACH q2. MACH Cuoái " Taàm aûnh höôûng: R13 Theâm Xoaù Söûa BAILAMSV + - + R14 . Moãi kyû thi coù moät maõ kyø thi khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î KYTHI q1. MAKT q2. MAKT Cuoái " Taàm aûnh höôûng: R14 Theâm Xoaù Söûa KYTHI + - + R15 . Moãi ñôït thi coù moät maõ ñôït thi khaùc nhau ñeå phaân bieät Bieåu dieãn: " q1, q2 Î DOTTHI q1. MADT q2. MADT Cuoái " Taàm aûnh höôûng: R15 Theâm Xoaù Söûa DOTTHI + - + VI. 2. Raøng buoäc toaøn veïn coù boái caûnh treân nhieàu quan heä: Raøng buoäc toaøn veïn veà phuï thuoäc toàn taïi: R1 :LOP(MAKHOA) Î KHOA(MAKHOA) Ç LOP(MAKH) Î KHOAHOC(MAKH) " q Î LOP, $ q1 Î KHOA/ q. MAKHOA = q1. MAKHOA Ç $ q2 Î KHOAHOC/ q. MAKH = q2. MAKH Cuoái " Taàm aûnh höôûng: R1 Theâm Xoaù Söûa LOP + - + KHOA - + + KHOAHOC - + + R2 :SINHVIEN(MALOP) Î LOP(MALOP) " q Î SINHVIEN, $ q1 Î LOP q. MALOP = q1. MALOP Cuoái " Taàm aûnh höôûng: R2 Theâm Xoaù Söûa LOP + + + SINHVIEN - + + R3 :CAUHOI(MAGV) Î GIAOVIEN(MAGV) Ç CAUHOI(MAMH) Î MONHOC(MAMH) " q Î CAUHOI, $ q1 Î GIAOVIEN/ q. MAGV = q1. MAGV Ç $ q2 Î MONHOC/ q. MAMH = q2. MAMH Cuoái " Taàm aûnh höôûng: R3 Theâm Xoaù Söûa CAUHOI + + + GIAOVIEN - + + MONHOC - + + R4 :CAUCHON(MACH) Î CAUHOI(MACH) " q Î CAUCHON, $ q1 Î CAUHOI q. MACH = q1. MACH Cuoái " Taàm aûnh höôûng: R4 Theâm Xoaù Söûa CAUCHON - + + CAUHOI + + + R5 :BAITHI(MASV) Î SINHVIEN(MASV) Ç BAITHI(MADT) Î DOTTHI(MADT) " q Î BAITHI, $ q1 Î SINHVIEN/ q. MASV = q1. MASV Ç $ q2 Î DOTTHI/ q. MADT = q2. MADT Cuoái " Taàm aûnh höôûng: R5 Theâm Xoaù Söûa BAITHI - + + SINHVIEN - + + DOTTHI + + + R6 :DOTTHI(MAKT) Î KYTHI(MAKT) Ç DOTTHI(MAKH) Î KHOAHOC(MAKH) Ç DOTTHI(MAKHOA) Î KHOA(MAKHOA) Ç DOTTHI(MAMH) Î MONHOC(MAMH) " q Î DOTTHI, $ q1 Î KYTHI/ q. MAKT = q1. MAKT $ q2 Î KHOAHOC/ q. MAKH = q2. MAKH $ q3 Î KHOA/ q. MAKHOA = q3. MAKHOA Ç $ q4 Î MONHOC/ q. MAMH = q4. MAMH Cuoái " Taàm aûnh höôûng: R5 Theâm Xoaù Söûa DOTTHI - + + KYTHI - + + KHOAHOC - + + KHOA - + + MONHOC - + + VI. 3. Xaùc ñònh phuï thuoäc haøm: LOP: Khoaù : { MALOP} F = {MALOP ->TENLOP, MAKHOA, MAKH, GHICHU} SINHVIEN: Khoaù : { MASV} F = {MASV ->HOTENSV, PHAI, NGAYSINH, NOISINH, DIACHI, DTHOAI, MALOP, MATKHAU, HINH, ONLINE, GHICHU} KHOA: Khoaù : { MAKHOA} F = {MAKHOA->TENKHOA, GHICHU} KHOAHOC: Khoaù : { MAKH} F = {MAKH ->TENKH, GHICHU} MONHOC: Khoaù : { MAMH} F = {MAMH ->TENMH, SOTIET, GHICHU} CAUHOI: Khoaù : { MACH} F = {MACH ->NDUNGCH, DOKHODE, HINH, MAGV, MAMH, TRANGTHAI, GHICHU} GIAOVIEN: Khoaù : { MAGV} F = {MAGV ->HOTENGV, PHAI, NGAYSINH, NOISINH, DIACHI, DTHOAI, HOCVI, HINH, MATKHAU, ONLINE, GHICHU} CAUCHON: Khoaù : { MACC} F = {MACC ->NDUNGCC, DANDUNGSAI, MACH, GHICHU} DIEUHANH: Khoaù : { MADH} F = {MADH ->MATKHAU, ONLINE} BAITHI: Khoaù : { MABT} F = {MABT ->MADT, MASV, SOCAUDUNG, KETQUA, THAMGIA, GHICHU} BAILAMSINHVIEN: Khoaù : { MABT, MACH} F = {MABT, MACH ->MACH, DUNGSAI} KYTHI: Khoaù : { MAKT} F = {MAKT ->TENKT, GHICHU} DOTTHI: Khoaù : { MADT} F = {MADT ->TENDT, MAKT, MAKH, MAKHOA, MAMH, NGAYTHI, KETTHUC, TGIANTHI, COCAUHOI, PTCAUKHO, GHICHU} CHÖÔNG 2 MOÂ HÌNH CLIENT/ SERVER I . Caùc Khaùi Nieäm: Khaùi nieäm veà phaàn cöùng: Client/ Server laø kieán truùc goàm hai thaønh phaàn maùy Client va Server, hai thaønh phaàn naøy lieân laïc vôùi nhau thoâng qua heä thoáng maïng. Client Server Client/ Server Software Network Operating Operating System Client/ Server Software Network Operating System Operating System RDBMS Network Cables Router Bridge Gateway Khaùi nieäm veà xöû lyù: Khi xaây döïng vaø khai thaùc öùng duïng treân moâi tröôøng maïng, moät trong nhöõng ñieàu kieän caàn quan taâm tröôùc tieân laø vieäc ñaùnh giaù caùc tính naêng cuûa heä thoáng maïng. Vieäc xaây döïng vaø khai thaùc öùng duïng treân maïng seõ deã daøng hôn neáu coù moät heä thoáng maïng oån ñònh, thöïc thi nhanh choùng vaø ñaùng tin caäy. Tuy nhieân, ñoái vôùi baát kyø heä thoáng maïng naøo, khi xaây döïng caùc öùng duïng treân noù, ta cuõng caàn phaûi tính toaùn sao cho vieäc truyeàn döõ lieäu laø toát nhaát ( Giaûm löôïng löu tröõ döõ lieäu treân ñöôøng truyeàn maø vaãn ñaùp öùng yeâu caàu veà döõ lieäu) vaø an toaøn nhaát. Moâ hình tính toaùn Client/ Server nhaèm giaûi quyeát vaán ñeà naøy. Trong moâ hình tính toaùn Client/ Server, caùc vieäc xöû lyù döõ lieäu, xöû lyù logic vaø giao dieän ngöôøi duøng ñöôïc phaân chia ra vaø ñöôïc thöïc hieän taïi nhieàu ñieåm khaùc nhau trong maïng. Maùy Client göûi ñeán maùy chuû yeâu caàu truy vaán döõ lieäu hoaëc caäp nhaät döõ lieäu (theâm, xoaù, söûa, caùc maãu tin). Maùy Server khi nhaän caùc yeâu caàu truy vaán, sau khi kieåm tra quyeàn truy caäp cuûa ngöôøi yeâu caàu, seõ tieán haønh choïn loïc tình toaùn toång hôïp thoâng tin trong cô sôû döõ lieäu ñeå göûi traû keát quaû truy vaán theo yeâu caàu cuûa maùy Client. Khi nhaän ñöôïc yeâu caàu caäp nhaät döõ lieäu ( theâm, xoaù , söûa), maùy chuû ngoaøi vieäc kieåm tra quyeàn truy caäp cuûa ngöôøi yeâu caàu coøn phaûi baûo ñaûm vieäc caäp nhaät khoâng paùh vôõ tính toaøn veïn döõ lieäu. Database Server coøn coù nhieäm vuï lieân laïc vôùi caùc cô sôû döõ lieäu khaùc ñeå ñeå laáy ñöôïc thoâng tin caàn thieát, baûo ñaûm cho ngöôøi duøng coù ñöôïc nhöõng thoâng tin caàn thieát moät caùch thoâng suoát cho duø döõ lieäu thöïc söï naèm phaân taùn ôû nhieàu maùy chuû khaùc nhau. Vieäc phaân chia nhieäm vuï giöõa Client vaø Server laø nhaân toá quyeát ñònh söï thaønh baïi cuûa vieäc öùng duïng moâ hình tính toaùn Client/ Server. II . Phaân loaïi öùng duïng Client/ Server: Thoâng thöôøng moät öùng duïng ñöôïc chia laøm 6 öùng duïng sau: Giao dieän ngöôøi duøng (User Interface) : laø nhöõng theå hieän treân maøn hình maø user thaáy vaø coù theå töông taùc ñöôïc. Login trình baøy (Presentation Logic): laø nhöõng gì xaûy ra khi user töông taùc vaøo nhöõng theå hieän treân maøn hình. Logic öùng duïng (Application Logic): laø nhöõng chöông trình hay ñoaïn chöông trình thi haønh nhöõng chöùc naêng naøo ñoù. Truy vaán döõ ieäu vaø keát quaû (data request and results acceptance) Toaøn veïn döõ lieäu (Data integrity): nhö chöùng nhaän hôïp leä an toaøn vaù toaøn dieän. Quaûn lyù döõ lieäu vaät lyù( Data Phisical Management): Theâm, xoaù, söûa vaø phuïc hoài döõ lieäu . Ñoái vôùi öùng duïng Client/ Server thì tuyø thuoäc vaøo yeâu caàu cuûa noù maø moãi nhieäm vuï ñöôïc ñaët vaøo thaønh phaàn Client hay Server ñeå cho ôû ñoù noù ñöôïc thöïc hieän hieäu quaû nhaát. Döïa vaøo caùch ñaët caùc nhieäm vuï treân maø ngöôøi ta ñaõ phaân ra öùng duïng Client/ Server thaønh 3 loaïi: Host-Based Processing, Client-Based Processing vaø Cooperative Processing. III . Server: Khaùi nieäm veà phaàn cöùng: Laø moät maùy tính coù caáu hình tuyø thuoäc vaøo vieäc ta söû duïng moâi tröôøng phaàn meàm naøo ñeå xaây döïng caùc öùng duïng vaø yeâu caàu veà caáu hình cuûa heä ñieàu haønh muoán duøng treân Server. Khaùi nieäm veà xöû lyù: Laø maùy tính cung caáp dòch vuï cho nhöõng maùy khaùc treân maïng, caùc dòch vuï nhö chia seõ file, caàu noái maïng, xöû lyù öùng duïng… Ñoái vôùi moâ hình Client/ Server. Server laøm nhieäm vuï quaûn lyù vieäc truy caäp CSDL, nhaän caùc yeâu caàu töø Client -> Xöû lyù -> Göûi keát quaû veà cho Client theo yeâu caàu. Phaân loaïi Server: Döïa vaøo chöùc naêng cuûa Server ngöôøi ta chia Server ra laøm 6 loaïi: File Server, Data Server, Computer Server, Application Server vaø Communication Server. File Server: Quaûn lyù öùng duïng cuûa moät nhoùm vaø quaûn lyù nhöõng file döõ lieäu. Do ñoù, nhöõng file döõ lieäu naøy coù theå ñöôïc chia seõ trong nhoùm. Khi Client ñoøi hoûi döõ lieäu trong moät file, File Server seõ chuyeån toaøn boä nhöõng file cuøng index ñeán Client. Do vaäy, seõ gaây löu thoâng lôùn treân maïng vaø chuyeån nhöõng döõ lieäu khoâng caàn thieát. Vieäc khoaù file theà hieän vieäc khoaù moät phaàn hay toaøn boä file, khoâng phaân chia khoaù ñeå ñoïc vaø khoaù ñeå ghi. Application Server: Moâ hình naøy laø söï thay theá Host-Terminal, Application Server chòu traùch nhieäm quaûn lyù döõ lieäu vaø thi haønh caùc öùng duïng. Data Server Chæ quaûn lyù nhöõng döõ lieäu vaø nhöõng chöùc naêng ñeå ñaûm baûo cho söï toaøn veïn döõ lieäu. Thöôøng hoaït ñoäng chung vôùi Computer Server. Data Server lo löu tröõ döõ lieäu vaø cung caáp döõ lieäu. Computer Server Quaûn lyù nhöõng chöùc naêng: Khi Client ñoøi hoûi döõ lieäu, noù seõ yeâu caàu Data Server theo caùch laáy döõ lieäu ít nhaát maø vaãn thoaû maõn yeâu caàu cuûa Client, sau ñoù noù seõ xöû lyù treân nhöõng döõ lieäu naøy vaø göûi keát quaû veà cho Client. Database Server Söï keát hôïp cuûa Computer Server vôùi Data Server. Khi Client göi yeâu caàu ñeán Server, Server coù theå chaáp nhaän hoaëc khoâng, neáu chaáp nhaän Server seõ truy caäp ñeán döõ lieäu caàn thieát ñang naèm treân Server cuïc boä ( Local) hoaëc treân caùc Server khaùc nhau ñeå xöû lyù vaø traû keát qua veà cho Client. Caùch xöû lyù naøy giuùp toái öu hoaù ñöôøng truyeàn: * Client chòu traùch nhieäm trình baøy vaø laø ñaàu vaøo caùc yeâu caàu göûi cho Server * Server lo quaûn trò CSDL, quaûn lyù söï hôïp taùc vôùi nhöõng Server khaùc. Communication Server Ñoùng vai troø laø moät caàu noái cho moät Client ôû xa vaøo moät LAN khaùc, moät maùy tính trung hoaëc lôùn. Nhö theá naøo laø moät Server toát ? Moät Server toát phaûi phuïc vuï cho nhieàu ngöôøi söû duïng, hoaït ñoäng nhanh, an toaøn, coù khaû naêng phuïc hoài döõ lieäu khi coù söï coá, nghóa laø phaûi coù caùc ñaëc tính sau: Multiprocessing: Coù khaû naêng duøng ñöôïc nhieàu process ñoàng thôøi (theo caùch phaân chia töï ñoäng nhieäm vuï hoaëc gaùn saün nhieäm vuï cho moãi process) Multithread: Thread laø ñôn vò nhoû nhaát coù theå laäp thôøi khoaù bieåu ñeå thöïc hieän. Moãi thread coù moät stack, moät instruction poiter, moät thöù töï öu tieân, traïng thaùi CPU vaø moät entry trong danh saùch phaân boá cuûa heä thoáng. Moät thread coù theå ñang thi haønh, ñang saün saøng thi haønh hoaëc ñang bò treo. Thread laø ñôn vò cuûa Process ñoäc laäp nhau, coù theå thöïc söï hoaït ñoäng ñoàng haønh vôùi nhau treân nhöõng CPU khaùc nhau. Disk Array: Nhieàu ñóa vaät lyù coù theå ñöôïc quaûn lyù nhö moät ñóa logic vaø xuyeân suoát ñoái vôùi ngöôøi duøng. Mirror Disk: Coù hai ñóa troáng chöùa cuøng döõ lieäu, khi bò hö moät ñóa thì seõ phuïc hoài töø ñóa coøn laïi. Error Correction Code Memory: Duøng bieåu dieãn chuaån ñeå phaùt hieän vaø söûa chöõa khi coù nhöõng sai soùt trong luùc chuyeån döõ lieäu treân Server Phaàn meàm Server: Döïa vaøo nhieäm vuï, ngöôøi ta phaân chia thaønh 8 loaïi phaàn meàm hoaït ñoäng treân Server. Nhöng phaûi coù cô cheá keát hôïp vôùi nhau thaønh moät theå thoáng nhaát. Taùm loaïi bao goàm: Network Management Environment, Network Computing Environment and Extention, Network Operating System, Server Operating System, Loadabel Module, DataBase Management, DataBase Gateway, Application. Application Loadable Modules DataBase Management DataBase Gateways Server Operating System Network Operating System Network Computing Environment Network Management Environment Network Management Environment: Khi moät heä thoáng thoâng tin coù tính phaân taùn thì caàn coù moät heä thoáng quaûn lyù maïng maø baát chaáp moâi tröôøng phaàn cöùng vaø phaàn meàm cuûa noù. Toaøn boä heä thoáng maïng phaûi ñöôïc xem nhö moät theå duy nhaát vaø vieäc xöû lyø noù nhö moät tieán trình. Network Computing Environment: Moâi tröôøng tính toaùn maïng cho pheùp nhöõng öùng duïng phaân taùn ôû nhieàu moâi tröôøng phaàn cöùng vaø phaàn meàm. Caùc chuaån OSF (Open Software Foundation) hoå trôï cho caáu truùc naøy laø: Moâi tröôøng phaân taùn (DCE : Distribute Computing Environment) Tính toaùn höôùng môû roäng maïng (ONC : Open Network Computing) Network Operating System : Heä ñieàu haønh maïng quaûn lyù caùc xöû lyù lieân quan ñeán xuaát/ nhaäp cuûa Server. Loadable Module: Laø nhöõng Module phaàn meàm ñöôïc load treân Server nhaèm laøm taêng theâm chöùc naêng cho heä ñieàu haønh. Server Operating System: Heä ñieàu haønh Server quaûn lyù caùc taøi nguyeân cuûa Server. Noù töông taùc vôùi heä ñieàu haønh maïng vaø phaàn meàm xöû lyù döõ lieäu ñeå nhaän vaø traû lôøi caùc yeâu caàu töø ngöôøi duøng. DataBase Gateway: Hoaït ñoäng nhö boä chuyeån ñoåi döõ lieäu, nhöõng caâu leänh SQL, vaø caùc öùng duïng töø moät kieåu CSDL thaønh kieåu khaùc. DataBase Management Application Heä ñieàu haønh cho Server: Caùc heä ñieàu haønh thoâng duïng Windows NT, Unix, OS/2 Heä quaûn trò cô sôû döõ lieäu treân Server: Caùc phaàn meàm quaûn trò CSDL treân Server hieän nay: Oracle Microsoft SQL Server Sysbase SQL Server SQLBASE NETWARE SQL IV . Client: Khaùi nieäm phaàn cöùng: Laø moät maùy desktop thöïc thi phaàn meàm Client ( Client Software) Desktop laø thuaät ngöõ duøng ñeå chæ toaøn boä maøng hình giao dieän ngöôøi söû duïng – maùy tính: goàm caùc cöûa soå, bieåu töôïng, vaø caùc hoäp thoaïi… Treân Client coù theå chaïy caùc phaàn meàm giao tieáp, heä ñieàu haønh, phaàn meàm truyeàn thoâng. Khaùi nieäm xöû lyù: Trong moâi tröôøng Client/ Server, coâng vieäc chính cuûa Client laø thöïc hieän chöùc naêng trình baøy, xöû lyù caùc töông taùc giöõa ngöôøi öùng duïng vaø söû duïng. Maùy Client göûi tôùi maùy chuû caùc yeâu caàu truy vaán döõ lieäu hoaëc caäp nhaät döõ lieäu ( Theâm, xoaù, söûa caùc maãu tin) ñoàng thôøi nhaän ñöôïc caùc keát quaû traû veà töø maùy Server. Nhö theá naøo laø Client toát? Moät client toát phaûi ñaùp öùng ñöôïc nhu caàu sau: * Giao dieän ñaùp öùng ñöôïc caùc taùc vuï caàn thieát vaø thaân thieän vôùi ngöôøi söû duïng * Khoâng trình baøy nhöõng thoâng tin khoâng caàn thieát ñoái vôùi coâng vieäc cuûa maùy traïm laøm vieäc. Phaàn cöùng Client: Laø moät maùy tính coù caáu hình tuyø thuoäc vaøo vieäc ta söû duïng moâi tröôøng phaàn meàm naøo ñeå xaây döïng caùc öùng duïng vaø yeâu caàu veà caáu hình cuûa heä ñieàu haønh muoán duøng treân Client. Phaàn meàm Client: Heä ñieàu haønh: Microsoft Windows ( Windows 3.x, Windows 95, Windows NT Workstation) DOS, OS/2, UNIX Client Phaàn meàm: Moät maùy Client coù theå chaïy 4 loaïi phaàn meàm: Moâi tröôøng giao tieáp, logic öùng duïng heä ñieàu haønh Client vaø heä ñieàu haønh maïng. Tuyø theo yeâu caàu cuûa öùng duïng maø ta löïa choïn phaàn meàm thích hôïp. Moâi tröôøng giao tieáp: Giuùp cho ngöôøi duøng khoâng caàn bieát döõ lieäu naèm ôû ñaâu maø vaãn truy caäp ñöôïc. Ñaùp öùng vieäc göûi nhöõng yeâu caàu vaø nhaän keát quaû töø Server Ñònh daïng keát quaû ñuùng yeâu caàu Giuùp truy vaán nhanh döõ lieäu V. Lôïi ích cuûa moâ hình Client/ Server: Tieát kieäm ( Dollars Saving): Chi phí veà phaàn cöùng: Maùy Server vaø Client ñeàu coù theå laø nhöõng maùy tính khoâng ñaét tieàn laém khoâng caàn phaûi söû duïng nhöõng maùy ñieän toaùn mainframe ñaét tieàn. Chi phí phaàn meàm: Nhöõng öùng duïng treân caáu truùc Client/ Server coù theå phaùt trieån vôùi thôøi gian ít hôn so vôùi vieäc phaùt trieån treân moâi tröôøng mainframe vaø phaàn meàm treân maùy vi tính thì reû hôn nhieàu. Taêng naêng suaát saûn phaåm (Increased Productive): Thoâng qua giao dieän ngöôøi söû duïng coù theå deã daøng truy caäp döõ lieäu maø khoâng caàn phaûi bieát caùch thöùc luö tröõ cuûa nhöõng döõ lieäu maø mình truy caäp. Hieän nay coù nhieàu coâng cuï maïnh giuùp deã daøng thieát keá caøi ñaët moät öùng duïng treân caáu truùc Client/ Server. Uyeån chuyeån vaø roäng raõi (Flexibility and Scalbility): Baèng caùch phaân chia öùng duïng thaønh nhöõng nhieäm vuï neân coù theå deã daøng hoaø hôïp vôùi nhöõng kyõ thuaät môùi ñoàng thôøi vaãn baûo ñaûm töông thích vôùi nhöõng kyõ thuaät cuû maø ít gaëp khoù khaên. Vieäc xaây döïng theo module khieán cho coâng vieäc söûa chöõa boå sung ñöôïc deã daøng. Taän duïng taøi nguyeân (Resource Utilization): Cho pheùp lieân keát vôùi nhöõng öùng duïng vaø phaàn cöùng hieän coù moät caùch hieäu quaû maø khoâng caàn phaûi thay ñoåi. Ñieàu khieån taäp trung (Centralize Control): heä thoáng môû (Opening system): Caáu truùc Client/ Server keát hôïp vôùi kyõ thuaät Rightsizing laøm taêng kích thöôùc uyeån chuyeån vaø môû roäng. Kyõ thuaät Rightsizing bao goàm: * Downsizing: Chuyeån töø moâi tröôøng lôùn sang moâi tröôøng nhoû hôn * Upsizing: Chuyeån töø moâi tröôøng nhoû sang moâi tröôøng lôùn * Smartsizing: Tính toaùn phaân chia vaø ñaït caùc nhieäm vuï laïi cho thích hôïp vôùi moâi tröôøng môùi. VI. Caùc chuù yù khi xaây döïng öùng duïng Client/ Server: Khi thöïc hieän caùc tính toaùn Client/ Server caàn quan taâm ñeán caùc vaán ñeà sau: * Khaû naêng hoaït ñoäng cuûa heä thoáng maïng: Toác ñoä truyeàn, ñoä tin caäy ñöôøng truyeàn, khaû naêng hoaït ñoäng cuûa maùy Server, khaû naêng hoaït ñoäng cuûa maùy Client. * Giaûm thieåu döõ lieäu truyeàn: Phaân phoái hôïp lyù caùc xöû lyù ( tuyø tröôøng hôïp cuï theå maø ta coù theå ñaët caùc xöû lyù ôû Server hoaëc Client, tuy nhieân öu tieân vieäc taän duïng ñaït caùc xöû lyù ôû Server ñeå giaûm döõ lieäu truyeàn taûi treân ñöôøng truyeàn) * Tính toaùn sao cho hôïp lyù thôøi gian giöõ keát noái cuûa maùy Client vôùi Server. * Taän duïng sao cheùp ñoái vôùi tröôøng hôïp heä thoáng maïng dieän roäng (WAN). * Xaây döïng hôïp lyù caùc chæ muïc (index) treân cô sôû döõ lieäu * Taän duïng caùc thuû tuïc coù saün. * Toái öu hoaù heä thoáng phuïc vuï SQL Server: Dung löôïng boä nhôù xem xeùt tröôøng hôïp phaân taùn sao cho hôïp lyù. * Chaïy thöû treân öùng duïng treân maùy Server, vaø chaïy thöû treân maùy Client, sau ñoù so saùnh vaø hieäu chænh maïng neáu caàn thieát. CHÖÔNG 3 CAÁU HÌNH CÔ SÔÛ DÖÕ LIEÄU CLIENT/ SERVER Nhìn chung moïi öùng duïng cô sôû döõ lieäu bao goàm caùc phaàn: Thaønh phaàn xöû lyù öùng duïng (Application processing components) Thaønh phaàn phaàn meàm cô sôû döõ lieäu (Database software components) Baûn thaân cô sôû döõ lieäu (The database itself) Caùc moâ hình veà xöû lyù cô sôû döõ lieäu khaùc nhau laø bôûi caùc tröôøng hôïp cuûa 3 loaïi thaønh phaàn noùi treân ñònh vò ôû ñaâu. Ñaây laø 5 moâ hình kieán truùc döïa treân caáu hình phaân taùn veà truy caäp döõ lieäu cuûa heä thoáng maùy tính Client/ Server. Moâ hình cô sôû döõ lieäu taäp trung (Centralize database model) Moâ hình cô sôû döõ lieäu theo kieåu file-server (File-server database model) Moâ hình xöû lyù töøng phaàn cô sôû döõ lieäu (Database extract processing model) Moâ hình cô sôû döõ lieäu Client/ Server (Client/ Server database model) Moâ hình cô sôû döõ lieäu phaân taùn (Distributed database model) I . Moâ hình cô sôû döõ lieäu taäp trung (Centralized database model): Trong moâ hình naøy, caùc thaønh phaàn xöû lyù öùng duïng , phaàn meàm cô sôû döõ lieäu vaø baûn thaân cô sôû döõ lieäu ñeàu ôû treân moät boä xöû lyù. Ví duï ngöôøi duøng maùy tính caù nhaân coù theå chaïy chöông trình öùng duïng coù söû duïng phaàn meàm cô sôû döõ lieäu Oracle ñeå truy caäp ñeán cô sôû döõ lieäu naèm treân ñóa cöùng cuûa maùy tính caù nhaân ñoù. Töø khi caøc thaønh phaàn öùng duïng, phaàn meàm cô sôû döõ lieäu vaø baûn thaân cô sôû döõ lieäu cuøng naèm treân moät maùy tính thì öùng duïng ñaõ thích hôïp vôùi moâ hình taäp trung. Server Öùng duïng Phaàn meàm CSDL CSDL Haàu heát coâng vieäc xöû lyù luoàng thoâng tin chính ñöôïc thöïc hieän bôûi nhieàu toå chöùc maø vaãn phuø hôïp vôùi moâ hình taäp trung. Ví duï moät boä xöû lyù main fram chaïy phaàn meàm cô sôû döõ lieäu IMS hoaëc DB2 cuûa IBM coù theå cung caáp cho caùc traïm laøm vieäc ôû caùc vò trí phaân taùn söï truy nhaäp nhanh choùng tôùi cô sôû döõ lieäu trung taâm. Tuy nhieân trong raát nhieàu heä thoáng nhö vaäy, caû 3 thaønh phaàn cuûa öùng duïng cô sôû döõ lieäu ñeàu thöïc hieän treân cuøng moät maùy mainframe. Do ñoù, caáu hình naøy cuõng thích hôïp vôùi moâ hình taäp trung. II. Moâ hình cô sôû döõ lieäu theo kieåu file-server (File – server database model): Trong moâ hình cô sôû döõ lieäu theo kieåu file-server caùc thaønh phaàn öùng duïng vaø phaàn meàm cô sôû döõ lieäu ôû treân moät heä thoáng maùy tính vaø caùc file vaät lyù taïo neân cô sôû döõ lieäu naèm treân moät heä thoáng maùy tính khaùc. Moät caáu hình nhö vaäy thöôøng ñöôïc duøng trong moâi tröôøng cuïc boä, trong ñoù coù moät hoaëc nhieàu heä thoáng maùy tính ñoùng vai troø cuûa server, luö tröõ caùc file döõ lieäu cho heä thoáng maùy tính khaùc thaâm nhaäp tôùi. Trong moâi tröôøng file-server, phaàn meàm maïng ñöôïc thi haønh vaø laøm cho caùc phaàn meàm öùng duïng cuõng nhö phaàn meàm cô sôû döõ lieäu chaïy treân heä thoáng cuûa ngöôøi duøng cuoái coi caùc file hoaëc cô sôû döõ lieäu treân file server thöïc söï nhö laø treân maùy tính cuûa ngöôøi chính hoï. Server Öùng duïng Phaàn meàm CSDL CSDL Maïng Moâ hình CSDL File-Server Moâ hình file server raát gioáng vôùi moâ hình taäp trung. Caùc file cô sôû döõ lieäu naèm treân maùy khaùc vôùi caùc thaønh phaàn öùng duïng vaø phaàn meàm cô sôû döõ lieäu; tuy nhieân, caùc thaønh phaàn öùng duïng vaø phaàn meàm cô sôû döõ lieäu coù theå coù cuøng thieát keá ñeå vaän haønh moät moâi tröôøng taäp trung. Thöïc chaát phaàn meàm maïng ñaõ laøm cho phaàn meàm öùng duïng vaø phaàn meàm cô sôû döõ lieäu töôûng raèng chuùng ñang truy caäp cô sôû döõ lieäu trong moâi tröôøng cuïc boä. Moät moâi tröôøng nhö vaäy coù theå phöùc taïp hôn moâ hình taäp trung bôûi vì phaàn meàm maïng coù theå phaûi thöïc hieän cô cheá ñoàng thôøi cho pheùp nhieàu ngöôøi duøng cuoái coù theå truy nhaäp vaøo cuøng cô sôû döõ lieäu. III. Moâ hình xöû lyù töøng phaàn cô sôû döõ lieäu ( Database extract processing model): Moät moâ hình khaùc trong ñoù coù moät cô sôû döõ lieäu ôû xa coù theå ñöôïc truy nhaäp bôûi phaàn meàm cô sôû döõ lieäu, ñöôïc goïi laø xöû lyù döõ lieäu töøng phaàn. Vôùi moâ hình naøy, ngöôøi söû duïng coù theå taïi moät maùy tính caù nhaân keát noái vôùi heä thoáng maùy tính ôû xa nôi coù döõ lieäu monh muoán. Ngöôøi söû duïng sau ñoù coù theå taùc ñoäng tröïc tieáp ñeán phaàn meàm chaïy treân maùy ôû xa vaø taïo yeâu caàu ñeå laáy döõ lieäu töø cô sôû döõ lieäu ñoù. Ngöôøi söû duïng cuõng coù theå chuyeån döõ lieäu töø maùy tính ôû xa veà chính maùy tính cuûa mình vaø vaøo ñóa cöùng vaø coù theå thöïc hieän vieäc sao cheùp baèng phaàn meàm cô sôû döõ lieäu treân maùy tính caù nhaân. Server Phaàn meàm CSDL Öùng duïng CSDL Maïng Phaàn meàm CSDL Öùng duïng CSDL Moâ hình xöû lyù töøng phaàn CSDL Vôùi caùch tieáp nhaän naøy, ngöôøi söû duïng phaûi bieát chaéc chaén laø döõ lieäu naèm ôû ñaâu vaø laøm nhö theá naøo ñeå truy nhaäp vaø laáy döõ lieäu töø moät maùy tính ôû xa. Phaàn meàm öùng duïng ñi keøm caàn phaûi coù treân hai heä thoáng maùy tính ñeå kieåm soaùt söû truy caäp döõ lieäu vaø chuyeån döõ lieäu giöõa hai heä thoáng. Tuy nhieân, phaàn meàm cô sôû döõ lieäu chaïy treân hai maùy khoâng caàn bieát raèng vieäc xöû lyù cô sôû döõ lieäu töø xa ñang dieãn ra vì ngöoøi söû duïng taùc ñoäng tôùi chuùng moät caùch ñoäc laäp. IV. Moâ hình cô sôû döõ lieäu Client/ Server (Client/ Server database model): Trong moâ hình cô sôû döõ lieäu Client/ Server, cô sôû döõ lieäu naèm treân moät maùy khaùc vôùi caùc maùy coù thaønh phaàn xöû lyù öùng duïng. Nhöng phaàn meàm cô sôû döõ lieäu ñöôïc taùch ra giöõa heä thoáng Client chaïy caùc chöông trình öùng duïng vaø heä thoáng server löu tröõ cô sôû döõ lieäu. Trong moâ hình naøy, caùc thaønh phaàn xöû lyù öùng duïng treân heä thoáng Client ñöa ra yeâu caàu cho phaàn meàm cô sôû döõ lieäu treân maùy Client, phaàn meàm naøy seõ keát noái vôùi phaàn meàm cô sôû döõ lieäu chaïy treân server. Phaàn meàm cô sôû döõ lieäu treân server seõ truy caäp vaøo cô sôû döõ lieäu vaø göûi traû keát quaû cho maùy Client. Server Moâ hình CSDL Client/ Server Khaùch haøng CSDL Phaàn meàm CSDL Öùng duïng Phaàn meàm CSDL Maïng Thoaït nhìn, moâ hình cô sôû döõ lieäu Client/ Server coù veû gioáng nhö moâ hình file-server, tuy nhieân, moâ hình Client/ Server coù raát nhieàu thuaän lôïi hôn moâ hình file-server. Vôùi moâ hình file server, thoâng tin gaén vôùi söï truy nhaäp cô sôû döõ lieäu coù theå gaây ra taéc ngeõn löu löôïng truyeàn treân maïng. Giaû söû, moät ngöôøi duøng cuoái taïo ra moät vaán tin ñeå laáy döõ lieäu toång soá, yeâu caàu ñoøi hoûi laáy döõ lieäu töø 1000 baûn ghi, vôùi caùch tieáp caän file-server, noäi dung cuûa taát caû 1000 baûn tin phaûi ñöa leân maïng, vì phaàn meàm cô sôû döõ lieäu chaïy treân maùy cuûa ngöôøi söû duïng phaûi truy nhaäp töø baûn ghi ñeå thoaû maõn yeâu caàu cuûa ngöôøi söû duïng. Vôùi caùch tieáp caän cô sôû döõ lieäu Client/ Server, chæ coù lôøi vaán tin khôûi ñoäng ban ñaàu vaø keát quaû cuoái cuøng caàn ñöa leân maïng, phaàn meàm cô sôû döõ lieäu chaïy treân maùy löu giöõ cô sôû döõ lieäu seõ truy nhaäp caùc baûn ghi caàn thieát, xöû lyù chuùng vaø goïi caùc thuû tuïc caàn thieát ñeå ñöa ra keát quaû cuoái cuøng. Front-end software: Trong moâ hình cô sôû döõ lieäu Client/ Server, thöôøng noùi ñeán caùc phaàn meàm front-end software vaø back-end software ñöôïc chaïy treân moät maùy tính caù nhaân hoaëc moät workstation vaø ñaùp öùng caùc yeâu caàu ñôn leû rieâng bieät, phaàn meàm naøy ñoùng vai troø cuûa Client trong öùng duïng cô sôû döõ lieäu Client/ Server vaø thöïc hieän caùc chöùc naêng höôùng tôùi nhu caàu cuûa ngöôøi duøng cuoái cuøng, phaàn meàm Front-end software thöôøng ñöôïc chia thaønh caùc loaïi sau: End user database software: Phaàn meàm cô sôû döõ lieäu naøy coù theå ñöôïc thöïc hieän bôûi ngöôøi söû duïng cuoái treân chính heä thoáng cuûa hoï ñeå truy nhaäp caùc cô sôû döõ lieäu cuïc boä nhoû cuõng nhö keát noái vôùi caùc cô sôû döõ lieäu lôùn hôn treân cô sôû döõ lieäu Server. Simple query and reporting software: phaàn meàm naøy ñöôïc thieát keá cung caáp caùc coâng cuï deã söû duïng hôn trong vieäc laáy döõ lieäu töø cô sôû döõ lieäu vaø taïo caùc baùo caùo ñôn giaûn töø döõ lieäu ñaõ coù. Data analysissoftware: phaàn meàm naøy cung caáp caùc haøm veà tìm kieám, khoâi phuïc, chuùng coù theå cung caáp caùc phaân tích phöùc taïp cho ngöôøi duøng. Application development tools : Caùc coâng cuï naøy cung caáp caùc khaû naêng veà ngoân ngöõ maø caùc nhaân vieân heä thoáng thoâng tin chuyeân nghieäp söû duïng ñeå xaây döïng caùc öùng duïng cô sôû döõ lieäu cuûa hoï. Caùc coâng cuï ôû ñaây bao goàm caùc coâng cuï veà thoâng dòch, bieân dòch ñôn ñeán caùc coâng cuï CASE (Computr Aided Software Engineering), chuùng töï ñoäng taát caû caùc böôùc trong quaù trình phaùt trieån öùng duïng vaø sinh ra chöông trình cho caùc öùng duïng cô sôû döõ lieäu. Database Administration Tolls : Caùc coâng cuï naøy cho pheùp ngöôøi quaûn trò cô sôû döõ lieäu söû duïng maùy tính caù nhaân hoaëc traïm laøm vieäc ñeå thöïc hieän vieäc quaûn trò cô sôû döõ lieäu nhö ñònh nghóa caùc cô sôû döõ lieäu, thöïc hieän löu tröõ hay phuïc hoài. Back-end software: Phaàn meàm naøy bao goàm phaàn meàm cô sôû döõ lieäu Client/ Server vaø phaàn meàm maïng chaïy treân maùy ñoùng vai troø laø server cô sôû döõ lieäu. V . Distributed database model (Moâ hình cô sôû döõ lieäu phaân taùn): Caû hai moâ hình File-Server vaø Client/ Server ñeàu giaû ñònh laø döõ lieäu naèm treân moät boä xöû lyù khaùc, coøn moâ hình cô sôû döõ lieäu phaân taùn laïi giaû ñònh baûn thaân cô sôû döõ lieäu coù ôû treân nhieàu maùy khaùc nhau. Maïng Server CSDL Phaàn meàm CSDL CSDL Phaàn meàm CSDL Server Öùng duïng Phaàn meàm CSDL Moâ hình CSDL phaân taùn CHÖÔNG 4 TRUY CAÄP CÔ SÔÛ DÖÕ LIEÄU TÖØ XA CLIENT/ SERVER Client/ Server vaø caùc thaønh phaàn: Tröôùc nay, moâ hình ñoái töôïng cô sôû döõ lieäu (hay noùi khaùc hôn laø heä ñieàu haønh ) ñaõ che chaén phaàn laøm vieäc phöùc taïp khi truy caäp cô sôû döõ lieäu töø xa, ta khoâng nhaän thaáy söï khaùc bieät khi cô sôû döõ lieäu chöùa treân maïng hay treân maùy cuïc boä. Thuaät ngöõ thaønh phaàn trung gian (middle-tier) ñaõ laøm thay ñoåi töø khi kyõ thuaät Client/ Server ñöôïc giôùi thieäu laàn ñaàu tieân. Ví duï ta taïo ñieàu khieån Active x nhuùng trong moät öùng duïng Client ñeå noùi chuyeän vôùi moät thaønh phaàn Active X Server cuõng chöùa treân Client. Sau ñoù thaønh phaàn Active X Server seõ noùi chuyeän vôùi Active X Server chöùa treân maùy thuoäc taàng trung gian. Ñeán löôït taàng trung gian seû noùi chuyeän vôùi Server cô sôû döõ lieäu chöùa treân WinNT Server. Moät soá khaùi nieäm cô baûn: Active X: Laø moät khaùi nieäm gaén lieàn vôùi caùc ñoái töôïng trong chöông trình duøng giao tieáp vôùi nhau. Noù khoâng phaûi laø moät saûn phaåm, cuõng khoâng phaûi laø moät kyõ thuaät. Ñieàu khieån Active X : Laø moät thaønh phaàn thöôøng coù giao dieän (nhöng khoâng phaûi toaøn boä caùc thaønh phaàn ñeàu coù). Thaønh phaàn löôùi CSDL (DB Grid) ñöôïc cung caáp bôûi Visual Basic laø thaønh phaàn Active X. Aán baûn Profession vaø Enterprise coù voâ soá thaønh phaàn nhö theá. Active X Server: Coøn goïi laø thaønh phaàn maõ hoaù Active X. Active X Server laø moät thaønh phaàn ñöa ra moät hay nhieàu lôùp chöùa trong moät khoái ñaõ ñöôïc bieân dòch. Öùng duïng naøy seõ ñöôïc duøng caùc ñoái töôïng sinh ra töø caùc lôùp chöùa trong thaønh phaàn Active X. Ta coù the73 truy caäp khoái bieân dòch naøy thoâng qua kyõ thuaät COM (Component Object Model) Caáu truùc Client/ Server Three-Tier: Khaùi nieäm veà heä thoáng Three-Tier : Thaät ra khaùi nieäm cô baûn cuûa Three-tier Client Server cuõng xuaát hieän nhieàu ngoaøi ñôøi soáng xaõ hoäi coù theå hình dung noù nhö sau: Moät ngöôøi khaùch haøng, moät chöông trình, ñi vaøo quaùn bar. Anh ta ngoài xuoáng moät caùi baøn vaø chôø ñôïi ngöôøi phuïc vuï ñi tôùi. Ngöôøi phuïc vuï hoûi: “ Anh duøng gì?” Ngöôøi khaùch traû lôøi: “ Cho toâi moät ly röôïu loaïi maïnh” Ngöôøi phuïc vuï quay vaøo baøn vaø noùi vôùi Batender: “ Ngöôøi khaùch muoán moät ly Long Island iced tea” Ngöôøi Bartender pha thöùc uoáng theo yeâu caàu vaø chuyeån ly cho ngöôøi phuïc vuï , ngöôøi phuïc vuï mang noù ñeán baøn cuûa ngöôøi khaùch. Ngöôøi khaùch uoáng xong laïi goïi ngöôøi phuïc vuï tôùi vaø noùi “ Toâi muoán 55 ly nöõa” Khoâng do döï ngöôøi phuïc vuï noùi “ Oâng khoâng ñieân ñoù chöù? Hoï seõ baét toâi vì phaïm toäi, moät laàn chæ uoáng 1 ly. Ñoù laø luaät.” Ngöôøi khaùch nhaân nhöôïng vaø giaûm yeâu caàu cuûa mình xuoáng “ OK cho toâi theâm moät nöõa” Ngöôøi phuïc vuï trôû laïi quaày bar vaø yeâu caàu Bartender pha moät ly Long Island iced tea nöõa. Laàn naøy ngöôøi Bartender töø choái “ Chuùng ta ñaõ heát röôïu naøy roài” Ngöôøi phuïc vuï trôû laïi vôùi tay khoâng vaø giaûi thích khoâng theå phuïc vuï ñöôïc. Ngöôøi khaùch rôøi khoûi quaùn bar. Ôû ñaây coù moät soá ñieåm ñaùng löu yù: Ai laø Server ? Ngöôøi phuïc vuï laø server bôûi vì anh ta phuïc vuï khaùch haøng. Ngöôøi Bartender cuõng laø server vì anh ta phuïc vuï cho ngöôøi phuïc vuï. Ai laø Client ? Ngöôøi khaùch laø Client vì anh ta yeâu caàu moät ly röôïu. Ngöôøi phuïc vuï cuõng laø Client ñoái vôùi Bartender. Vaäy vöøa laø Client laãn Server. Laøm sao ñeå phaân bieät giöõa Client vaø Server ? Client thì ñöa ra caùc yeâu caàu coøn server thì thöïc hieän caùc yeâu caàu ñoù. Ôû ñaây coù bao nhieâu ngöôøi lieân quan ? ÔÛ ñaây coù khaùch haøng, ngöôøi phuïc vuï, bartender – 3 ngöôøi (ba caáp – three tier). Löu yù raèng chuùng ta khoâng theå ñeà caäp ñeán nhöõng khaùch haøng khaùc. Ñeå laø moät caáp, moät ngöôøi phaûi laø moät phaàn trong toaøn boä quaù trình töø luùc yeâu caàu ñöôïc ñöa ra cho ñeán khi noù ñöôïc hoaøn taát. Ngöôøi khaùch khoâng giaûi thích laøm theá naøo ñeå coù ly röôïu ñoù, ngöôøi phuïc vuï taïo ra moät yeâu caàu naøo ñoù ñeå bartender laøm theo. Ngöôøi phuïc vuï khoâng caàn hoûi bartender coù neân phuïc vuï cho khaùch 55 ly moät luùc khoâng? Anh ta ñaõ bieát tröôùc quy luaät, töông töï nhö vaäy neáu ngöôøi phuïc vuï yeâu caàu 10 ly thì bartender bieát raèng anh ta ñang coù 10 ngöôøi khaùch. Khoâng coù gì ngaên caûn vieäc mang cuøng moät luùc 55 ly ra cho khaùch haøng. Cuõng nhö khoâng coù gì ngaên caûn bartender cuøng moät luùc 55 ly röôïu. Giôùi haïn ôû ñaây ñöôïc aùp ñaët nhö moät quy luaät kinh doanh (bussiness rule) Cuõng coù theå ruùt ra moät soá ñieàu khaùc nöõa: Server khoâng phaûi laø noâ leä. Ngöôøi phuïc vuï coù theå noùi “ Khoâng, anh khoâng theå coù cuøng moät luùc 55 ly”. Töông töï nhö bartender cuûng coù theå noùi “ Khoâng, chuùng ta ñaõ heát phuï lieäu roái” Trong caùc tröôøng hôïp nhö vaäy, server ñöôïc xem laø Client. Khi ngöôøi khaùch coù yeâu caàu, ngöôøi phuïc vuï khoâng mang caû bar ra, cuõng khoâng cuøng moät luùc mang 5 chai ra ñeå phuïc vuï cho khaùch. Anh ta chæ mang moät ly trong ñoù chöùa ñuùng moät loaïi thöùc uoáng maø oâng khaùch yeâu caàu. Treân khay cuûa mình, anh ta coù theå coù nhieàu ly khaùc nhau nhöng khoâng aûnh höôûng gì ñeán yeâu caàu naøy. Neáu bartender ñang phuïc vuï cho ngöôøi khaùc, khi ngöôøi phuïc vuï tôùi cuõng khoâng sao. Moãi moät giao dòch thì ñoäc laäp, khoâng aûnh höôûng ñeán khaû naêg cuûa heä thoáng trong vieäc phuïc vuï caùc giao dòch khaùc. Xem xeùt nhöõng gaûi thieát sau ñaây: Neáu ngöôøi khaùch haøng ngoài ôû quaày bar thay vì ngoài ôû baøn thì chæ coù 2 ngöôøi lieân quan tôùi giao dòch – client vaø server. Trong tröôøng hôïp naøy maø bartender phaûi bieát raèng anh ta khoâng neân phuïc vuï 55 ly moät luùc cho khaùch, ñaây laø moâ hình Two-tier Client Server. Giaû söû coù 75 ngöôøi khaùch ñang ngoài taïi quaùn bar. Quaù ñoâng ñeå bartender coù theå phuïc vuï ñöôïc. Vaäy neân chaêng coù moät haïn cheá naøo ñoù veà soá löôïng khaùch coù theå phuïc vuï tröïc tieáp töø bar ? Naáu nhaûy vaøo bar vaø töï pha cheá thöùc uoáng cho mình ñoù laø moâ hình heä thoáng One-tier. Khoâng coù gì ñaûm baûo seõ khoâng pha moät ly “ teä” khoâng theå chòu ñöôïc vaø anh ta seõ laøm röôïu ñoå traøn lan ra ngoaøi. So saùnh ba heä thoáng One-Tier, Two-Tier, Three-Tier: One-Tier : Moät chöông trình laøm taát caû moïi vieäc: Heä thoáng One-Tier duøng moät chöông trình laøm heát taát caû moïi vieäc. Hình beân döôùi minh hoaï öùng duïng chaïy treân mainframe. Noù chòu traùch nhieäm veà moïi maët cuûa heä thoáng: giao dieän ngöôøi duøng, chuaàn hoaù ñaàu vaøo, thi haønh luaät kinh doanh, xöû lyù yeâu caàu xuaát nhaäp caùc file döõ lieäu. Chöông trình öùng duïng Giao dieän chuaån hoaù Thi haønh luaät kinh doanh Xöû lyù yeâu caàu Mainframe Database Maïng SNA Ngöôøi duøng treân moät Terminal Ngöôøi duøng treân moät Terminal Ngöôøi duøng treân moät Terminal Ngöôøi duøng treân moät Terminal Ngöôøi duøng treân moät Terminal Heä thoáng One-tier MainFrame Khaùch quan veà heä thoáng One-tier laø heä thoáng file Server töïa PC. Ñaây laø heä thoáng thöôøng gaëp ôû caùc coâng ty nhoû coù ít hôn 10 traïm laøm vieäc treân moät heä thoáng LAN chia seõ caùc database Access hay Foxpro. Caùc thuaät ngöõ one-tier vaø Client Server thì loaïi tröø laãn nhau. Theo ñònh nghóa heä thoáng Client/ Server phaûi coù ít nhaát 2 maùy, moät maùy ñoùng vai troø Client , mayù coøn laïi ñoùng vai troø Server. Nhö vaäy, moâ hình one-tier seõ laøm vieäc raát naëng. Moâ hình Two-Tier : laøm vieäc thoâng minh hôn, bôùt cöïc hôn Heä thoáng Two-Tier döôùi ñaây thaät söï laø moät böôùc tieán tôùi ña xöû lyù. Ñaây laø moâ hình Client/ Server phoå bieán nhaát ngaøy nay, treân lyù thuyeát thì database treân Server khoâng caàn phaûi laø database quan heä. Database treân ñóa Database server DBMS Quan heä Thi haønh luaät kinh doanh Xöû lyù yeâu caàu Maïng Enterprice LAN hay WAN Traïm laøm vieäc Front-End Giao dieän ngöôøi duøng Kieåu döõ lieäu chuaån hoaù Luaät kinh doanh chuaån Traïm laøm vieäc Front-End Giao dieän ngöôøi duøng Kieåu döõ lieäu chuaån hoaù Luaät kinh doanh chuaån Ngöôøi duøng ôû traïm laøm vieäc Ngöôøi duøng ôû traïm laøm vieäc Heä thoáng Two Tier Client/ Server Trong heä thoáng naøy nhieäm vuï cuûa chöông trình öùng duïng ñöôïc phaân chia laøm 2 phaàn. Client öùng duïng front-end, thu nhaäp caùc input cuûa ngöôøi duøng, chuaån hoaù caùc kieåu döõ lieäu (nhö ngaøy thaùng hay soá ñieän thoaïi) vaø chuaån hoaù caùc luaät kinh doanh ñôn giaûn (nhö laø ñôn ñaët haøng naøy coù theå nhaèm vaøo nhöõng loaïi haøng naøo maø coâng ty khoâng coù). Coøn phía Server thì coù traùch nhieäm thi haønh thaät söï caùc luaät kinh doanh. Coù nghóa laø noù hoaït ñoäng thaät söï nhö ngöôøi gaùc coång loaïi boû taát caû nhöõng yeâu caàu coù theå gaây ra nhöõng döõ lieäu sai coù theå löu vaøo database. Moâ hình naøy chieám taûi maïng nheï hôn moâ hình One-Tier. Client khoâng caàn Server chuyeån cho mình moät khoái löôïng lôùn hôn caùc file döõ lieäu qua maïng. Ví duï Client chæ caàn chuyeån qua maïng bôûi chuoåi text theo tieu chuaån ASCII moâ taû nhöõng gì noù caàn xem (query) vaø nhöõng gì phaûi thay ñoåi trong döõ lieäu (transaction). Trong thöïc teá taát caû nhöõng yeâu caàu ñöôïc vieát baèng moät ngoân ngöõ goïi laø Structure Query Language (SQL). Chuoãi kyù töï ñoù seõ ñöôïc dieãn dòch taïi Server bôûi moät heä thoáng CSDL quan heä nhö laø : Oracle, Sysbase, Informix hay Microsoft SQL Server. Trong hình veõ treân, luaät kinh doanh xuaát hieän ôû caû hai nôi Client vaø Server. Nhöõng chuaån hoaù ñôn giaûn seõ ñöôïc thöïc hieän ôû Client coøn server thì thi haønh chuùng thöïc söï,. Söï baát lôïi ôû ñaây laø khi ta thay ñoåi luaät thì phaûi laøm ôû caû hai nôi. Coù nhieàu nguyeân nhaân ñeå ñaët luaät kinh doanh ôû hai nôi nhö treân. Thöù nhaát server coù theå ôû raát xa trong LAN, ñieàu naøy baét buoäc server phaûi chuaån hoaù taát caû caùc luaät ñeå ñaûm baûo thoáng nhaát döõ lieäu seõ laøm chaäm öùng duïng ñi raát nhieàu. Thöù hai, giao dieän vôùi ngöôøi duøng ñöôïc thieát keá ñeå laáy ñöôïc nhöõng thuaän lôïi cuûa kinh doanh. Ví duï caùc yeâu caàu coù theå ñöôïc thöïc hieän baèng caùc listbox keùo xuoáng thay vì ngöôøi duøng phaûi vaät vaõ vôùi caùc doøng SQL. Bôûi vì trong moâ hình döõ lieäu ñöôïc ruùt ra töø nhu caàu cuûa luaät kinh doanh. Three-Tier : Con ñöôøng daãn tôùi xöû lyù phaân boá : Moät heä thoáng Three-Tier, hay ñoâi khi laø n-tier, laø moät moâ hình ñöôïc bieán ñoåi töø caùc moâ hình tröùôc ñoù. Caùc front-end seõ nhoû goïn hôn. noù seõ chæ chöùa code ñeå thu thaäp döõ lieäu moät caùch saïch seõ vaø hieäu quaû. Luaät kinh doanh seõ ñöôïc dôøi caøng nhieàu caøng toát sang “taàng giöõa” goïi laø taàng dòch vuï hay laø middleware. Taàng coù nhieäm vuï taïo ra caùc giao dòch seõ chuyeån cho caùc Server döõ lieäu. Heä thoáng Tree-Tier coù theå ñöôïc goïi laø n-tier bôûi vì taàng giöõa coù theå phöùc taïp vôùi nhieàu thaønh phaàn töông taùc nhau. Neáu chuùng ta coi moãi thaønh phaàn laø moät taàng thì chuùng ta coù theå leân raát nhieàu taàng. Vì theá moät soá ngöôøi ñaõ goïi moâ hình naøy laø n-tier. Moâ hình two-tier döïa treân caùc caâu leänh SQL ñeå giao tieáp giöõa caùc taàng. Nhöng thaät khoâng may, SQL laø moät ngoân ngöõ thoâng dòch cho neân chuùng ñöôïc kieåm tra cuù phaùp vaø chuaån hoaù tröôùc khi thi haønh. Maëc duø chuùng coù moät öu ñieåm to lôùn laø vieäc göûi caùc yeâu caàu töø moâi tröôøng naøy sang moâi tröôøng khaùc – nhö laø töø moät PC sang heä thoáng UNIX– nhöng noù coù moät soá nhöôïc ñieåm laøm chaäm chöông trình. Cô sôû döõ lieäu treân ñóa Datavase RDBMS Server Xöû lyù yeâu caàu Xuaát nhaäp file döõ lieäu Datavase RDBMS Server Xöû lyù yeâu caàu Xuaát nhaäp file döõ lieäu Server öùng duïng Taàng giöõa (middleware) Thi haønh luaät kinh doanh Maïng LAN hay MAN Traïm laøm vieäc Front-end Giao dieän Traïm laøm vieäc Front-end Giao dieän Ngöôøi duøng ôû traïm laøm vieäc Ngöôøi duøng ôû traïm laøm vieäc Heä thoáng Three-tier Client/ Server Replication Trong nhöõng heä thoáng Three-Tier môùi ñaây, ngöôøi ta vaãn duøng caùc chuoãi text ñeå giao tieáp qua maïng. Ñieàu naøy coù nghóa laø taàng giöõa vaãn chaäm (bôûi vì chuùng phaûi dieãn dòch caùc chuoãi) vaø thuï ñoäng (vì chuùng xöû lyù caùc chuoåi nhö laø nhöõng thöïc teá ñoùng kín di chuyeån töø nôi naøy sang nôi khaùc- gioáng nhö böu ñieän xöû lyù moät laù thö). Vôùi söï phaùt trieån nhanh choùng cuûa Microsoft nhu laø moät caáu hình chuaån cho PC, coäng vôùi söï xuaát hieän cuûa Network OLE thì ñaõ coù moät giao thöùc ñöôïc ñònh nghóa cho söï giao tieáp giöõa caùc öùng duïng thay cho vieäc göûi caùc chuoåi text nhö tröôùc. Ñoù laø remote OLE moät caùnh cöûa môû roäng cho duø hieän thôøi noù chaïy vaãn coøn khaù chaäm nhöng trong töông lai gaàn, hu voïng chuùng ta seõ ñöôïc chöùng kieán nhöõng tieán boä ñaày kòch tính cuûa noù. Moät öu ñieåm to lôùn cuûa moâ hình Three-Tier laø chuùng ta khoâng caàn duøng SQL ñeå maõ hoaù caùc luaät kinh doanh. Trong moâ hình Two-tier caùc luaät kinh doanh naèm ôû caùc server chæ noùi coù moät ngoân ngöõ ñoù laø SQL. Bôûi vì SQL döïa treân neàn cuûa lyù thuyeát taäp hôïp cho neân noù chæ lyù töôûng cho vieäc choïn löïa döõ lieäu töø moät khoái lôùn nhöng duøng noù raát baát tieän cho vieäc moâ taû nhöõng luaät kinh doanh. Caùc luaät kinh doanh döôøng nhö deã moâ taû hôn khi duøng ngoân ngöõ laäp trình nhö VB hay C++ Caùc moâ hình dòch vuï : moïi thöù ñeàu coù vieäc laøm : Ñi töø moâ hình Two-tier sanng moâ hình Three-tier thì döôøng nhö khoâng phaûi laø moät böôùc tieán lôùn chæ caàn theân moät khoái trong moâ hình goïi laø Taàng giöõa. Nhöng thöïc teá trong moâ hình Three-tier khaùi nieäm moãi taàng ñöôïc ñaïi dieän bôûi moät chöông trình bò maát heát yù nghóa. Ñoät nhieân khaùi nieäm xöû lyù phaân boá trôû neân hieän thöïc hôn bao giôø heát. Trong heä thoáng Two-tier Client Server döôøng nhö phaûi ñöôïc phaùt trieån ñoàng thôøi; caùi naøy ñöïôc thieát keá ñeå giao tieáp vôùi caùi kia vaø ngöôïc laïi. Trong nhieàu heä thoáng Two-tier moãi truy xuaát töø moät back-end khoâng thieát keá cho noù ñeàu ñeå laïi caùc loå thuûng veà an ninh. Trong heä thoáng Three-tier, taàng giöõa laø moät taäp hôïp caùc chöông trình cung caáp caùc dòch vuï cho caùc front-end. Vì vaäy, khi noù ñöôïc thieát keá toát thì heä thoáng vöøa deã phaùt trieån vöøa deã baûo ñaûm an ninh. Private Network SQL Server DBMS VB App Löôïc ñoà Client/ Server LAN Protocols LAN Protocols Requests Data Windows 32-bit Client Database Server Ta coù theå chia thaønh phaàn trung gian qua nhieàu maùy. Vì vaäy, caáu truùc 3 taàng khi ñoù trôû thaønh caáu truùc n taàng. Maùy Client Maùy tính trung gian Thaønh phaàn Active X Truy vaán CSDL Cung caáp caùc ñoái töôïng cho Client Caáu truùc Client/ Server n taàng trung gian theå hieän treân moät maùy Maùy Server CSDL III . Trieàn khai Active X DLL töø xa duøng MTS ( Microsoft Transaction Server): Trieån khai 1 thaønh phaàn Active X duøng MTS laø caùch deã nhaát ñeå taïo 1 öùng duïng phaân taùn. MTS chaïy treân WinNT, Win95 vaø Win98 nhöng hieäu quaû nhaát laø laø chaïy treân WinNT. MTS coù trong boä VinNt 5.0 nhöng vôùi Nt4.0 ta phaûi caøi ñaët phieân baûn cuûa MTS duøng Windows Option Pack keøm theo ñóa CD cuûa Visual Basic. Option Pack ñöôïc aùp duïng cho Win95, Win98 khi caøi NT Option Pack treân maùy khoâng phaûi NT ta coù Personal Web Server ñoái vôùi Win95 vaø moät phieân baûn haïn cheá cuûa MTS. Caùch naøy thuaän tieän ví ta coù theå duøng maùy Win95, Win98 ñeå paùht trieån chöông trình thöû nghieäm vaø kieåm nghieäm sau ñoù duøng Nt Server ñeå trieån khai neáu caàn. Trieån khai thaønh phaàn töø xa MTS2.0 coù 3 böôùc : Taïo goùi MTS ñeå chöùa thaønh phaàn: goùi MTS laø nôi chöùa logic cho 1 hay nhieàu modul lôùp chöùa trong Active X DLL vaø goùi taïo saün. Ñaët thaønh phaàn vaøo goùi: chæ caàn ta keùo leâ Active X DLL vaøo goùi taïo saün. Export goùi ra töø MTS vaø caøi ñaët vaøo maùy Client nhaèm cho pheùp öùng duïng Client truy caäp thaønh phaàn chaïy döôùi MTS ta phaûi ñaêng kyù vaøo Register cuûa maùy Client ñeå baùo raèng thaønh phaàn ñang chaïy töø xa. CHÖÔNG 5 THIEÁT KEÁ VAØ QUAÛN LYÙ THAØNH PHAÀN COM I . Giôùi thieäu: Nhieàu öùng duïng lôùn ban ñaàu ñöôïc xaây döïng baèng caùch gôûi haøng ngaøn caùc field nguoàn ñeå trình bieân dòch taïo ra moät field coù theå thöïc thi rieâng leõ. Ñieàu naøy ñaõ ñöôïc ñau ra nhieàu vaán ñeà: Yeâu caàu moät thôøi gian thieát keá laâu daøi. Raát khoù ñeå quaûn lyù caùc döõ lieäu lôùn. Neáu coù söï thay ñoåi rieâng leõ naøo thì yeâu caàu phaûi xaây döïng laïi toaøn boä öùng duïng. Caùc vaán ñeà treân ñöôïc giaûi quyeát vôùi kyõ thuaät thaønh phaàn (component technology). Ngaøy nay, caùc öùng duïng ñöôïc xaây döïng söû duïng moät soá caùc moduls/ component nhoû. Caùc component naøy ñöôïc tích hôïp ñeå thöïc hieän caùc taùc vuï leänh. Ví duï nhö moät component phaûi ñöoät yeâu caàu töø phía client ñeå tìm kieám CSDL treân server veà moät maãu tin ñaëc bieät, sau ñoù noù seõ traû keát quaû veà cho Client. Söï giaûi quyeát vaán ñeà naøy ñöôïc goïi laø component_base. Haõng Microsoft ñaõ ñöa ra kyõ thuaät component (component technology) vôùi teân goïi laø COM (Component Object Model) Private Network SQL Server DBMS VB App Löôïc ñoà Client/ Server LAN Protocols LAN Protocols Requests Data Windows 32-bit Client Database Server II. COM laø gì ? COM laø moät chuaån ñeå ñònh nghóa caùch töông taùc giöõa caùc ñoái töôïng khaùc nhau. Noù ñöôïc xem nhö laømoät caùch vieát code coù theå söû duïng laïi ñöôïc trong nhöõng heä thoáng component_base. Nhöõng thuaän lôïi trong söû duïng COM nhö sau: * Moâ hình COM döïa treân vieäc söû duïng caùc soá nhò phaân, noù cho pheùp caùc nhaø laäp trình göûi nhöõng component cuûa hoï nhö laø caùc file nhò phaân maø khoâng theå hieän quyeàn öu tieân. * Caùc component keát noái vôùi COM coù theå söû duïng laïi maø khoâng coù söï phuï thuoäc naøo treân source code. Ngöôøi laäp trình coù theå vieát COM vôùi caùc ngoân ngöõ nhö C++, Visual C++, Visual Basic hoaëc Java. Ngöôøi laäp trình coù theå thay ñoåi yeâu caàu ñeán component, caùc component coù theå bieân dòch vaø thay ñoåi maø khoâng laøm aûnh höôûng ñeán öùng duïng cuûa phía Client Moâ hình COM ñöôïc döïa treân laäp trình höôùng ñoái töôïng moâi tröôøng phaùt trieån maø phía Client giao tieáp vôùi caùc ñoái töôïng. Söï giao tieáp ñoái töôïng phía Client trong COM: Thaønh phaàn COM thöïc hieän caùc luaät kinh doanh trong moâ hình Three-tier vaø ñöôïc goïi laø phía server, coøn nhöõng öùng duïng goïi thaønh phaàn COM thì ñöôïc goïi laø phía server, coøn nhöõng öùng duïng goïi laø thaønh phaàn COM thì ñöôïc goïi töø phía Client. COM hoå trôï caùc ñaëc ñieåm höôùng ñoái töôïng. Noù döïa treân caùc lôùp, caùc ñoái töôïng vaø caùc Client. Caùc component ñöôïc xaây döïng baèng caùch söï duïng caùc lôùp. Lôùp ñoùng vai troø nhö laø maãu cho caùc ñoái töôïng. Thaønh phaàn chöùa ñöïng code maø ñöôïc ñònh nghóa vôùi nhöõng thuoäc tính vaø phöông thöùc cuûa lôùp vaø ñöôïc löu tröõ trong file nhò phaân. Client goïi dòch vuï thaønh phaàn COM baèng caùch taïo ra nhöõng ñoái töôïng. ClientApp.exe Your Application Client Object COM.dll Component Hình beân treân minh hoaï Client taïo ra moät ñoái töôïng cuûa thaønh phaàn DLL. Vì vaäy, ñoái töôïng thöïc thi trong quaù trình töông töï cuûa Client vaø ñöôïc goïi laø thaønh phaàn xöû lyù beân trong (In process component) Tuy nhieân neáu thaønh phaàn ñöôïc thöïc thi nhö thaønh phaàn EXE thì ñoái töôïng thöïc thi trong moät quaù trình rieâng bieät cuûa Client vaø ñöôïc goïi laø thaønh phaàn xöû lyù beân ngoaøi (Out process component) Taïo thaønh phaàn COM trong Visual Basic: Visual Basic cung caáp caùc maãu taïo ñoái töôïng COM nhö sau: Active X EXE Active X DLL Active X Control Active X Document EXE Active X Document DLL Ñeå choïn document naøo söû duïng thích hôïp nhaát thì ta caàn löu yù ñeán caùc vaán ñeà sau: Neáu moät component ñöôïc yeâu caàu ñeå cung caáp moät giao dieän cho ngöôøi söû duïng maø coù theå ñöôïc ñaët trong moät öùng duïng hoaëc trong moät trang web thì söû duïng Active X control laø toát nhaát. Neáu thaønh phaàn ñöôïc yeâu caàu maø khoâng caàn baát kyø söï töông taùc naøo vôù moät phaàn töû aûo ttì söû duïng Active X EXE hoaëc Active X DLL. Neáu moät thaønh phaàn ñöôïc yeâu caàu caàn ñeå söû duïng trong Internet Explore maø chæ caàn ñeå cung caáp caùc yueá toá giao dieän ngöôøi söû duïng gioáng nhö Active X control thì söû duïng Active X document ( Active X Document EXE/ DLL) V. Bieân dòch vaø ñaêng kyù moät component: Neáu component ñaõ ñöôïc ñaêng kyù thì Client coù theå söû duïng ñöôïc component naøy trong khi bieân dòch Project, Visual Basic töï ñoäng ñaêng kyù component trong Windows registry. Moät thaønh phaàn Active X (Active X Component ) ñöôïc bieân dòch gioáng nhö caùch bieân dòch moät project baèng caùch choïn Make Option töø Menu File. Caùch ñaêng kyù moät component : Cuù phaùp: RegSVR32 [u] Component_path. CHÖÔNG 6 ÑOÁI TÖÔÏNG DÖÕ LIEÄU ACTIVE X I . Xaây döïng öùng duïng Visual Basic vôùi ADO: . Tìm hieåu veà caáu truùc OLE DB / ADO: ADO thöïc chaát laø moät OLE DB consumer lo cung caáp caùc döõ lieäu nguoàn OLE DB theo caáp öùng duïng. ADO laø moät OLE Automation Server maø caùc moâi tröôøng trieån khai coù theå truy xuaát. ADO cuõng ñöïôc phaân phoái nhö laø moät thaønh phaàn chuaån cuûa moät soá saûn phaåm Microsoft khaùc nhau, bao goàm: Visual Studio Enterprise Edition 1 vaø 6 Visual Studio Enterprise Edition 4, 5 vaø 6 Visual InterDev 6 SQL Server 7.0 Nhö baïn coù theå thaáy hình sau ñaây, OLE DB cung caáp hai phöông phaùp khaùc nhau ñeå truy xuaát döõ lieäu SQL Server – OLE DB Provider daønh cho SQL Server vaø OLE DB Provider daønh cho ODBC. ADO coù khaû naêng hoaït ñoäng vôùi caû hai OLE DB Provider naøy. ADO taän duïng kieán truùc kieåu taàng lôùp ñeå caùch ly nhöõng öùng duïng duøng khung ñoái töôïng ADO khoûi caùc nghi thöùc vaø topo maïng naèm aån ñaèng sau. Hình sau ñaây minh hoaï nhöõng moái töông quan giöõa ADO, OLE DB, ODBC vaø hoå trôï maïng PC. VISUAL BASIC APPLICATION ACTIVE X DATA OBJECT (ADO) OLE DB PROVIDER FOR OLE DB (MSDASQL) OLE DB PROVIDER FOR SQL SERVER (SQLOLEDB) ODBC DRIVER NETWORK PROTOCOLS NetBEUI TCP/IP IPX Network Topology Ethernet Token Ring Caáu thaønh maïng maø ADO seõ duøng ñeán Treân hình veõ ta coù theå thaáy öùng duïng Visual Basic ADO, theo ñaáy öùng duïng Visual Basic taïo vaø söû duïng nhöõng ñoái töôïng ADO khaùc nhau. Khung ñoái töôïng ADO phaùt ra nhöõng tieäp goïi vaøo OLE DB provider thích öùng. Neáu öùng duïng ADO söû duïng OLE DB provider daønh cho ODBC thì SQL OLE DB seõ ñöôïc goïi vaøo. Khi söû duïng OLE DB / ODBC thì ADO naïp madssql.dll vaøo vaø trình baøy vaø trình baøy naøy ñöôïc naïp laïi ODBC Driver Manager. OLE DB Driver/ ODBC API, vaø caùc haøm naøy ñöôïc chuyn63 giao cho OLE DB driver Manager. ODBC Driver Manager seõ naïp vaøo ODBC driver thích öùng. Ñeán phieân ODBC driver seõ duøng moät IPC maïng ( nhö Name Pipes, TCP/IP Sockets hoaëc PSX) ñeå lieân laïc vôùi moät IPC server naèm ôû xa cho pheùp truy xuaát cô sôû döõ lieäu ñích. OLE provider native ñoái vôùi SQL Server seõ khoâng duøng baát cöù taàng lôùp trung gian naøo. Khi tröïc tieáp vaø söû duïng IPC maïng thích öùng ñeå lieân laïc vôùi cô sôû döõ lieäu ñích. Caáu hình thöùc maïng maø noù duøng ñeán (NetBEUI, TCO/IP hoaëc IPX). Nghi thöùc maïng chòu traùch nhieäm göûi ñi vaø nhaän veà doøng döõ lieäu di chuyeån treân maïng. Cuoái cuøng, naèm ôû döôùi ñaây laø topo maïng ( Enthernet hay Token Ring), bao goàm Adapter Card vaø daây caùp taïo thaønh moät maïng löôùi noái caû heä thoáng laïi vôùi nhau. Sau ñaây laø toùm löôït caùc taäp tin Client duøng ñeå thieát ñaët ADO: Taäp tin Moâ taû Msdasql.dll OLE DB provider for ODBC Sqloledb.dll OLE DB provider for SQL Server Msado15.dll ADO object Library 1.2. Kieán truùc ADO: Gioáng nhö vôùi caùc moâ hình ñoái töôïng truy xuaát döõ lieäu khaùc, ADO cuõng ñöïôc thieát laäp söû duïng moâ hình ñoái töôïng kieåu ñaúng caáp. Tuy nhieân, moâ hình ñoái töôïng ADO ñôn giaûn vaø “ phaúng lì” (Flat) hôn nhieàu so vôùi caùc moâ hình ADO hoaëc RDO. Hình sau ñaây cho thaáy toång quan moät ñoái töôïng ADO. CONNECTION COMMAN ERROR PARAMETER PARAMETER FIELDS FIELD RECORDSET ERRORS Moâ hình ñoái töôïng ñaúng caáp ADO Caùc ñoái töôïng connection, command vaø recordset laø 3 ñoái töôïng chuû yeáu cuûa moâ hình ñoái töôïng naøy. Ñoái töôïng connectin töôïng tröng cho moät keát noái veà moät döõ lieäu töø xa. Ngoaøi vieäc thieát laäp moät keát noái vôùi moät döõ lieäu nguoàn töø xa, ñoái töôïng connection coøn coù theå lo kieåm soaùt phaïm vi giao dòch ( transaction scope). Moät ñoái töôïng connection coù theå ñöôïc gaén lieàn hoaëc vôùi moät ñoái töôïng hoaëc ñoái töôïng command. Ñoái töôïng recordset töôïng tröng cho moät taäp hôïp keát quaû ñöôïc traû veà töø moät döõ lieäu nguoàn. Moät ñoái töôïng recordset töôïng tröng cho moät taäp hôïp keát quaû ñöïôc traû veà töø moät döõ lieäu nguoàn. Moät ñoái töôïng recordset ADO coù theå duøng hoaëc moät ñoái töôïng connection ñöôïc môû hoaëc noù coù theå töï thieát laäp keát noái rieâng veà döõ lieäu nguoàn ñích. Caùc ñoái töôïng recordset cho pheùp baïn truy vaán döõ lieäu hoaëc thay ñoåi döõ lieäu. Moãi ñoái töôïng recordset thöøong chöùa moät taäp hôïp nhöõng ñoái töôïng Field theo ñaáy moãi ñoái töôïng Field töôïng tröng cho moät döõ lieäu treân ñoái töôïng recordset. Ñoái töôïng command ñöôïc duøng ñeå phaùt ra nhöõng chæ thò (command) hoaëc nhöõng leänh SQL mang thoâng soá aån. Caùc ñoái töôïng command coù theå duøng cho caû nhöõng leänh SQL haønh ñoäng (UPDATE, INSERT hoaëc DELETE ) laáy nhöõng leänh SQL truy vaán traû veà nhöõng taäp hôïp keát quaû. Gioáng nhö ñoái töôïng recordset ADO, ñoái töôïng command coù theå duøng hoaëc moät ñoái töôïng connetion hieän dòch (active) hoaëc töï thieát laäp rieâng keát noái veà döõ lieäu nguoàn ñích. Ñoái töôïng comand thöôøng chöùa moät taäp hôïp Paremeter töôïng tröng moät thoâng soá aån maø ñoái töôïng command se duøng ñeán. Trong tröôøng hôïp theo ñoù moät ñoái töôïng command thi haønh moät leänh SQL coù chöùa thoâng soá aån, thì ñoái töôïng Paremeter töôïng tröng moät trong nhöõng thoâng soá aån treân leänh SQL. Tröïc tieáp naèm döôùi ñoái töôïng connection laø taäp hôïp Error, moãi ñoái töôïng Error naèm trong taäp hôïp thöôøng chöùa thoâng tin lieân quan ñeán moät sai laàm xaûy ra gaây bôûi moät trong nhöõng ñoái töôïng treân moâ hình ñoái töôïng ADO. Ngoaøi nhöõng ñoái töôïng chính ta thaáy treân hình minh hoaï, taát caû caùc ñoái töôïng connection, command, recordset vaø Field ñeàu coù moät taäp hôïp Properties goàm moät loâ nhöõng ñoài töôïng Property. Moãi ñoái töôïng property coù theå duøng ñeå tìm hoaëc ñeå daët nhöõng thuoäc tính khaùc nhau ñöôïc gaén cho nhöõng ñoái töôïng. Thoaùng nhìn, moâ hình ñoái töôïng ADO ñöôïc caáu truùc theo ñaúng caáp gioáng nhö vôùi DAO hoaëc RDO, nhöng thaät ra khoâng phaûi vaäy. Khaùc vôùi mot hình ñoái töôïng khaùc, taát caû caùc ñoái töôïng ADO – ngoaïi tröø caùc ñoái töôïng Error, Field vaø Properties – coù theå ñöôïc töï mình taïo ra khoâng caàn thoâng qua caùc ñoái töôïng cao caáp hôn. Ñieàu naøy laøm cho ñoái töôïng ADO coù veû “phaúng lì” vaø ADO cho pheùp caùc recordset ñöôïc môû vaø truy xuaát khoâng caàn ñeán moät theå hieän cuûa moät connection. Khaû naêng söû duïng tröïc tieáp moät ñoái töôïng khoâng caàn thieát phaûi theå hieän baát cöù ñoái töôïng cao caáp hôn laøm cho ADO de söû duïng hôn so vôùi caùc moâ hình khaùc. Tuy nhieân, baïn seõ thaáy khoâng phaûi ADO bao giôø cuõng khoâng phöùc taïp trong söû duïng nhö ta töôûng. II . Tham chieáu ADO trong öùng duïng Visual Basic: ADO ñöôïc caøi daët nhö moät thaønh phaàn cuûa Visual Basic 6.0, sau khi caøi ñaët xong, ta söû duïng noù baèng caùch tham chieáu ñeán thö vieän ADO trong nhöõng öùng duïng VB Trong ñeà aùn Visual Basic, choïn Project/ Reference Hoäp thoaïi Reference xuaát hieän, ñaùnh daáu choïn vaøo Microsoft Active X DataObject 2.0 Library, choïn OK III . Duøng ñoái töôïng Connection cua ADO ñeå keát noái vôùi nguoàn döõ lieäu: Caùch taïo moät keát noái vôùi SQL Server söû duïng moät ñoái töôïng ADO Connection vaø OLE DB Provider. Private Sub SQLOLEDBConnect() Dim cn As New ADODB.Connection() Mousepointer = vbHourglass cn.ConnectionString = “ PROVIDER=SQLOLEDB” &_ “ ; SERVER =”& sServer &_ “ ; UID =”& sLoginID &_ “ ; PWD=”& sPassword &_ “ ; DATABASE=” pubs” cn.Open ‘ thöïc hieän xöû lyù ôû ñaây cn.Close MousePointer = Vbdefault End sub Thuoäc tính ConnectionString ñöôïc gaùn bôûi moät chuoãi keát noái OLE DB. Chuoãi naøy söû duïng töø khoaù PROVIDER khai baùo cho bieát SQLOLEDB provider ñöôïc duøng ñeán. Muoán duøng vôùi SQL Server baét buoäc phaûi coù töø khoaù PROVIDER. Neáu ta khoâng cung caáp töø khoaù naøy thì MSDS SQL Provider seõ ñöôïc duøng ñeán. Ngoaøi ra, baét buoäc phaûi coù caùc töø khoaù SERVER DATABASE. Coøn caùc töø khoaù UID vaø PWD cung caáp caùc thoâng tin lieân quan ñeán login vaø SQL Server. Sau khi keát noái xong, haønh vi Open baét ñaàu keát noái. Moät keát noái thaønh coâng, truy xuaát cô sôû döõ lieäu ñöôïc baét ñaàu. Ñoùng laïi moät keát noái: Ta duøng haøm haønh vi Close cuûa ñoái töôïng ADO ñeå keát thuùc keát noái vôùi cô sôû döõ lieäu Dim cn As New ADODB.Connection ‘ thöïc hieän hoaït ñoäng keát noái chaám döùt cn.Close CHÖÔNG 7 TOÅNG QUAN VEÀ SQL SERVER 7.0 Giôùi thieäu khaùi quaùt veà sql server 7.0: SQL Server 7.0 laø moät heä thoáng caên cöù döõ lieäu (CCDL) quan heä cho pheùp thích öùng theo quy moâ ñi töø moät maïng cuïc boä (local area Network _ LAN) ôû phoøng ban cô quan xí nghieäp naâng daàn leân maïng dieän roäng (wide area network _ WAN) cuûa moät toång coâng tyvôùi nhieàu chi nhaùnh treân toaøn quoác hoaëc toaøn theá giôí. SQL Server duy trì moät soá taäp tin CCDL coát loõi daønh cho nhöõgn öùng duïng CCDL töï taïo (custom application) söû duïng nhöõng ngoân ngöõ trieån khai nhö Visual Basic, Visual C++ vaø Visual FoxPro, hoaëc daønh cho nhöõng öùng duïng “ñeå baøn” (desktop application) nhö MS Word, Excel vaø Access chaúng haïn. SQL Server laø moät heä thoáng CCDL Windows 32-bit, neân taän duïng ñöôïc nhöõng lôïi ích do vieäc hoäi nhaäp chaët cheõ cuûa heä ñieàu haønh Windows NT ñem laïi. Vôùi nhöõng CCDL qui moâ nhoû, SQL Server coù theå chaïy treân nhöõng heä ñieàu haønh Windows 9x vôùi dung löôïng RAM vaøo khoaûng 32MB. Coøn ñoái vôùi nhöõng CCDL qui moâ lôùn, SQL Server coù theå taän duïng söï hoå trôï cuûa Windows NT ñoái vôùi nhöõng heä thoáng naêng suaát cao döïa treân kyõ thuaät RISC nhö DEC Alpha chaúng haïn, ngoaøi ra hoã trôï heä thoáng SMP (symmetric multiprocessing – ña xöû lyù ñoái xöùng) Ñaây laø moät heä quaûn trò cô sôû döõ lieäu maïnh coù tính môû, ñaùng tin caäy, laø moät heä thoáng cô sôû döõ lieäu theo moâ hình Client/ Server vaø coù theå phaùt trieån theo moâ hình cô sôû döõ lieäu phaân taùn. MS SQL Server cung caáp ñaày ñuû caùc coâng cuï ñeå: * Deã daøng xaây döïng moät cô sôû döõ lieäu quan heä lôùn moãi cô sôû döõ lieäu coù theå chöùa 2 tyû quan heä vaø moãi quan heä coù theå chöùa ñeán 1024 thuoäc tính. * Giaûi quyeát tình traïng va chaïm giöõa caùc user khi cuøng truy xuaát moät döõ lieäu taïi cuøng moät thôøi ñieåm. * Baûo ñaûm caùc raøng buoäc toaøn veïn treân cô sôû döõ lieäu * Baûo veä an toaøn cô sôû döõ lieäu (quaûn lyù nhieàu möùc ñoä ñeå truy caäp vaøo cô sôû döõ lieäu) * Truy vaán döõ lieäu nhanh Kieán truùc maïng cuûa SQL Server: Kieán truùc kieåu phaân taùn (distributed) cuûa SQL Server taùch rôøi caùc öùng duïng chuyeân truy xuaát caùc taäp tin CCDL (ñeå laøm gì ñoù treân döõ lieäu cuûa caùc taäp tin naøy) khoûi boä phaän ñöôïc goïi laø database engine. Phaàn coát loõi cuûa database server cuûa SQL Server seõ chaïy treân moät heä thoáng NT Server, vaø heä thoáng naøy seõ ñöôïc noái veà nhieàu heä thoáng Client thoâng qua maïng cuïc boä Enthernet hoaëc Token Ring. Heä thoáng Client thöôøng laø nhöõng maùy PC chaïy theo phaàn meàm ñöôïc goïi laø SQL Server Client. SQL Server chaáp nhaän hoã trôï nhöõng heä thoáng Client sau ñaây: Windows for Workgroups Macintosh Windows 9x DOS Windows NT OS/2 Remote Access Server (RAS) UNIX Hình sau ñaây cho thaáy kieán thöùc maïng cuûa SQL Server. Ta coù theå thaáy roõ phía Client cuûa SQL Server bò taùch ra khoûi phía Server Windows for Workgroups Windows NT UNIX Macintosh Remote Access Server (RAS) Windows SQL Server Client Network Database Engine & Database Storage SQL Server Kieán truùc maïng cuûa SQL Server Boä phaän database engine cuûa SQL Server coù theå chaïy hoaëc treân moät Windows NT server hoaëc treân moät Windows 9x server, vaø thoâng thöôøng döõ lieäu CCDL seõ khoâng ñöôïc truy xuaát CCDL cuûa SQL Server töø heä thoáng qua maïng Client, trong khi aáy caáu thaønh database server chæ chaïy treân heä thoáng SQL Server. Caàn thieát phaûi coù maïng löôùi (Enthernet hoaëc Token Ring) ñeå noái lieàn heä thoáng Client vaø heä thoáng SQL Server. Ngoaøi ra,SQL Server cung caáp tính ñoäc laäp veà nghi thöùc (protocol) töông thích vôùi moïi nghi thöùc maïng phoå bieán hieän coù treân thò tröôøng, bao goàm: TCP/ IP, NetBEUL, Novell IPX/ SPX, Bayan VINES/ IP, DEC PATHWORKS vaø AppleTalk ADSP cuûa Apple. SQL Server OLEDB Application SQL Server SQL Server SQL Server ODBC Application Transaction SQL DB Library SQL Server Client Network Library Network Open Data Services Server Network Library Extanded Store SQL Server Client Computer Kieán truùc Client/ Server cuûa SQL Server Baïn coù theå thaáy caùch öùng duïng Client söû duïng 4 giao dieän laäp trình API (application programming interface) khaùc nhau maø SQL Server cung caáp ñeå truyxuaát döõ lieäu : OLE DB, ODBC, DB – Libarary vaø Transact – SQL. Giao dieän OLE DB: OLE DB laø moät giao dieän truy xuaát döõ lieäu döïa treân kyõ thuaät goïi laø COM (vieát taét töø : Component Object Model). Noù hoå trôï nhöõng öùng duïng ñöôïc vieát ñeå söû duïng OLE DB nhu ADO chaúng haïn. OLE DB ñöôïc thieát keá ñeå laøm vieäc vôùi nhöõng CCDL quan heä (nhö nhöõng CCDL treân SQL Server ) cuõng nhö ñoái vôùi nhöõng nguoàn döõ lieäu khoâng mang tính quan heä (nhö full text index hoaëc e-mail message store). OLE DB seõ söû duïng moät proveder ñeå coù theå thaâm nhaäp vaøo moät soá nguoàn döõ lieäu (data source) ñaëc bieät naøo ñoù. Nhöõng provider duøng cho SQL Server , Oracle, Jet (CCDL Access) vaø ODBC ñöôïc cung caáp cuøng vôùi SQL Server. Neáu baïn duøng OLE DB Provider for ODBC, baïn coù theå duøng OLE DB ñeå thaâm nhaäp vaøo baát kyø nguoàn döõ lieäu ODBC naøo. Giao dieän ODBC: Giao dieän ODBC laø loaïi giao dieän caáp trieäu goïi haøm API. Noù tröïc tieáp truy xuaát nghi thöùc TDS (vieát taét töø Tabular Data Stream) cuûa SQL Server vaø chòu hoå trôï nhöõng öùng duïng hoaëc caáu thaønh ñöôïc vieát duøng ODBC nhö DAO haëoc RDO chaún haïn. ODBC ñöôïc thieát keá ñeå chæ laøm vieäc vôùi nhöõng CCDL quan heä ( nhö nhöõng CCDL treân SQL Server) maø thoâi. ODBC söû duïng moät trình daïo dieãn (driver) ñeå coù theå thaâm nhaäp vaøo moät nguoàn döõ lieäu (data source) ñaëc bieät naøo ñoù. Caùc giao dieän Data Object: Nhìn chung giao dieän data object deã duøng hôn laø database API nhöng coù theå khoâng chöng ra nhieàu chöùc naêng vôùi API. ADO (Active X Data Object) laø giao dieän data object duøng vôùi OLE DB, coøn RDO (Remote Data Object) laø giao dieän data object duøng vôùi ODBC. * Active X Data Object (ADO): ADO bao troïn ( encapsulate) nhöõng API cuûa OLE DB trong moät moâ hình döõ lieäu ñôn giaûn hôn giuùp giaûm ñi coâng söùc trieån khai öùng duïng cuõng nhö chi phí baûo trì. ADO coù theå ñöôïc duøng töø moâ hình kòch baûn ñoái töôïng treân Visual Basic, Visual Basic for Applications (VBA), Visual C++, Visual FoxPro 6.0 , Active Server Pages (ASP) vaø Internet Explorer. * Remote Data Objects (RDO): RDO aùnh xaï vaø bao troïn nhöõng API cuûa ODBC. Noù coù theå duøng töø Visual Basic, Visual Basic for Application, Visual C++ vaø Visual FoxPro 6.0. Nhöõng DB – Library API ñöôïc duøng trong nhöõng phieân baûn SQL Server ñi tröôùc chæ laø ñeå cung caáp söï töông thích veà tröôùc chöù khoâng hoå trôï nhöõng chöùc naêng môùi treân SQL Server 7.0. Ñoái vôù nhöõng Client söû duïng Windows, taát caû caùc giao dieän API keå treân ñeàu ñöôïc thi coâng döôùi daïng thö vieän (dynamic link libraries) vaø chuùng lieân laïc vôùi SQL Server thoâng qua thö vieän maïng Client (Client network library). Thö vieän naøy duøng phöông phaùp IPC (Interprocess Communication) ñeå lieân laïc xuyeân maïng ñeán thö vieän maïng server (Server Network Library) treân heä thoáng SQL Server. Server network libraries seõ nhaän ñöôïc nhöõng boù döõ lieäu (data package) göûi ñi töø heä thoáng Client, roài chuyeån cho boä phaän Open Data Services (ODS) cuûa SQL Server. ODS laø moät giao dieän API naèm ôû phía server thöôøng goàm moät soá haøm C++ vaø macro. Baûn thaân SQL Server laø moät öùng duïng ODS chaáp nhaän nhöõng trieäu goïi ODS, xöû lyù caùc trieäu goïi naøy roài traû keát quaû veà cho ODS. Ta coù khaû naêng trieån khai nhöõng öùng duïng duøng giao dieän ODS API, nhöng ñieån hình ODS API chæ duøng ñeå cung caáp “ngoû noái töï taïo” (custom gateways) ñi vaøo caùc heäb thoáng CCDL khaùc. Vieäc hoå trôï nhöõng CCDL khoâng ñoàng nhaát (heterogenous) bôûi caùc giao dineä ODBC API vaø OLE DB API xem ra deã söû duïng, neân ta khoûi caàn trieån khai nhöõng öùng duïng ñeán ODS. Caùc caáu thaønh cô baûn cuûa SQL Server: Hình treân cho thaáy 4 caáu thaønh cô baûn cuûa SQL Server, nhìn theo caáp cao nhaát: Open Data Services (ODS), MS SQL Server, SQL Server Agent vaø MSDTC (Microsoft DistributedTransaction Coordinator) MSDTC SQL Server Agent MS SQL Server Open Data Services Open Data Services (ODS): Cung caáp moät giao dieän giöõa thö vieän maïng server ( server network libraries) vaø SQL Server engine (MS SQL Server ). Caáu thaønh naøy giaûi quyeát nhöõng ñaáu noái maïng, chuyeån yeâu caàu cuûa Client cho SQL Server ñeå xöû lyù roài traû veà baát cöù keát quaû naøo vaø traû lôøi cho SQL Server Client. ODS töï ñoäng “nghe” taát caû caùc server network libraries ñöôïc caøi ñaët treân server. MS SQL Server: Goàm nhöõng dòch vuï lo quaûn lyù taát caû caùc taäp tin thuoäc thaønh phaàn SQL Server database. Noù chòu traùch nhieäm xöû lyù caùc caâu leänh SQL cuõng nhö caáp phaùt caùc nguoàn löïc (resource) heä thoáng. SQL Server Agent: SQL Server Agent laø moät dòch vuï hoaït ñoäng phoái hôïp vôùi MS SQL Server cho pheùp thöïc hieän nhöõng coâng taùc haønh chính sau: quaûn lyù “baùo ñoäng” (alert managerment), thoâng tri (notification), thi haønh “coâng cuï” (job execution) vaø nhaân baûn (replication). Caùc coâng taùc naøy seõ ñeà caäp chi tieát su ñaây: Alert Management: Alert cung caáp thoâng tin lieân quan ñeán tình traïng cuûa moät tieán trình, chaúng haïn khi moät job ñöôïc hoaøn taát hoaëc khi moät sai laàm xaûy ra. Alert laø moät haønh ñoäng phaûi thöïc hieän ñaùp öùng moät tình huoáng cuï theå. Moät Alert coù theå ñöôïc daøn döïng ñeå thöïc hieän nhöõng coâng taùc khaùc nhau nhö cho chaïy job, hoaëc phaùt ñi e-mail. SQL Server Agent höôùng daãn trình “application event log” theo doõi caùc tình huoáng vaø phaùt sinh alert döïa treân nhöõng tình huoáng naøy. Notification: SQL Server Agent coù theå göûi ñi nhöõng thoâng ñieäp e-mail baùo tin (page) cho moät ñieàu haønh vieân (operator) hoaëc khôûi ñoäng moät öùng duïng khaùc khi alert xaûy ra. Thí duï, baïn coù theå caøi ñaët moät alert xaûy ra khi moät CCDL hoaëc baûng theo doõi giao dòch (transacttion log) gaàn ñaày roài cho alert phaùt sinh moät thoâng tri baùo cho ai ñoù laø moät alert ñaõ xaûy ra. Job Execution: SQL Server Agent bao goàm moät trình taïo job vaø lòch boá trí caùc jobs cuûa SQL Server cuõng nhö nhöõng alert. Theo ñònh nghóa cuûa SQL Server: job laø moät ñoái töôïng coù saün goàm moät hoaëc nhieàu böôùc ñoøi hoûi phaûi ñöôïc boá trí. Baïn coù theå taïo nhöõng böôùc söû duïng Transact – SQL, ngoân ngöõ kòch baûn hoaëc leänt heä ñieàu haønh. Replication Management: Replication laø moät tieán trình nhaân baûn döõ lieäu hoaëc giao dòch töø moät SQL Server naøy qua moät SQL Server khaùc. SQL Server Agent chòu traùch nhieäm phoái hôïp vieäc nhaân baûn baèng caùch ñoàng boä hoaù döõ lieäu giöõa caùc server, ñieàu khieån vieäc caäp nhaät döõ lieäu vaø nhaân baûn thoâng tin leân caùc server khaùc. Microsoft Distributed Transaction Coordinator (MSDTC) Boä phoái hôïp giao dòch phaân taùn. Ñaây laø boä phaän quaûn lyù giao dòch chòu traùch nhieäm ñieàu phoái nhöõng giao dòch CCDL giöõa nhieàu server. MSDTC cho Client bao goàm döõ lieäu töø nhieàu nguoàn leân moät giao dòch. MSDTC phoái hôïp vieäc hoaøn taát thích öùng nhöõng giao dòch phaân taùn baûo ñaûm taát caû caùc nhaät tu treân taá caû caùc server phaûi laø vónh vieãn- hoaëc trong tröôøng hôïp sai laàm thì taát caû cacù thay ñoåi phaûi bò huyû boû. Ñieàu naøy ñöôïc thöïc hieän baèng caùch duøng tieán trình ñöôïc goïi laø “two – phase commit” MSDTC coù theå ñöôïc trieäu goïi bôûi SQL Server database engine hoaëc tröïc tieáp bôûi öùng duïng client. Treân Windows NT caùc caáu thaønh keå treân ñöôïc thieát ñaët nhu laø nhöõng dòch vuï NT, coøn treân Windows 9x chuùng ñöôïc thieát ñaët nhö laø nhöõng chöông trình khaû thi chuaån. Transact – SQL: SQL (Structured Query Languge) laø moät ngoân ngöõ truy vaán ñöôïc phaùt trieån bôûi IBM vaøo ñaàu thaäp nieân 70 vaø ñaõ trôû thaønh de facto moät ngoân ngöõ truy vaán CCDL chuaån ñoái vôùi nhöõng caên cöù döõ lieäu quan heä, vaø ñaõ ñöôïc chuaån hoaù bôûi ANSI vaøo naêm 1992 neân ñöôïc goïi laø ANSI SQL – 92. SQL Server duøng moät “thoå ngöõ” SQL ñöôïc goïi laø Transact – SQL. Phaàn lôùn caùc ANSI SQL chuaån ñeàu chaáp nhaän thoå ngöõ Transact – SQL naøy. Tuy nhieân, Transact-SQL cung caáp moät soá nôùi roäng vaø taêng cöôøng. Thí duï, Transact - SQL coù chöùa moät soá töø choá duøng ñieàu khieån caùc caâu leänh (flow – control) giuùp trieån khai deã daøng nhöõng chöông trình “ñöôïc tröõ saún” goïi laø “stored procedures” Transact - SQL ñöôïc duøng phoå bieán trong caùc coâng taùc quaûn lyù CCDL, chaúng haïn taïo ra vaø vaát boû nhöõng baûng döõ lieäu vaø nhöõng coät cuõng nhö vieát nhöõng kích hoaït (trigger) vaø thuû tuïc tröõ saún (stored procedure). Ngaoøi ra, baïn cuõng coù theå söû duïng Transact - SQL ñeå tahy ñoåi caáu hình cuûa SQL Server, hoaëc baïn coù theå töông taùc vôùi trình tieän ích Graphical Query Analyzer ñeå thöïc hieän nhöõng truy vaán. Transact - SQL cug caáp 3 laoïi hoã trôï SQL: Data Definition Language (DDL): Caùc leänh DDL ñöôïc duøng trong caùc coâng taùc quaûn lyù CCDL, nhö taïo ra nhöõng baûng döõ lieäu vaø view chaúng haïn. Data Mani pulation Language (DML): Caùc leänh DML ñöôïc duøng ñeå truy vaán vaø nhaät tu döõ lieäu chöùa trong CCDL. Data Control Langiage (DCL): Caùc leänh DCL ñöôïc duøng ñeå ñieàu khieån hoaït ñoäng cuûa CCDL. Kieán truùc cuûa SQL Server Database: SQL Server Database Objects Tables Columns Indexes Views Constraints Rules Defaults Triggers Stored Procedures Kieán truùc cuûa moät SQL Server database V.1 Nhöõng Server: Coát loõi cuûa kieán truùc CCDL cuûa SQL Server laø server hoaëc coøn heä thoáng goïi laø database engine. Database engine laø moät chöông trình Windows NT 32-bit, chòu traùch nhieäm xöû lyù nhöõng yeâu caàu cung caáp döõ lieäu vöøa vaøo ñeán vaø traû keát quaû thích öùng cho heä thoáng client. SQL Server taän duïng nhöõng lôïi ñieåm kyõ thuaätnhö ña nhieäm öu tieân (preemptive multitasking), kyù öùc aøo vaø xuaát/nhaäp khoâng ñoàng boä laø thaønh phaàn cuûa heä ñieàu haønh Windows NT. Database engine cuûa SQL Server coù theå chaïy treân nhöõng saøn dieãn phaàn cöùng khaùc nhau, bao goàm Intel Pentium, Pentium Pro, Pemtium II, Xeon processors vaø DEC Alpha. V.2 Nhöõng caén cöù döõ lieäu: Moãi SQL Server thöôøng chöùa nhieàu CCDL, theo ñaáy moãi CCDL ñöôïc duy trì treân moät hoaëc nhieàu taäp tin heä ñieàu haønh (OS-operating system file). Nhieàu CCDL khoâng theå duøng cuøng moät taäp tin. Vieäc giöõ moái CCDL treân moät taäp tin OS rieâng bieät laø thuoäc tính maáu choát cho pheùp nhöõng CCDL treân SQL Server coù theå component daõn moät caùch linh ñoäng. Theo maëc nhieân, khi caøi ñaët SQL Server, 4 CCDL daønh cho heä thoáng (master, model, msdb vaø tempdb) vaø hai CCDL daønh cho ngöôøi söû duïng (puds vaø Northwind) seõ ñöôïc taïo ra. Moãi CCDL seõ coù moät taäp tin theo doõi (log file) töông öùng chöùa nhöõng giao dòch. V.3 Database Objects: Moãi CCDL SQL Server coøn bao goàm nhöõgn ñoái töôïng khaùc ñöôïc duøng ñeán trong vieäc tröõ döõ lieäu vaø toå chöùc döõ lieäu. Caùc ñoái töôïng cuûa CCDL SQL Server bao goàm: Tables, Columns, Views, Constraints, Rules, Defaults, Triggers, Stored Procedures vaø Extend Stored Peocedures. Tables (baûng döõ lieäu) Moãi CCDL treân SQL Server ñeàu chöùa moät hoaëc nhieàu baûng döõ lieäu (table). Ñoái töôïng baûng döõ lieäu laø caáu thaønh chuû yeáu tröõ döõ lieäu (data storage) cuûa SQL Server. Moät baûng döõ lieäu thöïc chaát laø moät loâ coät (column) coù toå chöùc. Moät loâ coät ñöôïc quy chieáu nhö laø moät haøng (row). Treân SQL Server coù hai loaïi baûng döõ lieäu : baûng döõ lieäu heä thoáng (system table) vaø baûng döõ lieäu ngöôøi duøng (user table). Baûng döõ lieäu heä thoáng chöùa thoâng tiin lieân quan ñeán SQL Server vôùi nhöõgn ñoái töôïng khaùc nhau, trong khi baûng döõ lieäu ngöôøi duøng thì chöùa thuaàn tuyù döõ lieäu cuûa ngöôøi duøng. Caùc baûng döõ lieäu heä thoáng ñöôïc ñaët teân vôùi tieàn “sys” (vieát taét töø System). Baûng döõ lieäu thöôøgn goàm moät loâ nhöõgn coät döõ lieäu coù lieân heä ñeán nhau. Coät laø nhöõng muïc tin (data item) töôïng tröng cho moät thuoäc tính (property) cvuûa baûng döõ lieäu. Theo thuaät ngöõ coå ñieån, coät döõ lieäu coøn ñöôïc goïi laø vuøng muïc tin (field). Chæ muïc (indexes): Caùc chæ muïc (index) treân SQL Server ñöôïc duøng ñeå toái öu hoaù toác ñoä truy xuaát döõ lieäu. Neáu khoâng coù chæ muïc, moãi laàn ngöôøi duøng choïn moät loaït haøng treân moät baûng döõ lieäu naøo ñoù, thì caàn phaûi raø troïn baûng töø ñaàu cho tôùi khi hoaøn taá yeâu caàu cuûa ngöôøi duøng. Ñoái vôùi nhöõng baûng döõ lieäu roäng lôùn thì dñiÒu naøy khoâng hieäu quaû. Chæ muïc seõ loaïi tröø vieäc raø töø ñaàu baûng, traùnh maát thôøi gian, vaø cho pheùp trình baøy döõ lieäu theo nhieàu toå chöùc thay theá khaùc nhau vaø höõu hieäu hôn. ngöôøi ta taïo chæ muïc baèng caùch choïn moät soá coät naøo ñoù ñeå nhaän dieän moät caùch duy nhaát moät taäp hôïp con döõ lieäu. Ngöôøi ta taïo moät chæ muïc nhö laø moät ñoái töôïng CCDL rieâng bieät taùch khoûi baûng döõ lieäu nguyeân thuyû. SQL Server söû duïng hai loaïi chæ muïc: clustered vaø nonclustered. Baûng nhìn xem (Views) Treân SQL Server, view laø moät baûng döõ lieäu aûo (virtual table). Hieän thôøi, moät view khoâng hieän höõu nhö laø moät baûng döõ lieäu rieâng reõ, nhöng ñuùng ra laø nôi löu tröõ nhöõng caâu leänh Select qui chieáu veà moät hoaëc nhieàu baûng döõ lieäu cô sôû. Moät view coù theå ñöôïc ñem duøng vaøo nhieàu chöùc naêng khaùc nhau. Ta coù theå truy vaán view gioáng nhö vôùi baûng döõ lieäu bình thöôøng. Ta cuõng coù theå truy vaán view gioáng nhö vôùi baûng döõ lieäu bình thöôøng. Ta cuõng coù theå nhaät tu view mieãn laø coâng taùc nhaät tu chæ aûnh höôûng moät baûng döõ lieäu ñôn chieác maø thoâi. Moät vaøi söû duïng phoå bieán view bao goàm vieäc choïn moät soá taäp hôïp soá haøng hoaëc moät soá coät töø moät baûng döõ lieäu, raùp noái (joining) nhöõng coät trích töø nhieàu baûng döõ lieäu khaùc nhau cuõng nhö toång coäng döõ lieäu töø moät hoaëc nhieàu coät. Nhöõng raøng buoäc (constraints): Treân SQL Server, nhöõng raøng buoäc baûo ñaûm tính toaøn veïn döõ lieäu (data integrity) ñoái vôùi caùc baûng döõ lieäu cuõng nhö ñoái vôùi caùc coät döõ lieäu. Thoâng thöôøng, caùc raøng buoäc ñöôïc theâm vaøo khi moät baûng döõ lieäu ñöôïc taïo ra, vaø coøn ñöôïc khai baùo ôû caáp baûng hoaëc ôû caáp coät. SQL Server chòu hoã trôï 5 loaïi raøng buoäc: Primary key, Foreign key, Unique key, Check vaø Not null. Caùc quy taéc (Rules): Caùc quy taéc cuõng gaàn gioáng nhö raøng buoäc Check trong vieäc haïn cheá trò coù theå döôïc ghi vaøo moät coät. Tuy nhieân, khaùc vôùi raøng buoäc Check ñaët ra moät traéc nghieäm töông ñoái veà trò, Management quy taéc coù theå haïn cheá nhöõng trò döõ lieäu döïa treân moät bieåu thöùc ñieàu kieän (condition expression) hoaëc moät danh saùch caùc trò. Ngoaøi ra, khoâng gioáng nhö moät raøng buoäc Check, baïn chæ coù theå coù moät quy taéc cho moät coät vaø caùc quy taéc SQL Server seõ ñöôïc tröõ döôùi daïng moät ñoái töôïng CCDL rieâng reõ. Trong khi moät coät chæ coù theå gaén vôùi moät quy taéc ñôn leû, thì moät quy taéc coù theå phuû leân nhieàu coät. Caùc quy taéc coù theå ñöôïc ñem aùp duïng leân nhöõng kieåu döõ lieäu töï taïo (user-defined) Nhöõng maëc nhieân (Defaults): Moät maëc nhieân (default) cho bieát trò töï ñoäng ñöôïc duøng ñeán, khi moät haøng môùi ñöôïc chen vaøo vaø khoâng coù moät trò naøo ñöôïc gaùn roõ ra cho coät. Trò maëc nhieân coù theå laø moät haèng, moät haøm coù saün, moät bieåu thöùc hoaëc moät bieán toaøn cuïc. Default thöôøng ñöôïc aùp duïng khi moät baûng döõ lieäu ñöôïc taïo ra. Nhöõng kích hoaït (Triggers): Moät kích hoaït (trigger) laø moät thuû tuïc tröõ saün töï ñoäng ñöôïc thi haønh khi moät baûng döõ lieäu bò thay ñoåi söû duïng caùc taùc vuï Update, Insert hoaëc Delete. Gioáng nhö vôùi moät thuû tuïc tröõ saün, moät kích hoaït thöôøng chöùa moät soá caâu leänh Transact – SQL. Trigger thöôøng ñöôïc duøng ñeå taêng cöôøng nhöõng quy taéc toaøn veïn qui chieáu tinh vi hôn laø caùc quy taéc DRI. Thí duï duøng DRI, baïn coù theå khai baùo ra caùc haøng treân baûng döõ lieäu “chi tieát ñôn ñaët haøng” phaûi coù lieân heä töông öùng vôùi moät haøng treân baûng döõ lieäu “ñôn ñaët haøng”. Trigger coù theå vöïot quaù möùc cô baûn cuûa moái quan heä chuû theå (entity relationship) baèng caùch haønh ñoäng döïa treân nhöõng khia baùo cuûa trò döõ lieäu. Thí duï ta coù theå duøng ñeán moät kích hoaït ñeå vieát loaïi ra nhöõng haøng leân moät taäp tin theo doõi (log file) khi maãu tin döõ lieäu khoâng ñaùp öùng moät soá traéc nghieäm kieåm tra hôïp leä ñöôïc ñöa ra. Thuû tuïc tröõ saün (Stored Procedures): Thuû tuïc tröõ saün laø moät nhoùm caâu leänh Transact-SQL ñöôïc bieân dòch thaønh moät keá hoaïch thi haønh ñôn leû vaøo luùc thuû tuïc tröõ saún ñöôïc taïo ra. Ñaây laø nhöõng coâng cuï maïnh vaø uyeån chuyeån duøng thi haønh nhöõng haøm khaùc nhau veà quaûn lyù haønh chaùnh vaø thao taùc döõ lieäu, chaúng haïn nhö taïo nhöõng baûng döõ lieäu, caáp pheùp öu tieân hoaëc thöïc hieän nhaät tu CCDL theo nhieàu böôùc. Trong khi baûn thaân SQL laø moät ngoân ngö khoâng thieân veà thuû tuïc, thoå ngöõ Transact-SQL cuûa SQL Server chöùa nhieàu nôùi roäng SQL bao goàm vieäc söû duïng caùc töø choát flow-control. Ñieàu naøy cho pheùp thuû tuïc tröõ saún cuûa SQL Server chöùa logic phöùc taïp vaø thöïc hieän voâ vaøn coâng taùc khaùc nhau. Khi thuû tuïc tröõ saún ñöôïc bieân dòch, SQL Server toái öu hoaù keá hoaïch truy xuaát döõ lieäu maø thuû tuïc tröõ saün seõ duøng ñeán. Vieäc toái öu hoùa seõ ñem laïi hieäu naêng cho thuû tuïc tröõ saún. Thuû tuïc tröõ saún coù theå traû veà nhöõng thoâng soá taäp hôïp keát quaû, vaø nhöõng ñoaïn maõ hoaëc taïo ra nhöõng cursors. Moät thuû tuïc tröõ saún ñôn chieác coù theå ñöôïc chia seõ söû duïng bôûi nhieàu ngöôøi duøng. Thuû tuïc tröõ saún coø theå chaáp nhaän leân ñeán 1024 thoâng soá, vaø coù theå ñöôïc thi haønh treân heä thoáng SQL Server cuïc boä hoaëc treân heä thoáng SQL Server naèmôû xa. Caùc caáu thaønh giuùp quaûn lyù haønh chính: VI.1 SQL Server Enterprise Manager: Enterprise Manager laø moät coâng cuï ñoà hoaï giuùp thöïc hieän quaûn lyù CCDL vôùi nhöõng coâng taùc sao cheùp phoøng hôø (back up) cuõng nhö hoaøn nguyeân (restore), vaø keà caû vieäc daøn döïng cheá ñoä an toaøn (secirity) vaø nhaân baûn CCDL (database replication). Enterprise Manager coù theå chui vaøo MS Management Console cho pheùp baïn thöïc hieän vieäc quaûn lyù taäp trung ñoái vôùi moät hoaëc nhieàu heä thoáng SQL Server. Enterprise manager laø moät chöông trình 32 bit coù theå chaïy treân heä thoáng SQL Server hoaëc treân heä thoáng Client 32 bit nhö Windows 9x hoaëc Windows NT chaúng haïn. Vì laø moät trình giao dieän ñoà hoaï, neân Enterprise Manager laøm cho vieäc thöïc hieän caùc chöùa naêng quaûn lyù haønh chính cuûa SQL Server deã daøng baèng caùch chæ troû vaø baám taét con chuoät. VI.2 Distributed Transaction Coordinator: Distributed Transaction Coordinator (boä ñieàu phoái giao dòch phaân taùn) quaûn lyù vieäc nhaät tu phaân taùn xaûy ra ngang qua nhieàu heä thoáng SQL Server. Söû duïng Distributed Transaction Coordinator , baïn coù theå baûo ñaûm nhöõng giao dòch ngang qua ña heä thoáng coù theå phuïc hoài laïi ñöôïc. Khaû naêng naøy ñöôïc goïi laø “ two-phase commit”. Distributed Transaction Coordinator ñöôïc quaûn lyù söû duïng ñeán Enterprise Manager vaø coù theå thaâm nhaäp ñöôïc baèng chöông trình söû duïng Transact-SQL, ODBC, DB-Library vaø transaction monitor chaáp nhaän XA nhö Encina chaúng haïn. VI.3 Query Analyzer: Query Analyzer (boä phaân tích truy vaán) laø moät coâng cuï ña naêng cho pheùp baïn taïo nhöõng thuõ tuïc tröû saün söû duïng Transact_SQL vaø duøng cheá ñoä töông taùc ñeå khoû vaøo vaø cho thi haønh caùc leänh SQL, cuõng nhö phaân tích caùc cuoäc truy vaán vaø nhìn xem keát quaû thoáng keâ cuûa moät keá hoaïch truy vaán duøng ñeán Query Optimizer (showplan) Output cuûa SQL Server. Ñoàng thôøi noù coù khaû naêng quaûn lyù nhieàu truy vaán cuøng luùc trong nhöõng cöûa soå khaùc nhau. Ñeå khoû vaøo nhöõng thuû tuïc tröõ saún vieát theo Transact-SQL, Query Analyzer cung caáp cho baïn boä phaän help caûnh öùng vaø hieäu ñính döïa theo maøu saéc (color-code editing). Keát quaû cuûa nhöõng truy vaán SQL töông taùc ñöôïc hieån thò treân moät khugn löôùi maø baïn coù theå cho hieän leân maøn hình thoâng qua theû Results. VI.4 SQL Server Profile: SQL Server Profile laø moät coâng cuï phaân tích truy vaán vaø theo doõi daáu veát (trace) chaän höùng moät thôøi gian hoaït ñoäng cuûa Server, bao goàm nhöõng caâu leänh Transact-SQL ñöôïc thi haønh, caùc ñoái töôïng CCDL ñöôïc truy xuaát, nhöõng ñoái töôïng lock ñöôïc duy trì vaø baát cöù sai laàm naøo xaûy ra. Profile cho pheùp baïn loïc ra nhöõng loaïi tình huoáng baïn muoán theo doõi daáu veát, roái sau ñoù cho pheùp baïn replay hoaït ñoäng ñaõ ñöôïc ghi nhaän. Baïn coù theå cho replay cuõng treân heä thoáng SQL Server hoaëc treân moät heä thoáng khaùc. Profiler chaïy treân Enterprise Manager. VI.5 SQL Server Performance Monitor: Performance Monitor seõ chuïp tíc taéc cho baïn moät taám hình (snapshot) lieân quan ñeán möùc ñoä hoaït ñoäng hieän haønh cuûa server. Theo maëc nhieân, taám hình chuïp seõ ghi nhaän moïi dieãn tieán trong 3 giaây. Nghóa laø taám hình seõ ghi nhaän: (1) Buffer Cache Hit Ratio: tæ

Các file đính kèm theo tài liệu này:

  • docluanvantotnghiep_text.doc
Tài liệu liên quan