Bài giảng Cơ sở dữ liệu cơ bản

Chương 1. Nhập môn CSDL Chương 2. Cơ sở dữ liệu quan hệ Chương 3. Chuẩn hoá CSDL Chương 4. Thiết kế hệ thống Chương 5. CSDL Tài nguyên đất đai

ppt168 trang | Chia sẻ: franklove | Ngày: 23/08/2012 | Lượt xem: 1847 | Lượt tải: 15download
Bạn đang xem nội dung tài liệu Bài giảng Cơ sở dữ liệu cơ bản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRÖÔØNG ÑH NOÂNG LAÂM TP.HCM KHOA QUAÛN LYÙ ÑAÁT ÑAI & BAÁT ÑOÄNG SAÛN CÔ SÔÛ DÖÕ LIEÄU Baøi giaûng moân hoïc Giaûng vieân: ThS. Leâ Ngoïc Laõm Boä moân: Coâng Ngheä Ñòa Chính GIÔÙI THIEÄU MOÂN HOÏC Thôøi löôïng Phaïm vi moân hoïc Ñoái töôïng nghieân cöùu Muïc ñích nghieân cöùu Yeâu caàu moân hoïc Caáu truùc moân hoïc NỘI DUNG 1. NHẬP MÔN CSDL 2. CƠ SỞ DỮ LIỆU QUAN HỆ 3. CHUẪN HOÁ CSDL 4. THIẾT KẾ HỆ THỐNG 5. CSDL TÀI NGUYÊN ĐẤT ĐAI CHÖÔNG 1 NHAÄP MOÂN CSDL CAÙC KHAÙI NIEÄM MOÄT SOÁ VÍ DUÏ CAÁU TRUÙC MOÄT HEÄ CSDL TÍNH ÑOÄC LAÄP DÖÕ LIEÄU MOÂ HÌNH DÖÕ LIEÄU HEÄ QUAÛN TRÒ CÔ SÔÛ DÖÕ LIEÄU KHAÙI NIEÄM CSDL Khaùi nieäm veà döõ lieäu Nhu caàu quaûn lyù vaø truy xuaát thoâng tin Caùc hình thöùc toå chöùc döõ lieäu Caùc tính chaát cuûa döõ lieäu Caùc daïng döõ lieäu Sinh vieân Quoác gia Ñôn vò haønh chaùnh Tænh Ñoàng Nai; caùch Tp.HCM 30km Tænh Bình Thuaän; caùch Tp.HCM 150km Tænh Long An; Caùch Tp.HCM 50km Vieät nam; daân soá 80 trieäu ngöôøi Laøo; daân soá 30 trieäu ngöôøi Thaùi Lan; daân soá 60 trieäu ngöôøi Trung Quoác; 1,2 tyû ngöôøi Nguyeãn thò Meùn; 20 tuoåi; Queâ quaùn: Tieàn Giang Leâ Vaên Luùa; 21 tuoåi; queâ quaùn: Long An Traàn thò Son; 19 tuoåi; queâ quaùn: Bình Ñònh CAÁU TRUÙC 1 HEÄ CSLD Möùc vaät lyù Möùc khaùi nieäm Möùc khung nhìn NGÖÔØI THIEÁT KEÁ HEÄ THOÁNG MAÙY TÍNH NGÖÔØI SÖÛ DUÏNG ………. TÍNH ÑOÄC LAÄP DÖÕ LIEÄU Möùc ñoäc laäp vaät lyù (Physical data independence) là khả năng sửa đổi sơ đồ vật lý không làm cho các chương trình ứng dụng phải viết lại. Các sửa đổi ở mức vật lý là cần thiết để cải thiện hiệu năng. Độc lập dữ liệu luận lý (Logical data independence) là khả năng sửa đổi sơ đồ luận lý không làm cho các chương trình ứng dụng phải viết lại. Các sửa đổi ở mức luận lý là cần thiết khi cấu trúc luận lý của cơ sở dữ liệu bị thay thế. MOÂ HÌNH DÖÕ LIEÄU Moâ hình maïng Moâ hình phaân caáp Moâ hình thöïc theå keát hôïp Moâ hình quan heä MOÂ HÌNH MAÏNG (Network model) Muïc tin Döõ lieäu goâïp Baûn ghi MOÂ HÌNH PHAÂN CAÁP (Hierarchical model) Caây (Tree) Ñoaïn (Segment) Tröôøng (Field) Caây caùc ñoaïn (Tree of segments) MOÂ HÌNH QUAN HEÄ (Relational model) Bối cảnh ra đời Tröôùc khi coù RM, döõ lieäu ñöôïc quaûn lyù baèng taäp tin – heä taäp tin vôùi caùc ngoân ngöõ: COBOL, FORTRAN, PASCAL Nhöõng haïn cheá cuûa heä taäp tin: Coù söï lieân keát chaët cheõ giöõa caáu truùc vaät lyù – luaän lyù vaø chöông trình öùng duïng Dö thöøa döõ lieäu quaù lôùn Ngöôøi SD ít coù khaû naêng tieáp caän vaø khai thaùc döõ lieäu MOÂ HÌNH QUAN HEÄ (Relationship model) Quan heä (Relationship) Thuoäc tính (Attribute) Mieàn giaù trò (Domain) Boä trong quan heä (Record) Khoaù vaø thuoäc tính khoaù (Primary key) Thuoäc tính khoâng khóa(None primary key) MOÂ HÌNH THÖÏC THEÅ KEÁT HÔÏP (Entities relationship model) Thöïc theå (Entities) Moái keát hôïp (Join) Quan heä (Relationship) HEÄ QUAÛN TRÒ CSLD (Database Management System) • Một cơ sở dữ liệu (CSDL/ DB: DataBase) là một tập hợp các tập tin có liên quan với nhau, được thiết kế nhằm làm giảm thiểu sự lặp lại dữ liệu. • Một hệ quản trị cơ sở dữ liệu (HQTCSDL/ DBMS: DataBase Management System) là một hệ thống gồm một CSDL và các thao tác trên CSDL đó, được thiết kế trên một nền tảng phần cứng, phần mềm và với một kiến trúc nhất định. • Một hệ cơ sở dữ liệu (HCSDL/ DBS: DataBase System) là một phần mềm cho phép xây dựng một HQTCSDL. Cấu trúc vật lý và luận lý TÍNH CHAÁT HEÄ QUAÛN TRÒ CSDL Ñoäc laäp vaät lyù Ñoäc laäp logic Ngoân ngöõ phi thuû tuïc Quaûn trò döõ lieäu Quaûn lyù dö thöøa döõõ lieäu Töông hôïp döõ lieäu (chuaån hoaù) Chia seû döõ lieäu (duøng chung) An Toaøn döõ lieäu LÒCH SÖÛ HEÄ QUAÛN TRÒ CSDL Ñaàu thaäp nieân 60 theá kyõ XX Giöõa thaäp nieân 60 Thaäp nieân 70 Thaäp nieân 80 Thaäp neân 90 ñeán nay CHÖÙC NAÊNG HEÄ QUAÛN TRÒ CSDL Moâ taû döõ lieäu Tìm kieám döõ lieäu Caäp nhaät döõ lieäu Chuyeån hoaù döõ lieäu Ñieàu khieån tính toaøn veïn döõ lieäu Quaûn lyù giao taùc vaø an toaøn döõ lieäu Chương 2 MÔ HÌNH DỮ LIỆU QUAN HỆ (RELATIONAL MODEL) MỘT SỐ KHÁI NIỆM CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ PHỤ THUỘC HÀM RÀNG BUỘC TOÀN VẸN Ví dụ Caùch quaûn lyù thoâng tin veà sinh vieân ñaêng kyù moân hoïc nhö sau: Ví dụ (tt) Nhöõng haïn cheá treân seõ ñöôïc khaéc phuïc neáu toå chöùc döõ lieäu theo moâ hình sau: MỘ SỐ KHÁI NIỆM THUỘC TÍNH (ATTRIBUTE) MIỀN GIÁ TRỊ CỦA THUỘC TÍNH (DOMAIN) BỘ (TUBLE hay RECORD) Thuộc tính: là tính chất để mô tả đối tượng hay nói cách khác 1 đối tượng được mô tả thông qua thuộc tính của nó. Miền giá trị: Thuộc tính có thể là một chuỗi các ký tự hay là một con số hoặc ngày tháng năm. Ngoài ra có thể còn là giá trị tiền tệ hay một đơn vị đo lường nào đó. Tập hợp các giá trị này gọi là Miền giá trị của thuộc tính. Bộ: Tập hợp các thuộc tính cùng mô tả một đối tượng gọi là Bộ. Như vậy có thể nói bộ là một đối tượng cụ thể. MỘ SỐ KHÁI NIỆM MỘ SỐ KHÁI NIỆM QUAN HỆ (RELATIONSHIP) Lược đồ quan hệ Taäp taát caû caùc thuoäc tính caàn quaûn lyù cuûa moät ñoái töôïng cuøng vôùi moái lieân heä giöõa chuùng ñöôïc goïi laø löôïc ñoà quan heä. Löôïc ñoà quan heä Q vôùi taäp thuoäc tính {A1,A2,...,An} ñöôïc vieát laø Q(A1,A2,...,An). Taäp caùc thuoäc tính cuûa Q ñöôïc kyù hieäu laø Q+. Chaúng haïn löôïc ñoà quan heä sinh vieân (Ñaët teân laø Sv) vôùi caùc thuoäc tính nhö treân laø: Sv(MASV, HOSV,TENSV,NU, NGAYSINH, MALOP, HOCBONG, TINH) QUAN HỆ Khoùa - Khoùa ngoïai cuûa Quan heä Sieââu khoùa Khoùa Khoùa ngoïai Khoùa - Khoùa ngoïai cuûa Quan heä Siêu khoá: là một tập các thuộc tính để phân biệt giữa các đối tượng với nhau trong một quan hệ. Khoá: Trong trường hợp siêu khoá chỉ bao gồm 1 thuộc tính thì gọi là khoá. Các thuộc tính trong siêu khoá gọi là thuộc tính khoá. Thuộc tính khoá thường đóng vai trò liên kết giữa các quan hệ với nhau. Khoá ngoại: Trong trường hợp 2 quan hệ liên kết với nhau thông qua 1 thuộc tính nếu thuộc tính này đóng vai trò là khoá chính trong một quan hệ đã xác định thì nó chính là khoá ngoại của quan hệ còn lại. Ví dụ 1 Đường giao thông của huyện Hóc Môn được phân thành 4 cấp: Đường quốc lộ, đường tỉnh lộ, đường liên xã và đường hẽm. Đường quốc lộ có lộ giới 60m; đường tỉnh lộ có lộ giới 40m; đường liên xã có lộ giới 15m và đường hẽm có lộ giới 8m. Mỗi cấp đường cũng có kết cấu bề mặt khác nhau; Quốc lộ và tỉnh lộ có kết cấu bê-tông nhựa; đường liên xã và hẽm thường là đường cấp phối hoặc đường đất. Ví dụ 2 Theo số liệu thống kê năm 2005 Huyện Hóc Môn có 02 tuyến đường quốc lộ với chiều dài trên 40km; 06 tuyến đường tỉnh lộ với chiều dài trên 80km; 15 tuyến đường liên xã và đường nội bộ với chiều dài 150km và 60 con hẽm với tổng chiều dài trên 30km Ví dụ 3 Công ty A kinh doanh rất nhiều mặt hàng thuộc nhiều chủng loại khác nhau, mỗi mặt hàng đều có mã riêng tương ứng với một mức giá nhất định. Mỗi nhân viên công ty được giao cho phụ trách một mặt hàng nhất định, các nhân viên được quản lý thông qua mã nhân viên. Các thông tin mà công ty quản lý về nhân viên bao gồm: mã nhân viên, tên nhân viên, ngày sinh, địa chỉ, và mặt hàng mà nhân viên đó phụ trách. Mỗi mặt hàng đều có tên và mã mặt hàng cùng với xuất xứ nguồn gốc của mặt hàng đó mà nhân viên cần biết để nhập hàng khi có yêu cầu. CAÙC PHEÙP TOAÙN ÑAÏI SOÁ QUAN HEÄ Caùc pheùp toaùn ñaïi soá quan heä laø pheùp toaùn maø taát caû caùc heä quaûn trò cô sôû döõ lieäu ñeàu caøi ñaët cuï theå baèng caùc leänh theo ngoân ngöõ rieâng. Caùc pheùp toaùn naøy ñöôïc thöïc hieän tröïc tieáp treân caùc boä cuûa caùc quan heä löu tröõ trong maùy tính. Vieäc toå chöùc caùc quan heä vaø caùc boä cuûa noù coù theå ñöôïc xem nhö bieåu dieãn töông öùng moät – moät qua caùc teäp(file) vaø caùc baûn ghi(Records). Pheùp cheøn(Insert) Muïc ñích cuûa pheùp cheøn laø theâm moät boä vaøo moät quan heä nhaát ñònh. Keát quaû cuûa pheùp cheøn coù theå gaây ra moät soá sai soùt vôùi nhöõng lyù do sau ñaây: - Boä môùi ñöôïc theâm vaøo khoâng phuø hôïp vôùi löôïc ñoà quan heä cho tröôùc. - Moät soá giaù trò cuûa moät soá thuoäc tính naèm ngoaøi mieàn giaù trò cuûa thuoäc tính ñoù. - Giaù trò khoùa cuûa boä môùi coù theå laø giaù trò ñaõ coù trong quan heä ñang löu tröõ. Do ñoù tuøy töøng quan heä cuï theå maø coù caùch khaéc phuïc khaùc nhau. Pheùp chieáu (project) Cho Q laø moät quan heä vôùi taäp thuoäc tính Q+, Q+=A1,A2,...,An, X Q+: X laø moät taäp con caùc thuoäc tính cuûa Q. Pheùp chieáu Q leân taäp thuoäc tính X laø pheùp trích coät töø Q goàm nhöõng thuoäc tính coù trong X, caùc boä laø moät phaàn cuûa caùc boä trong Q, ñöôïc kyù hieäu Q[X] Ví duï: Ngöôøi ta chæ caàn bieát MA_LD (maõ loïai ñaát) vaø thôøi haïn söû duïng cuûa loaïi ñaát ñoù (TH_SD), thöïc hieän pheùp chieáu taäp con goàm caùc thuoäc tính MA_LD vaø TH_SD leân quan heä LOAIDAT. Keát quaû ta ñöôïc moät quan heä vôùi hai thuoäc tính MA_LD vaø TH_SD, hai thuoäc tính naøy ñeàu naèm trong quan heä LOAIDAT. Pheùp chieáu (ví duï) Pheùp choïn:(select) Cho Q laø moät quan heä vôùi taäp thuoäc tính Q+, Q+=A1,A2,...,An, goïi D(x) laø moät ñieàu kieän xaùc ñònh treân Q+. Pheùp choïn töø Q nhöõng boä thoûa D(x) laø moät quan heä Q' vôùi caùc phaàn töû (boä) thuoäc Q vaø thoûa ñieàu kieän D(x). Q' = q /q Q /q thoûa D(x) Noùi caùch khaùc pheùp choïn thöïc hieän Q theo ñieàu kieän D(x) laø pheùp trích caùc boä töø Q thoûa ñieàu kieän D(x) ñöôïc kyù hieäu Q:D(x) Ví duï:Xaùc ñònh nhöõng thöûa coù dieän tích >10.000 m2 trong quan heä DANGKY Thöïc hieän pheùp choïn vôùi ñieàu kieän D_TICH>10.000 treân quan heä DANGKY nhöng caùc phaàn töû trong quan heä môùi chæ coù nhöõng boä coù thuoäc tính D_TICH> 10.000 (trong MAPINFO söû duïng leänh SELECT). Pheùp choïn (ví duï) Pheùp tích Ñeà-cac (cartesian product) Cho hai quan heä Q1(A1,A2,...,Am) vaø Q2( B1,B2,...,Bn), tích Ñeà-cac cuûa hai quan heä Q1 vaø Q2 laø quan heä Q3 coù caùc thuoäc tính laø hôïp caùc thuoäc tính Q1 vaø Q2, caùc n boä laø noái cuûa caùc n boä trong Q1 vaø Q2. Kyù hieäu: Q3= Q1* Q2=q3=(q1,q2)Q3/q1Q1 q2Q2, Q3 coù m+n ngoâi (coù m+n thuoäc tính) Pheùp tích Ñeà-cac (ví duï) Pheùp haïn cheá moät quan heä (Restriction) Pheùp haïn cheá moät quan heä laø pheùp toaùn moät ngoâi cho keát quaû laø moät quan heä coù caùc boä thoûa maõn moät ñieàu kieän haïn cheá. Ñieàu kieän haïn cheá coù theå aùp duïng treân moät hoaëc nhieàu thuoäc tính cuûa quan heä. Coù hai chuaån vieát veà ñieàu kieän haïn cheá cuûa moät quan heä: Chuaån vaø (AND) vaø chuaån hoaëc (OR). Haïn cheá cuûa quan heä Q baèng tieâu chuaån T laø quan heä Q' coù cuøng löôïc ñoà (soá ngoâi) trong ñoù caùc n boä thoûa maõn tieâu chuaån T. Ví duï: Trong quan heä THUA xaùc ñònh nhöõng thöûa coù dieän tích >1000 vaø loïai ñaát laø noâng nghieäp. Quan heä môùi töø ñieàu kieän treân seõ laø caùc quan heä coù n boä coù ñaày ñuû nhöõng thuoäc tính cuûa quan heä THUA caùc boä thoûa ñieàu kieän DT> 1000 LD ="NN" Pheùp lieân keát:(join) Cho hai quan heä Q1(A1,A2,...,Am) vaø Q2( B1,B2,...,Bn) vaø hai thuoäc tính Ai A1,A2,...,Am ; Bj B1,B2,...,Bn sao cho MGT (Ai)=MGT(Bj) vaø pheùp lieân keát  ,>=,=, Pheùp lieân keát thöïc hieän treân hai quan heä Q1 vaø Q2 cuøng vôùi caùc thuoäc tính Ai vaø Bj laø pheùp tích Ñeà-cac cuûa hai quan heä Q1 vaø Q2. taïo ra moät quan heä môùi coù caùc thuoäc tính vaø caùc n boä laø gheùp noái caùc n boä vaø caùc thuoäc tính cuûa hai quan heä Q1 vaø Q2., chæ laáy ra nhöõng n boä thoûa maõn ñieàu kieän haïn cheá Ai vaø Bj Pheùp lieân keát(ví duï) Ai = Dj Câu lệnh SQL Truy vấn chọn Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]] From table1 [Inner Join table2 On table1.field1 θ table2.field2] ... Where dieuKien] Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]]; Distinct: loaïi boû caùc boä truøng trong quan heä ñích Top n[%]: Choïn n hay n% maãu tin ñaàu tieân. table: Teân table hay query chöùa döõ lieäu. field: Teân field hay moät bieåu thöùc. Alias: Tröôøng hôïp field laø moät bieåu thöùc thì laø moät teân môùi cuûa bieåu thöùc. Inner Join: moãi maãu tin cuûa table1 noái vôùi baát kyø maãu tin naøo cuûa table2 coù döõ lieäu cuûa field1 thoûa maõn ñieàu kieän so saùnh vôùi döõ lieäu cuûa field2 taïo thaønh maãu tin cuûa query. ñieàu kieän: Bieåu thöùc maø döõ lieäu maãu tin phaûi thoûa maõn Chuù yù: Khi neâu roõ thuoäc tính ñoù thuoäc veà quan heä naøo ta vieát theo cuù phaùp teânQuanHeä.teânThuoäcTính. Truy vấn chọn – ví dụ Truy vấn nhóm Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]] From table1 [Inner Join table2 On table1.field1 θ table2.field2] ... [Where dieuKienLocMauTinNguon] [Group By fieldGroupBy[,fieldGroupBy[,...]] [Having dieuKienLocMauTinTongHop] [Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]]; ñieàuKieänLoïcMaãuTinNguoàn: ñieàu kieän maø caùc maãu tin nguoàn phaûi thoûa maõn (pheùp choïn) fieldGroupBy: teân field maø caùc maãu tin coù döõ lieäu gioáng nhau treân aáy ñöôïc xeáp vaøo cuøng nhoùm. ñieàuKieänLoïcMaãuTinToångHôïp: ñieàu kieän maø caùc maãu tin toång hôïp phaûi thoûa maõn (pheùp choïn) Truy vấn nhóm – ví dụ Ví du: Ñeám soá löôïng sinh vieân nöõ cuûa moãi khoa SELECT Kh.MAKHOA,TENKHOA,COUNT(Kh.MAKHOA) AS SOLUONG FROM (Sv Inner Join Lop On Sv.MALOP = LOP.MALOP) INNER JOIN Kh On lop.MAKHOA=Kh.MAKHOA WHERE NU GROUP BY Kh.MAKHOA,TENKHOA; Truy vấn lồng nhau Laø nhöõng caâu leänh truy vaán maø trong thaønh phaàn WHERE hay HAVING coù chöùa theâm moät caâu leänh Select khaùc. Caâu leänh select khaùc naøy goïi laø subquery. Ta loàng caâu Select vaøo phaàn Where hay Having theo cuù phaùp sau: o bieuthuc toanTuSoSanh [ANY | ALL | SOME] (cauLenhSQL) ANY, SOME laø baát kyø, ALL laø taát caû Caùc maãu tin cuûa query chính thoûa maõn toaùn töû so saùnh vôùi baát kyø/ taát caû maãu tin naøo cuûa subquery o bieuThuc [NOT] IN (cauLenhSQL) Caùc maãu tin cuûa query chính coù giaù trò baèng vôùi moät giaù trò trong subquery o [NOT] EXISTS (cauLenhSQL). Caùc maãu tin cuûa query chính thoûa maõn khi subquery coù maãu tin Truy vấn lồng nhau – ví dụ Ví du: Laäp danh saùch sinh vieân coù hoïc boång cao nhaát SELECT * FROM Sv WHERE HOCBONG>=ALL(SELECT HOCBONG FROM SV); Ví du: Laäp danh saùch sinh vieân coù ñieåm thi moân CSDL cao nhaát SELECT SV.MASV,HOTEN,NU,NGAYSINH,DIEMTHI FROM sv Inner Join kq On Sv.MASV = Kq.MASV WHERE MAMH='CSDL' AND DIEMTHI >= ALL (SELECT DIEMTHI FROM KQ WHERE MAMH='CSDL'); Hieåu vaø vaän duïng toát leänh truy vaán döõ lieäu laø moät vieäc laøm cöïc kyø caàn thieát ñeå taïo ra caùc keát quaû cho baùo caùo, thoáng keâ soá lieäu. Chương 2 MỘT SỐ KHÁI NIỆM CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ RÀNG BUỘC TOÀN VẸN PHỤ THUỘC HÀM Ràng buộc toàn vẹn (Entegrity constraint) Trong moãi CSDL luoân toàn taïi nhieàu moái lieân heä giöõa caùc thuoäc tính, giöõa caùc boä. Söï lieân heä naøy coù theå xaûy ra trong moät löôïc ñoà quan heä hoaëc trong caùc löôïc ñoà quan heä cuûa moät cô sôû döõ lieäu. Caùc moái lieân heä naøy laø nhöõng ñieàu kieän baát bieán maø taát caû caùc boä cuûa nhöõng quan heä coù lieân quan trong CSDL ñeàu phaûi thoûa maõn ôû moïi thôøi ñieåm. Nhöõng ñieàu kieän baát bieán ñoù ñöôïc goïi laø raøng buoäc toaøn veïn. Trong thöïc teá raøng buoäc toaøn veïn laø caùc quy taéc quaûn lyù ñöôïc aùp ñaët treân caùc ñoái töôïng cuûa theá giôùi thöïc. Ví duï 1: Xeùt cô sôû döõ lieäu veà quaûn lyù sinh vieân, töø CSDL naøy ta coù theå xaùc ñònh ñöôïc moät soá raøng buoäc toøan veïn sau: R1: khoâng theå coù >1 sinh vieân coù cuøng MASV R2: Tuoåi sinh vieân phaûi >= 18 R3: Giôùi tính ( phaùi) phaûi laø nam hoaëc nöõ. Ví duï 2: Xeùt CSDL veà ñaêng kyù ñaát ñai ta coù caùc raøng buoäc toøan veïn sau: R1: Soá thöûa phaûi laø duy nhaát trong moät tôø baûn ñoà. R2: Dieän tích soá thöûa phaûi >0. R3: Thôøi haïn söû duïng phaûi >50 naêm. R4: Loïai ñaát phaûi laø moät trong caùc loïai ñaát theo qui ñònh cuûa Luaät ÑÑ. Kiểm tra Ràng buộc toàn vẹn Trong hoà sô phaân tích thieát keá heä thoáng CSDL caàn phaûi xaùc ñònh ñaày ñuû caùc raøng buoäc toøan veïn vaø caàn phaûi coù thuû tuïc cuï theå ñeå kieåm tra caùc raøng buoäc toøan veïn moãi khi noù bò vi phaïm. Raøng buoäc toøan veïn coù theå ñöôïc kieåm tra theo hai caùch: + Caùch 1: Kieåm tra ngay khi nhaäp döõ lieäu: caùch naøy thöôøng söû duïng ñoái vôùi vieäc kieåm tra ñôn giaûn, ít toán thôøi gian. Ví duï: kieåm tra mieàn giaù trò, giôùi tính... + Caùch 2: Kieåm tra ñònh kyø hoaëc khi caàn; caùch naøy thöôøng söû duïng vôùi vieäc kieåm tra phöùc taïp toán nhieàu thôøi gian. Ví duï kieåm tra veà thôøi haïn söû duïng toång dieän tích trong ranh giôùi haønh chính. Raøng buoäc toøan veïn noùi leân caùc quy taéc quaûn lyù cuûa heä thoáng caàn tin hoïc hoùa. Các yếu tố của RBTV 1. Điều kiện Ñöôïc moâ taû moät caùch hình thöùc baèng ngoân ngöõ töï nhieân hoaëc ñaïi soá. Ví duï: Cho hai quan heä: LOAIDAT( MA_LD, TEN_FAO, TEN_VN, KY_HIEU) R1:  mald1  LOAIDAT  mald2  LOAIDAT  loaidat1  loaidat2: mald1.MA_LD  mald2.MA_LD. (hai loaïi ñaát khaùc nhau thì coù MA_LD khaùc nhau) Các yếu tố của RBTV 2) Boái caûnh: Boái caûnh cuûa moät raøng buoäc toaøn veïn laø nhöõng quan heä maø raøng buoäc ñoù coù hieäu löïc hay noùi moät caùch khaùc, ñoù laø nhöõng quan heä caàn phaûi ñöôïc kieåm tra raøng buoäc toaøn veïn. Boái caûnh cuûa moät raøng buoäc toaøn veïn coù theå laø moät hoaëc nhieàu quan heä. .Ví duï: Xeùt CSDL veà ñaêng kyù ñaát ñai bao goàm caùc thöïc theå (quan heä) sau: LOAIDAT( MA_LD, TEN_FAO, TEN_VN, KY_HIEU) DOITUONGSD(MA_DTSD, TEN_DTSD, NGAY_DK) HIENTRANG( KY_HIEU, MD_SD) DANGKY( SOTO_BD, SO_THUA, MA_LD, MA_DTSD, KY_HIEU, D_TICH, THOIHAN_SD). Vôùi caùc RBTV sau: Các yếu tố của RBTV R1: Ñieàu kieän: nhöõng loïai ñaát khaùc nhau seõ ñaùnh MA_LD khaùc nhau Boái caûnh: trong moät quan heä R2: Ñieàu kieän: Caùc ñoái töôïng söû duïng khaùc nhau seõ ñaùnh MA_DTSD khaùc nhau Boái caûnh: trong moät quan heä R3: Ñieàu kieän: Muïc ñích söû duïng ñaát khaùc nhau seõ ñaùnh KY_HIEU khaùc nhau Boái caûnh: Trong moät quan heä R4: Ñieàu kieän: trong cuøng moät tôø baûn ñoà SO_THUA phaûi khaùc nhau Boái caûnh: trong cuøng moät quan heä R5: Ñieàu kieän: MA_LD trong DANGKY phaûi coù trong LOAIDAT Boái caûnh: Trong hai quan heä DANGKY vaø LOAIDAT R6: Ñieàu kieän: MA_DTSD trong DANGKY phaûi coù trong DOITUONGSD Boái caûnh: Trong hai quan heä DANGKY vaø DOITUONGSD Taàm aûnh höôûng 1) Raøng buoäc toøan veïn coù boái caûnh laø moät quan heä (treân moät quan heä) a.) Raøng buoäc toøan veïn veà mieàn giaù trò: Raøng buoäc naøy aûnh höôûng ñeùn nhöõng thuoäc tính veà mieàn giaù trò. b.) Raøng buoäc toøan veïn lieân thuoäc tính: Laø raøng buoäc toøan veïn ñöôïc xaùc ñònh treân nhieàu thuoäc tính. c.) Raøng buoäc toøan veïn lieân boä: Laø loïai raøng buoäc toøan veïn xaùc ñònh lieân quan ñeán nhieàu boä trong moät quan heä, khi caàn kieåm tra ñeán raøng buoäc toøan veïn loïai naøy ta phaûi xeùt ñeán nhieàu boä trong quan heä, thöôøng gaëp nhaát laø khoùa vaø phuï thuoäc haøm (R2 trong Ví duï 2, phaàn a) d.) Raøng buoäc toøan veïn khoùa noäi: Ñònh nghóa khoùa : Khoùa cuûa moät quan heä laø taäp toái thieåu cuûa caùc thuoäc tính maø moãi tröôøng hôïp cuï theå cuûa noù xaùc ñònh duy nhaát moät boä trong quan heä. Phaân loaïi RBTV Phaân loaïi RBTV 2) Raøng buoäc toøan veïn coù boái caûnh treân nhieàu quan heä: a.) Phuï thuoäc toàn taïi: RBTV kieåu phuï thuoäc toàn taïi laø söï toàn taïi cuûa moät boä trong quan naøy phuï thuoäc vaøo söï toàn taïi cuûa 1 boä trong quan heä khaùc. Thöôøng gaëp nhaát laø do söï hieän dieän cuûa khoùa ngoïai hoaëc loàng khoùa. b) RBTV lieân boä vaø lieân quan heä: Laø RBTV lieân quan ñeán moät nhoùm caùc boä giöõa caùc quan heä – ví duï haïng möùc ñaát. c) RBTV lieân boä, lieân thuoäc tính vaø lieân quan heä: Laø RBTV maø giaù trò cuûa moät thuoäc tính lieân quan ñeán caùc thuoäc tính khaùc nhau cuûa nhieàu boä treân caùc quan heä – ví duï veà ñònh giaù ñaát. Chương 2 MỘT SỐ KHÁI NIỆM CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ RÀNG BUỘC TOÀN VẸN PHỤ THUỘC HÀM Phụ thuộc hàm (Functional dependency) Phuï thuoäc haøm laø söï bieåu dieãn raøng buoäc toaøn veïn döôùi hình thöùc toaùn hoïc ñeå baûo ñaûm thoâng tin khoâng bò toån thaát khi phaân raõ hoaëc keát noái giöõa caùc quan heä. Cho Q laø moät quan heä Q+ laø taäp thuoäc tính cuûa Q; X,Y Q+, XY