Người sử dụng hay chương trình ứng dụng có thể hoàn toàn không được biết về cấu trúc tổ chức lưu trữ thông tin trong CSDL, thậm chí ngay cả tên gọi của các loại dữ liệu hay tên gọi của c
TọNG QUAN VÀ CĂ Sà Dỵ LIịU
HỆ THỐNG TẬP TIN CỔ ĐIỂN
Việc tin học hóa trong các đơn vị kinh tế, hành chánh thường thực hiện độc lập với nhau về thời gian và nội dung
Thí dụ : tại 1 trường đại học, phòng Tổ chức đã tổ chức lưu trữ thông tin về tất cả các CBCNV của trường
Trong khi đó, ở từng Khoa của trường, do yêu cầu tổ chức giảng dạy và nghiên cứu của Khoa cũng đã tổ chức lưu trữ hồ sơ của các giáo sư, cán bộ giảng dạy của Khoa mình Thông tin lưu trữ một phần được trích ra từ hồ sơ gốc của phòng Đào tạo và có bổ sung theâm 1 soá thoâng tin caàn thieát rieâng
2 Nhận xét : a) Ưu điểm : không lớn và không đáng kể a.1 Tính độc lập cao, có thể triển khai song song, nối tiếp hay gối đầu a.2 Thời gian triển khai ngắn a.3 Không đòi hỏi ngay khả năng đầu tư lớn về vật chất , nhân sự a.4 Khả năng đáp ứng nhanh chóng kịp thời (do thông tin được khai thác chỉ phục vụ cho muùc ủớch heùp) b) Khuyeỏt ủieồm : b.1 Truứng laộp thoõng tin neõn gaõy ra : đ Lãng phí : Cùng 1 thông tin phải nhập nhiều lần
Vấn đề bảo trì khi có thay đổi
Lưu trữ ị Thiếu nhất quán của dữ liệu : tại 1 thời điểm, thông tin về 1 cán bộ không nhất quán b.2 Thông tin đã lưu trữ không thể chia sẻ giữa các hệ thống Vì vậy không có quản lý giao dịch và xử lý đồng thời giữa nhiều người dùng
Thí dụ : không thể chia sẻ những thông tin riêng của Khoa cho Phòng Đào tạo b.3 Khó mở rộng hệ thống hoặc kết nối các hệ thống
Thí dụ : cùng 1 người nhưng có thể tồn tại nhiều mã số khác nhau Các mã số này hoàn toàn khác nhau về cấu trúc lẫn nội dung của bộ mã
Giả sử Phòng đào tạo gán mã số theo dạng AutoNumber
Trong khi đó Khoa lại áp dụng mã số dạng : b.4 Không có cơ chế phục hồi (phụ thuộc phần lớn vào hệ điều hành) b.5 Chi phí bảo hành cao.
CƠ SỞ DỮ LIỆU
Từ những khuyết điểm trên của hệ thống tập tin cổ điển, người ta đưa ra phương pháp tổ chức dữ liệu mới là Cơ sở dữ liệu
Khái niệm : Cơ sở dữ liệu có thể được xem là tập hợp có cấu trúc của thông tin, được lưu trữ trên các thiết bị trữ tin (như băng từ, dĩa từ, ) để có thể thỏa mãn yêu cầu khai thác thông tin đồng thời cho nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích khác nhau b) ệu ủieồm cuỷa CSDL : b.1 Về bản thân thông tin lưu trữ : đ Giảm thiểu sự trùng lắp thông tin đến mức thấp nhất, do đó giúp:
Đảm bảo tính nhất quán
Tính toàn vẹn của dữ liệu ị Đảm bảo dữ liệu có thể được truy xuất theo nhiều cách khác nhau ĩ Khả năng chia sẻ thông tin cho nhiều người sử dụng và nhiều ứng dụng khác nhau b.2 Về hiệu quả sử dụng thông tin: đ Chia sẻ thông tin cho nhiều người dùng khác nhau ị Tiết kiệm tài nguyên ĩ Tăng hiệu quả khai thác c) Những vấn đề nảy sinh : c.1 Cần xác định rõ trách nhiệm đối với: đ Sự an toàn của dữ liệu ị Tính chính xác của dữ liệu
Cụ thể là phải xác định:
Ai có trách nhiệm cập nhật, chỉnh sửa?
Những thông tin nào được phép sửa
Nếu không, có thể sẽ nảy sinh trường hợp : người biết thì không được quyền sửa, người có quyền sửa thì lại không biết Sau 1 quá trình sử dụng thông tin lưu trữ trở nên lỗi thời, không ai còn muốn sử dụng c.2 Cần một cơ chế bảo mật hay phân quyền khai thác thông tin của người sử dụng
Hệ thống các chương trình ứng dụng (mỗi ứng dụng được biểu diễn bởi 1 hình chữ nhật) khai thác CSDL
Người khai thác CSDL n Chửụng trỡnh ứng dụng m
Do có nhiều người được phép khai thác đồng thời nên cần phải có một cơ chế bảo mật và phân quyền khai thác CSDL
Hiện nay, cơ chế này có thể được cung cấp bởi các hệ điều hành nhiều người dùng (multi.users), hệ điều hành mạng cục bộ (Novell Netwarw, Windows for WorkGroup, WinNT, ) hoặc do các hệ quản trị CSDL c.3 Giải quyết sự tranh chấp trong truy cập dữ liệu khi có nhiều người dùng cùng truy cập đến 1 nguồn dữ liệu Tức là xác định độ ưu tiên truy cập dựa trên: đ Quyền hạn khai thác của từng người sử dụng (ưu tiên cho người có quyền khai thác cao hơn) ị Đặc tính của sự truy cập (phân loại biến cố, phân loại truy cập) ĩ Thời điểm truy cập (ai có yêu cầu truy xuất trước thì có quyền truy nhập dữ liệu trước)
Theo cơ chế lập lịch truy xuất hay các cơ chế khóa, c.4 CSDL cũng có một chu kỳ sống tương tự như một phần mềm, bao gồm nhiều giai đoạn phân tích, thiết kế, cài đặt, khai thác, bảo trì Trong từng giai đoạn đều đòi hỏi người phân tích thiết kế có chuyên môn, nhiều kinh nghiệm
2 Các đối tượng sử dụng CSDL: ü Người sử dụng không chuyên về lĩnh vực tin học và CSDL : CSDL cần có các công cụ để những người này có thể sử dụng, khai thác CSDL khi cần thiết ý Chuyên viên tin học biết khai thác CSDL: những người này có thể xây dựng các ứng dụng khác nhau phục vụ cho nhiều mục đích khác nhau trên CSDL þ Người quản trị CSDL: là những người hiểu biết về tin học, về các hệ quản trị CSDL và hệ thống máy tính Họ là người tổ chức CSDL (khai báo cấu trúc CSDL, ghi nhận các yêu cầu bảo mật cho các dữ liệu cần bảo vệ, ) do đó họ phải nắm rõ các vấn đề kỹ thuật về CSDL để có thể phục hồi dữ liệu khi có sự cố Họ là những người cấp quyền hạn khai thác CSDL, do vậy họ có thể giải quyết được các vấn đề tranh chấp dữ liệu, nếu có
3 Các mức trừu tượng hóa của CSDL: có 3 mức a) Vật lý : và được lưu trữ như thế nào? ở đâu (đĩa từ, băng từ, track, sector
nào)? Cần các chỉ mục gì? Việc truy xuất là tuần tự (Sequential
Access) hay ngẫu nhiên (Random Access) đối với từng loại dữ liệu
Những người hiểu và làm việc với CSDL tại mức này là người quản trị CSDL (Administrator), chuyên viên tin học b) Quan niệm (mức logic): cho biết :
Tại mức này sẽ giải quyết các câu hỏi: ü CSDL cần phải lưu giữ bao nhiêu loại dữ liệu? Đó là những dữ liệu gì? ý Mối quan hệ giữa các loại dữ liệu này như thế nào?
Từ thế giới thực (Real Universe), các nhà khoa học máy tính sẽ triển khai nghiên cứu, khảo sát và phân tích dữ liệu Dữ liệu được thu thập và xử lý sẽ được đưa vào hệ thống cơ sở dữ liệu (CSDL) Những người sẽ đảm nhận vai trò quản trị CSDL sẽ phối hợp chặt chẽ với các nhà khoa học máy tính để đảm bảo dữ liệu được quản lý và sử dụng hiệu quả.
Theồ hieọn Quan nieọm Vật lý những loại thông tin gì được cho là cần thiết phải đưa vào CSDL, đồng thời mô tả rõ mối liên hệ giữa các thông tin này c) Thể hiện (còn gọi là mức ngoài): là mức của người sử dụng và các chương trình ứng dụng Làm việc tại mức này có các nhà chuyên môn, các kỹ sư tin học và những người sừ dụng không chuyên
Người dùng hoặc ứng dụng có thể "nhìn" cơ sở dữ liệu (CSDL) từ các góc độ khác nhau thông qua khái niệm "khung nhìn" (View) Khung nhìn có thể hiển thị toàn bộ hoặc một phần CSDL, hoặc các thông tin được tổng hợp từ CSDL hiện có Người dùng hoặc ứng dụng không nhất thiết phải biết về cấu trúc tổ chức dữ liệu hoặc tên gọi của các loại dữ liệu và thuộc tính Họ chỉ có thể làm việc với một phần CSDL theo "khung nhìn" được định nghĩa bởi người quản trị hoặc ứng dụng.
4 Hệ quản trị CSDL (Database Management System – DBMS): a) Nhu caàu : Để bảo đảm các yêu cầu về bảo mật, cạnh tranh truy xuất, an toàn dữ liệu, cần thiết phải có những phần mềm chuyên dùng thường được gọi tên là hệ quản trị CSDL b) Khái niệm về hệ quản trị CSDL : ü Các hệ quản trị CSDL có nhiệm vụ hổ trợ một cách tích cực cho các nhà phân tích.thiết kế CSDL và những người khai thác CSDL ý Các hệ CSDL cũng có cơ chế riêng để giải quyết các vấn đề tranh chấp dữ liệu þ Có một số hệ CSDL cung cấp cho người sử dụng những cơ chế bảo mật và phục hồi dữ liệu khi có sự cố xảy ra c) Các hệ quản trị CSDL : hiện nay có những hệ quản trị CSDL như : Oracle, SQL
Server, Paradox, MS Access, Visual Foxpro, Foxpro, DB2, Sybase, Paradox, Informix, với chất lượng khác nhau d) Các tiêu chuẩn để đánh giá một hệ quản trị CSDL: d.1 Phải có ngôn ngữ mô tả dữ liệu (Data Definition Language DDL) cho phép : đ Khai báo cấu trúc của dữ liệu ị Mô tả các mối liên hệ của dữ liệu
Các ngôn ngữ mô tả này thường được xây dựng dựa trên 1 trong các loại mô hình dữ liệu sẽ được đề cập ở phần V d.2 Phải có ngôn ngữ thao tác dữ liệu (Data Manipulation Language DML) cho phép người dùng có thể : đ Cập nhật dữ liệu (thêm, sửa, xóa) ị Khai thác dữ liệu theo nhiều mục đích khác nhau d.3 Ngôn ngữ truy vấn dữ liệu, hay ngôn ngữ hỏi đáp có cấu trúc (Structured Query
Language SQL) cho phép những người khai thác CSDL (chuyên nghiệp hoặc không chuyên) sử dụng để truy vấn các thông tin cần thiết trong CSDL d.4 Ngôn ngữ quản lý dữ liệu (Data Control Language DCL) cho phép những người quản trị hệ thống: đ Thay đổi cấu trúc của các bảng dữ liệu ị Khai báo bảo mật thông tin và cấp quyền hạn khai thác CSDL cho người sử dụng ĩ Có biện pháp giải quyết tranh chấp d.5 Cho phép phục hồi dữ liệu khi có sự cố (vì do tính tập trung nên khi có sự cố sẽ ảnh hưởng rất lớn).
CÁC MÔ HÌNH DỮ LIỆU
1 Khái niệm: ü Là sự biểu diễn dữ liệu ở mức quan niệm (sự trừu tượng hóa) ý Mỗi loại mô hình đặc trưng cho một phương pháp tiếp cận dữ liệu của người phân tích.thieát keá
2 Phân loại: a) Mô hình dữ liệu mạng (Network Data Model) : a.1 Mô hình này còn được gọi tắt là mô hình mạng hoặc mô hình lưới (Network Model) là mô hình được biểu diễn bởi một đồ thị có hướng có sử dụng các khái niệm chính là : đ Loại mẫu tin (Record Type): được đặc trưng cho 1 đối tượng riêng biệt, được ký hiệu bằng 1 hình chữ nhật Trong đồ thị biểu diễn mô hình mạng mỗi loại mẫu tin được biểu diễn bởi một hình chữ nhật
Thớ duù nhử : KHOA, SINH VIEN, MON HOC, ị Mẫu tin (Record): là thể hiện của 1 loại mẫu tin (Instance) được gọi là bản ghi
Thí dụ : loại mẫu tin KHOA có các mẫu tin là thông tin về các Khoa có trong Trường ĩ Loại liên hệ (Set Type):
Là sự liên kết giữa 1 loại mẫu tin chủ và 1 loại mẫu tin thành viên, được ký hiệu bằng
1 hình bầu dục với các mũi tên đi từ loại mẫu tin chủ đến loại mẫu tin thành viên
Trong mô hình dữ liệu này có 1 số loại liên hệ sau :
1:n : 1 mẫu tin chủ có liên hệ với nhiều mẫu tin thành viên
1:1 : 1 mẫu tin chủ có liên hệ với 1 mẫu tin thành viên
n:1 : nhiều mẫu tin chủ có liên hệ với 1 mẫu tin thành viên
Đệ quy : (Recursive): Một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành viên với chính nó
BAN có goàm có thân nhaân
NHAÂN VIEÂN nứ1 a.2 Mô hình dữ liệu mạng tương đối đơn giản, dễ sử dụng nhưng nó không thích hợp trong việc biểu diễn các CSDL có quy mô lớn bởi trong một đồ thị có hướng khả năng diễn đạt ngữ nghĩa của dữ liệu, nhất là các dữ liệu và các mối liên hệ phức tạp của dữ liệu trong thực tế là rất hạn chế a.3 Nhận xét về loại mô hình mạng : đ Ưu : tương đối đơn giản, dễ sử dụng ị Nhược : không thích hợp trong việc biểu diễn các CSDL có quy mô lớn bởi trong một đồ thị có hướng khả năng diễn đạt ngữ nghĩa của dữ liệu, nhất là các dữ liệu và các mối liên hệ phức tạp của dữ liệu trong thực tế là rất hạn chế b Mô hình dữ liệu quan hệ (Relational data model) :
Mô hình cơ sở dữ liệu quan hệ đầu tiên ra đời nhờ công trình của Tiến sĩ E.F.Codd, được công bố vào tháng 7 năm 1970 trên tạp chí "A Relational Model of Data for Large Shared Data Banks".
Mô hình này : ü Sử dụng các khái niệm: thuộc tính (Attribute), quan hệ (Relation), lược đồ quan hệ (Relation Schema), bộ (Tuple), khóa (Key) ý Hiện được áp dụng rộng rãi trong việc phân tích và thiết kế CSDL vì nó được xây dựng trên cơ sở lý thuyết rất vững chắc
Mô hình này sẽ được bàn sâu trong các chương sau c Mô hình thực thể kết hợp (Entity Relationship Model): c.1 Do P.P.Chen đề xuất vào năm 1976, sau đó vào khoảng năm 1980 được mở rộng thêm với 1 số dạng đặc biệt của loại thực thể và mối kết hợp như "loại thực thể chuyên biệt hóa" (Specialized Entity) và "mối kết hợp đệ quy" (Recursive RelationShip) c.2 Các khái niệm chính trong mô hình này gồm : đ Thực thể : là 1 đối tượng hoặc 1 khái niệm có thể nhận biết 1 cách duy nhất (tương tự như khái niệm mẫu tin của mô hình dữ liệu mạng và mô hình dữ liệu phân cấp)
Thí dụ : Các record trong các loại thực thể SINHVIEN, KHOA, MONHOC
Người ta có thể chia thực thể thành 2 loại là:
Là thực thể mà sự tồn tại của nó phụ thuộc vào sự tồn tại của thực thể khác
Thực thể yếu Thực thể mà nó phụ thuộc
Chi tiết hóa đơn Hóa đơn Các thân nhân Nhân viên
Ký hiệu : đường viền kẻ đôi
Thí dụ : Chi tiết hóa đơn
Là thực thể mà có 1 hay nhiều thực thể yếu phụ thuộc vào sự tồn tại của nó
Thực thể mạnh Thực thể yếu phụ thuộc vào nó
Hóa đơn Chi tiết hóa đơn Nhân viên Các thân nhân
Ký hiệu : đường viền kẻ đơn
Thí dụ : Hóa đơn ị Loại thực thể : là 1 loại đối tượng hoặc khái niệm tồn tại độc lập (tương tự như khái niệm loại mẫu tin của mô hình dữ liệu mạng và mô hình phân cấp)
Thí dụ : SINHVIEN, XE, là cụ thể
Thời khóa biểu, bán hàng, là khái niệm ĩ Thuộc tính của loại thực thể: các đặc tính riêng biệt của loại thực thể
Thí dụ : MaSV trong SinhVien, hoặc Tên Khoa trong Khoa
Ký hiệu : bằng hình ellipse Có thể chia ra:
Thuộc tính đơn trị (nguyên tố)
Thuộc tính dẫn xuất: có được từ việc suy ra từ những thuộc tính khác
Thuộc tính Tongđiem trong loại thực thể ĐIỂM(MaSV, Diem1, Diem2, Diem3, TongDiem).hay
Thuộc tính Thanhtien trong loại thực thể VATTU(MaVT, SoLuong, DonGia, ThanhTien) ơ Khóa của loại thực thể: là các thuộc tính nhận diện của loại thực thể Căn cứ vào các giá trị của các thuộc tính nhận diện này người ta có thể xác định một thực thể duy nhất của một loại thực thể Ví dụ, khóa của loại thực thể LỚP.HỌC có thể là Mã.Lớp; khóa của loại thực thể HỌC.VIÊN có thể là Mã.Học.Viên; Khái niệm này cũng tương tực như khái niệm khóa (Key) trong mô hình dữ liệu quan hệ õ Loại của mối kết hợp (Entity Relationship):
Là sự liên kết giữa 1 loại thực thể mạnh và 1 loại thực thể yếu (tương tự loại liên hệ của mô hình dữ liệu mạng)
Loại thực thể Quản lý
Loại thực thể Chi nhánh
Thí dụ : trong thí dụ về Khoa, Sinh Viên, Môn học thì Thuộc và Kiểm tra là loại của mối kết hợp
Giữa 2 thực thể có nhiều mối kết hợp
Thớ duù : ư Số ngôi của mối kết hợp (Relationship Degree): tổng số loại thực thể tham gia vào mối kết hợp
Thí dụ 1 : trong thí dụ về KHOA, SINH VIÊN, MÔN HỌC thì số ngôi của mối kết hợp là
Thí dụ 2 : có số ngôi của mối kết hợp = 3 như 2 trường hợp sau: ÷ Thuộc tính của mối kết hợp (Relationship Attribute): một mối kết hợp cũng có thể có nhiều thuộc tính riêng
Thí dụ : kết hợp mượn có các thuộc tính là Ngày mượn, Ngày trả ứ Khúa của mối kết hợp: là tổ hợp cỏc khúa của cỏc loại thực thể tham gia vào mối kết hợp
Thí dụ 1 : Mã Khoa là khóa của mối quan hệ giữa SinhVien và Khoa
Thí dụ 2 : Mã Công trình và STT Hạng mục khóa của mối quan hệ giữa HẠNG MỤC và THU CHI ù Ràng buộc cấu trúc :
Các ràng buộc dự phần: là có bắt buộc hay không bắt buộc có ràng buộc giữa 2 loại thực thể
Bản số mỗi nhánh của mối kết hợp: mỗi nhánh của mối kết hợp nối 1 loại thực thể với mối kết hợp Bản số của mỗi nhánh là 1 bộ 2 thành phần (mincard maxcard) là số lượng tối thiểu tối đa các thực thể của nhánh đó tham gia vào 1 thể hiện của mối kết hợp
Thí dụ : Quan hệ Thuộc có 2 nhánh (1,1) và (1,n)
Nhận xét giữa 2 mô hình quan hệ và mô hình thực thể kết hợp:
Mô hình thực thể kết hợp: d Mô hình hướng đối tượng (Object Oriented Data Mode): d.1 Ra đời từ cuối những năm 80 và đầu những năm 90 Đây là loại mô hình tiên tiến nhất hiện nay dựa trên cách tiếp cận hướng đối tượng đã quen thuộc trong các phương pháp lập trình hướng đối tượng d.2 Mô hình này sử dụng các khái niệm như lớp ( class), sự kế thừa (inheritance), kế thừa bội (tức là kết thừa từ nhiều lớp cơ sở multi.inheritance) d.3 Đặc trưng cơ bản của cách tiếp cận này là tính đóng gói (encapsulation), tính đa hình (polymorphism) và tính tái sử dụng (Reusability)
Lớp là một kiểu dữ liệu có cấu trúc bao gồm các thành phần dữ liệu và các phương thức xử lý thao tác trên cấu trúc dữ liệu đó Nó là một kiểu (hay cấu trúc) dữ liệu được trừu tượng hóa, bởi vì các tác động (còn gọi là các phương thức method) là để phục vụ hoặc thao tác trên kiểu dữ liệu này Dữ liệu và phương thức hòa quyện vào nhau thành một thể thống nhất: dữ liệu cần có những cách thức xử lý thỏa đáng, và phương thức xử lý được đưa vào trong kiểu dữ liệu đó là để phục vụ cho các đối tượng có cấu trúc như thế Người ta gọi sự thống nhất đó là sự đóng gói
Thí dụ, trong việc định nghĩa phép cộng (+) hai số phức c1 và c2 để cho một số phức kết quả là: COMPLEX (c1.Real+c2.Real, c1.Image+c2.Image) để người ta có thể sử dụng phép cộng (+) một cách tự nhiên như việc gán kết quả đó cho biến phức c = c1 + c2, hoàn toàn tự nhiên và trong sáng hơn rất nhiều so với việc phải viết một thủ tục Add_COMPLEX (COMPLEX &c1, COMPLEX &c2, COMPLEX &c) để cộng hai số phức
CSDL theo moỏi quan heọ Thực tế
CSDL theo moỏi quan heọ Thực tế
(0,n) ẹieồm và kết quả được gán vào tham đối thứ 3 của hàm thông qua tham chiếu địa chỉ của biến c theo cách lập trình hướng thủ tục trước đó Và, hiển nhiên rằng, cách thức cộng như trên là chỉ được áp dụng cho các đối tượng số phức
Mễ HèNH Dỵ LIịU QUAN Hị
CÁC KHÁI NIỆM CƠ BẢN
1 Lược đồ quan hệ (relation schema): a) Lược đồ quan heọ: a.1 1 lược đồ quan hệ thường biểu diễn cho đ Trong thực tế là : 1 thực thể tồn tại khách quan (Sinh viên, Hóa đơn, Hàng hóa, ) ị Sự trừu tượng hóa (thí dụ: thời khóa biểu, công nợ khách hàng, ) a.2 Một lược đồ quan hệ được đặc trưng bởi: ủ 1 teõn phaõn bieọt (Q) ị 1 tập hợp hữu hạn các thuộc tính (A1, A2, ,An) của lược đồ quan hệ đó
Thớ duù : Q + = A1, A2, ,An hoặc có thể được viết gọn lại thành Q(A1, A2, ,An) ĩ Mỗi thuộc tính có một kiểu dữ liệu cơ sở, miền gá trị ( dom ain) ơ Bậc của lược đồ quan hệ : là số lượng thuộc tính có trong quan hệ õ Cardinality : là số lượng các bộ có trong quan hệ Ký hiệu card a.3 Một lược đồ cơ sở dữ liệu T gồm nhiều lược đồ quan hệ con b) Cỏc đặc điểm của mụ hỡnh quan heọ: b.1 Thứ tự các thuộc tính trong Q + là không quan trọng, nhưng cần có 1 thứ tự xác định để tiện lưu trữ b.2 Không có bộ nào trùng nhau b.3 Giá trị không biết cũng phải được thể hiện, thường dùng giá trị NULL cho trường hợp này c) Miền giá trị : ü Miền giá trị của các thuộc tính Ai trong lược đồ quan hệ là 1 tập các giá trị nguyên toá ý Một giá trị được coi là nguyên tố khi ta chia cắt nó ra ta không thu được 1 giá trị có ích nào cả d) Tân từ của lược đồ quan hệ Q : ü Ký hiệu là || Q|| ý Dùng để mô tả ý nghĩa (ngữ nghĩa) của lược đồ quan hệ Q
Thớ duù : KETQUA(MaSV, MaMH, LanThi, Diem)
Tân từ : Mỗi sinh viên có thể dự thi các môn học tối đa 2 lần
2 Thuộc tính (attribute): a) Khái niệm và tên gọi : a.1 Mỗi dữ liệu, mỗi đối tượng được khảo sát đều có những đặc tính riêng biệt gọi là thuộc tính
Thí dụ : Mỗi sinh viên có các thuộc tính MaSV, HoTenSV, NgaySinh, a.2 Các thuộc tính được phân biệt với nhau thông qua tên của chúng a.3 Không có 2 thuộc tính trùng tên nhau trong cùng 1 lược đồ quan hệ a.4 Trong các ứng dụng thực tế , ta nên đặt tên của thuộc tính thỏa các điều kiện sau: đ Gợi nhớ
Khi tạo thuộc tính cho đối tượng, bạn nên lưu ý tuân thủ các nguyên tắc sau để đảm bảo tính dễ hiểu và nhất quán cho hệ thống của mình:- Đặt tên thuộc tính phản ánh đúng bản chất của dữ liệu mà nó lưu trữ, tránh đặt tên chung chung hoặc khó hiểu.- Tránh đặt tên thuộc tính quá dài hoặc quá ngắn, tên thuộc tính nên ngắn gọn nhưng đủ ý.- Không nên đặt trùng tên cho hai thuộc tính thuộc hai đối tượng khác nhau, điều này có thể gây nhầm lẫn và khó hiểu khi sử dụng hệ thống.
Thí dụ : 2 table GIANGVIEN và SINHVIEN đều có thuộc tính Tên a.5 Từ đây trở đi, khi không cần lưu ý đến ngữ nghĩa của tên thuộc tính thì ta quy ước đặt tên lại cho các thuộc tính như sau: đ Tên của thuộc tính :
Thông thường là các chữ cái đầu tiên (A, B, C, )
Khi cần nhấn mạnh số lượng các thuộc tính sẽ dùng A1,A2, , An ị Tên của 1 tập hợp nhiều thuộc tính : các chữ cái cuối cùng(X, Y, Z, .) b) Kiểu dữ liệu của thuộc tính: b.1 Mỗi thuộc tính phải có 1 kiểu dữ liệu (data type) Kiểu dữ liệu có thể là : đ Vô hướng : rời rạc hoặc liên tục như :
Chuỗi Số nguyên Luận lý Số thực ị Có cấu trúc : thường được định nghĩa trên các kiểu dữ liệu kiểu vô hướng b.2 Miền giá trị (MGT): đ Là tập hợp các phần tử mà thuộc tính A i có thể nhận giá trị
Thí dụ : Thuộc tính PhaiNu chỉ nhận 1 trong 2 giá trị là 0, 1 ị Nếu thuộc tính A j có kiểu dữ liệu là có cấu trúc :
Miền giá trị của A là tích Descartes của các miền giá trị thành phần
Thí dụ : Thuộc tính A j có kiểu là tọa độ màn hình , ta có :
Trong 1 số trường hợp đặc biệt, miền giá trị của 1 thuộc tính Aj chỉ là một tập hợp miền con (thật sự) của tích Descartes của các miền giá trị thành phần
Thớ duù : TYPE ngay_dl=RECORD d: 1 31 m: 1 12 y: 0 2000
Nếu 1 thuộc tính Aj có kiểu ngay_dl, ta có :
Nhửng (30.02.1999) ÿ MGT(A j ) ĩ Miền giá trị của các thuộc tính đều có thể chứa thêm 1 giá trị đặc biệt gọi là gía trị roãng (NULL)
Giá trị NULL tùy theo ngữ cảnh có thể đặc trưng cho một giá trị :
Thí dụ : trong table NV có thuộc tính Số lần sinh, vậy NV nam sẽ không thể áp dụng
Chưa thể xác định ở thời điểm đang xét, nhưng có thể biết được vào 1 thời điểm khác
Thí dụ : trong table NV có thuộc tính TênVợ, nhưng đối với người độc thân thì không thể bieát
Giá trị có thể biết nhưng vắng mặt
Trong bảng `KetQua`, thuộc tính `Điểm` đã được cập nhật cho tất cả học viên, tuy nhiên sinh viên A vẫn chưa có kết quả do vắng mặt trong buổi kiểm tra.
Khuyeỏt ủieồm cuỷa gớa trũ NULL :
Tốn không gian lưu trữ
Nhập nhằng về mặt ngữ nghĩa
Tránh đặt các thuộc tính có giá trị NULL trong lược đồ quan hệ (nếu có thể được)
Nếu bắt buộc phải dùng thì phải chắc chắn áp dụng giá trị rỗng trong những trường hợp ngoại lệ chứ không phải là hầu hết các bộ như thí dụ sau :
Thí dụ : NV(MaNV, TenNV, Phòng Phụ Trách) trong trường hợp này thuộc tính Phòng Phụ Trách hầu hết là NULL
Một bộ là các thông tin của 1 đối tượng thuộc 1 lược đồ quan hệ
Chính là 1 dòng có trong lược đồ quan hệ Thường được gọi là mẫu tin, bản ghi hay record
Trong cùng 1 lược đồ quan hệ: đ Không có 2 bộ giống nhau ị Thứ tự các bộ không quan trọng
4 Quan heọ (Relation): a) Khái niệm : đ Lược đồ quan hệ (Q) : là sự trừu tượng hóa ở mức độ cấu trúc của 1 bảng 2 chiều ị Quan hệ ( T Q) : là tình trạng của lược đồ quan hệ và là một bảng đang có chứa các bộ cụ thể tại 1 thời điểm b) Có thể có nhiều Quan hệ được định nghĩa trên cùng 1 lược đồ quan hệ
Thí dụ :ta có 2 quan hệ sau trên cùng 1 lược đồ quan hệ SANPHAM như sau:
TQ 1 MaSP TênSP Đơn giá T Q 2 MaSP TênSP Đơn giá
5 Các loại khóa : a) Siêu Khóa : (Super Key) a.1 Siêu khóa là tập hợp con các thuộc tính của Q + mà nhờ vào chúng ta có cơ sở để phân biệt 2 bộ khác nhau tùy ý trong cùng 1 quan hệ T Q bất kỳ a.2 Số lượng siêu khóa trong một lược đồ quan hệ : đ có ít nhất 1 siêu khóa(chính là Q + ) ịứ cú thể cú nhiều siờu khúa
Thí dụ :Cho lược đồ quan hệ SINHVIÊN(MaSV,HoSV, TenSV, NgaySinh)
Ta có các siêu khóa sau :
S 4 : MaSV, HoSV, TenSV, NgaySinh, SoCMND
Siêu khóa nhằm mục đích nhận diện duy nhất một bộ trong quan hệ, nhưng siêu khóa bất kỳ dễ gây tốn kém Do đó, cần chọn siêu khóa nhỏ nhất để làm khóa chỉ định, gồm các thuộc tính ít nhất và khác rỗng Khóa chỉ định không chứa siêu khóa khác bên trong, số lượng siêu khóa luôn lớn hơn hoặc bằng 1 Khóa chính được chọn từ một hoặc nhiều khóa chỉ định để tạo chỉ mục chi phối tới các bộ, còn lại là các khóa tương đương Khóa chính chỉ có ý nghĩa trong quá trình khai thác CSDL, về lý thuyết không phân biệt với các khóa còn lại Thuộc tính khóa là thuộc tính tham gia vào khóa, thường được gạch dưới và đặt đầu danh sách thuộc tính Thuộc tính không khóa không tham gia bất kỳ khóa nào.
NULL) e.2 Không được phép sửa đổi giá trị của thuộc tính khóa Nếu muốn sửa đổi thuộc tính khóa, trước tiên ta hủy bộ cũ, sau đó thêm vào bộ mới với khóa đã được sửa đổi và lấy lại giá trị của các thuộc tính không khóa f) Khóa ngoại (Foreign Key) : f.1 Khóa ngoại còn được gọi là ràng buộc toàn vẹn về phụ thuộc tồn tại
Thớ duù: Xeựt 2 quan heọ KHOA(MaKhoa, TenKhoa)
Trong quan hệ SinhVien, sự tồn tại của bộ sv i =(:SV03;, :Tran Ty;,;CNTT;) hoàn toàn phụ thuộc vào sự tồn tại của bộ k j =(:CNTT;, :Công nghệ thông tin;)
Khi đó, thuộc tính MaKH của quan hệ SinhVien được gọi là khóa ngoại của quan hệ này và được ký hiệu:
Lược đồ quan hệ (ldqh) Khoa được gọi là lđqh cha và lđqh SinhVien có chứa khóa chính của lđqh Khoa nên được gọi là lđqh con f.2 Các hình thức của Khóa ngoại:
Giả sử có 2 lđqh Q và R đ Khóa ngoại tham chiếu: là khóa nội của Q và là thuộc tính không khóa của R Thớ duù: KHOA(MaKhoa, TenKhoa)
SINHVIEN(MaSV, TenSV, MaKH) ị Khóa ngoại phân cấp: là khóa nội của Q chứa trong khóa của R
Thớ duù: SINHVIEN(MaSV, TenSV, MaKH)
KETQUA(MaSV, MaMH, LanThi, DIem)
CÁC THAO TÁC CƠ SỞ TRÊN CÁC QUAN HỆ
Quy ước chung về cách dùng các điều kiện: ÷ = hay ÷ Có thể thay vị từ :=; bởi các vị từ so sánh khác như: ù, >, < ÷ Các điều kiện có thể được liên kết với nhau thông qua ^ (and), v (or), (not) ÷ Kết hợp các phép toán đại số qian hệ: có thể chọn 1 trong 2 cách:
Tạo một biểu thức quan hệ bằng cách lồng các phép toán với nhau
Aùp dụng từng phép toán một, sau mỗi lần áp dụng một phép toán sẽ cho ra quan hệ kết quả
1 Pheùp chieáu (Project Operation): a) Khái niệm :
Dùng để trích chọn các thuộc tính (cột) từ quan hệ r được chỉ ra trong danh sách thuộc tính
Trong đó: ư r : là tên quan hệ được chọn ư A1, A2, An : là tên các thuộc tính được chiếu
Kết quả trả về là một quan hệ r’ có k thuộc tính theo thứ tự được liệt kê
Số lượng các bộ trong quan hệ kết quả của phép chiếu (r9) luôn luôn ít hơn hay bằng các bộ có trong r Các dòng trùng nhau sẽ được loại bỏ khỏi quan hệ kết quả, bởi vì quan hệ là tập hợp
Phép chiếu lược đồ quan hệ là một phép toán quan hệ nhị phân lấy một lược đồ quan hệ và một tập thuộc tính làm đầu vào, trả về một lược đồ quan hệ mới chỉ chứa các thuộc tính được chỉ định trong tập thuộc tính Phép chiếu lược đồ quan hệ tuân theo tính chất: Nếu tập thuộc tính được chỉ định là một siêu tập của tập thuộc tính trong lược đồ quan hệ ban đầu thì lược đồ quan hệ kết quả sẽ giống hệt lược đồ quan hệ ban đầu.
B01 Trần Sửu ð HoTen, MaSV (SinhVien) Trần Sửu B01
C01 Phùng Hợi Phùng Hợi C01 c) Bài tập : (tham khảo dữ liệu trong BTập số 3 Chương II&III trang91) c.1 Hãy cho biết tên, địa chỉ của tất cả các nhân viên? c.2 Cho biết họ tên và lương của tất cả các nhân viên c.3 Cho biết lương và mã số của tất cả các nhân viên
2 Phép chọn (Selection Operation): a) Khái niệm :
Dùng để trích chọn các bộ (dòng) từ quan hệ r Các bộ được trích chọn phải thỏa điều kiện p
Trong đo:ù ư r : là tên quan hệ được chọn ư p : là một biểu thức mệnh đề
Kết quả trả về là một quan hệ r’ có cùng danh sách các thuộc tính như quan hệ r
Phép chọn có tính giao hoán:
P1(P2(r)) = P2(P1(r)) = (P1 ^P2)(r) b) Thí dụ : ta chỉ muốn xem danh sách các sinh viên có học bổng
B01 Trần Sửu HocBong>0 (SinhVien) A02 Nguyễn Dần 100
C01 Phùng Hợi c) Bài tập : c.1 Cho quan heọ r:
A B C D A B C D a a 1 7 a a 1 7 a b 5 7 b b 23 10 b b 12 3 b b 23 10 Đưa ra một số phép chọn để có kết quả là R9 c.2 Cho quan heọ r:
Phối hợp các phép chiếu và chọn để có kết quả là R9 c.3 Chọn những nhân viên thuộc Phòng có mã số là :P3; và phái là :Nam; c.4 Chọn những nhân viên có lương nằm trong khoảng từ 30000 đến 40000 c.5 Chọn những nhân viên phái là :Nữ; và lương >25000 hoặc những nhân viên có họ là :Đinh;
Phép gán giúp dễ dàng thể hiện các truy vấn phức tạp, cho phép xây dựng truy vấn như một chương trình tuần tự gồm các phép toán liên tiếp.
4 Phép đổi tên (Rename Operation): a) Khái niệm :
Cho phép tham chiếu đến một quan hệ bằng nhiều tên Điều này giúp dễ dàng sử dụng trong trường hợp một quan hệ được sử dụng nhiều lần trong một biểu thức quan hệ.
Đổi tên quan hệ: phép toán quan hệ
Thớ duù: SV ð HoTen, MaSV (SinhVien)
(tên mới của các thuộc tính) phép toán quan hệ
Thớ duù: SV(TenSV,MaSo) ð HoTen, MaSV (SinhVien)
CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ
Quan hệ khả hợp: hai quan hệ r và s được coi là khả hợp khi: ÷ Số lượng thuộc tính phải bằng nhau (cùng bậc) ÷ Miền giá trị của thuộc tính phải tương thích (dom(Ai) = dom(Bi)) với 1 I n
1 Phép hội (Union Operation): a) Khái niệm :
Trong đó r và s là 2 quan hệ khả hợp b)Thí dụ : giả sử liên kết danh sách sinh viên 2 lớp ANHVĂN và TIN HỌC, ta được:
DSLỚP ANHVĂN DSLỚP TIN HỌC
MÃSV HỌTÊN MÃSV HỌTÊN Kết MÃSV HỌTÊN
SV01 Trần Sửu SV02 Phạm Tý SV01 Trần Sửu
SV02 Phạm Tý ứ SV05 Nguyễn Dần quả SV02 Phạm Tý
SV04 Hoàng Mão SV04 Hoàng Mão
Bộ giá trị có MãSV là SV02 xuất hiện 2 lần trong 2 quan hệ nên bộ này chỉ được giữ lại 1 lần trong quan hệ kết quả c) Bài tập :
Cho biết kết quả của phộp toỏn : Q 1 ứ Q 1
Khi nào thỡ Q 1 ứ Q 1 cú kết quả là rỗng?
Biết Q 1 ứ Q 2 = Q 3 Q 2 phải ra sao để Q 1 và Q 3 giống nhau hoàn toàn?
(Tham khảo dữ liệu trong Bài tập số 3 Chương II&III trang91)
Cho biết những nhân viên có thân nhân hoặc những nhân viên là trưởng phòng
Cho biết những nhân viên là nữ hoặc có lương >0000
2 Pheùp giao (Set.Intersection Operation) : a) Khái niệm :
Trong đó r và s là 2 quan hệ khả hợp
Nguoàn goác : r ÷ s = r ( r – s ) b) Thí dụ : giả sử ta có 2 bảng cho biết các môn học của 2 lớp : Điện tử Tin học và Tin học Ứng dụng, sau khi thực hiện phép giao, ta được: ĐTỬ – TH TH – ỨNG DỤNG
07 Điện tử căn bản ÷ 08 Cấu trúc máy tính quả 08 Cấu trúc máy tính
08 Cấu trúc máy tính 10 Cơ sở dữ liệu
09 Kỹ thuật số 11 PTTK hệ thống
Cả 2 quan hệ chỉ có chung 1 bộ có mã môn là 08 nên trong quan hệ kết quả chỉ gồm duy nhất 1 bộ c) Bài tập :
Khi nào thì Q 1 ÷ Q 2 có kết quả là rỗng?
Biết Q 1 ÷ Q 2 = Q 3 Q 2 phải ra sao để Q 1 và Q 3 giống nhau hoàn toàn?
(Tham khảo dữ liệu trong Bài tập số 3 Chương II&III trang91)
Cho biết những nhân viên có người thân và là trưởng phòng
Cho biết tên những nhân viên nam thuộc phòng :P2;
Cho biết mã số và tên những nhân viên nữ sinh trước năm 1970 hoặc những nhân viên có lương dưới 28000 hoặc trên 50000
3 Phép trừ (Minus Operation): a) Khái niệm :
Trong đó r và s là 2 quan hệ khả hợp
Phép giao trong phép toán tập hợp dùng để tìm phần tử chung của các tập hợp Nó thường được sử dụng trong các truy vấn có dạng "không có" hoặc "chưa có" Ví dụ, khi thực hiện phép giao giữa tập hợp các môn học của lớp Điện tử - Tin học và lớp Tin học - Ứng dụng, ta sẽ thu được tập hợp gồm các môn học chung của cả hai lớp, đó là ĐTỬ - TH ỨNG DỤNG.
Kết MÃ MÔN TÊN MÔN
07 Điện tử căn bản 08 Cấu trúc máy tính 07 Điện tử căn bản
08 Cấu trúc máy tính 10 Cơ sở dữ liệu quả 09 Kỹ thuật số
09 Kỹ thuật số 11 PTTK hệ thống
Cả 2 quan hệ chỉ có chung 1 bộ có mã môn là 08 nên trong quan hệ kết quả sẽ gồm tất cả những bộ không có trong quan hệ TH.ỨNG DỤNG c) Bài tập :
Cho biết kết quả của phép toán : Q 1 Q 1
Khi nào thì quan hệ kết quả là rỗng?
Q 2 phải ra sao để Q 1 và quan hệ của kết quả là giống nhau hoàn toàn?
(Tham khảo dữ liệu trong Bài tập số 3 Chương II&III trang91)
Cho biết những nhân viên không có thân nhân?
Cho biết mã số của những đề án chưa phân công cho bất kỳ nhân viên nào?
4 Pheùp tích Cartersian (Cartersian Product Operation): a) Khái niệm :
Lưu ý : các thuộc tính của r và s là khác nhau (r ÷ s = ư) Nếu các thuộc tính của r và s không khác nhau, ta phải đổi tên chúng
Tập kết quả : ý Mỗi bộ có trong tập kết quả là tổ hợp giữa 1 bộ ti trong r và 1 bộ qj trong s
KQ(A1,A2, .,An,B1,B2, .Bm) r(A1,A2, .,An) x s(B1,B2, .Bm) ý Nếu r có n bộ và s có m bộ thì tập kết quả sẽ có n x m bộ
Đặc điểm : Phép tích Carersian là một phép toán vô nghĩa nếu đứng riêng Do đó, người ta thường phải sử dụng phối hợp với các phép toán khác
Thớ duù : ri=sj (r x s) hay SinhVien.MaSV=KetQua.MaSV (SinhVien x KetQua) b) Thớ duù :
Giả sử các Sinh viên đều phải học các Môn học giống nhau Vậy ta có thể dùng phép toán này để có :
MÃ SV MÃ MÔN MÃ SV MÃ MÔN
Số lượng thuộc tính có trong quan hệ kết quả = 1 + 1 = 2 Số lượng các bộ có trong quan hệ kết quả = 2 x 2 = 4
Với mỗi phòng ban, cho biết thông tin về người trưởng phòng:
PB_TruongPhong MaNV=TruongPhong (PB_NV)
Hoặc PB_TruongPhong MaNV=TruongPhong(PhongBan x NhanVien)
Cho biết nhân viên có lương cao nhất: ư Quan hệ tạm chứa những nhân viên có lương không lớn nhất
Tam ðNhanVien.Luong(NhanVien.Luong < NV.Luong
(NhanVien x pNV(NhanVien))) ư Thực hiện phép trừ giữa quan hệ nhanVien và quan hệ tạm:
KetQua ðLuong(NhanVien) ðLuong(Tam)
Cho biết những phòng ban có cùng địa điểm với phòng số 5: ư Tìm các địa điểm của phòng số 5:
Tam ðẹũaẹieồm (MaPhong=5 (DiaDiem_Phong)) ư Thực hiện phép trừ giữa hai quan hệ DiaDiem_Phong và tạm:
KetQua ðMaPhong(DiaDiem_Phong) ðMaPhong(Tam)))
5 Pheựp ủ keỏt (theta.join): a) Khái niệm : ü Giả sử ta có 2 lược đồ quan hệ Q 1 và Q 2 như sau :
Q 2 (B 1 , B 2 , , B m ) đ T Q 1 và T Q 2 là 2 quan hệ định nghĩa trên Q 1 và Q 2 ị Ai và Bj lần lượt là các thuộc tính của 2 lược đồ quan hệ Q 1 và Q 2 sao cho MGT(A i )
= MGT(B j ) ĩ đ là 1 phép so sánh (=, ù, ú, , , , ) trên MGT (A i ) Khi phép so sánh là :
= thì ta gọi là kết bằng (equi.join) ú thì ta gọi là kết tự nhiên (natural.join) Phép kết tự nhiên đóng vai trò rất quan trọng trong mô hình dữ liệu quan hệ ơ Phép đ kết giữa 2 lược đồ quan hệ Q 1 và Q 2 sẽ tạo thành một lược đồ quan hệ Q 12 nhử sau:
ý Phép đ.kết là liên kết dữ liệu của 2 bảng bằng phép tích Descartes dựa trên 1 tập thuộc tính cho trước Sau đó chọn lại các record thỏa điều kiện đề ra trên các thuộc tính
T Q 12 = ( T Q 1 T Q 2 ) b) Các bước thực hiện : ü Tạo tích Descartes ý Thực hiện phép chọn theo điều kiện (A i đ B j ) Trong đó, cần xác định được :
đ là phép so sánh gì ?
A i , B j là những thuộc tính nào ? Thông thường A i , B j sẽ có tên trùng nhau c) Thớ duù : ü Cho 2 lược đồ quan hệ Q 1 (ABC) và Q2(DE) Trong đó : đ Phép so sánh ( đ ) được chọn là phép ị A i được chọn là thuộc tính A , B i được chọn là thuộc tính D
T Q 1 và T Q 2 là 2 quan hệ định nghĩa trên Q 1 và Q 2
11 10 12 7 1 ý Cũng với thí dụ trên, hãy thực hiện phép so sánh (đ) được chọn là phép A=D þ Cho 2 lược đồ quan hệ : SINHVIEN(MaSV, HoSV, TenSV) và KETQUA (MaSV, MaMH, Diem)
TSinhvien và TKetQua là 2 quan hệ định nghĩa trên 2 lược đồ quan hệ SINHVIEN và KETQUA
MÃSV HỌ TÊN MÃSV Mã MH Điểm
Thực hiện phép kết bằng (=) với Ai = SINHVIEN.MaSV và Bj = KETQUA.MaSV ta được kết quả:
MÃSV HỌ TÊN MÃSV Mã MH Điểm
Loại bỏ cột MaSV thừa, ta còn lại kết quả :
MÃSV HỌ TÊN Mã MH Điểm
A02 Nguyeãn Daàn HH 05 5 d) Nhận xét :
Khi thực hiện kết tự nhiên, tổng số thuộc tính trong bảng kết quả bằng tổng số thuộc tính của hai bảng ban đầu trừ đi số thuộc tính tham gia vào phép kết (do trùng nhau, thường là một thuộc tính).
CÁC PHÉP TOÁN KHÁC
1 Pheùp chia (Division Operator): a) Khái niệm :
Áp dụng : dùng trong các câu truy vấn có từ :tất cả;, tức là đưa ra các bộ trong một quan hệ r sao cho khớp với tất cả các bộ trong quan hệ khác s
Đây là phép toán ngược với phép nhân
Điều kiện : các thuộc tính trong s phải là một tập thuộc tính con của r
Thuộc tính của quan hệ kết quả : chính là các thuộc tính của r – s
Nguồn gốc : cho hai quan hệ r(Z) ứ s(X) trong đú X ý Z ư Gọi Y=Z – X (do đú Z = XứY) ư Phép chia có thể diễn đạt bằng phép toán đại số quan hệ sau: t1 ðY(r) t2 ðY ((s x t1) – r ) t t1 –t2 b) Các bước thực hiện :
Thực hiện phộp chia (ứ) giữa lược đồ quan hệ R( AB C) và S( B D) ü Xóa các thuộc tính trong R và S nếu thuộc tính đó không tham gia vào khóa chính của lược đồ quan hệ) ý Giả sử, gọi B là cột chung của cả 2 quan hệ R và S Thực hiện xóa các dòng trong
Để trả về các giá trị trong cột B của bảng R mà không có trong cột B của bảng S, thực hiện các bước sau:- Tạo một bảng t1 bao gồm các thuộc tính của bảng R không có trong bảng S.- Tạo một bảng t2 bằng cách ghép bảng t1 với bảng S.- Tạo một bảng t3 bằng cách ghép bảng t2 với bảng R.- Chiếu bảng t3 với bảng R để lấy các thuộc tính của t3 có trong R và không có trong S.- Tạo bảng kết quả tKq bằng cách trừ bảng t4 khỏi bảng t1.
Cho 2 lược đồ quan hệ R(AB) và S(B).Thực hiện phộp chia: R ứ S
B6: t6=Chiếu thuộc tính A của t5 B5 : tKq = t3 – t6 t6 t3 t4 = tKq
d) Bài tập: thực hiện phép chia Sau đó so sánh với tập kết quả: ü Cho 2 lược đồ quan hệ : MonHoc(MaMH, TenMH) và DiemThi (MaSV, MaMH, Diem)
T MonHoc và T KetQua là 2 quan hệ định nghĩa trên 2 lược đồ quan hệ MONHOC và
Phép chia T KetQua cho T MonHoc sẽ cho kết quả danh sách các sinh viên đã dự thi đủ tất cả các môn học trong T monHoc
MÃSV Mã MH Điểm MÃ MH TÊN MÃSV
A01 TH01 8 TH01 TH cơ bản A01
A02 TH01 7 VL01 VL đại cương A02
A03 TH01 4 Kết quả sau khi thực hieọn pheựp chia
A02 HH01 6 ý Cho quan hệ về khả năng giảng dạy của từng giáo viên:
Mã Giáo Viên Mã Môn Học
Câu hỏi: Cho biết các giáo viên có khả năng dạy được cả 3 môn học có mã là M1, M3 và M4 ?
TGIÁO VIÊN Mã Giáo Viên
2 Pheựp buứ (Complement): a) Khái niệm :
Giả sử ta có lược đồ quan hệ Q(A1, A2, , An) với các miền giá trị của thuộc tính Ai là MGT(Ai) Phép bù của quan hệ R là quan hệ Q xác định trên tập thuộc tính R + , ký hiệu là R, được định nghĩa như sau:
Q = R = t (a1, a2, , an) và ai þ MGT(Ai) i=1 n / t ÿ R Nghĩa là tập tất cả các bộ giá trị có thể có của tích Descartes miền giá trị MGT(Ai) nhưng chưa có mặt trong thể hiện của quan hệ R Quan hệ bù của một quan hệ có số lượng bộ giá trị là rất lớn, vì vậy trong thực tế rất ít hệ quản trị CSDL cài đặt phép toán này b) Các bước thực hiện : ü Tạo ra quan hệ Q2 bằng cách thực hiện tích Descartes giữa các giá trị có trong từng thuộc tính của Q1 ý Thực hiện phép trừ giữa Q2 và Q1 c) Thí dụ : cho Quan hệ CUNG.CẤP (Mã.NCC, Hàng.hóa) với Mã.NCC = { S1, S2, S3 } và các Hàng.hóa cung cấp là { Đinh, Ốc, Vít }
NCC HHóa NCC HHóa NCC HHóa NCC HHóa
3 Phép kết nối nội (Inner Join): a) Khái niệm : Thực chất là phép kết nối bằng (đã trình bày ở các phần trên) Tuy nhiên, ngay cả trong trường hợp hai thuộc tính so sánh có cùng tên thì kết quả phép kết nối vẫn giữ lại 2 tên thuộc tính đó b) Thớ duù : ü Cho 2 quan hệ R (A, B, C) và S (A, D, E, F) với các bộ giá trị như dưới đây Kết quả của phép kết nối nội được cho trong bảng phía bên phải
R (A B) S (A D E) R S =Q (A B A D E) a1 b1 a1 d1 e1 a1 b1 a1 d1 e1 a2 b2 a2 d2 e2 a2 b2 a2 d2 e2 a3 b3 a2 d22 e22 a2 b2 a2 d22 e22 a4 d4 e4 ý Cho 2 quan hệ SINHVIÊN và LỚP như sau:
MaSV TênSinhViên MãLớp MãLớp TênLớp
Phép kết nối nội 2 quan hệ SINH VIÊN và LỚP cho kết quả là bảng KQ1 sau:
KQ1 MaSV TênSinhViên MãLớp MãLớp TênLớp
4 Phép kết nối trái (Left Join):
Giả sử có 2 quan hệ R (A1, A2, , An) và S (B1, B2, , Bm) t = (a1, a2, , an) và u = (b1, b2, , bm) là hai bộ giá trị của R và S Gọi v là bộ ghép nối u vào t (hay bộ giá trị t và u được "xếp cạnh nhau") và ký hiệu là: v = (t, u) = (a1, a2, , an, b1, b2, , bm)
Tập NULL = (NULL, NULL, , NULL) là tập đặc biệt gồm n giá trị của các thuộc tính A1, A2, , An đều là không xác định và tập uNULL = (NULL, NULL, , NULL) là tập đặc biệt gồm m giá trị của các thuộc tính B1, B2, , Bm đều là không xác định.
Quan hệ R và S là các quan hệ có thể so sánh khi giá trị của thuộc tính A trong R có thể so sánh tương đương với giá trị của thuộc tính B trong S Phép kết nối trái hai quan hệ R và S với phép so sánh bằng (=) trên thuộc tính A và B tạo thành quan hệ mới R + S có thuộc tính A þ R + B þ S.
R S = { v = (t, u) | (t þ R , u þ S và t.A þ u.B) hoặc (t þ R, u = uNULL với t.A ÿ S[B]) } nghĩa là, tất cả các bộ v có được nhờ cách đặt bộ giá trị của R và S xếp cạnh nhau, nếu có giá trị giống nhau trên 2 thuộc tính kết nối; và các bộ v có được nhờ cách đặt bộ của
R với các bộ NULL của S, nếu không tìm được giá trị tương ứng của thuộc tính kết nối treõn quan heọ S b) Thớ duù : ü Với hai quan hệ R và S ở thí dụ kết nối nội, kết quả của phép kết nối trái của R và
Ký hiệu dấu trừ (.) trong các thuộc tính của S được hiểu là giá trị không xác định (giá trò Null)
Các dòng có giá trị thuộc tính A của R là a3 và a5 không tìm được giá trị của thuộc tính A tương ứng trong quan hệ S, nên phần còn lại của nó được để là không xác định Qua đó, chúng ta thấy ý nghĩa của phép toán này là nhằm xác định các bộ giá trị của quan hệ bên trái nhưng không có bộ giá trị tương ứng trong quan hệ phía bên phải ý Lấy lại thí dụ 2 của phép kết nối nội: Khi đó phép kết nối trái (Left Join) hai quan hệ SINHVIÊN và LỚP cho kết quả là quan hệ có thể hiện như sau:
KQ1 MaSV TênSinhViên MãLớp MãLớp TênLớp
Vì trong quan hệ LỚP không có bộ nào có giá trị ở cột MãLớp là L4, do đó ở dòng cuối cùng của quan hệ trên, một bộ gồm toàn giá trị NULL ở cả hai cột MãLớp và TênLớp được đặt cạnh bộ giá trị S5 trong thể hiện của quan hệ SINHVIÊN Ứng dụng của phép kết nối này có thể thấy rõ trong bài toán cần xác định những sinh viên thuộc những lớp không có trong danh mục Lớp Khi đó, ta chỉ việc chọn ra các dòng của bảng kết nối có giá trị NULL ở cột Lớp
5 Phép kết nối phải (Right Join):
Vẫn với các quan hệ R, S; các thuộc tính A, B; và các bộ giá trị v, t, u, tNULL, uNULL được xác định như trên a) Khái niệm : Phép kết nối phải hai quan hệ R với S trên các thuộc tính A và B với phép so sánh =, với giả thiết là giá trị cột R[A] có thể so sánh tương đương được với mỗi giá trị của cột S[B], được định nghĩa là:
CÁC THAO TÁC CẬP NHẬT TRÊN QUAN HỆ
Nội dung của CSDL có thể được cập nhật bằng cách dùng các thao tác thêm, xóa, sửa
Tất cả các thao tác này được diễn đạt thông qua phép toán gán
R (kết quả) Các phép toán trên R (ban đầu)
Diễn đạt : R R ứ E ( với E là một biểu thức đại số quan hệ)
Thí dụ :thêm vào bảng kết quả về điểm thi môn CSDL của sinh viên SV001 là 8 điểm
Diễn đạt : R R E ( với E là một biểu thức đại số quan hệ)
Thí dụ : Xóa nhân viên có mã số nhân viên là 110:
Xóa toàn bộ kết quả học tập của sinh viên :SV001;
R1 ( MaSV =;SV001; (KETQUA KetQua.MaSV=SinhVien.MaSV (SINHVIEN))
Diễn đạt:Thường được diễn đạt bằng chuỗi các thao tác thêm và xóa Tuy nhiên, bạn vẫn có thể sử dụng trực tiếp các phép toán số học
Thí dụ : Tăng lương gấp 1,5 cho nhân viên có mã số 110:
T 1 ð MaNV,TenNV, Luong 1.5 ( MaNV0 (NHANVIEN))
Trong quan hệ PHANCONG, các nhân viên làm việc trên 30 giờ sẽ tăng thời gian làm việc lên 1.5, số còn lại sẽ tăng thời gian làm việc lên gấp 2:
PHANCONG ð MaNV.SoDA,ThoiGian 1.5 ( ThoiGian >30 (PHANCONG) ứð MaNV, SoDA, ThoiGian 2 ( ThoiGian [()] NOT NULL,
< thuộc tính n> [()] NOT NULL
CONSTRAINT Primary key ()
[CONSTRAINT Foreign key () reference , ]
[Check (), ]
) b) Giải thích : ü Lệnh này tạo ra 1 bảng rỗng (không có bộ nào cả) có cấu trúc gồm các thuộc tính
với các kiểu dữ liệu tương ứng ý là tên bảng mới sẽ được tạo, phải phù hợp với luật đặt tên và phải duy nhaát trong CSDL þ tên của cột sẽ có trong bảng, phải phù hợp luật định danh và phải duy nhất trong bảng ÿ Các kiểu dữ liệu được phép dùng trong SQL của ACCESS Tuy nhiên để đơn giản, trong tài liệu này chúng ta chỉ sử dụng các kiểu sau: đ Text (n) : kiểu chuỗi gồm n ký tự ũ Byte : kieồu soỏ nguyeõn 1 byte ú Integer : kieồu soỏ nguyeõn 2 byte ơ Single : kiểu số thực (có số lẻ) ư DateTime : kiểu ngày dương lịch ÷ YesNo : kiểu luận lý (True, False) Ā NOT NULL : trong trường hợp không có giá trị mặc định cho cột này, một thông báo lỗi được sinh ra nếu cột không có giá trị lúc thêm mới mẫu tin Hay nói cách khác sẽ không cho để trống
Lưu yù : thuộc tính khóa mặc nhiên bị ràng buộc NOT NULL ā Primary key () : khai báo khóa chính của bảng Ă [ Frimary key () Reference , ] : khai báo khóa ngoại của bảng (nếu có) c) Thớ duù : ü CREATE TABLE KHOA ( MaKhoa Text(4),
CONSTRAINT pk_Khoa PRIMARY KEY (MaKhoa) ) ý CREATE TABLE SINHVIEN
CONSTRAINT pk_SV PRIMARY KEY (MaSV),
CONSTRAINT fk_Khoa_SV FOREIGN KEY (MaKhoa) REFERENCES
2 Thêm các cột của 1 bảng : a) Cú pháp :
ADD < thuộc tính 1> [()] NULL ,
< thuộc tính n> [()] NULL ) b) Giải thích : Giá trị trong cột mới sẽ được khởi tạo là NULL đối với các hàng đã có trong bảng c) Thớ duù : ALTER TABLE SINHVIEN
ADD SoCMND Text (9) NOT NULL
3 Hủy bỏ các cột của 1 bảng : a) Cú pháp : ALTER TABLE
DROP < thuộc tính 1>, < thuộc tính 2>, b) Lưu ý : thao tác hủy là không hợp lệ nếu thuộc tính bị hủy là thuộc tính khóa c) Thớ duù : ALTER TABLE SINHVIEN
4 Hủy bỏ 1 bảng : a) Cú pháp : DROP TABLE b) Giải thích : ü Dùng để hủy bỏ 1 bảng ( gồm cả dữ liệu, chỉ mục, .) và các quyền trên bảng đó ra khỏi CSDL ý Việc hủy bỏ 1 bảng có thể làm cho CSDL mất tính kết dính (coherence) nếu như bảng bị hủy có chứa khóa ngoại của 1 bảng khác hay nằm trong bối cảnh của một ràng buộc toàn vẹn nào đó.
LỆNH CẬP NHẬT DỮ LIỆU
1 Thêm các bộ vào 1 bảng : a) Cú pháp : ü INSERT INTO VALUES ( ) ý INSERT INTO (, , )
VALUES (, , ) þ INSERT INTO
SELECT FROM [ WHERE ] b) Giải thích : ü Lệnh INSERT INTO sẽ thêm 1 bộ mới vào bảng Các sẽ lần lượt được gán cho các thuộc tính theo thứ tự khai báo trong lệnh CREATE TABLE ý Được dùng khi không xác định được thứ tự khai báo của các thuộc tính trong lệnh
CREATE TABLE Khi đó các thuộc tính không được liệt kê trong danh sách sẽ nhận giá trị NULL (nếu không bị ràng buộc NOT NULL khi tạo lập bảng) þ Dữ liệu được thêm mới vào là các bộ của hoặc kết quả cuỷa 1 leọnh truy vaỏn SELECT ÿ Thứ tự của danh sách thuộc tính sau từ khóa INSERT và VALUES phải tương thích với nhau Ā Từ khóa INTO không bắt buộc phải có trong lệnh INSERT, khi đó thường được dùng để cập nhật dữ liệu từ bảng này vào bảng khác
Thí dụ : trích ra những hóa đơn có ngày lập hóa đơn trước ngày 12/31/1999
SELECT * FROM HOADON WHERE NgayHD, =, ) Khi đó, kết quả của lệnh sẽ là những bộ thỏa mãn điều kiện của mệnh đề
Dưới đây là một số thí dụ sử dụng các toán tử trong mệnh đề WHERE: ü So sánh : SELECT
WHERE NgaySinh between #08/01/1970# AND #08/20/75# þ Danh sách : SELECT
WHERE MaKH NOT IN (8TH9, 8AV9, 8KT9) ÿ Like và ký hiệu thay thế (WILDCARDS)
Qua đó, tên sinh viên là Thung, Thong, thì thỏa
Tung, Trang, Trung, Truong thì không thỏa Ā IS NULL hay IS NOT NULL:
WHERE MaKhoa is not null ā Toán tử logic :
WHERE MaKhoa = 8TH9 AND MaSV9K9
WHERE MaKhoa = 8TH9 OR NgaySinh=#4/30/1975#
Sắp xếp kết quả truy vấn theo một hoặc nhiều cột, tối đa là 16 cột Từ khóa DESC được sử dụng để sắp xếp theo thứ tự giảm dần Các kết quả được liệt kê theo thứ tự ưu tiên giảm dần từ trái sang phải.
Thớ duù : SELECT MaSV, TenSV, NgaySinh, MaKhoa
ORDER BY MaKhoa, NgaySinh Desc, TenSV i) [ GROUP BY ] và [ HAVING ]: ü GROUP BY : giúp tổ chức dữ liệu thành từng nhóm ý HAVING : đặt điều kiện cho mỗi nhóm
Những thuộc tính có tham gia trong thành phần GROUP BY để phân nhóm phải được liệt kê trong danh sách theo sau từ khóa SELECT
Đếm tổng số sinh viên của từng Tỉnh Thành phố đang theo học tại trường:
Thống kê học bổng của từng Khoa:
SELECT MaKhoa, TenKhoa, TongHB= SUM (HocBong)
Danh sách những mặt hàng bán ra có doanh số trên 2 triệu:
SELECT MaHH, TenHH, SUM ( GiaBan SoLuong)
4 Thớ duù : ü Liệt kê các sinh viên có mã khoa là 8TH9 :
WHERE MaKhoa=9TH9 ý Liệt kê mã sinh viên, tên sinh viên, tên khoa của các sinh viên có mã khoa là 8TH9 :
WHERE MaKhoa=9TH9 þ Đặt tiêu đề cột trong kết quả truy vấn của thí dụ ý :
SELECT TenSV AS Ho Va Ten SV, TenKhoa AS Ten Khoa
WHERE MaKhoa=9TH9 AND Khoa.MaKhoa=SinhVien.MaSV
Tiêu đề cột nếu không có ký tự đặc biệt và khoảng trắng bên trong thì không cần cặp ngoặc vuông
Tiêu đề cột dài tối đa 30 ký tự ÿ Cho biết tiền lời của mỗi cuốn sách :
SELECT TenSach AS Ten sach la , (GiaBan – GiaVon) AS TienLoi
5 Truy vaán loàng nhau nhieàu caáp : a) Giới thiệu : truy vấn lồng nhiều cấp là một trong các đặc thù mạnh của SQL, cho phép người sử dụng kết hợp nhiều truy vấn vào trong cùng 1 lệnh SELECT Khái niệm truy vấn lồng nhiểu cấp có nghĩa là kết quả của truy vấn thứ nhất (truy vấn con) được tự động chuyển qua truy vấn cấp sau (truy vấn chính) và chính truy vấn này sẽ cho ra kết quả sau cùng b) Cú pháp :
SELECT | | ,
WHERE
( SELECT | , FROM
WHERE ) c) Giải thích : ü Thành phần WHERE của truy vấn chính sẽ chứa truy vấn con ý Một truy vấn con sẽ có cùng dạng như truy vấn chính þ Toàn bộ lệnh truy vấn con sẽ được đặt trong cặp ngoặc đơn ÿ Một truy vấn con chỉ cho phép có 1 tên cột hay 1 biểu thức trong mệnh đề
SELECT của nó Ā Không như truy vấn chính, truy vấn con không thể dùng mệnh đề ORDER BY ā Kết quả của truy vấn con phải là dữ liệu tương thích với loại dữ liệu đem so sánh trong truy vaán chính Ă Truy vấn con nên dùng điều kiện chọn lựa trong cả hai mệnh đề WHERE và HAVING Truy vấn con phải được đặt bên phải điều kiện chọn lựa ă Truy vấn con không được dùng LIKE , BETWEEN d) Thớ duù : ü Hiển thị Mã số sv, Tên sv, Mã số đề tài của các sinh viên thực hiện chung đề tài với sinh viên có mã số là 899TH0239
WHERE MaSV= 899TH0239) ý Hiển thị Tên nhân viên, Mức lương của các nhân viên có mức lương lớn hơn mức lửụng trung bỡnh:
WHERE Luong> ( SELECT AVG (Luong)
FROM NHANVIEN ) þ Hiển thị Tên nhân viên, Mức lương của các nhân viên có mức lương cao nhất:
WHERE Luong= ( SELECT MAX (Luong)
FROM NHANVIEN ) ÿ Cho biết tên cán bộ quản lý của phòng mà nhân viên NGUYỄN NAM đang công tác:
WHERE MaNV in ( SELECT TruongPhong
WHERE MaPhong in ( SELECT MaPhong
RÀNG BUịC TO À N VắN (Integrity Constraint)
RÀNG BUỘC TOÀN VẸN (RBTV) CÁC YẾU TỐ CỦA RBTV
1 RBTV (Integrity constraint): ü Trong một cơ sở dữ liệu (CSDL) luôn tồn tại rất nhiều mối liên hệ, ràng buộc qua lại giữa các thuộc tính, giữa các bộ với nhau
Các mối liên hệ, ràng buộc này là những điều kiện bất biến mà tất cả các bộ của những quan hệ có liên quan trong CSDL đều phải thỏa mãn ở bất kỳ thời điểm nào Những điều kiện bất biến đó gọi là RBTV Vì vậy cần xác định đầy đủ và tiết kiệm nhất các RBTV ý Trong thực tế, RBTV thường là các quy tắc quản lý được áp đặt lên trên các đối tượng của thế giới thực
Thí dụ : Trong CSDL T, để quản lý hồ sơ sinh viên, chúng ta có 1 số RBTV như sau:
R 1 : Mỗi sinh viên có một mã số riêng biệt, không trùng với bất cứ sinh viên nào khác
R 2 : Mỗi sinh viên phải đăng ký vào 1 Khoa của Trường
R 3 : Mỗi sinh viên chỉ được thi tối đa 2 lần cho một môn học
2 Các yếu tố của RBTV :
Moãi RBTV goàm 3 yeáu toá: a) Điều kiện : điều kiện của 1 RBTV có thể được biểu diễn bằng : ü Ngôn ngữ tự nhiên ý Thuật giải (mã giả, ngôn ngữ tựa Pascal) þ Ngôn ngữ đại số tập hợp, đại số quan hệ
Điều kiện của RBTV R 1 :; mỗi sinh viên có 1 mã số riêng biệt, không trùng với bất kỳ sinh viên nào khác; có thể được biểu diễn như sau:
sv1 þ TSinhvien , sv2 þ TSinhvien sv1 sv2 sv1.MaSV sv2 MaSV
Điều kiện của RBTV R 2 :; Mỗi sinh viên phải đăng ký vào 1 Khoa của Trường; có thể được biểu diễn như sau:
Điều kiện của RBTV R 3 : :Mỗi sinh viên chỉ được thi tối đa 2 lần cho một môn học.; có thể được biểu diễn như sau:
sv þ TKetQua sv : MaSV, MaMH COUNT(MaSV) (KetQua)>2
Cuoái b) Bối cảnh : ü Bối cảnh của 1 RBTV R là những quan hệ mà RBTV đó có hiệu lực hay nói cách khác đó là những quan hệ cần phải sử dụng để kiểm tra RBTV R ý Bối cảnh của 1 RBTV có thể là 1 hay nhiều quan hệ þ Trong thí dụ trước, R1 có bối cảnh là1 quan hệ, R2 và R4 có bối cảnh là 2 quan hệ c) Tầm ảnh hưởng : ü Khi thực hiện 1 trong các thao tác cập nhật (thêm, xóa sửa) trên bối cảnh của 1RBTV R, có thể dẫn đến RBTV R bị vi phạm
để xác định thời điểm cần kiểm tra chúng.
Quy ước : Trong bảng tầm ảnh hưởng :
+ : cần phải kiểm tra RBTV
: khoõng caàn kieồm tra RBTV R 1
Không được phép sửa đổi giá trị của thuộc tính khóa trong các quan hệ T Q
Thí dụ 1 : Bảng tầm ảnh hưởng của 1 RBTV R 1
Với : R 1 có bối cảnh 1 quan hệ là T SinhVien
Thí dụ 2 : Bảng tầm ảnh hưởng của 1 RBTV R 2
Với : R 2 có bối cảnh 2 quan hệ là T SinhVien và T Khoa.
CÁC LOẠI RÀNG BUỘC TOÀN VẸN
A) BỐI CẢNH MỘT QUAN HỆ :
1 RBTV miền giá trị : a) RBTV loại này có liên quan đến miền giá trị của từng thuộc tính trong lược đồ quan heọ b) Phân lọai : có thể tạm chia RBTV lọai này thành các dạng sau: đ Liên tục (trong 1 hay nhiều khoảng) ị Rời rạc ĩ Theo dạng thức đã được định trước (LIKE) c) Thớ duù : đ ÿ Điểm được cho nằm trong khoảng từ 0 đến 10
MGT(Diem)= 0 10 ÿ Tuổi không nằm trong độ tuổi thi hành NVQS (từ 18 đến 27)
MGT(Tuoồi) 27 ị Đơn vị tính phải thuộc 1 trong những giá trị :Kg;, Lít;, :m;, :Cái;
MGT(Đơn vị tính) IN (:Kg;, Lít;, :m;, :Cái;) ĩ Mã số SV gồm 2 ký tự đầu là SV, 4 ký tự sau là số
MGT(Left(MãSốSV,2)=;SV; AND IsNumeric(Right(MãSốSV,4))
2 RBTV liên thuộc tính : a) RBTV loại này chính là mối liên hệ giữa các field trong cùng 1 table
Thông thường, quan hệ ràng buộc kiểu kiểm tra phạm vi (RBTV) chỉ áp dụng cho các trường kiểu số và kiểu ngày Ví dụ, trong lược đồ quan hệ DULICH(SoTT, SoPP, QuocTich, NgayNhap, NgayXuat), có thể thiết lập ràng buộc sau:
Ràng buộc này sẽ được biểu diễn như sau:
dl þ TDULICH dl.NgayNhap quay lại B3.1
Ngược lại, nếu đã xét hết các phụ thuộc hàm.>quay lại B3
B4: Kiểm tra tất cả các dòng của bảng Nếu có bất kỳ dòng nào chỉ chứa các giá trị a (tức là đủ các giá trị từ a1 đến an) thì phép phân rã là bảo toàn Ngược lại, phép phân rã là không bảo toàn c) Thớ duù 1: Xeựt quan heọ R(V, X, Y, Z, W) có tập F = X Z, Y Z, Z W, WV Z, ZV X và phép phân rã của R thành R1(X, W), R2(X, Y), R3(Y,V), R4(Z, W, V), R5(X V) Thực hiện kiểm tra bằng phép nối bảo toàn:
B1: Tạo bảng gồm 5 cột (có 5 thuộc tính) và 5 dòng (có 5 quan hệ kết quả)
B2: Xét quan hệ R1(XW): do X và W có trong quan hệ R1 nên ta điền a1 vào ô
Lần lượt xét 4 quan hệ còn lại, ta có bảng sau:
R5( XV) a 1 a 2 Điền các ô trống bằng các giá trị bij tương ứng:
B3: đặt giá trị của biến CoThayDoi = False
B3 lần 1: xét phụ thuộc hàm X Z :
Tìm những dòng có cùng giá trị ở cột X Trong trường hợp này, các dòng R 1 , R 2 và R 5 có cùng gía trị a 2 Do đó ta thay thế đề giá trị ở cột Z (A 4 ) của các dòng đó giống nhau
Do b 14 có giá trị I là nhỏ nhất (=1) nên ta chọn giá trị này làm giá trị chung Ta được:
R5( XV) a 1 a 2 b 53 (b 54 )b 14 b 55 Đặt giá trị của biến CoThayDoi = True
B3 lần 2: xét phụ thuộc hàm Y Z:
Trong trường hợp này, các dòng R 2 và R 3 có cùng gía trị a 3 Do đó ta sẽ thay đề giá trị ở cột Z (A 4 ) của các dòng đó giống nhau
Do b 13 có giá trị I là nhỏ nhất (=1) nên ta chọn giá trị này làm giá trị chung Ta được:
R5( XV) a 1 a 2 b 53 (b 54 )b 14 b 55 Đặt giá trị của biến CoThayDoi = True
B3 lần 3: xét phụ thuộc hàm Z W:
Trong trường hợp này, các dòng R 1 , R 2 , R 3 và R 5 có cùng gía trị b 14 Do đó ta sẽ thay đề giá trị ở cột W (A 5 ) của các dòng đó giống nhau
Do có giá trị là a 5 nên ta chọn giá trị này làm giá trị chung Ta được:
R5( XV) a 1 a 2 b 53 (b 54 )b 14 a 5 Đặt giá trị của biến CoThayDoi = True
B3 lần 4: xét phụ thuộc hàm WV Z :
Trong trường hợp này, các dòng R 3 ,R 4 và R 5 có cùng gía trị lần lượt là a 1 và a 5 Ta sẽ thay đề giá trị ở cột Z (A 4 ) của các dòng đó giống nhau
Do có giá trị là a 4 nên ta chọn giá trị này làm giá trị chung:
R5( XV) a 1 a 2 b 53 (b 54 ) (b 14 )a 4 a 5 Đặt giá trị của biến CoThayDoi = True
B3 lần 5: xét phụ thuộc hàm ZV X:
Lúc này, các dòng R 3 , R 4 và R 5 có cùng gía trị lần lượt là a 1 và a 5 Do đó ta sẽ thay đề giá trị ở cột X (A 2 ) của các dòng đó giống nhau
Do có giá trị là a 2 nên ta chọn giá trị này làm giá trị chung:
R5( XV) a 1 a 2 b 53 (b 54 ) (b 14 )a 4 a 5 Đặt giá trị của biến CoThayDoi = True
B3 lần 6: do đã có dòng R3 toàn giá trị a (thỏa điều kiện dừng), do đó ta chuyển sang bước 4
B4: Do có dòng R 3 chứa toàn các giá trị a nên phép phân rã là bảo toàn thông tin d) Thí dụ 2: Xét quan hệ R(X, Y, Z) có tập F = X Y, Z Y và phép phân rã của R thành R1(X, Y), R2(Y, Z)
Thực hiện kiểm tra bằng phép nối bảo toàn:
B1: Tạo bảng gồm 3 cột (có 3 thuộc tính) và 2 dòng (có 2 quan hệ kết quả)
B2: Quan hệ R1 có các thuộc tính X và Y nên ở các cột này ta điền các giá trị a J Tương tự, quan hệ R2 có các thuộc tính Y và Z nên ở các cột này ta điền các giá trị a J Điền giá trị b iJ tương ứng vào các ô còn lại
B3: đặt giá trị của biến CoThayDoi = False
B3 lần 1: xét phụ thuộc hàm X Y:
Tìm những dòng có cùng giá trị ở cột X Vì không có cặp dòng nào như thế nên bảng không thay đổi Thực hiện lại với bước 3 bằng phụ thuộc hàm khác
B3 lần 2: xét phụ thuộc hàm Z Y :
Tìm những dòng có cùng giá trị ở cột Z Vì không có cặp dòng nào như thế nên bảng không thay đổi Thực hiện lại với bước 3
B3 lần 3: sau khi xét xong tất cả các phụ thuộc hàm mà giá trị của biến CoThayDoise (thỏa điều kiện dừng), do đó ta chuyển sang bước 4
B4: Vì không có những dòng chứa toàn a, nên phép phân rã trên là không bảo toàn Nghĩa là quan hệ gốc không thể được phục hồi từ phép kết tự nhiên của các quan hệ R1 và R2
Dựa vào những khái niệm đã học, Sinh viên hãy biểu diễn CSDL có các loại mẫu tin Phòng ban, Nhân viên, Công việc, Lý lịch đã trình bày trong mô hình mạng theo cách tiếp cận phân cấp
Loại liên hệ là phân cấp:
Phòng ban có nhiều nhân.viên; mỗi nhân.viên chỉ thuộc 1 phòng duy nhất
Công.việc có nhiều nhân.viên cùng làm; mỗi nhân.viên chỉ làm một công.việc duy nhaát
Mỗi nhân.viên có một lý.lịch; mỗi lý.lịch chỉ thuộc 1 nhân.viên duy nhất
Dựa vào những khái niệm đã học, Sinh viên hãy biểu diễn CSDL về Tổng điều tra dân số toàn quốc có các loại mẫu tin tỉnh.thành.phố, Quận.huyện, Phường.xã, Địa.bàn, hộ.đtra và nhân.khẩu đã trình bày trong mô hình phân cấp theo cách tiếp cận mạng
Loại liên hệ phân mạng là loại "thuộc về"
Nhân khẩu (thì) thuộc một hộ.điều tra
Hộ.điều tra (thì) thuộc một địa.bàn
Địa.bàn điều tra (thì) thuộc một phường.xã
Phường.xã thuộc một quận.huyện
Quận.huyện thuộc một tỉnh/thành phố
Dựa vào những khái niệm đã học, hãy biểu diễn mô hình thực thể kết hợp của CSDL gồm các thực thể : Phòng ban, Nhân viên, Công việc, Lý lịch Với các diễn giải sau:
Phòng ban có nhiều nhân.viên; mỗi nhân.viên chỉ thuộc 1 phòng duy nhất
Công.việc có nhiều nhân.viên cùng làm; mỗi nhân.viên chỉ làm một công.việc duy nhaát
Mỗi nhân.viên có một lý.lịch; mỗi lý.lịch chỉ thuộc 1 nhân.viên duy nhất
Dựa vào các phân tích SƠ BỘ dưới đây, hãy lập mô hình thực thể kết hợp cho mỗi bài toán quản lý sau:
- Xác định Loai thực thể
- Xác định thuộc tính của các Loai thực thể
- Xác định khoá chính Loai thực thể
- Xây dựng mô hình thực thể mối kết hợp