Trong thực tế đối với các loại thực thể tồn tại khách quan (ví dụ: Sinhviên, Giảng viên, Nhân viên, Hàng hoá,…) người thiết kế cơ sở dữ liệu thường gán thêm cho các lược đồ quan hệ này m[r]
(1)LỜI MỞ ĐẦU
Cơ sơ liệu (CSDL) môn thiếu chương trình mơi trường đào tạo chun nghiệp nào, có tới 80% ứng dụng tin phục vụ công tác quản lý, mà quản lý thực chất quản lý thông tin Song công việc cần quản lý máy tính phải thể liệu, nói đến quản lý thơng tin tức nói đến quản lý liệu
Giáo trình sở liệu biên soạn theo chương trình đào tạo chuyên ngành tin học trường dạy nghề Giáo trình trình bày vấn đề cốt lõi môn sở liệu Các học trình bày ngắn gọn, có nhiều ví dụ minh hoạ Cuối chương có tập để sinh viên luyện tập
Giáo trình giúp học sinh, sinh viên việc học môn sở liệu bậc trung cấp, cao đẳng thi tốt nghiệp trung cấp, Cao đẳng Chúng mong bạn học sinh, sinh viên tự tìm hiểu trước vấn đề kết hợp với giảng lớp giáo viên để việc học mơn đạt hiệu
Trong q trình giảng dạy biên soạn giáo trình này, chúng tơi nhận động viên thầy Ban Giám Hiệu nhà trường ý kiến đồng nghiệp khoa Tin Học – Ngoại Ngữ Chúng xin chân thành cảm ơn hy vọng giáo trình giúp cho việc dạy học môn sở liệu trường ngày tốt
NHÓM TÁC GIẢ
(2)CHƯƠNG TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 1.1 MỘT SỐ KHÁI NIỆM CƠ BẢN
1.1.1.Định nghĩa Cơ Sở Dữ Liệu (Data Base)
Cơ sở liệu (CSDL) hệ thống thơng tin có cấu trúc lưu trữ thiết bị băng từ, đĩa từ,… để thoả mãn yêu cầu khai thác đồng thời nhiều người sử dụng CSDL gắn liền với đại số, logic toán số lĩnh vực khác
1.1.2.Ưu điểm sở liệu
- Giảm trùng lắp thông tin xuống mức thấp bảo đảm tính qn tồn vẹn liệu
- Đảm bảo liệu truy xuất theo nhiều cách khác - Khả chia sẻ thông tin cho nhiều người sử dụng
1.1.3 Những vấn đề mà CSDL cần phải giải quyết
-Tính chủ quyền liệu: Tính chủ quyền liệu thể phương diện an toàn liệu, khả biểu diễn mối liên hệ ngữ nghĩa liệu tính xác liệu Điều có nghĩa người khai thác CSDL phải có nhiệm vụ cặp nhật thơng tin CSDL
-Tính bảo mật quyền khai thác thông tin người sử dụng: Do có nhiều người phép khai thác liệu cách đồng thời, nên cần thiết phải có chế bảo mật phân quyền hạn khai thác CSDL Các hệ điều hành nhiều người sử dụng hay hệ điều hành mạng cục có cung cấp chế
-Tranh chấp liệu: Nhiều người phép truy nhập lúc vào tài nguyên liệu CSDL với mục đích khác nhau, cần thiết phải có chế ưu tiên truy nhập liệu Cơ chế ưu tiên thực việc cấp quyền ưu tiên cho người khai thác
-Đảm bảo an toàn liệu có cố: Việc quản lý liệu tập trung làm tăng khả mát sai lệch thơng tin có cố điện đột xuất, hay phần đĩa lưu trữ CSDL bị hư,… số hệ điều hành mạng có cung cấp dịch vụ lưu ảnh đĩa cứng, tự động kiểm tra khắc phục lỗi có cố Tuy nhiên, bên cạnh dịch vụ hệ điều hành, để đảm bảo CSDL ổn định, CSDL thiết phải có chế khơi phục liệu có cố bất ngờ xảy
1.1.4 Các đối tượng sử dụng CSDL
-Những người sử dụng CSDL không chuyên lĩnh vực tin học CSDL
-Các chuyên viên CSDL biết khai thác CSDL Những người xây dựng ứng dụng khác nhau, phục vụ cho mục đích khác CSDL
-Những người quản trị CSDL, người hiểu biết tin học, hệ quản trị CSDL hệ thống máy tính Họ người tổ chức CSDL, họ phải nắm rõ vấn đề kỹ thuật CSDL để phục hồi CSDL có cố Họ người cấp quyền hạn khai thác CSDL, họ giải vấn đề tranh chấp liệu có
1.1.5 Hệ Quản Trị Cơ Sở Dữ Liệu (Data Base Management System)
(3)có hệ quản trị CSDL hỗ trợ nhiều tiện ích như: MS Access, Visual Foxpro, SQL Server Oracle, …
Mỗi hệ quản trị CSDL cài đặt dựa mơ hình liệu cụ thể Dù dựa mơ hình liệu nào, hệ quản trị CSDL phải hội đủ yếu tố sau:
-Ngôn ngữ giao tiếp người sử dụng CSDL, bao gồm :
Ngôn ngữ mô tả liệu: Để cho phép khai báo cấu trúc CSDL, khai báo mối
liên hệ liệu quy tắc quản lý áp đặt lên liệu
Ngôn ngữ thao tác liệu: Cho phép người sử dụng cập nhật liệu (thêm/sửa/xố)
Ngơn ngữ truy vấn liệu: Cho phép người khai thác sử dụng để truy vấn thông tin cần thiết CSDL
Ngôn ngữ quản lý liệu: Cho phép người quản trị hệ thống thay đổi cấu trúc bảng liệu, khai báo bảo mật thông tin cấp quyền hạn khai thác CSDL cho người sử dụng.,…
-Từ điển liệu:
Dùng để mô tả ánh xạ liên kết, ghi nhận thành phần cấu trúc CSDL, chương trình ứng dụng, mật mã, quyền hạn sử dụng,…
-Cơ chế giải vấn đề tranh chấp liệu:
Mỗi hệ quản trị CSDL cài đặt chế riêng để giải vấn đề Một số biện pháp sau thường sử dụng: thứ nhất: cấp quyền ưu tiên cho người sử dụng; thứ hai: Đánh dấu yêu cầu truy xuất liệu, phân chia thời gian, người có yêu cầu trước có quyền truy xuất liệu trước,…
-Hệ quản trị CSDL phải có chế lưu (backup) phục hồi (restore) dữ liệu có cố xảy ra.
Điều thực sau thời gian định hệ quản trị CSDL tự động tạo CSDL, cách tốn kém, CSDL lớn
-Hệ quản trị CSDL phải cung cấp giao diện thân thiện, dễ sử dụng. 1.1.6 Các Ứng Dụng Của Cơ Sở Dữ Liệu
Hiện nay, CSDL gắn liền với ứng dụng tin học; chẳng hạn việc quản lý hệ thống thông tin quan nhà nước, việc lưu trữ xử lý thông tin doanh nghiệp, lĩnh vực nghiên cứu khoa học, công tác giảng dạy, việc tổ chức thông tin đa
phương tiện,…
1.2 CÁC MƠ HÌNH DỮ LIỆU
Mơ hình liệu trừu tượng hố mơi trường thực Mỗi loại mơ hình liệu đặc trưng cho cách tiếp cận liệu khác nhà phân tích thiết kế CSDL Mỗi loại mơ hình liệu có ưu điểm mặt hạn chế nó, có mơ hình liệu trội
nhiều người quan tâm nghiên cứu Sau điểm qua lịch sử phát triển mơ hình liệu
Vào năm sáu mươi, hệ CSDL đời dạng mơ hình thực thể kết hợp, mơ hình mạng mơ hình phân cấp
(4)Vào năm bảy mươi, hệ thứ hai CSDL đời Đó mơ hình liệu quan hệ EF Codd phát minh Mơ hình có cấu trúc logic chặt chẽ Đây mơ hình sử dụng rộng khắp công tác quản lý phạm vi tồn cầu Việc nghiên cứu mơ hình liệu quan hệ nhằm vào lý thuyết chuẩn hoá quan hệ công cụ quan trọng việc phân tích thiết kế hệ CSDL Mục đích nghiên cứu nhằm bỏ phần tử khơng bình thường quan hệ thực phép cập nhật, loại bỏ phần tử dư thừa
Sang thập kỷ tám mươi, mô hình CSDL thứ ba đời, mơ hình sở liệu hướng đối tượng, mơ hình sở liệu phân tán, mơ hình sở liệu suy diễn,…Trong phần sau đây, trình bày mơ hình liệu tiêu biểu để thiết kế (bước đầu) ứng dụng tin học mơ hình thực
thể kết hợp Trong chương cịn lại giáo trình chúng tơi trình bày mơ hình liệu quan hệ
1.3 MƠ HÌNH THỰC THỂ KẾT HỢP
Hiện mơ hình liệu quan hệ thường dùng hệ quản trị CSDL, mô hình liệu mức vật lý Để thành lập mơ hình này, thường phải dùng mơ hình liệu mức quan niệm để đặc tả, mơ hình dạng mơ hình thực thể kết hợp (sau dùng số quy tắc để chuyển hệ thống từ mơ hình mơ hình liệu quan hệ – quy tắc nói đến mục 2.2) Sau khái niệm mơ hình thực thể kết hợp
1.3.1 Thực Thể (entity)
Thực thể vật tồn phân biệt được, chẳng hạn sinh viên Nguyễn Văn Thành, lớp Cao Đẳng Tin Học 2A, môn học Cơ Sở Dữ Liệu, xe máy có biển số đăng ký 52-0549,… ví dụ thực thể
1.3.2 Thuộc tính (attribute)
Các đặc điểm riêng thực thể gọi thuộc tính Chẳng hạn thuộc tính sinh viên Nguyễn Văn Thành là:mã số sinh viên, giới tính, ngày sinh, hộ thường trú, lớp theo học, …(Trong giáo trình này, tên thuộc tính viết chữ in hoa)
1.3.3.Loại thực thể (entity type)
Là tập hợp thực thể có thuộc tính Mỗi loại thực thể phải đặt tên cho có ý nghĩa Một loại thực thể biểu diễn hình chữ nhật
Ví dụ sinh viên có mã sinh viên ““02CĐTH019”, “02CĐTH519”, “02TCTH465”, … nhóm lại thành loại thực thể, đặt tên Sinhvien chẳng hạn Tương tự ứng dụng quản lý điểm sinh viên (sẽ trình bày sau đây) ta có loại thực thể Monhoc, Lop, Khoa,… (Trong giáo trình này, tên loại thực thể in hoa ký tự đầu tiên, ký tự cịn lại viết thường)
1.3.4.Khố (key)
Khố loại thực thể E hay tập thuộc tính E dùng để phân biệt hai thực thể E Ví dụ khoá loại thực thể Sinhvien MASV, Lớp MALOP, Khoa MAKHOA, Monhoc MAMH,…Cần ý biểu diễn hệ thống mơ hình thực thể kết hợp tên loại thực thể phải khác Trong danh sách thuộc tính loại thực thể tập thuộc tính khố thường gạch liền nét Nếu hệ thống có nhiều loại thực thể, để đơn giản hố mơ hình, người ta nêu tên loại thực thể; cịn thuộc tính loại thực thể liệt kê riêng
(5)Ví dụ 1.1:
Bài tốn quản lý điểm sinh viên phát biểu sơ sau: Mỗi sinh viên cần quản lý thông tin như: họ tên (HOTENSV),ngày tháng năm sinh(NGAYSINH), giới tính (NU), nơi sinh(NƠISINH), hộ thường trú (TINH) Mỗi sinh viên cấp mã số sinh viên (MASV) để phân biệt với sinh viên khác trường, sinh viên thuộc lớp
Mỗi lớp học có mã số lớp (MALOP)duy để phân biệt với tất lớp học khác trường: có tên gọi (TENLOP) lớp, lớp thuộc khoa
Mỗi khoa có tên gọi (TENKHOA) mã số (MAKHOA) để phân biệt với khoa khác
Mỗi mơn học có tên gọi (TENMH) cụ thể, học số đơn vị học trình (DONVIHT) ứng với môn học mã số (MAMH) để phân biệt với môn học khác
Mỗi giảng viên cần quản lý thông tin: họ tên(HOTENGV), cấp học vị (HOCVI), thuộc chuyên ngành (CHUYENNGANH) gán cho mã số gọi mã giảng viên(MAGV) để phân biệt với giảng viên khác Mỗi giảng viên dạy nhiều môn nhiều khoa, thuộc quản lý hành khoa
Mỗi sinh viên với môn học phép thi tối đa lần, lần thi (LANTHI), điểm thi (DIEMTHI)
Mỗi môn học lớp học phân công cho giảng viên dạy (tất nhiên giảng viên dạy nhiều mơn lớp)
Với tốn loại thực thể cần quản lý như: Sinhviên, Mơnhọc, Khoa, Lớp, Giảngviên
Ví dụ với loại thực thể Sinhviên cần quản lý thuộc tính như: MASV,HOTENSV, NGAYSINH, … ta biểu diễn sau:
1.3.5.Mối Kết Hợp (relationship)
Mối kết hợp diễn tả liên hệ loại thực thể ứng dụng tin học
Ví dụ mối kết hợp hai loại thực thể Sinhviên Lop, mối kết hợp Sinhviên với Mônhọc,
Mối kết hợp biểu diễn hình elip hai bên hai nhánh gắn kết với loại thực thể (hoặc mối kết hợp) liên quan, tên mối kết hợp thường là: thuộc, gồm , chứa,
Chẳng hạn hai loại thực thể Lớp Khoa có mối kết hợp “thuộc” sau:
(6)Bản số mối kết hợp:
Bản số nhánh R mối kết hợp thể số lượng thực thể thuộc thực thể nhánh “bên kia” có liên hệ với thực thể nhánh R Mỗi số cặp số (min,max), số lượng tối thiểu số lượng tối đa thực thể tham gia vào mối kết hợp
Ví dụ:
Có nghĩa là: “mỗi sinh viên thuộc lớp nên số bên nhánh Sinhviên (1,1), lớp có đến n sinh viên nên số bên nhánh Lop (1,n)”
Trong số trường hợp đặc biệt, mối kết hợp có thuộc tính kèm chúng thường đặt tên ý với nghĩa đầy đủ
Ví dụ hai loại thực thể Monhoc Sinhvien có mối kết hợp kết với ý nghĩa: “mỗi sinh viên ứng với lần thi môn học có kết điểm thi nhất”
Khố mối kết hợp: hợp khoá loại thực thể liên quan Chẳng hạn thuộc tính MAGV khố loại thực thể Giangvien, MALOP thuộc tính khố loại thực thể Lop, MAMH thuộc tính khố loại thực thể Monhoc, mối kết hợp phancong (giữa loại thực thể Giangvien, Lop, Monhoc) có khố {MAGV,MAMH,MALOP} - phancong mối kết hợp ngơi
(Trong giáo trình này, tên mối kết hợp viết toàn chữ thường)
Việc thành lập mơ hình thực thể kết hợp cho ứng dụng tin học tiến hành theo bước sau:
b1.Xác định danh sách loại thực thể
b2.Xác định mối kết hợp loại thực thể để phác thảo mô hình.
b3.Lập số mối kết hợp.
Để kết thúc chương này, xét mô hình thực thể kết hợp cho tốn quản lý điểm sinh viên nêu ví dụ 1.1
(7)Ví dụ 1.2:
BÀI TẬP
Dựa vào phân tích sơ đây, lập mơ hình thực thể kết hợp (gồm loại thực thể, mối kết hợp, số, thuộc tính loại thực thể, khoá loại thực thể ) cho toán quản lý sau:
1.1 QUẢN LÝ SỐ LƯỢNG NGÀY CÔNG CỦA CÁC NHÂN VIÊN
Để quản lý việc phân công nhân viên tham gia vào xây dựng cơng trình Cơng ty xây dựng ABC tổ chức quản lý sau:
Cùng lúc cơng ty tham gia xây dựng nhiều cơng trình, cơng trình có mã số cơng trình (MACT), mã số cơng trình xác định thơng tin như: Tên gọi cơng trình (TENCT), địa điểm(ĐIAĐIEM), ngày cơng trình cấp giấy phép xây dựng (NGAYCAPGP), ngày khởi cơng (NGAYKC), ngày hồn thành (NGAYHT)
Mỗi nhân viên cơng ty ABC có mã số nhân viên(MANV) nhất, mã số nhân viên xác định thông tin như: Họ tên (HOTEN), ngày sinh(NGSINH), phái (PHAI), địa (ĐIACHI),phòng ban, …
Công ty phân công nhân viên tham gia vào cơng trình, cơng trình phân cho nhiều nhân viên nhân viên lúc tham gia vào nhiều cơng trình Với cơng trình nhân viên có số lượng ngày cơng (SLNGAYCONG) tham gia vào cơng trình
Cơng ty có nhiều phịng ban(Phịng kế tốn, phịng kinh doanh, phòng kỹ thuật, phòng tổ chức, phòng chuyên mơn, Phịng phục vụ,…) Mỗi phịng ban có mã số phòng ban(MAPB) nhất, phòng ban ứng với tên phòng ban(TENPB)
1.2 QUẢN LÝ VIỆC MƯỢN/TRẢ SÁCH Ở MỘT THƯ VIỆN Một thư viện tổ chức việc cho mượn sách sau:
Mỗi sách đánh mã sách (MASH) dùng để phân biệt với sách khác (giả sử tác phẩm có nhiều giống có nhiều tập xem có mã sách khác nhau), mã sách xác định thông tin khác : tên sách (TENSACH), tên tác giả (TACGIA), nhà xuất (NHAXB), năm xuất (NAMXB)
(8)Mỗi độc giả thư viện cấp cho thẻ thư viện, có ghi rõ mã độc giả (MAĐG), với thông tin khác : họ tên (HOTEN), ngày sinh (NGAYSINH), địa (ĐIACHI), nghề nghiệp(NGHENGHIEP)
Cứ lượt mượn sách, độc giả phải đăng ký sách cần mượn vào phiếu mượn, phiếu mượn có số phiếu mượn (SOPM) khác nhau, phiếu mượn xác định thông tin như: ngày mượn sách (NGAYMUON), mã độc giả Các sách phiếu mượn không thiết phải trả lần Mỗi sách thuộc nhiều phiếu mượn khác (tất nhiên thời điểm khác nhau)
1.3 QUẢN LÝ LỊCH DẠY CỦA GIÁO VIÊN
Để quản lý lịch dạy giáo viên lịch học lớp, trường tổ chức sau:
Mỗi giáo viên có mã số giáo viên (MAGV) nhất, MAGV xác định thông tin như: họ tên giáo viên (HOTEN), số điện thoại (DTGV) Mỗi giáo viên dạy nhiều môn cho nhiều khoa thuộc quản lý hành chánh khoa
Mỗi mơn học có mã số mơn học (MAMH) nhất, môn học xác định tên môn học (TENMH) Ứng với lớp mơn học phân cho giáo viên Mỗi phòng học có số phịng học (PHONG) nhất, phịng có chức (CHUCNANG); chẳng hạn phịng lý thuyết, phịng thực hành máy tính, phịng nghe nhìn, xưởng thực tập khí,…
Mỗi khoa có mã khoa (MAKHOA) nhất, khoa xác định thông tin như: tên khoa (TENKHOA), điện thoại khoa(DTKHOA)
Mỗi lớp có mã lớp (MALOP) nhất, lớp có tên lớp (TENLOP), sĩ số lớp (SISO) Mỗi lớp học nhiều mơn nhiều khoa thuộc quản lý hành khoa
Hàng tuần, giáo viên phải lập lịch báo giảng cho biết giáo viên dạy lớp nào, ngày (NGAYDAY), mơn gì?, phịng nào, từ tiết (TUTIET) đến tiết (ĐENTIET),tựa đề dạy (BAIDAY), ghi (GHICHU) tiết dạy này, dạy lý thuyết LYTHUYET) hay thực hành - giả sử LYTHUYET=1 dạy thực hành LYTHUYET=2 lý thuyết, ngày có 16 tiết, sáng từ tiết đến tiết 6, chiều từ tiết đến tiết 12, tối từ tiết 13 đến 16
Một số yêu cầu hệ thống như:: Lập lịch dạy tuần giáo viên Tổng số dạy giáo viên theo môn cho lớp, …
1.4 QUẢN LÝ HỌC VIÊN Ở MỘT TRUNG TÂM TIN HỌC
Trung tâm tin học KTCT thường xuyên mở lớp tin học ngắn hạn dài hạn Mỗi lớp ngắn hạn có nhiều mơn học (chẳng hạn lớp Tin học văn phịng có mơn : Word, Power Point, Excel, cịn lớp lập trình Pascal học mơn Pascal) Các lớp dài hạn (chẳng hạn lớp kỹ thuật viên đồ hoạ đa truyền thông, lớp kỹ thuật viên lập trình, lớp kỹ thuật viên phần cứng mạng,… ) học nhiều học phần học phần có nhiều mơn học
Mỗi học viên có mã học viên(MAHV) thuộc lớp (nếu học viên lúc học nhiều lớp ứng với lớp, học viên có MAHV khác nhau) Mỗi học viên xác định họ tên (HOTEN), ngày sinh (NGAYSINH),nơi sinh (NOISINH), phái nam hay nữ (PHAI), nghề nghiệp (NGHENGHIEP) - nghề nghiệp SINH VIÊN, GIÁO VIÊN, KỸ SƯ, HỌC SINH, BUÔN BÁN,…
(9)Trung tâm KTCT có nhiều lớp, lớp có mã lớp (MALOP), lớp xác định thông tin: tên lớp (TENLOP), thời khoá biểu, ngày khai giảng (NGAYKG), học phí (HOCPHI)
Chú ý thời điểm, trung tâm mở nhiều lớp cho chương trình học Với lớp dài hạn ngày khai giảng xem ngày bắt đầu học phần HỌC PHÍ học phí học phần, với lớp ngắn hạn HỌC PHÍ học phí tồn khố học
Trung tâm có nhiều mơn học, mơn học có mã mơn học (MAMH) nhất, môn học xác định tên môn học(TENMH), số tiết lý thuyết (SOTIETLT), số tiết thực hành (SOTIETTH)
Mỗi học viên ứng với môn học có điểm thi(DIEMTHI) Mỗi lần đóng học phí, học viên trung tâm giao cho phiếu biên lai thu tiền, biên lai có số biên lai để quản lý
Một số yêu cầu hệ thống như::Lập danh sách học viên khai giảng khố ngày Lập danh sách học viên lớp ? Cho biết số lượng học viên lớp khai giảng khố ngày ?
1.5 QUẢN LÝ COI THI TUYỂN SINH
Một hội đồng coi thi tuyển sinh có nhiều điểm thi, điểm thi đặt trường Các điểm thi (DIEMTHISO) đánh số điểm thi số 1, điểm thi số 2, điểm thi số 3,…Mỗi điểm thi xác định địa (DIACHIDIEMTHI) Ví dụ: điểm thi số 1, đặt trường PTTH Nguyễn Thị Minh Khai, điểm thi số đặt trường PTTH Bùi Thị Xuân,…
Mỗi thí sinh có số báo danh (SOBD) nhất, số báo danh xác định thông tin: họ tên (HOTEN), ngày sinh (NGAYSINH), phái (PHAI), hộ thường trú (TINH), đối tượng dự thi (DOITUONG), ngành đăng ký thi, khu vực thí sinh (KHUVUC), số hiệu phịng thi Ví dụ: thí sinh Vũ Mạnh Cường, có số báo danh 02978, sinh ngày 12/12/1984, phái nam, hộ thường trú Chợ Gạo - Tiền Giang, thuộc khu vực 1, đối tượng 5B, đăng ký dự thi vào ngành có mã ngành 01, thi phòng thi 0178, điểm thi số
Mỗi ngành có mã ngành (MANGANH) nhất, mã ngành xác định tên ngành (TENNGANH)
Mỗi điểm thi có nhiều phịng thi – phịng thi (PHONGTHI) đánh số khác tất điểm thi Trong phịng thi, danh sách thí sinh xếp theo thứ tự alphabet (do phịng thi có thí sinh nhiều ngành khác nhau) Mỗi phịng thi có thêm cột ghi (GHICHU) - ghi thêm thông tin cần thiết phịng thi nằm dãy nhà Ví dụ phòng thi 0060 nằm dãy nhà H lầu - điểm thi số - trường PTTH Bùi Thị Xn
Mỗi mơn thi có mã mơn thi (MAMT), mã môn thi biết thông tin : tên môn thi (TENMT), ngày thi (NGAYTHI), buổi thi (BUOITHI), thời gian làm thi tính phút (PHUT) Thời gian làm thi môn tối thiểu 90 phút tối đa 180 phút (tuỳ theo kỳ tuyển sinh công nhân, trung cấp, cao đẳng hay đại học)
Mỗi ngành có mã ngành, chẳng hạn ngành Công Nghệ Thông Tin có mã ngành 01, ngành Cơng Nghệ Hố Thực Phẩm có mã ngành 10,…
Mỗi đơn vị có cán tham gia vào kỳ thi có mã đơn vị (MADONVI), mã đơn vị xác định tên đơn vị (TENDONVI) Nếu cán bộ, công nhân viên trường đơn vị khoa/phịng quản lý cán đó, giáo viên từ trường khác ghi rõ tên đơn vị Chẳng hạn cán Nguyễn Thanh Liêm đơn vị Khoa Công Nghệ Thông Tin, cán coi thi Nguyễn Thị Tuyết Mai, đơn vị trường PTTH Ngôi Sao - Quận 1,…
(10)Mỗi cán coi thi làm việc điểm thi Mỗi cán có mã số (MACANBO), MACANBO xác định thông tin khác : họ tên (HOTENCB), đơn vị công tác, chức vụ (CHUCVU) phân công điểm thi, chẳng hạn chức vụ điểm trưởng, điểm phó, giám sát, thư ký, cán coi thi, phục vụ,… Ví dụ cán Nguyen Van Thanh đơn vị Khoa Công Nghệ Thông Tin, làm nhiệm vụ thi điểm thi số 1, chức vụ giám sát phịng thi
CHƯƠNG MƠ HÌNH DỮ LIỆU QUAN HỆ 2.1 CÁC KHÁI NIỆM CƠ BẢN
Mơ hình liệu quan hệ (Ralational Data Model)- gọi tắt mơ hình quan hệ, EF.Codd đề xuất năm 1970 Nền tảng lý thuyết khái niệm lý thuyết tập hợp quan hệ, tức tập giá trị
Mơ hình liệu quan hệ mơ hình nghiên cứu nhiều nhất, thực tiễn cho thấy có sở lý thuyết vững Mơ hình liệu với mơ hình thức thể kết hợp sử dụng rộng rãi việc phân tích thiết kế CSDL
Sau khái niệm mơ hình liệu quan hệ 2.1.1.Thuộc Tính(attribte):
Thuộc tính đặc điểm riêng đối tượng (đối tượng được hiểu loại thực thể mơ hình thực thể kết hợp), thuộc tính có tên gọi và phải thuộc
kiểu liệu nhất định Kiểu liệu (data type)
Các thuộc tính phân biệt qua tên gọi phải thuộc kiểu liệu định (số, chuỗi, ngày tháng, logic, hình ảnh,…) Kiểu liệu kiểu vơ hướng kiểu có cấu trúc Nếu thuộc tính có kiểu liệu vơ hướng gọi thuộc tính đơn hay thuộc tính nguyên tố, thuộc tính có kiểu liệu có cấu trúc ta nói khơng phải thuộc tính nguyên tố
Chẳng hạn với sinh viên Nguyễn Văn Thành thuộc tính họ tên, mã số sinh viên thuộc kiểu chuỗi, thuộc tính ngày sinh thuộc kiểu ngày tháng, hộ thường trú kiểu chuỗi, thuộc tính hình ảnh kiểu hình ảnh,…
Miền giá trị (domain of values)
Thơng thường thuộc tính chọn lấy giá trị tập kiểu liệu tập hợp gọi miền giá trị thuộc tính Chẳng hạn thuộc tính NỮ có miền giá trị {nam,nữ}, thuộc tính màu da có miền giá trị {da trắng, da vàng, da đen, da đỏ}, thuộc tính điểm thi số thuộc tập {0; 1; 2;…,10]
Lưu ý khơng lưu ý đến ngữ nghĩa tên thuộc tính thường ký hiệu chữ in hoa bảng chữ latinh: A,B,C,D,… Những chữ in hoa X,Y,Z,W,… thường dùng thay cho nhóm nhiều thuộc tính Đơi cịn dùng ký hiệu chữ với số
A1,A2,…,An để thuộc tính trường hợp tổng quát hay muốn đề cập đến số lượng thuộc tính Tên thuộc tính phải đặt cách gợi nhớ, khơng nên đặt tên thuộc tính q dài (vì làm cho việc viết câu lệnh truy vấn trở nên vất vả hơn), khơng nên đặt tên thuộc tính q ngắn (vì khơng cho thấy ngữ nghĩa thuộc tính), đặc biệt khơng đặt trùng tên hai thuộc tính mang ngữ nghĩa khác thuộc hai đối tượng khác
(11)Trong nhiều hệ quản trị sở liệu, người ta thường đưa thêm vào miền giá trị thuộc tính giá trị đặc biệt gọi giá trị rỗng (NULL) Tuỳ theo ngữ cảnh mà giá trị đặc trưng cho giá trị xác định giá trị chưa xác định vào thời điểm nhập tin xác định vào thời điểm khác
2.1.2 Lược Đồ Quan Hệ (relation schema)
Tập tất thuộc tính cần quản lý đối tượng với mối liên hệ chúng gọi lược đồ quan hệ Lược đồ quan hệ Q với tập thuộc tính {A1,A2, ,An} viết (A1,A2, ,An), ký hiệu Q+ = {A1,A2, ,An}.
Chẳng hạn lược đồ quan hệ Sinhviên với thuộc tính liệt kê ví dụ 1.1 viết sau:
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH, MALOP)
Thường thành lập lược đồ quan hệ, người thiết kế gắn cho ý nghĩa định, gọi tân từ lược đồ quan hệ chẳng hạn tân từ lược đồ quan hệ Sinhvien là: ”Mỗi sinh viên có MASV Mỗi MASV xác định thuộc tính cịn lại sinh viên HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP”
Khi phát biểu tân từ cho lược đồ quan hệ, người thiết kế cần phải mô tả đầy đủ ý nghĩa để người khác tránh hiểu nhầm Dựa vào tân từ này, người ta xác định tập khoá, siêu khoá lược đồ quan hệ (sẽ trình bày mục kế tiếp)
Nhiều lược đồ quan hệ nằm hệ thống thông tin gọi lược đồ cơ sở liệu.
Khái niệm lược đồ quan hệ ứng với khái niệm loại thực thể mơ hình thực thể kết hợp 2.1.3.Quan Hệ (relation)
Sự thể lược đồ quan hệ thời điểm gọi quan hệ, rõ ràng lược đồ quan hệ xác định nhiều quan hệ
Thường ta dùng ký hiệu R,S,Q để lược đồ quan hệ, quan hệ thường dùng ký hiệu r, s,q,…
Về trực quan quan hệ (hay bảng quan hệ) bảng hai chiều gồm dịng cột
Một quan hệ có n thuộc tính gọi quan hệ n ngơi
Để quan hệ r xác định lược đồ quan hệ Q ta viết r(Q) 2.1.4 Bộ (Tuple)
Mỗi bộ là thông tin đối tượng thuộc quan hệ, gọi mẫu tin
Thường người ta dùng chữ thường (như t,μ,…) để biểu diễn quan hệ, chẳng hạn để nói t quan hệ r ta viết t r
2.1.5 Siêu Khoá – Khoá (super key- key)
S siêu khoá (super key) của Q với r quan hệ Q, t1,t2 hai thuộc r t1.S ≠ t2.S
Một lược đồ quan hệ có nhiều siêu khoá
Chẳng hạn lược đồ quan hệ Sinhvien có siêu khố là: {MASV,HOTENSV}, {MASV,HOTENSV,NU}, {MASV,HOTENSV,NU,TINH },…
(12)là khố (trong phần sau khố gọi tắt khố) Chẳng hạn với lược đồ quan hệ Sinhvien có khố {MASV} Thường thuộc tính khố gạch theo kiểu liền nét
Một thuộc tính gọi thuộc tính khố ngoại khơng thuộc tính khố lược đồ quan hệ lại thuộc tính khố lược đồ quan hệ khác, chẳng hạn MALOP khoá ngoại lược đồ quan hệ Sinhvien Thường thuộc tính khố ngoại gạch theo kiểu
khơng liền nét
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, TINH, MALOP) Lop(MALOP,TENLOP,MAKHOA)
Ý nghĩa thực tế khoá dùng để nhận diện quan hệ, nghĩa là, cần tìm t đó, ta cần biết giá trị thành phần khoá t đủ để dị tìm hồn tồn xác định quan hệ
Trong thực tế loại thực thể tồn khách quan (ví dụ: Sinhviên, Giảng viên, Nhân viên, Hàng hoá,…) người thiết kế sở liệu thường gán thêm cho lược đồ quan hệ thuộc tính giả gọi mã số để làm khố (ví dụ: mã số sinh viên, mã số giảng viên, mã số nhân viên, mã số hàng hố,…) Trong lược đồ quan hệ biểu diễn cho trừu tượng hố thường có khoá tổ hợp hai hay nhiều thuộc tính
Một số hệ quản trị sở liệu có tự động kiểm tra tính khố Tức thêm q2 có giá trị khố trùng với giá trị khố q1 có quan hệ hệ thống báo lỗi yêu cầu nhập lại giá trị khác
Người ta quy ước rằng:
-Trong quan hệ thuộc tính khố khơng chứa giá trị rỗng
-Khơng phép sửa đổi giá trị thuộc tính khố q Nếu muốn sửa đổi giá trị thuộc tính khố q, người sử dụng phải huỷ bỏ q sau thêm q’ với giá trị khoá sửa đổi
2.2.CHUYỂN MƠ HÌNH THỰC THỂ KẾT HỢP SANG MƠ HÌNH DỮ LIỆU QUAN HỆ Sau số quy tắc sử dụng việc chuyển đổi mơ hình thực thể kết hợp sang mơ hình liệu quan hệ
Quy tắc 1:
Chuyển đổi loại thực thể thành lược đồ quan hệ, thuộc tính loại thực thể thành thuộc tính lược đồ quan hệ, thuộc tính khố loại thực thể thuộc tính khố lược đồ quan hệ
Chẳng hạn loại thực thể Sinhvien ví dụ 1.2 áp dụng quy tắc chuyển thành lược đồ quan hệ Sinhvien sau:
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, TINH,….) Quy tắc 2:
Nếu mối kết hợp mà hai nhánh có số max n mối kết hợp chuyển thành lược đồ quan hệ K’ gồm thuộc tính mối kết hợp K, cộng thêm thuộc tính khố hai lược đồ quan hệ A, B tương ứng với hai thực thể tham gia vào mối kết hợp Khoá lược đồ quan hệ K’ gồm hai khoá hai lược đồ quan hệ A B
(13)Chẳng hạn mối kết hợp Phancong ba loại thực thể Giangvien, Monhoc Lop chuyển thành lược đồ quan hệ Phancong có tập khố {MAGV,MAMH,MALOP} sau: Phancong(MAGV,MAMH,MALOP)
Quy tắc 3:
Mối kết hợp mà nhánh có số n (nhánh B) nhánh cịn lại có số max (nhánh A) loại bỏ mối kết hợp khỏi mơ hình thực thể kết hợp thêm thuộc tính khố lược đồ tương ứng với loại thực thể nhánh B vào lược đồ tương ứng với loại thực thể nhánh A (khoá B thành khố ngoại A) Nếu mối kết hợp có thuộc tính thuộc tính thêm vào lược đồ quan hệ tương ứng với loại thực thể nhánh A
Chẳng hạn mối kết hợp thuộc hai loại thực thể Sinhvien Lop nên lược đồ quan hệ Sinhvien sửa thành sau: Sinhvien(MASV,HOTENSV,NU,NGAYSINH, TINH,MALOP)
Quy tắc 4:
Nếu mối kết hợp mà hai nhánh có số max áp dụng quy tắc cho hai nhánh tuỳ chọn
Ví dụ 2.1:
Sau mơ hình liệu quan hệ chuyển từ mơ hình thực thể kết hợp ví dụ 1.2 Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH, MALOP) Lop(MALOP,TENLOP,MAKHOA)
Khoa(MAKHOA,TENKHOA)
Monhoc(MAMH,TENMH,DONVIHT)
Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) Ketqua(MASV, MAMH, LANTHI,DIEMTHI)
Phancong(MALOP,MAMH,MAGV) 2.3 NGÔN NGỮ ĐẠI SỐ QUAN HỆ
2.3.1 Phép Hợp quan hệ(Union)
Ta nói hai quan hệ r1 r2 tương thích chúng định nghĩa lược
đồ quan hệ
Cho hai quan hệ tương thích r1 r2 Hợp hai quan hệ r1 r2 ký hiệu r1 + r2
một quan hệ lược đồ quan hệ Q gồm phần tử thuộc r1 thuộc r2, tức là:
r1 + r2 = {t / t r1 t r2}
Ví dụ 2.2
Khi nội dung quan hệ r1 + r2 là:
(14)Do thứ tự trước/sau quan hệ khơng quan trọng nên ta có: ∀ r1, r2 r1 + r2 = r2 + r1
∀ r r + r = r
Một cách tổng quát lấy hợp n quan hệ tương thích: cho n quan hệ tương thích r1, r2,…,rn
Hợp n quan hệ r1, r2,…,rn quan hệ r1 + r2+ …+ rn gồm phần tử thuộc r1
hoặc thuộc r2 … thuộc rn
2.3.2 Phép Giao quan hệ (Intersection)
Cho lược đồ quan hệ Q(A1,A2, ,An ) r1 r2 hai quan hệ tương thích Q
Giao hai quan hệ r1 r2 ký hiệu r1 * r2 quan hệ Q gồm phần tử
vừa thuộc r1 vừa thuộc r2
Vậy: r1 * r2 = { t / t r1 t r2}
Chẳng hạn với ví dụ 2.2 r1 * r2 là:
2.3.3.Phép Trừ quan hệ (Minus)
Cho hai quan hệ tương thích r1 r2 có tập thuộc tính Q(A1,A2, ,An ) Hiệu r1 cho r2
ký hiệu r1 – r2 quan hệ Q gồm phần tử thuộc r1 mà không thuộc r2, nghĩa
là r1 - r2 = {t r1 t ∉ r2}
Chẳng hạn với ví dụ 2.2 r1 - r2 là:
2.3.4.Tích Decac quan hệ Cartesian Product) Cho hai lược đồ quan hệ
Q1 (A1,A2, ,An)
Q2 (B1,B2, ,Bm)
Giả sử r1 , r2 hai quan hệ Q1, Q2 tương ứng Tích Descartes (decac) r1 r2
ký hiệu r1x r2 quan hệ lược đồ quan hệ có tập thuộc tính Q= Q1 Q2
Vậy quan hệ r1 x r2 quan hệ lược đồ:
Q = Q1 Q2 = { A1, A2, , An, B1, B2, , Bm } với r1 x r2 = {(t1,t2) : t1 r1, t2
r2 }
(15)Ví dụ 2.3 cho r1 r2
r1 r2
Thì kết r1 x r2 sau:
2.3.5.phép chia quan hệ: Cho lược đồ quan hệ
Q1(A1,A2, ,An)
Q2(B1,B2, ,Bm)
r quan hệ xác định Q1; s quan hệ xác định Q2 (n>m s khác rỗng), có m thuộc
tính chung (giống mặt ngữ nghĩa, thuộc tính so sánh được) r s phép chia quan hệ r s ký hiệu r ÷ s , quan hệ q có n - m thuộc tính định nghĩa sau:
q = r ÷ s={t / ∀ u s, (t,u) r} Ví dụ 2.4:
r s r ÷ s
2.3.6.Phép Chiếu (projection)
Tài liệu lưu hành nội Trang 15
A B C
6
7 5
E F H
1
4
7
A B C E F H
6 5
6 4
6
7 5
7 5
7 5
A B C D
a b c d
a b e f
b c e f
c d c d
c d e f
a b d e
C D
c d
e f
A B
a b
(16)Cho lược đồ quan hệ Q(A1,A2, ,An), r quan hệ Q X Q+ Phép chiếu r
lên tập thuộc tính X, ký hiệu r[X] (hoặc r.X) tạo thành lược đồ quan hệ r’, tập thuộc tính r’ X quan hệ r’ trích từ r cách lấy thuộc tính có X
Phép chiếu phép rút trích liệu theo cột Chẳng hạn với r1 ví dụ 2.2
đó ta có quan hệ r1 chiếu lên X={A,C} là:
r1[X]
A C
a1 c1
a2 c2
a3 c3
a4 c4
2.3.7.Phép Chọn (Selection)
Cho lược đồ quan hệ Q(A1,A2, ,An), r quan hệ lược đồ quan hệ Q X
tập Q+ E mệnh đề logic phát biểu tập X Phần tử t r thoả mãn
điều kiện E ký hiệu t(E) Phép chọn từ quan hệ r theo điều kiện E (ký hiệu r : E )sẽ tạo thành quan hệ ký hiệu r(E), r(E) = {t: t r t(E)}
Phép chọn phép rút trích liệu theo dịng Chẳng hạn với r2 ví dụ 2.3
điều kiện E là: “F >= 6” kết r2(E) hay r2: “F >= 6” có nội dung
2.3.8 Phép θ - Kết
Cho hai lược đồ quan hệ Q1 Q2 sau
Q1(A1,A2, ,An)
Q2(B1,B2, ,Bm)
r s hai quan hệ Q1 Q2
Ai Bj thuộc tính Q1 , Q2 cho MGT(AI)= MGT(BJ) θ
phép so sánh (=, <, >, ≤ , ≥, ≠ ) MGT(AI)
Ai θ Bj
Phép θ kết r s theo điều kiện Ai θ Bj ký hiệu r |><| s quan hệ lược đồ
quan hệ có tập thuộc tính Q1 Q2 gồm thuộc tích Descartes r s Ai θ
Bj
Ai θ Bj
r |><| s = {t12 / ∃ t1 r1 , ∃ t2 r2 cho t12.Q1+ = t1 ; t12.Q2+ = t2 ; t12Ai θ t12.Bj }
Ví dụ 2.5 Cho hai quan hệ r1 r2 sau:
r1 r2
Tài liệu lưu hành nội Trang 16
A B C
6
7 5
4
E F H
1
4
(17)Ai thuộc tính B, Bj thuộc tính F θ phép so sánh “>=” Ta kết quan hệ
sau:
2.3.9.Phép Kết Tự Nhiên (natural join)
Nếu θ sử dụng phép kết phép so sánh (=) gọi phép kết bằng Hơn Ai ≡ Bj phép kết gọi phép kết tự nhiên Phép kết tự
nhiên phép kết thường dùng thực tế
Ngôn ngữ với phép tốn gọi ngơn ngữ đại số quan hệ Sau ví dụ ngơn ngữ đại số quan hệ
Ví dụ 2.6
Cho lược đồ CSDL dùng để quản lý điểm sinh viên mơ tả ví dụ 2.1 Hãy thực yêu cầu sau ngôn ngữ đại số quan hệ:
1.Lập danh sách sinh viên lớp có mã lớp CDTH2A, danh sách cần MASV,HOTENSV
2.Lập danh sách sinh viên nữ có mã khoa “CNTT”, danh sách cần MASV, HOTENSV
3.Lập bảng điểm thi lần tất môn cho sinh viên lớp CDTH2A, danh sách cần MASV, HOTENSV, TENMH, DIEMTHI
4.Lập phiếu điểm thi lần mơn cho sinh viên có MASV=”00CDTH189” danh sách cần MAMH,TENMH, DONVIHT, DIEMTHI
Giải:
1 Sinhvien: MALOP=”CDTH2A” [MASV,HOTENSV] MALOP
2 (Sinhvien|><| Lop: NU and MAKHOA=”CNTT”) [MASV,HOTENSV] MASV MAMH
3 (((Sinhvien |><| Ketqua ) |><| Monhoc): MALOP = “CDTH2A” and LANTHI=1 [MASV,HOTENSV,TENMH, DIEMTHI]
MAMH
4 (Ketqua |><| Monhoc : MASV=‘00CDTH189' and LANTHI=1) [MAMH,TENMH,DONVIHT,DIEMTHI]
Tài liệu lưu hành nội Trang 17
A B C E F H
6 5
6
7 5
(18)BÀI TẬP
2.1 Hãy lập mơ hình liệu quan hệ cho toán quản lý 1.1, 1.2, 1.3,1.4, 1.5 Hãy xác định khoá cho lược đồ cho toán
2.2 Cho lược đồ sở liệu
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP) Lop(MALOP,TENLOP, MAKHOA)
Khoa(MAKHOA,TENKHOA)
Monhoc(MAMH,TENMH,DONVIHT)
Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) Ketqua(MASV, MAMH, LANTHI, DIEMTHI)
Phancong(MALOP,MAMH,MAGV)
Thực yêu cầu sau ngôn ngữ đại số quan hệ:
a.Lập danh sách sinh viên có hộ thường trú tỉnh “LONG AN”, danh sách cần thông tin: MASV, HOTENSV, NGAYSINH, TENLOP
b.Lập danh sách sinh viên lớp có MALOP CDTH2A, danh sách cần thông tin: MASV, HOTENSV, NGAYSINH, TINH
c.Lập danh sách giảng viên có cấp học vị THAC SY khoa có MAKHOA “CNTT”, danh sách cần: MAGV, HOTENGV, CHUYENNGANH
d.Lập bảng điểm thi lần môn học “869” cho tất sinh viên thuộc hai lớp có MALOP “CĐTH2A” “CĐTH2B”, danh sách cần: MASV,HOTENSV,DIEMTHI
e.Lập danh sách giảng viên dạy lớp CĐTH2A, danh sách cần thông tin: MAGV, HOTENGV,TENKHOA, HOCVI, TENMH
f.Lập danh sách môn mà lớp CDTH2A học, danh sách cần thông tin: MAMH, TENMH, DONVIHT, HOTENGV
g.Lập danh sách giảng viên dạy sinh viên có MASV “00CDTH189“, danh sách cần MAGV, HOTENGV, HOCVI, CHUYENNGANH, TENKHOA, TENMH
h.Lập danh sách sinh viên có mã khoa “CNTT” có điểm thi lần môn học “869” lớn 8, danh sách cần MASV, HOTENSV, DIEMTHI, TENLOP
CHƯƠNG 3 NGÔN NGỮ TRUY VẤN DỮ LIỆU
3.1 Mở Đầu
Mỗi hệ quản trị CSDL phải có ngôn ngữ giao tiếp người sử dụng với sở liệu Ngôn ngữ giao tiếp CSDL gồm loại sau:
Ngôn ngữ mô tả liệu (Data Definition Language –DDL): Cho phép khai báo cấu trúc bảng CSDL, khai báo mối liên hệ liệu (relatíonship) quy tắc áp đặt lên liệu
(19)Ngơn ngữ thao tác liệu (Data Manipullation Language- DML) cho phép người sử dụng thêm (insert), xố (delete), sửa (update) liệu CSDL
Ngôn ngữ truy vấn liệu (hay ngơn ngữ hỏi đáp có cấu trúc(Structured Query Language-SQL)): Cho phép người sử dụng khai thác CSDL để truy vấn thông tin cần thiết CSDL
Ngôn ngữ quản lý liệu (Data Control Language- DCL): Cho phép người quản
trị hệ thống thay đổi cấu trúc bảng liệu, khai báo bảo mật thông tin cấp quyền khai thác CSDL cho người sử dụng
Những năm 1975-1976, IBM lần đưa hệ quản trị CSDL kiểu quan hệ mang tên SYSTEM–R với ngôn ngữ giao tiếp CSDL SEQUEL (Structured English Query Language) Năm 1976 ngôn ngữ SEQUEL cải tiến thành SEQUEL-2, khoảng năm 1978-1979 SEQUEL-2 cải tiến đổi tên thành ngôn ngữ truy vấn có cấu trúc (Structured Query Language) Cuối năm 1979 hệ quản trị CSDL cải tiến thành SYSTEM-R* Năm 1986 viện tiêu chuẩn quốc gia Mỹ (American National Standards Institute –ANSI) cơng nhận chuẩn hố ngơn ngữ SQL sau tổ chức tiêu chuẩn giới (International Standards Organization -ISO) công nhân ngơn ngữ Đó chuẩn SQL-86 tới SQL qua lần chuẩn hoá (1989,1992,1996) để mở rộng phép toán tăng cường khả bảo mật tính tồn vẹn liệu
Trong chương nghiên cứu ngôn ngữ SQL
Ngơn ngữ truy vấn SQL có tập lệnh phong phú để thao tác sở liệu Chẳng hạn lệnh create để tạo bảng quan hệ, lệnh update để cập nhật liệu, lệnh delete để xoá liệu, lệnh insert để thêm liệu,…Trong chương này, chúng tơi trình bày với bạn đọc câu lệnh quan trọng
nhất SQL câu lệnh hỏi - tìm kiếm liệu SELECT Kết lệnh select quan hệ, quan hệ kết kết xuất hình, máy in, thiết bị lưu trữ thông tin khác Để đơn giản cách trình bày, ta xem quan hệ để thực câu truy vấn quan hệ nguồn quan hệ kết truy vấn quan hệ đích
Mỗi câu lệnh SQL viết nhiều dòng kết thúc lệnh dấu chấm phẩy (;), nhiên từ khoá, tên hàm, tên thuộc tính, tên bảng, tên đối tượng không phép viết tách xuống hàng Trong vận dụng thực tế, từ khố, tên thuộc tính, tên bảng, tên đối tượng viết in hoa hay chữ thường
Cú pháp tổng quát câu lệnh select sau:
select distinct /*/danh sách thuộc tính/ <biểu thức>, from <danh sách quan hệ>
where <biểu thức điều kiện> group by <danh sách thuộc tính> having <điều kiện nhóm>
order by <danh sách thuộc tính [desc]> Trong đó:
<biểu thức> (expression) kết hợp cách hợp lệ thuộc tính, tốn tử hàm Sau tốn tử hàm thơng dụng (cần ý cách sử dụng toán tử hàm tuỳ thuộc vào câu lệnh SELECT ngơn ngữ sử dụng)
Các tốn tử số học:
(20)^ (luỹ thừa),*(nhân),/ (chia), mod (phần dư), +(cộng), - (trừ)
Các toán tử luận lý:
not(phủ định), and(phép hội), or (phép tuyển)
Các toán tử tập hợp:
In (danh sách giá trị), LIKE, NOT LIKE, union(phép hợp), intersect (phép giao), minus(phép trừ)
Các toán tử so sánh :
=, <>, >, <, >=, <=
các hàm xử lý ngày tháng
date(): Trả ngày tháng năm hệ thống time(): Trả phút giây hệ thống
day(biểu thức ngày): Trả trị số từ đến 31 biểu thức ngày
month(biểu thức ngày):Trả số từ đến 12 - tháng biểu thức ngày year(biểu thức ngày): Trả năm biểu thức ngày
len(biểu thức chuỗi): Trả chiều dài chuỗi
Các hàm tính tốn theo nhóm
sum <thuộc tính>tính tổng giá trị theo thuộc tính
max<thuộc tính>:cho biết giá trị lớn theo thuộc tính min<thuộc tính>:cho biết giá trị nhỏ theo thuộc tính avg<thuộc tính>:Cho biết giá trị trung bình theo thuộc tính count */ thuộc tính/ distinct <thuộc tính>
count *: đếm tất
count<thuộc tính>:chỉ đếm mà giá trị thuộc tính khác NULL count distinct <thuộc tính>: Chỉ đếm mà giá trị thuộc tính khác NULL Hơn nữa, mà giá trị trùng thuộc tính đếm (đại diện cho nhóm)
Sau ta tìm hiểu kỹ mệnh đề câu lệnh SELECT
Để minh họa cho ví dụ chương này, dùng lại lược đồ sở liệu đề cập chương
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH, MALOP) Lop(MALOP,TENLOP,MAKHOA)
Khoa(MAKHOA,TENKHOA)
Monhoc(MAMH,TENMH,DONVIHT)
Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) Ketqua(MASV, MAMH, LANTHI,DIEMTHI)
Phancong(MALOP,MAMH,MAGV)
3.2.TÌM THƠNG TIN TỪ CÁC CỘT CỦA BẢNG - MỆNH ĐỀ SELECT select distinct /*/danh sách thuộc tính/ <biểu thức>,
(21)from <danh sách quan hệ>
-Những thuộc tính liệt kê mệnh đề select thuộc tính có quan hệ đích
-Ký hiệu * theo sau từ khóa select dùng để tất thuộc tính quan hệ nguồn thuộc tính quan hệ đích Danh sách thuộc tính cách dấu phẩy thứ tự thứ tự thuộc tính quan hệ đích
-Mệnh đề from: Những quan hệ liên quan đến câu truy vấn liệt kê sau mệnh đề from, quan hệ cách dấu phẩy, thứ tự quan hệ không quan trọng
Cần ý mệnh đề From từ hai quan hệ trở lên, có thuộc tính mệnh đề select thuộc tính nhiều quan hệ cần phải rõ thuộc tính thuộc quan hệ theo cú pháp tênquanhệ.tênthuộctính (sinh viên thường mắc lỗi thực hành với câu lệnh truy vấn SQL) (Do sinh viên học môn chưa học SQL server, nên thực hành tập chương với Access cuối dịng khơng có dấu chấm phẩy – trừ dịng cuối cùng, ký tự đại diện cho nhóm ký tự dấu sao(*) , thực hành với Visual Foxpro cuối dịng có dấu chấm phẩy – trừ dịng cuối cùng)
Ví dụ 3.1:
Lập danh sách sinh viên gồm MASV, HOTENSV, NU, NGAYSINH, TINH, MALOP select MASV, HOTENSV, NU, NGAYSINH, TINH, MALOP
from sinhvien;
Khi cần lấy thông tin tất cột bảng, sử dụng dấu (*) thay cho việc liệt kê tên cột bảng Nếu áp dụng cách viết câu lệnh tương đương với câu lệnh sau:
SELECT * FROM Sinhvien;
(tất nhiên cú pháp sử dụng câu truy vấn liên quan đến quan hệ) Ví dụ 3.2:
Lập danh sách bao gồm thông tin giảng viên mã số giảng viên, họ tên giảng viên, học vị, chuyên ngành
SELECT MAGV,HOTENGV,HOCVI, CHUYENNGANH FROM giangvien;
Câu lệnh tìm kiếm thơng tin từ cột bảng cài đặt phép chiếu bốn thuộc tính MAGV,HOTENGV,HOCVI,CHUYENNGANH quan hệ Giangvien
Nếu muốn đặt tên khác cho tên cột bảng (cịn gọi bí danh-ALIAS), việc thực cách thêm từ khóa AS theo sau tên Nếu tên có chứa ký tự đặc biệt và/hoặc khoảng trắng viết tên cặp dấu ngoặc vng ( [ ] )
Chẳng hạn ví dụ 3.2 viết lại là:
SELECT MAGV AS [MÃ SỐ GIẢNG VIÊN] ,HOTENGV AS [HỌ VÀ TÊN] HOCVI [TRÌNH ĐỘ] CHUYENNGANH AS [ CHUYÊN NGÀNH]
FROM Giangvien;
(22)Câu lệnh SELECT không thực việc trích thơng tin từ cột đơn lẽ bảng mà cịn thực tính tốn theo công thức hay biểu thức dựa giá trị cột ghi bảng
Từ khóa DISTINCT nhằm loại bỏ bớt trùng bảng kết lệnh truy vấn (chỉ giữ lại đại diện cho giống nhau)
Ví dụ 3.3:
Hãy cho biết giảng viên trường thuộc chuyên ngành nào? SELECT DISTINCT CHUYENNGANH
FROM Giangvien;
kết câu lệnh tất chuyên ngành mà giảng trường đảm nhận(tất nhiên chuyên ngành xuất lần kết truy vấn được)
3.3.CHỌN CÁC DÒNG CỦA BẢNG – MỆNH ĐỀ WHERE SELECT DISTINCT /*/danh sách thuộc tính/ <biểu thức>, FROM <danh sách quan hệ>
WHERE <biểu thức điều kiện>
Trong <biểu thức điều kiện> có giá trị (true) sai (false) Đây cài đặt phép chọn ngôn ngữ đại số quan hệ
Nếu điều kiện liên quan đến quan hệ gọi điều kiện chọn, điều kiện liên quan đến từ hai quan hệ trở lên gọi điều kiện kết.
Các điều kiện chọn điều kiện kết phối hợp với tốn tử logic (and,or,not) để tạo nên biểu thức logic phức tạp Cần ý thứ tự điều kiện quan trọng: Nếu nên thực điều kiện chọn trước thực
điều kiện kết (đây vấn đề tối ưu hố câu truy vấn, chúng tơi khơng sâu vấn đề này[3]) Sau số ví dụ cho phép chọn
Ví dụ 3.4:
Lập danh sách mơn học có số đơn vị học trình >=4 Danh sách cần MAMH, TENMH, DONVIHT
SELECT MAMH, TENMH,DONVIHT FROM MONHOC
WHERE DONVIHT >=4; Ví dụ 3.5:
Lập danh sách sinh viên có mã lớp CDTH2A, CDTH2B, CDTH2C SELECT *
FROM SINHVIEN
WHERE malop=”CDTH2A” or malop =””CDTH2B” or malop = ””CDTH2C”; Cũng viết cách khác sau:
SELECT *
FROM SINHVIEN
WHERE malop in (“CDTH2A”,”CDTH2B”,”CDTH2C”); Ví dụ 3.6:
(23)Lập danh sách sinh viên lớp CDTH2A có điểm thi lần môn CSDL 6,8 Select MASV,DIEMTHI
From KETQUA
Where DIEMTHI>=6 and DIEMTHI<=8 and MAMH=”CSDL”; Hoặc viết cách khác
SELECT MASV,DIEMTHI FROM KETQUA
WHERE DIEMTHI BETWEEN AND AND MAMH=”CSDL” Toán tử so sánh tương đối : like
Mẫu so sánh phép tốn like giá trị kiểu text, dãy ký tự bất kỳ, có hai ký tự có ý nghĩa đặc biệt sau đây:
? đại diện cho ký tự vị trí có dấu chấm hỏi % đại diện cho nhóm ký tự vị trí Ví dụ 3.7:
Lập danh sách sinh viên có họ Nguyễn theo học lớp có mã lớp CDTH2A
SELECT *
FROM SINHVIEN
WHERE MALOP=”CDTH2A” AND HOTENSV LIKE “NGUYỄN%”; 3.4.SẮP XẾP CÁC DÒNG CỦA BẢNG - MỆNH ĐỀ ORDER BY
Quan hệ đích xếp tăng/giảm theo (hoặc nhiều) thuộc tính cách sử dụng mệnh đề ORDER BY <danh sách thuộc tính> (độ ưu tiên giảm dần tư trái sang phải), từ khóa DESC (DESCending) dùng muốn xếp giảm dần, khơng có DESC, mặc định CSDL xếp tăng dần ASC (ASCending) theo thuộc tính
Nghĩa danh sách lớp xếp theo cột mã khoa, cột mã khoa trùng xếp theo cột số học viên
Sau vấn đề truy vấn thông tin từ nhiều bảng liệu Ví dụ 3.8:
Lập danh sách lớp có mã khoa “CNTT” danh sách cần thông tin MALOP,TENLOP, TENKHOA
SELECT MALOP,TENLOP,TENKHOA FROM LOP,KHOA
WHERE MAKHOA=“CNTT” AND LOP.MAKHOA=KHOA.MAKHOA; Ví dụ 3.9:
Lập danh sách sinh viên lớp CDTH2A có điểm thi mơn học có mã mơn học “869” lớn hay 8.0
SELECT SINHVIEN.MASV,HOTENSV,NU,NGAYSINH,DIEMTHI FROM SINHVIEN,KETQUA
(24)WHERE MALOP=”CDTH2A” AND MAMH=”869”
AND SINHVIEN.MASV = KETQUA.MASV AND DIEMTHI>=8.0;
Cần ý thuộc tính MASV xuất hai quan hệ Sinhvien ketqua, nên liệt kê mệnh đề SELECT cần rõ thuộc quan hệ ? Tuy nhiên sinh viên cần ý rằng: ta không ghi SINHVIEN.MASV mà ghi KETQUA.MASV kết
3.5 CÂU LỆNH TRUY VẤN LỒNG NHAU
Là câu lệnh mà thành phần WHERE có chứa thêm câu lệnh Select khác Câu lệnh thường gặp liệu cần thiết phải duyệt qua nhiều lần Đây vấn đề khó khăn truy vấn liệu
Ví dụ 3.10:
Lập danh sách sinh viên lớp CDTH2A có điểm thi lần môn học CSDL cao
Với câu lệnh nàynếu dùng ngơn ngữ lập trình khơng có ngơn ngữ hỏi cấu trúc thật dài dịng (đầu tiên phải tìm cho số điểm lớn thỗ mãn điều kiện trên, sau phải duyệt liệu thêm lần để chọn thoã đề bài)
SELECT SINHVIEN.MASV,HOTENSV,NU,NGAYSINH,DIEMTHI FROM SINHVIEN,KETQUA
WHERE MAMH = 'CSDL' AND LANTHI = AND
SINHVIEN.MASV=KETQUA.MASV AND DIEMTHI>=ALL( SELECT DIEMTHI
FROM KETQUA, SINHVIEN
WHERE MAMH='CSDL' AND LANTHI=1 AND SINHVIEN.MASV=KETQUA.MASV);
Sau ví dụ câu lệnh truy vấn lồng nhau: Ví dụ 3.11:
Lập danh sách giảng viên khoa với giảng viên NGUYEN VAN THANH ? Giải:
SELECT *
FROM GIANGVIEN WHERE MAKHOA IN
( SELECT MAKHOA FROM GIANGVIEN
WHERE HOTENGV = “NGUYEN VAN THANH”);
Kết câu hỏi sử dụng phép so sánh với giá trị khác biểu thức điều kiện câu hỏi bao Các phép so sánh có dạng :
<phep so sánh>[<lượng từ>](select - câu hỏi con)
Trong phép so sánh phép so sánh số học phép so sánh tập hợp (đã đề cập phần 3.1)
(25)<lượng từ > ALL, ANY (hoặc SOME) Phép so sánh ANYcó thể thay tương đương phép toán IN, phép so sánh <>ALL thay tương đương phép tốn NOT IN
3.6.GOM NHĨM DỮ LIỆU– MỆNH ĐỀ GROUP BY
Khi cần tính tốn theo nhóm - theo thuộc tính đó, ta dùng mệnh đề GROUP BY, chẳng hạn cần tính điểm trung bình chung tất môn học cho tất sinh viên, cần tính số lượng sinh viên cho lớp, khoa, đếm số lượng sinh viên nữ khoa, đếm số lượng sinh viên tỉnh,…
Mệnh đề GROUP BY <thuộc tính> dùng để phân nhóm liệu bảng có giá trị thuộc tính tạo thành nhóm
Ví dụ 3.12:
Lập bảng điểm trung bình lần môn học sinh viên lớp có mã lớp CDTH2A Danh sách cần: MASV, HOTENSV,DIEMTB( (trong DIEMTB thuộc tính tự đặt)
SELECT KETQUA.MASV, HOTENSV,AVG(DIEMTHI) AS DIEMTB FROM SINHVIEN,KETQUA
WHERE MALOP=”CDTH2A” AND LANTHI=1 AND SINHVIEN.MASV=KETQUA.MASV
GROUP BY KETQUA.MASV, HOTENSV Mệnh đề HAVING <điều kiện nhóm>
Nếu cần kiểm tra điều kiện nhóm dùng mệnh đề Having, chẳng hạn cho biết sinh viên có điểm trung bình mơn ≥ 8, khoa có nhiều 100 sinh viên nữ,…
Lưu ý thuộc tính có tham gia vào mệnh đề GROUP BY để phân nhóm phải liệt kê danh sách thuộc tính theo sau từ khóa SELECT
Mệnh đề HAVING <điều kiện nhóm> sử dụng phép chọn phối hợp với việc phân nhóm liệu
Ví dụ 3.13:
Giống ví dụ 3.11 có thêm điều kiện điểm trung bình mơn thi lớn 8.0
SELECT KETQUA.MASV, HOTENSV,AVG(DIEMTHI) AS DIEMTB FROM SINHVIEN,KETQUA,LOP
WHERE MALOP=”CDTH2A” AND LANTHI=1 AND SINHVIEN.MASV=KETQUA.MASV
GROUP BY KETQUA.MASV, HOTENSV HAVING AVG(DIEMTHI)>=8.0;
Trong lệnh truy vấn tổng hợp, ngoại trừ thành phần SELECT bắt buộc phải đặt lên đầu, thứ tự thành phần khác tùy ý Thứ tự dịch lệnh truy vấn tổng hợp sau:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
(26)Suy cho cùng, chương trình quản lý việc kết xuất báo cáo từ quan hệ, mà SQL cho phép tạo quan hệ cách tiện lợi Vì hiểu vận dụng tốt lệnh truy vấn liệu việc làm hiệu quả!
BÀI TẬP
3.1 Dựa vào lược đồ CSDL
CONGTRINH(MACT,TENCT, ĐIAĐIEM, NGAYCAPGP, NGAYKC, NGAYHT) NHANVIEN(MANV, HOTEN, NGAYSINH, PHAI, ĐIACHI, MAPB)
PHONGBAN(MAPB, TENPB)
PHANCONG(MACT, MANV, SLNGAYCONG) Hãy thực câu hỏi sau SQL:
a.Danh sách nhân viên có tham gia vào cơng trình có mã cơng trình(MACT) X.u cầu thơng tin: MANV,HOTEN, SLNGAYCONG, MANV tăng dần
b.Đếm số lượng ngày cơng cơng trình u cầu thơng tin: MACT, TENCT, TONGNGAYCONG (TONGNGAYCONG thuộc tính tự đặt)
c.Danh sách nhân viên có sinh nhật tháng 08 yêu cầu thông tin: MANV, TENNV, NGAYSINH, ĐIACHI,TENPB, xếp quan hệ kết theo thứ tự tuổi giảm dần
d.Đếm số lượng nhân viên phịng ban u cầu thơng tin: MAPB, TENPB, SOLUONG (SOLUONG thuộc tính tự đặt.)
3.2 Dựa vào lược đồ sở liệu
GIAOVIEN (MAGV,HOTEN, MAKHOA) MONHOC (MAMH,TENMH)
PHONGHOC (PHONG,CHUCNANG) KHOA (MAKHOA,TENKHOA) LOP (MALOP,TENLOP, MAKHOA)
LICHDAY(MAGV,MAMH,PHONG,MALOP,NGAYDAY,TUTIET,ĐENTIET, BAIDAY,
LYTHUYET, GHICHU)
Hãy thực câu hỏi sau SQL
a.Xem lịch báo giảng tuần từ ngày 08/09/2003 đến ngày 14/09/2003 giáo viên có MAGV (mã giáo viên) TH3A040 Yêu cầu: MAGV,HOTEN, TENLOP,TENMH,PHONG, NGAYDAY, TUTIET, ĐENTIET, BAIDAY, GHICHU)
b.Xem lịch báo giảng ngày 08/09/2003 giáo viên có mã khoa CNTT Yêu cầu: MAGV, HOTEN, TENLOP, TENMH, PHONG, NGAYDAY, TUTIET, ĐENTIET, BAIDAY, GHICHU)
c.Cho biết số lượng giáo viên (SOLUONGGV) khoa, kết cần xếp tăng dần theo cột tên khoa yêu cầu: TENKHOA ,SOLUONGGV (SOLUONGGV thuộc tính tự đặt)
(27)Visual Basic Cơ Sở Dữ Liệu) Giả sử lược đồ sở liệu toán quản lý kỳ thi cho sau:
THISINH (MASV, HOTEN, NGAYSINH, MALOP) LOP (MALOP, TENLOP, MAKHOA)
KHOA (MAKHOA,TENKHOA,ĐIENTHOAI) MONTHI (MAMT,TENMONTHI)
KETQUA (MASV, MAMT, ĐIEMTHI)
(Phần giải thích thuộc tính: HOTEN (họ tên thí sinh), NGAYSINH (ngày sinh), MALOP (mã lớp), MASV(mã sinh viên), TENLOP (tên lớp), MAKHOA (mã khoa), TENKHOA (tên khoa), ĐIENTHOAI (số điện thoại khoa), MAMT (mã môn thi), TENMONTHI (tên môn thi), ĐIEMTHI (điểm thi))
Dựa vào lược đồ sở liệu trên, thực yêu cầu sau ngôn ngữ SQL: a.Hãy cho biết số lượng thí sinh khoa đăng ký thi giỏi nghề, cần xếp kết theo chiều tăng dần cột TENKHOA
b.Lập danh sách thí sinh đạt danh hiệu giỏi nghề (Thí sinh đạt danh hiệu giỏi nghề thí sinh khơng có môn thi điểm 8)
c.Lập danh sách thí sinh nhỏ tuổi có mã khoa “CNTT” dự thi giỏi nghề 3.4 Cho Lược đồ sở liệu quản lý nhân viên công ty sau:
NHANVIEN (MANV, HOTEN, NU, NGAYSINH, LUONG, MAPB, MACV) Mỗi nhân viên có mã nhân viên (MANV) nhất, mã nhân viên xác định họ tên nhân viên (HOTEN), giới tính (NU), lương (LUONG), mã phòng ban (MAPB), mã chức vụ (MACV)
PHONGBAN (MAPB,TENPB,TRUSO, MANVPHUTRACH, KINHPHI, DOANHTHU)
Mỗi phịng ban có tên gọi phòng ban(TENPB), địa điểm đặt trụ sở (TRUSO), mã nhân viên phụ trách(MANVPHUTRACH), kinh phí hoạt động (KINHPHI), doanh thu(DOANHTHU)
CHUCVU(MACV,TENCV, LUONGTHAPNHAT, LUONGCAONHAT)
Mỗi chức vụ co tên gọi chức vụ (TENCV), mức lương tối thiểu(LUONGTHAPNHAT), mức lương tối đa (LUONGCAONHAT)
Hãy biểu diễn câu hỏi sau SQL
a.Lập danh sách gồm thơng tin phịng ban cơng ty như: mã số phòng ban, tên phòng ban, địa điểm trụ sở, mã số người phụ trách, kinh phí hoạt động, doanh thu
b.Lập danh sách nhân viên sinh nhật tháng 10
c.Lập danh sách gồm thông tin mã số nhân viên, họ tên lương năm các nhân viên (giả sử luơng năm =12*lương)
d.Lập phòng ban có kinh phí hoạt động cao nhất.
e.Lập danh sách nhân viên phịng ban có mã số phịng ban 40. f Lập danh sách nhân viên phịng có mã số phịng ban 10,30,50.
g Lập danh sách nhân viên có lương tháng từ 2.500.000 đến 4.000.000 h.Tìm nhân viên có tuổi cao thuộc phịng ban có MAPB 10
(28)i.Lập danh sách nhân viên phòng 10,30,50 kết in theo thứ tự tăng dần mã phịng trùng mã phịng xếp giảm dần theo mức lương
k.Lập danh sách nhân viên phòng 10,30,50, in người lãnh đạo của phòng ban
l.lập danh sách gồm mã phịng mà người có mức lương cao phòng lớn hơn 4.000.000
m.Lập mã phòng ban, tên phòng ban, họ tên lãnh đạo phòng tương ứng. n.Lập danh sách người làm việc phịng với ơng Nguyen Van Thanh
o.Lập biết mã số nhân viên, họ tên, mức lương người lãnh đạo ông Nguyen Van Thanh
p.Lập danh sách nhân viên có mức lương lớn hay mức lương cao của phịng ơng Nguyen Van Thanh
q.Cho biết mã số nhân viên, họ tên , tổng số nhân viên, mức lương cao nhất, mức lưong thấp nhất, mức lương trung bình phịng ban
r.Cho biết nhân viên có mức lương cao phòng ban. s.Cho biết số lượng nhân viên phòng ban.
(29)CHƯƠNG RÀNG BUỘC TOÀN VẸN 4.1 RÀNG BUỘC TỒN VẸN
4.1.1 Khái Niệm Ràng Buộc Tồn Vẹn
Trong CSDL tồn nhiều mối liên hệ thuộc tính, bộ; liên hệ xảy quan hệ quan hệ lược đồ CSDL Các mối liên hệ điều kiện bất biến mà tất quan hệ có liên quan CSDL phải thoả mãn thời điểm Những điều kiện bất biến gọi ràng buộc toàn vẹn. Trong thực tế ràng buộc toàn vẹn quy tắc quản lý áp đặt đối tượng giới thực Chẳng hạn sinh viên phải có mã sinh viên nhất, hai thí sinh dự thi vào trường phải có số báo danh khác nhau, sinh viên dự thi môn học không lần,…
Nhiệm vụ người phân tích thiết kế phải phát đầy đủ ràng buộc tồn vẹn tốt mơ tả chúng cách xác hồ sơ phân tích thiết kế - việc làm quan trọng Ràng buộc tồn vẹn xem cơng cụ để diễn đạt ngữ nghĩa CSDL Một CSDL thiết kế cồng kềnh thể đầy đủ ngữ nghĩa thực tế có giá trị cao nhiều so với cách thiết kế gọn nhẹ nghèo nàn ngữ nghĩa thiếu ràng buộc tồn vẹn CSDL
Cơng việc kiểm tra ràng buộc toàn vẹn thường tiến hành vào thời điểm cập nhật liệu ( thêm, sửa, xoá) Những ràng buộc toàn vẹn phát sinh phải cần ghi nhận xử lý cách tường minh (thường hàm chuẩn đoạn chương trình)
Ràng buộc toàn vẹn kiểm tra vi phạm ràng buộc toàn vẹn hai số vấn đề quan trọng q trình phân tích thiết kế sở liệu, không quan tâm mức đến vấn đề trên, dẫn đến hậu nghiêm trọng tính an tồn toàn vẹn liệu , đặc biệt sở liệu lớn
4.1.2 Các Yếu Tố Của Ràng Buộc Toàn Vẹn
(30)Mỗi ràng buộc tồn vẹn có bốn yếu tố: điều kiện, bối cảnh, bảng tầm ảnh hưởng hành động phải cần thực phát có ràng buộc toàn vẹn bị vi phạm:
4.1.2.1 Nội dung
Nội dung ràng buộc toàn vẹn mơ tả, biểu diễn hình thức nội dung Nội dung ràng buộc tồn vẹn R biểu diễn ngơn ngữ tự nhiên, ngôn ngữ đại số quan hệ, ngôn ngữ mã giả, ngơn ngữ truy vấn SQL,… ngồi nội dung ràng buộc tồn vẹn biểu diễn phụ thuộc hàm (khái niệm phụ thuộc hàm đề cập chương 5)
Sau số ràng buộc toàn vẹn lược đồ CSDL quản lý sinh viên
Mỗi lớp học phải có mã số để phân biệt với lớp học khác trường Mỗi lớp học phải thuộc khoa trường
Mỗi sinh viên có mã số sinh viên nhất, khơng trùng với sinh viên trường
Mỗi học viên phải đăng ký vào lớp học trường Mỗi học viên thi tối đa lần cho môn học
Tổng số học viên lớp phải lớn số lượng đếm lớp thời điểm
4.1.2.2.Bối cảnh
Bối cảnh ràng buộc tồn vẹn quan hệ mà ràng buộc có hiệu lực hay nói cách khác, quan hệ cần phải kiểm tra tiến hành cập nhật liệu Bối cảnh ràng buộc tồn vẹn nhiều quan hệ
Chẳng hạn với ràng buộc toàn vẹn R bối cảnh quan hệ Sinhvien 4.1.2.3.Bảng tầm ảnh hưởng
Trong q trình phân tích thiết kế CSDL, người phân tích cần lập bảng tầm ảnh hưởng cho ràng buộc toàn vẹn nhằm xác định thời điểm cần phải tiến hành kiểm tra tiến hành cập nhật liệu
Thời điểm cần phải kiểm tra ràng buộc tồn vẹn thời điểm cập nhật liệu Một bảng tầm ảnh hưởng ràng buộc tồn vẹn có dạng sau:
Tên RBTV Thêm(T) Xoá(X) Sửa(S)
r1 +
r2
-r3 -(*)
rn
Bảng chứa toàn ký hiệu + , – -(*)
Chẳng hạn + (dịng r1, cột Thêm) có nghĩa thêm vào quan hệ r1 thì
RBTV bị vi phạm
(31)Dấu - Tại (dịng r2, cột sửa) có nghĩa sửa quan hệ r2 RBTV
khơng bị vi phạm.,…
Quy ước:
- Khơng sửa thuộc tính khố
- Nếu không bị vi phạm không phép sửa đổi ký hiệu -(*)
- Thao tác thêm xóa xét quan hệ Thao tác sửa xét sửa thuộc tính quan hệ
- Trước xét thao tác thực làm vi phạm ràng buộc hay khơng CSDL phải thỏa ràng buộc tồn vẹn trước
4.1.2.4.Hành động cần phải có phát có RBTV bị vi phạm:
Khi ràng buộc toàn vẹn bị vi phạm, cần có hành động thích hợp Thơng thường có giải pháp:
Thứ nhất: Đưa thông báo yêu cầu sửa chữa liệu thuộc tính cho phù hợp với quy tắc đảm bảo tính qn liệu Thơng báo phải đầy đủ phải thân thiện với người sử dụng Giải pháp phù hợp cho việc xử lý thời gian thực
Thứ hai:Từ chối thao tác cập nhật Giải pháp phù hợp việc xử lý theo lô Việc từ chối phải lưu lại thông báo đầy đủ, rõ ràng thao tác bị từ chối cần phải sữa lại liệu ?
Khóa nội, khoá ngoại, giá trị NOT NULL ràng buộc tồn vẹn miền giá trị thuộc tính Những ràng buộc toàn vẹn ràng buộc toàn vẹn đơn giản CSDL
Các hệ quản trị sở liệu thường có chế tự động kiểm tra ràng buộc toàn vẹn miền giá trị khoa nội, khoá ngoại, giá trị NOT NULL
Việc kiểm tra ràng buộc toàn vẹn tiến hành vào thời điểm sau
Thứ nhất: Kiểm tra sau thực thao tác cặp nhật CSDL Thao tác cặp nhật xem hợp lệ khơng vi phạm ràng buộc toàn vẹn , nghĩa khơng làm tính tồn vẹn CSDL Nếu vi phạm ràng buộc toàn vẹn , thao tác cặp nhật bị coi không hợp lệ bị hệ thống huỷ bỏ (hoặc có xử lý thích hợp đó)
Thứ hai: Kiểm tra định kỳ hay độ Èíƒ_8Ỵ£_t xuất, nghĩa việc kiểm tra ràng buộc toàn vẹn tiến hành độc lập với thao tác cặp nhật liệu Đối với trường hợp vi phạm ràng buộc toàn vẹn , hệ thống có xử lý ngầm định yêu cầu người sử dụng xử lý sai sót cách tường minh
4.2 PHÂN LOẠI RÀNG BUỘC TOÀN VẸN
Trong q trình phân tích thiết kế CSDL, người phân tích phải phát tất ràng buộc tồn vẹn tiềm ẩn CSDL Việc phân loại ràng buộc tồn vẹn có ích, nhằm giúp cho người phân tích có định hướng để phát ràng buộc toàn vẹn, tránh bỏ sót Các ràng buộc tồn vẹn chia làm hai loại sau:
Thứ nhất: Ràng buộc tồn vẹn có phạm vi quan hệ bao gồm :Ràng buộc toàn vẹn miền giá trị, ràng buộc tồn vẹn liên thuộc tính, ràng buộc toàn vẹn liên
Thứ hai: Ràng buộc toàn vẹn có phạm vi nhiều quan hệ bao gồm :Ràng buộc toàn vẹn phụ thuộc tồn tại, ràng buộc toàn vẹn liên - liên quan hệ, ràng buộc tồn vẹn liên thuộc tính - liên quan hệ
Để minh hoạ cho phần lý thuyết chương này, xét ví dụ sau đây: Ví dụ 4.1
(32)Cho CSDL C dùng để quản lý việc đặt hàng giao hàng công ty Lược đồ CSDL C gồm lược đồ quan hệ sau:
Q1: KHACH (MAKH, TENKH, DIACHIKH, DIENTHOAI)
Tân từ: Mỗi khách hàng có mã khách hàng (MAKH) nhất, MAKH xác
định tên khách hàng (TENKH), địa (DIACHIKH), số điện thoại (DIENTHOAI) Q2: HANG(MAHANG,TENHANG, QUYCACH, DVTINH)
Tân từ: Mỗi mặt hàng có mã hàng (MAHANG) nhất, MAHANG xác định
tên hàng (TENHANG), quy cách hàng (QUYCACH), đơn vị tính (DVTINH) Q3: DATHANG (SODH, MAHANG, SLDAT, NGAYDH, MAKH)
Tân từ: Mỗi mã số đặt hàng (SODH) xác định ngày đặt hàng (NGAYDH) mã
khách hàng tương ứng (MAKH) Biết mã số đặt hàng mã mặt hàng biết số lượng đặt hàng(SLDAT) Mõi khách hàng ngày có nhiều lần đặt hàng
Q4: HOADON(SOHD, NGAYLAP, SODH, TRIGIAHD, NGAYXUAT)
Tân từ: Mỗi hố đơn tổng hợp có mã số SOHD, hoá đơn bán hàng
có thể gồm nhiều mặt hàng Mỗi hoá đơn xác định ngày lập hoá đơn (NGAYLAP), ứng với số đặt hàng (SODH) Giả sử hoá đơn bán hàng theo yêu cầu đơn đặt hàng có mã số SỌDH ngược lại , đơn đặt hàng giải hố đơn Do điều kiện khách quan công ty không giao đầy đủ mặt hàng số lượng mặt hàng yêu cầu đơn đặt hàng không giao vượt ngồi u cầu Mỗi hóa đơn xác định trị giá mặt hàng hoá đơn (TRIGIAHD) ngày xuất kho giao hàng cho khách (NGAYXUAT) Q5: Chitiethd (SOHD, MAHANG, GIABAN, SLBAN)
Tân từ: Mỗi SOHD, MAHANG xác định giá bán (GIABAN) số lượng bán (SLBAN)
của mặt hàng hoá đơn
Q6: PHIEUTHU(SOPT, NGAYTHU, MAKH, SOTIEN)
Tân từ: Mỗi phiếu thu có số phiếu thu (SOPT) nhất, SOPT xác định
ngày thu (NGAYTHU) khách hàng có mã khách hàng MAKH số tiền thu SOTIEN Mỗi khách hàng ngày có nhiều số phiếu thu
4.2.1.Ràng buộc tồn vẹn có bối cảnh quan hệ 4.2.1.1.Ràng Buộc Toàn Vẹn liên bộ:
+Ràng buộc tồn vẹn khố chính:
Đây trường hợp dặc biệt Ràng Buộc toàn Vẹn liên bộ, RBTV phổ biến thường hệ quản trị CSDL tự động kiểm tra
Ví dụ 4.2:
Trên lược đồ quan hệ KHACH ta có ràng buộc toàn vẹn sau: R1: Tất khách hàng phải có mã số phân biệt
Nội dung: ∀ t1, t2 KHACH: t1 ≠ t2 t1 MAKH ≠ t2 MAKH
Bối cảnh: KHACH Bảng tầm ảnh hưởng:
R1 Thêm Xóa Sửa
KHACH + - -(*)
(33)+Ràng buộc toàn vẹn tính nhất
Ví dụ: phịng ban phải có tên gọi
- Ngồi nhiều ta cịn gặp RBTV khác chẳng hạn RBTV sau trong quan hệ sau
Ví dụ:KETQUA(MASV, MAMH, LANTHI, DIEM) Mỗi sinh viên đăng thi môn tối đa lần 4.2.1.2.Ràng Buộc Toàn Vẹn Về Miền Giá Trị
Ràng buộc tồn vẹn có liên quan đến miền giá trị thuộc tính quan hệ Ràng buộc thường gặp Thông thường hệ quản trị CSDL tự động kiểm tra (một số) ràng buộc loại
Ví dụ 4.3:
Trên lược đồ quan hệ HOADON ta có ràng buộc tồn vẹn sau: R2: Trị giá mõi hóa đơn phải lơn
Nội dung: ∀ hd HOADON: hd TRIGIAHD > Bối cảnh: HOADON
Bảng tầm ảnh hưởng:
R2 Thêm Xóa Sửa
HOADON + - +
4.2.1.3.Ràng Buộc Tồn Vẹn Liên Thuộc Tính
Ràng buộc tồn vẹn liên thuộc tính (một quan hệ) mối liên hệ thuộc tính lược đồ quan hệ
Ví dụ 4.4
Trên lược đồ quan hệ HOADON ta có ràng buộc tồn vẹn sau: R3: Ngày lập hóa đơn phải trước ngày xuất hóa đơn
Nội dung: ∀ hd HOADON: hd NGAYLAP <= hd.NGAYXUAT Bối cảnh: HOADON
Bảng tầm ảnh hưởng:
R3 Thêm Xóa Sửa
HOADON + - +
4.2.2.Ràng buộc tồn vẹn có bối cảnh nhiều quan hệ 4.2.2.1.Ràng Buộc Tồn Vẹn Về Khố Ngoại:
Ràng buộc tồn vẹn khố ngoại cịn gọi ràng buộc toàn vẹn phụ thuộc tồn Cũng giống ràng buộc tồn vẹn khố nội, loại ràng buộc toàn vẹn phổ biến CSDL
Ví dụ 4.5
(34)R1: Khách hàng đặt hàng phải có danh sách khách hàng
Nội dung: ∀ dh DATHANG, ∃ k KHACH: dh.MAKH = k.MAKH Hoặc: DATHANG[MAKH] KHACH[MAKH]
Bối cảnh: DATHANG, HOADON Bảng tầm ảnh hưởng:
R1 Thêm Xóa Sửa
DATHANG + - -(*)
KHACH - + -(*)
4.2.2.2.Ràng Buộc Tồn Vẹn Liên Thuộc Tính Liên Quan Hệ
Ràng buộc loại mối liên hệ thuộc tính nhiều lược đồ quan hệ Ví dụ 4.6
Trên lược đồ quan hệ DAT HANG HOADON ta có ràng buộc tồn vẹn sau: R2: Ngày đặt hàng trước ngày xuất hàng
Nội dung: ∀ dh DATHANG, ∀ hd HOADON: dh.SOHD = hd.SOHD
dh.NGAYDH <=
hd.NGAYXUAT
Bối cảnh: DATHANG, HOADON Bảng tầm ảnh hưởng:
R1 Thêm Xóa Sửa
DATHANG + -
-HOADON + - +
4.2.2.3.Ràng Buộc Toàn Vẹn Liên Bộ Liên Quan Hệ
Ràng buộc loại mối liên hệ lược đồ sở liệu Chẳng hạn tổng số tiền phải trả hoá đơn (chitiethd) phải TRỊ GIÁ HỐ ĐƠN hố đơn quan hệ Hoadon Hoặc số lượng học viên lớp phải SOHOCVIEN lớp
Ngồi cịn có số loại RBTV khác :RBTV thuộc tính tổng hợp, RBTV tồn chu trình ,RBTV giá trị thuộc tính theo thời gian
BÀI TẬP
4.1 Việc tổ chức kỳ thi tốt nghiệp khoa sau:
Mỗi thí sinh có Mã số sinh viên (MASV), MASV xác định thông tin: họ tên (HOTEN), ngày sinh (NGAYSINH), nơi sinh, nữ,phái, dân tộc
Mỗi lớp có mã lớp (MALOP) , mã lớp xác định thông tin: tên lớp (TENLOP), lớp thuộc quản lý khoa Mỗi khoa có mã khoa (MAKHOA), mã khoa xác định tên khoa (TENKHOA)
(35)Mỗi thí sinh phải dự thi tốt nghiệp ba mơn Mỗi mơn thi có mã môn thi (MAMT) nhất, mã môn thi xác định thông tin: tên môn thi (TENMT), thời gian làm – tính phút (PHUT), ngày thi (NGAYTHI), buổi thi (BUOITHI), môn thi môn lý thuyết hay thực hành (LYTHUYET) Chú ý rằng, mơn học cho thi nhiều hệ đặt MAMT khác (chẳng hạn trung cấp cao đẳng ngành công nghệ thông tin thi môn Cơ Sở Dữ Liệu), để diễn tả điều này, mã môn học cần phải ghi (GHICHU) biết mơn thi dành cho khối trung cấp, hay cao đẳng) Mỗi thí sinh ứng với mơn thi có điểm thi (DIEMTHI) nhất, điểm thi chấm theo thang điểm 10 có lấy điểm lẻ đến 0.5 Một thí sinh coi đậu tốt nghiệp điểm thi tất mơn thí sinh lớn
Trong phịng thi có thí sinh nhiều lớp Trong kỳ thi, thí sinh thi phịng thi (PHONGTHI) khác nhau, chẳng hạn thí sinh thi tốt nghiệp ba mơn Cơ sở liệu, Lập trình C Visual Basic mơn Cơ Sở Dữ Liệu Lập Trình C thi phịng A3.4, cịn mơn thực hành Visual Basic thi phòng máy H6.1
Qua phân tích sơ trên, ta lập lược đồ sở liệu sau: THISINH (MASV, HOTEN, NGAYSINH, MALOP)
LOP(MALOP, TENLOP)
MONTHI (MAMT, TENMT, LYTHUYET, PHUT, NGAYTHI, BUOITHI,GHICHU)
KETQUA(MASV, MAMT, DIEMTHI) a Tìm khố cho lược đồ quan hệ
b.Hãy phát biểu ràng buộc tồn có sở liệu 4.2 Cho lược đồ sở liệu (đã phân tích Ví dụ 2.1)
Hãy phát biểu ràng buộc tồn có lựơc đồ sở liệu
4.3.Cho lược đồ sở liệu tập 4.1 Thực yêu cầu sau ngôn ngữ SQL: a.Lập bảng điểm mơn thi có mã mơn thi “CSDL02” cho tất thí sinh có mã lớp “CDTH2A” danh sách cần MASV, HOTEN, NGAYSINH, DIEMTHI xếp tăng dần theo MASV
b.Hãy thống kê xem mơn thi có thí sinh có điểm thi lớn hay 5? Danh sách cần: MAMT,TENMT,GHICHU,SOLUONG số lượng (SOLUONG) thuộc tính tự đặt
c.Lập danh sách thí sinh đậu tốt nghiệp (theo tiêu chuẩn phân tích trên), danh sách cần: MASV,HOTEN,NGAYSINH,DIEMTONG, DIEMTONG tổng điểm thi mơn thi, DIEMTONG thuộc tính tự đặt
d.Nếu cần mở rộng toán theo hai hướng; Thứ quản lý kỳ thi tốt nghiệp cho tất khoa toàn trường, Thứ hai quản lý thơng tin phịng thi (PHONGTHI) thí sinh, lược đồ sở liệu cần phải điều chỉnh ?
e.Hãy phát biểu ràng buộc tồn có lựoc đồ sở liệu
4.4.Hãy tìm ràng buộc tồn vẹn có lược đồ sở liệu tập 3.1 đến 3.4
(36)CHƯƠNG LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU 5.1 CÁC VẤN ĐỀ GẶP PHẢIKHI TỔ CHỨC DỮ LIỆU
Trước bàn cách thiết kế sở liệu tốt, phân tích xem số lược đồ quan hệ lại tồn vấn đề rắc rối Chẳng hạn cho lược đồ quan hệ:
Thi(MASV,HOTEN,MONHỌC,DIEMTHI)
Và sau quan hệ lược đồ quan hệ Thi
Quan hệ ghi kết điểm thi môn sinh viên Chúng ta nhận thấy số vấn đề nảy sinh sau:
1)Dư thừa (redundancy): Họ tên sinh viên lặp lại lần cho môn thi 2)Mưu thuẫn tiềm ẩn (potentia inconsistancyl hay bất thường cập nhật Do hậu dư thừa, cập nhật họ tên sinh viên để lại họ tên cũ khác Vì khơng có họ tên sinh viên mong muốn
(37)3)Bất thường chèn (insertion anomaly) Chúng ta biết họ tên sinh viên sinh viên khơng dự thi mơn
4)Bất thường xoá (deletion anomaly) Ngược lại với vấn đề 3) vấn đề xố tất mơn thi sinh viên, vơ ý làm dấu vết để tìm họ tên sinh viên
Những vấn đề nêu giải phân rã lược đồ quan hệ Diemthi thành hai lược đồ quan hệ:
SINHVIEN (MASV, HOTEN)
KETQUA(MASV, MONHỌC, DIEMTHI)
Lúc lược đồ quan hệ Sinhvien cho biết họ tên sinh viên xuất lần; khơng có dư thừa Ngồi nhập họ tên sinh viên dù sinh viên chưa có kết thi môn Tuy nhiên lúc ta nhận thấy để tìm danh sách họ tên sinh viên ứng với môn thi sở liệu phải thực phép kết nối, với quan hệ Thi dễ dàng trả lời cách thực phép chọn phép chiếu Làm để đưa lược đồ sở liệu chưa tốt lược đồ sở liệu tốt ? chương chương tới nhằm giải vấn đề
5.2 PHỤ THUỘC HÀM
Phụ thuộc hàm (functional dependancy) công cụ dùng để biểu diễn cách hình thức ràng buộc tồn vẹn Phương pháp biểu diễn có nhiều ưu điểm, công quan trọng, gắn chặt với lý thuyết thiết kế sở liệu
Trong chương tìm hiểu lý thuyết thiết kế sở liệu quan hệ, mà bắt đầu phụ thuộc hàm số ứng dụng việc giải tốn như: tìm khố, tìm phủ tối thiểu, xác định dạng chuẩn Trong chương tới tiếp tục tìm hiểu cách thức chuẩn hố sở liệu
5.2.1 Định Nghĩa Phụ Thuộc Hàm
Cho lược đồ quan hệ Q{A1,A2,…,An} X,Y hai tập khác rỗng Q+ Ta nói X
xác định Y (hay Y phụ thuộc hàm vào X) với r quan hệ Q, ∀ t1, t2
r mà t1.X = t2.X ⇒ t1.Y = t2.Y (nghĩa tồn hai r giống
các thuộc tính tập X mà lại khác hay nhiều thuộc tính tập Y) Khi ta ký hiệu X → Y
Chẳng hạn phụ thuộc hàm thuộc tính họ tên sinh viên (HOTENSV) vào mã số sinh viên (MASV) ta diễn tả phụ thuộc hàm:
MASV→ HOTENSV
Phụ thuộc hàm X → X gọi phụ thuộc hàm hiển nhiên người ta thường dùng F để tập phụ thuộc hàm định nghĩa Q Vì Q hữu hạn nên F hữu hạn, ta đánh số phụ thuộc hàm F f1,f2, ,fm
Quy ước: cần mô tả phụ thuộc hàm không hiển nhiên tập F, phụ thuộc hàm hiển nhiên ngầm hiểu có F
Ví dụ 5.1:
Cho lược dồ quan hệ Q(ABCDE), r quan hệ xác định Q cho sau:
A B C D E
a1 b1 c1 d1 e1
(38)a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c3 d1 e1
Những phụ thuộc hàm sau thoả r ? A → D; AB → D; E → A; A → E; Giải:
AB → D; A → E;
5.2.2 Cách Xác Định Phụ Thuộc Hàm Cho Lược Đồ Quan Hệ
Cách để xác định phụ thuộc thích hợp cho lược đồ quan hệ xem xét nội dung tân từ lược đồ quan hệ
Chẳng hạn với lược đồ sở liệu cho ví dụ 2.1, phụ thuộc hàm ứng với lược đồ quan hệ xác định sau:
MASV → HOTENSV, NU, NGAYSINH, MALOP, TINH MALOP → TENLOP,MAKHOA
MAKHOA → TENKHOA MAMH → TENMH, DONVIHT
MASV, MAMH,LANTHI → DIEMTHI …
5.2.3 Một Số Tính Chất Của Phụ Thuộc Hàm - hệ luật dẫn Armstrong
Để xác định phụ thuộc hàm khác từ tập phụ thuộc hàm có, ta dùng hệ tiên đề Armstrong (1974), gồm luật sau:
Với X,Y,Z,W Q+
1.Luật phản xạ (reflexivity)
X Y ⇒ X→Y
Quy tắc đưa phụ thuộc hàm hiển nhiên (phụ thuộc hàm tầm thường), phụ thuộc hàm mà vế trái bao hàm vế phải Những phụ thuộc hàm hiển nhiên quan hệ
2.Luật tăng trưởng(augmentation) X → Y ⇒ XZ → YZ 3.Luật bắc cầu(transitivity)
X → Y, Y → Z ⇒ X → Z
Các quy tắc suy rộng:
4.Luật hợp (the union rule)
Cho X → Y, X → Z ⇒ X → YZ 5.Luật bắc cầu giả (the pseudotransitivity rule)
(39)Cho X → Y,WY→ Z ⇒ XW → Z 6.Luật phân rã (the decomposition rule):
Cho X → Y, Z ⇒ Y ⇒ X → Z
5.3 BAO ĐÓNG CỦA TẬP PHỤ THUỘC HÀM VÀ BAO ĐĨNG CỦA TẬP THUỘC TÍNH
5.3.1 Bao Đóng Của Tập Phụ Thuộc Hàm F
Bao đóng (closure) tập phụ thuộc hàm F (ký hiệu F+) tập hợp tất phụ
thuộc hàm suy từ F dựa vào tiên đề Armstrong Rõ ràng F F+
Ví dụ 5.2
Cho lược đồ quan hệ Q(ABCDEGH) F cho sau: F = {B → A; DA→ CE; D → H; GH→ C; AC→ D }
Khi F+ ={B → A; DA→ CE; D → H; GH→ C; AC→ D ; BC → AC; BC → D; DA
→ AH; DG → C;BC → AD;….}
(Lưu ý rằng, thuộc tính biểu diễn ký tự danh sách thuộc tính có khơng có dấu phẩy được, cịn phụ thuộc hàm phải có dấu chấm phẩy)
Các tính chất tập F+
1 Tính phản xạ:
Với tập phụ thuộc hàm F+ ta ln có F F+
2 Tính đơn điệu:
Nếu F G F+ G+
3 Tính luỹ đẳng:
Với tập phụ thuộc hàm F ta ln ln có F++ = F+.
5.3.2.Bao Đóng Của Tập Thuộc Tính X
Cho lược đồ quan hệ Q giả sử F tập phụ thuộc hàm Q, X Q+.
Bao đóng tập thuộc tính X F ký hiệu X+ (hoặc X+
F ) tập tất
thuộc tính A Q+ suy từ X dựa vào phụ thuộc hàm F hệ tiên đề
Armstrong, nghĩa là:
X+ = {A : A Q+ X → A F+}
Ví dụ 5.3
Cho lược đồ quan hệ Q(ABCDEGH) tập phụ thuộc hàm F F = {B → A; DA→ CE; D → H; GH→ C; AC→ D } Hãy tính: B+; H+;BC+
Giải
Khi B+ = BA ; (do có phụ thuộc hàm B → A)
H+ = H (do có phụ thuộc hàm H → H)
BC+= BCADEH (do có phụ thuộc hàm:B →A;AC→D;DA→ CE; D
→ H )
(40)Tương tự tập bao đóng tập phụ thuộc hàm F+, tập bao đóng X+ chứa các
phần tử tập X, tức X X+.
Các tính chất bao đóng tập thuộc tính X+
Nếu X,Y tập tập thuộc tính Q ta có tính chất sau đây: Tính phản xạ: X X+
2 Tính đơn điệu: Nếu X Y X+ Y+
3 Tính luỹ đẳng: X++ = X+
4 (XY)+ X+Y+
5 (X+Y)+ = (XY+)+ = (X+Y+)+
6 X → Y F+ ⇔ Y X+
7 X → Y ⇔ Y+ X+
5.3.3.Bài Toán Thành Viên
Qua phần ta nhận thấy X+ định nghĩa thông qua F+ Vấn đề nảy sinh khi
nghiên cứu lý thuyết CSDL là: Cho trước tập phụ thuộc hàm F phụ thuộc hàm f, tốn kiểm tra có hay khơng f F+ gọi bài toán thành viên.
Để giải tốn tốn thành viên thật khơng đơn giản; F nhỏ F+ lớn Tuy nhiên ta giải cách tính X+ so sánh X+ với
tập Y Dựa vào tính chất X → Y F+ ⇔ Y X+, ta có câu trả lời X → Y F+
hay khơng ? Như thay giải tốn thành viên ta đưa giải tốn tìm bao đóng của tập thuộc tính
5.3.4.Thuật Tốn Tìm Bao Đóng Của Một Tập Thuộc Tính Thuật tốn 5.1
Thuật tốn tìm bao đóng với độ phức tạp O(N2), với N số lượng thuộc tính lược
đồ quan hệ Q.
Dữ Liệu Vào Q, F, X Q+
Dữ Liệu Ra X+
Bước 1: Đặt X+ = X
Bước 2: Temp = X+
∀ f U → V F if (U X+ )
X+ = X+ V.
F= F – f;
Bước 3: if (X+ = Temp)
“X+ kết cần tìm “
Dừng thuật tốn else
(41)trở lại Bước 2: Ví dụ 5.4:
Cho lược đồ quan hệ Q(ABCDEGH) tập phụ thuộc hàm F F = { f1: B → A;
f2: DA → CE;
f3: D → H;
f4: GH → C;
f5: AC → D}
Tìm bao đóng tập X = {AC} dựa F Giải:
X+ = AC
Do f1, f2, f3, f4 không thoả f5 thoả :
X+ =ACD
Lập lại bước f1 không thoả, f2 thoả:
X+ = ACDE,
f3 thoả :
X+ = ACDEH
Đến rõ ràng khơng có phụ thuộc hàm làm thay đổi X+ nữa, thuật toán dừng lại kết X+ = ACDEH
5.4 KHOÁ CỦA LƯỢC ĐỒ QUAN HỆ - MỘT SỐ THUẬT TỐN TÌM KHỐ 5.4.1.Định Nghĩa Khố Của Quan Hệ (relation key)
Cho quan hệ Q(A1, A2,…, An) xác định tập thuộc tính Q+ tập phụ thuộc hàm
F định nghĩa Q, cho K Q +.
K khoá Q thoả đồng thời hai điều kiện sau: K → Q + F + (hay K+
F= Q +)
(K thoả điều kiện gọi siêu khố) Không tồn K' K cho K'+ = Q +
Một lược đồ quan hệ có nhiều siêu khố, nhiều khố 5.4.2.Thuật Tốn Tìm Một Khố Của Một Lược Đồ Quan Hệ Q Thuật toán 5.3
K = Q+;
While A K
if (K - A)+ = Q+ then K = K - A
K cịn lại khố cần tìm
Nếu muốn tìm khố khác (nếu có) lược đồ quan hệ, ta thay đổi thứ tự loại bỏ phần tử K
(42)Ví dụ 5.7
Cho lược đồ quan hệ Q(ABC) tập phụ thuộc hàm F = { A→ B;
A → C; B → A} Hãy tìm khóa Q Giải:
K={A, B, C}
Loại thuộc tính A, (K-A)+ = Q+ nên K={B,C} Thuộc tính B khơng loại (K
-B)+ ≠ Q+ nên K={B,C} Loại thuộc tính C, (K-C)+ = Q+ nên K={B}.
Vậy khóa Q B
5.4.3 Thuật Tốn Tìm Tất Cả Các Khố Của Một Lược Đồ Quan Hệ Thuật toán 5.4 (thuật toán bản)
Bước 1:Xác định tất tập Q
Để xác định tất tập lược đồ quan hệ Q(A1, A2,…, An) ta
duyệt tất 2n-1 tập hợp khác rỗng Q+ (n số thuộc tính lược đồ quan hệ Q), kết
quả tìm giả sử tập thuộc tính: S={X1, X2, …,X2n-1 }
Bước 2: Tính Xi+
Bước 3: Nếu Xi+ = Q+ Xi siêu khố
Nếu tập Xi (i = ,2n-1) Q+ có bao đóng Q+ tập dó (theo
định nghĩa trên) siêu khoá Q
Giả sử sau bước có m siêu khố: S = {S1, S2,…, Sm}
Bước 4: Xây dựng tập chứa tất khoá Q từ tập S
Xét Si, Sj S (i ≠ j), Si Sj ta loại Sj (i, j = m), kết cịn lại
chính tập tất khố cần tìm Ví dụ 5.8
Tìm tất khố lược đồ quan hệ Q tập phụ thuộc hàm F cho sau: Q (A, B, C);
F = { A→ B; A → C; B → A}
(43)
Vậy lược đồ quan hệ Q có hai khố là: {A} {B}
Thuật tốn dễ hiểu, dễ cài đặt, nhiên với n lớn phép duyệt để tìm tập tất tập tập Q+ điều không hiệu quả, cần thu hẹp khơng gian duyệt Chúng ta nghiên cứu thuật tốn cải tiến theo hướng giảm số thuộc tính tập cần duyệt
Chú ý thuật tốn tìm tất siêu khóa, tất khóa Thuật toán 5.5 (thuật toán cải tiến)
Trước vào thuật toán cải tiến, ta cần đưa thêm số khái niệm sau:
- Tập nguồn(TN) chứa tất thuộc tính có xuất vế trái không xuất vế phải tập phụ thuộc hàm Những thuộc tính khơng tham gia vào phụ thuộc hàm đưa vào tập nguồn
- Tập đích chứa tất thuộc tính có xuất vế phải không xuất vế trái tập phụ thuộc hàm
- Tập trung gian(TG) chứa tất thuộc tính vừa tham gia vào vế trái vừa tham gia vào vế phải
Dữ liệu vào: Lược đồ quan hệ phổ quát Q tập phụ thuộc liệu F Dữ liệu ra: Tất khoá quan hệ
Bước 0 Tìm tập thuộc tính nguồn(TN), tập thuộc tính trung gian(TG)
Tìm tất tập tập trung gian gọi Xi (bằng phương pháp duyệt nhị phân)
if tập trung gian = φ then
Tập Khoá = Tập nguồn ;kết thúc Ngược lại
Qua bước
Bước 1: Tìm tất tập tập trung gian: Xi
S= φ
∀ Xi tập trung gian
if ( Tập nguồn Xi)+ = Q+ then
S = S { Tập nguồn Xi}
(44){S tập siêu khố cần tìm}
Bước 2: Tính TN Xi
Bước 3: Tính (TN Xi)+
Bước 4: Nếu Xi+ = Q+ Xi siêu khố
Nếu tập TN Xi có bao đóng Q+ TN Xi siêu khố
của Q
Giả sử sau bước có m siêu khố: S = {S1,S2,…,Sm}
Bước 5: Xây dựng tập chứa tất khoá Q từ tập S
Xét Si, Sj S (i ≠ j), Si Sj ta loại Sj (i,j=1 m), kết cịn lại
là tập tất khố cần tìm
Ví dụ 5.9 (Giải lại tập ví dụ 5.8)
Áp dụng thuật tốn cải tiến ta có lời giải sau: TN ={ φ} ; TG ={A,B}
Gọi Xi tập tập TG:
Vậy quan hệ có hai khố : [A] [B]
Chú ý : Thuật tốn cải tiến tìm tất khố, khơng tìm tất các siêu khoá
5.5 PHỦ TỐI THIỂU
5.5.1 Tập Phụ Thuộc Hàm Tương Đương (equivalent functional dependancy)
Cho F G hai tập phụ thuộc hàm, ta nói F G tương đương (hay F phủ G G phủ F ) ký hiệu F+ = G+ phụ thuộc hàm thuộc F thuộc G + và mỗi
phụ thuộc hàm thuộc G thuộc F +
Chẳng hạn cho lược đồ quan hệ Q(ABCDEGH), hai tập phụ thuộc hàm F G (xác định Q) tương đương
F = {B → A; DA→ CE; D → H; GH→ C; AC→ D; DG → C} G={B→ A; DA→ CE; D → H; GH→ C; AC→ D ;BC → AC; BC → D; DA → AH; AC → DEH}
Ví dụ 5.5: Chẳng hạn hai tập phụ thuộc hàm sau tương đương: Q(A,B,C)
F = { A→B; A→C; B→A; C→A; B→C} G = { A→B; C→A; B→C}
(việc chứng minh xem tập)
(45)5.5.2 Phủ Tối Thiểu
Để phục vụ trình thiết kế sở liệu, cần đưa thêm khái niệm tập phụ thuộc hàm tối thiểu.
Bổ đề: Mỗi tập phụ thuộc hàm F phủ tập phụ thuộc hàm G mà vế phải phụ thuộc hàm G gồm thuộc tính
Định nghĩa: F gọi tập phụ thuộc hàm tối thiểu F thoả đồng thời ba điều kiện sau:
Điều kiện a) Vế phải F có thuộc tính
Điều kiện b) Khơng ∃ f: X → A F Z X mà: F + = (F − (X → A)
(Z → A))+
Điều kiện c) Không ∃ X → A F mà: F + = (F − (X → A))+
Trong vế phải phụ thuộc hàm điều kiện a) có thuộc tính, nên bảo đảm khơng có thuộc tính vế phải dư thừa điều kiện b) bảo đảm khơng có thuộc tính tham gia vế trái phụ thuộc hàm dư thừa điều kiện c)bảo đảm cho tập F khơng có phụ thuộc hàm dư thừa
Chú ý tập phụ thuộc hàm tìm phủ tối thiểu thứ tự phụ thuộc hàm tập F khác thu phủ tối thiểu khác
5.5.3.Thuật Tốn Tìm Phủ Tối Thiểu Thuật toán 5.6
Dữ liệu vào : Lược đồ quan hệ ban đầu Q tập phụ thuộc hàm F, số lượng phụ thuộc hàm F m
Dữ liệu : Tập phụ thuộc hàm tối thiểu F
Bước 1: Tách vế phải phụ thuộc hàm F cho vế phải phụ thuộc
hàm chứa thuộc tính (điều ln thực bổ đề trên) ∀ f: X → Y F
∀ A Y
g = X → A F = F g
m = m + Cuối ∀
Cuối ∀
Bước Tìm tập phụ thuộc hàm đầy đủ cách loại bỏ thuộc tính dư thừa vế trái phụ thuộc hàm
∀ f X → A F
∀ B X
X' =X − B
If (X'→ A F+) X = X'
Cuối ∀ Cuối ∀
(46)Chú ý: Việc tìm tất tập X' X theo thuật tốn hồn tồn thay việc tìm X' cách tìm tập X
Bước Loại bỏ phụ thuộc hàm dư thừa F
∀ f F
G = F − f {loại f khỏi F lưu { F − f} vào G }
If (F + =G+ ) {gọi thủ tục kiểm tra F, G tương đương dưới}
F = G {cập nhật lại F mới} Cuối ∀
Ví dụ 5.6 Cho lược đồ quan hệ Q tập phụ thuộc F sau: Q(ABCD)
F = { AB→CD; B→C; C→D}
Hãy tìm phủ tối thiểu F Giải:
Kết bước là:
F={ AB→C; AB→D; B→C; C→D} Kết bước là:
F={ B→C; B→D; B→C; C→D}
Kết bước cho phủ tối thiểu Q(ABCD): F={ B→C; C→D }
5.6.DẠNG CHUẨN CỦA LƯỢC ĐỒ QUAN HỆ
Khi thiết kế hệ thống thơng tin, việc lập lược đồ CSDL đạt đến tiêu chuẩn việc làm quan trọng Chất lượng hệ thống thông tin phụ thuộc nhiều vào lược đồ CSDL Việc xác định chuẩn cho lược đồ quan hệ có liên quan mật thiết với thuật tốn tìm khố Có thể khẳng định thuật tốn tìm khố thuật tốn quan trọng lý thuyết thiết kế sở liệu
Chất lượng thiết kế lược đồ CSDL đánh giá dựa nhiều tiêu chuẩn trùng lắp thơng tin chi phí kiểm tra ràng buộc toàn vẹn hai tiêu chuẩn quan trọng Sau số dạng chuẩn để đánh giá mức độ tốt/xấu lược đồ sở liệu
Trước hết, tìm hiểu số khái niệm liên quan
5.6.1.Một Số Khái Niệm Liên Quan Đến Các Dạng Chuẩn
Thuộc tính khố/khơng khố
A thuộc tính khố A có tham gia vào khố quan hệ, ngược lại A gọi thuộc tính khơng khố
Ví dụ 5.10: Cho lược đồ quan hệ Q(ABC) tập phụ thuộc hàm
(47)F = { A→ B; A → C; B → A}
Có hai khóa A B thuộc tính khố A, B; thuộc tính khơng khóa là: C. Thuộc tính phụ thuộc đầy đủ- phụ thuộc hàm đầy đủ.
A thuộc tính phụ thuộc đầy đủ vào tập thuộc tính X X →A phụ thuộc hàm đầy đủ (tức không tồn X' X cho X' → A F+)
Ví dụ 5.10: Cho lược đồ quan hệ Q(ABC) tập phụ thuộc hàm F = { A → B
A→ C; AB → C}
Thì A → ;B A → C phụ thuộc hàm đầy đủ Phụ thuộc hàm AB → C không phụ thuộc hàm đầy đủ có A → C
Chú ý rằng, phụ thuộc hàm mà vế trái có thuộc tính phụ thuộc hàm đầy đủ.
5.6.2.Dạng Chuẩn Một (First Normal Form)
Lược đồ quan hệ Q gọi đạt dạng chuẩn (1NF) tồn thuộc tính Q mang giá trị đơn
Chẳng hạn xét quan hệ
Lược đồ quan hệ không đạt dạng chuẩn thuộc tính MONHOC, DIEMTHI khơng mang giá trị đơn (chẳng hạn sinh viên Nguyễn Văn Thành có thuộc tính mơn học Kỹ Thuật Lập Trình, Cơ Sở Dữ Liệu, Cấu Trúc Dữ Liệu.
Ta hoàn tồn đưa quan hệ dạng chuẩn sau:
(48)Chú ý ta khơng nói thêm, lược đồ quan hệ xét đạt dạng chuẩn
5.6.3.Dạng Chuẩn (second normal form)
Một lược đồ quan hệ Q đạt dạng chuẩn Q đạt dạng chuẩn tất thuộc tính khơng khố Q phụ thuộc đầy đủ vào khố
Nếu lược đồ quan hệ khơng đạt chuẩn ta nói đạt dạng chuẩn1 Chẳng hạn xét lược đồ quan hệ
Q (A, B, C, D) F ={ AB → C, D;
B → D; C→ A}
Khoá {A,B} {B,C} Do D thuộc tính khơng khố, A,B → D khơng phụ thuộc hàm đầy đủ có B → D Vậy Q đạt chuẩn
Ví dụ 5.11: Xác định dạng chuẩn lược đồ quan hệ sau. Q(GMVNHP)
F={G→N; G→H; G→P; M→V; NHP→M}
Dễ thấy khố Q G Thuộc tính khơng khố M,V,N,H,P
Do phụ thuộc hàm G → M; G → V; G → N; G → H; G → P phụ thuộc hàm đầy đủ, nên lược đồ quan hệ Q đạt dạng chuẩn
Hệ quả:
- Q đạt 2NF Q 1NF tập thuộc tính khơng khố Q rỗng - Nếu khoá quan hệ có thuộc tính quan hệ đạt chuẩn Ví dụ 5.12:
Q(ABCDEH)
F={A → E; C → D; E → DH} Dễ thấy khố Q K={ABC}
D thuộc tính khơng khố C → D , C tập thực khố nên Q khơng đạt dạng chuẩn
5.6.4 Dạng Chuẩn (third normal form)
Một lược đồ quan hệ Q đạt dạng chuẩn phụ thuộc hàm X→A F+ ( F là
tập phụ thuộc không hiển nhiên định nghĩa Q, A thuộc tính đơn, X tập thuộc tính tập Q+), hai điều kiện sau thoả:
(49)Hoặc X siêu khoá Q Hoặc A thuộc tính khố
Nhận xét: Nếu Q đạt chuẩn Q đạt chuẩn Ví dụ 5.13
Cho lược đồ quan hệ Q(ABCD)
F=[AB → C ; D → B C → ABD]
K1=[AB]; K2=[AD];K3=[C] Là khố, Q khơng có thuộc tính khơng khố nên Q đạt chuẩn
Hệ quả: Nếu lược đồ quan hệ Q,F mà Q thuộc tính khơng khố Q đạt chuẩn
Ví dụ 5.14
Xác định dạng chuẩn lược đồ quan hệ sau Q(NGPM)
F = {NGP→M; M→P}
Dễ thấy khoá Q {NGP}, {NGM} NGP → M có vế trái siêu khố M → P có vế phải thuộc tính khố Nên Q đạt chuẩn
5.6.5.Dạng Chuẩn BC (Boyce Codd normal form)
Một lược đồ quan hệ Q dạng chuẩn BC với phụ thuộc hàm khơng hiển nhiên X → A F X siêu khoá Q
Nhận xét: Nếu Q đạt chuẩn BC Q đạt chuẩn 3 Ví dụ 5.15
Xác định dạng chuẩn lược đồ quan hệ sau Q(ACDEIB)
F = {ACD→EBI; CE→AD}
Dễ thấy Q có hai khố là: ACD CE Các phụ thuộc hàm F có vế trái siêu khoá, nên Q đạt dạng chuẩn BC
ĐỊNH LÝ : Các lớp dạng chuẩn lược đồ quan hệ có quan hệ lồng nhau: nghĩa lớp sau nằm trọn lớp trước BCNF 3NF 2NF 1NF
Ví dụ 5.16
Chẳng hạn cho lược đồ quan hệ Q(ABCD) F = [AB → C; D → B; C→ ABD] Q đạt chuẩn 3NF không BCNF
Nếu F = [B → D, A → C, C → ABD] Q đạt dạng chuẩn 2NF không NF Dạng chuẩn lược đồ sở liệu dạng chuẩn thấp lược đồ quan hệ
Chú ý: Các dạng chuẩn cao dạng chuẩn bốn (với phụ thuộc đa trị), dạng chuẩn năm (với phụ thuộc chiếu kết) xem tài liệu tham khảo
(50)BÀI TẬP
5.1 a) Cho lược đồ quan hệ Q(ABCD), r quan hệ Q r
A B C D
a1 b1 c1 d1
a1 b2 c1 d1
a1 b3 c2 d1
a2 b2 c2 d2
Phụ thuộc hàm sau không thoả r 1) D → A;
2) A,C → D; 3) CD → A; 4) D → B;
b.Cho lược đồ quan hệ Q(ABCD), r quan Q cho sau:
A B C D
a1 b1 c1 d2
a3 b1 c2 d1
a1 b2 c2 d2
Những phụ thuộc hàm sau thoả r ?
AB → D; C → B; B → C; BC → A; BD → A c.Cho lược đồ quan hệ Q(ABCD), r quan hệ cho sau:
A B C D
x u x y
y x z x
z y y y
y z w z
Những phụ thuộc hàm sau không thoả r ?
A → B; A → C; B → A; C → D; D → C; D → A 5.2 a.Cho lược đồ quan hệ Q(ABCD) tập phụ thuộc hàm
F = { A → B;
(51)BC→D}
Những phụ thuộc hàm sau thuộc F+ ?
C → D; A → D; AD → C; AC → D; BC → A; B → CD b.Cho lược đồ quan hệ Q(ABCDEGH) tập phụ thuộc hàm
F = { AB → C; B →D; CD → E; CE → GH; G → A}
Những phụ thuộc hàm sau không thuộc vào F+ ?
AB → E; AB → GH; CGH → E; CB → E; GB → E c) Cho lược đồ quan hệ Q,F sau: với Q=(ABCD)
F = [ A → B; A → C]
Trong phụ thuộc hàm sau, phụ thuộc hàm suy từ F ? A → D; C → D; AB → B; BC → A; A → BC
5.3 Cho lược đồ quan hệ Q(ABCD) tập phụ thuộc hàm F = { A → D;
D → A; AB→C} a.Tính AC+
b.Chứng minh BD → C ∈F+
5.4 a) Cho lược đồ quan hệ Q (ABCDEG) tập phụ thuộc hàm F = {AB → C;
C → A; BC → D; ACD → B; D → EG; BE → C ; CG → BD; CE → AG} X=[BD], X+=?
Y=[CG], Y+=?
5.4 b)Cho lược đồ quan hệ Q tập phụ thuộc hàm F F = { AB → E;
AG → I; BE → I;
(52)E → G ; GI → H }
Chứng minh AB → GH 5.4.c) Tương tự cho tập phụ thuộc hàm
F = { AB → C; B → D; CD → E; CE → GH; G → A}
Chứng minh AB → E; AB → G
5.4.d) Cho lược đồ quan hệ Q (ABCDEGH)và tập phụ thuộc hàm: F = {B → A; DA→ CE; D → H; GH→ C; AC→ D } Hãy tìm khố Q ?
5.5 Hãy tìm tất khố cho lược đồ quan hệ sau:
Q (BROKER,OFFICE,STOCK,QUANTITY,INVESTOR,DIVIDENT) F = { STOCK→DIVIDENT
INVESTOR → BROKER
INVESTOR, STOCK → QUANTITY BROKER → OFFICE }
5.6 Cho lược đồ quan hệ Q(A,B,C,D) tập phụ thuộc hàm: F = [ AB → C;
D → B; C → ABD] Hãy tìm tất khoá Q
5.7 Cho lược đồ quan hệ Q(MSCD,MSSV,CD,HG) tập phụ thuộc F sau: F = [ MSCD→CD;
CD→MSCD; CD,MSSV→HG; MSCD,HG→MSSV; CD,HG→MSSV; MSCD,MSSV→HG} Hãy tìm phủ tối thiểu F
5.8 Xác định phủ tối thiểu tập phụ thuộc hàm sau: Q(ABCDEG)
F = {AB → C; C → A; BC → D;
(53)ACD → B; D → EG; BE → C; CG → BD; CE → AG}
5.9 Các nhận xét sau (Đ) hay sai (S) ? (kẻ bảng sau ghi Đ S cho câu trên)
a b c d e f g h
a.Cho Q F={AB → C; A → B} Q đạt dạng chuẩn b Một lược đồ quan hệ Q tìm khố c Nếu XY → Z X → Z Y → Z
d.Các thuộc tính khơng tham gia vào vế phải phụ thuộc hàm phải thuộc tính tham gia vào khố
e Nếu X → Y YZ → W XZ → W
f Nếu Q đạt dạng chuẩn khoá Q có thuộc tính Q đạt dạng chuẩn ba
g Một tập phụ thuộc hàm F có nhiều tập phủ tối thiểu h Nếu X → Y U → V XU → YV
5.10 a) Cho Q(ABCD) F = {AB → C; D → B; C → ABD}. Hãy kiểm tra xem AB → D có thuộc F+ hay khơng ?
Hãy tìm tất khố lược đồ quan hệ Q Xác định dạng chuẩn Q
b.Cho Q(A,B,C,D) F={C → A; A → C; AD → B; BC → D; AB → D; CD→B } Hãy tìm phủ tối thiểu F
5.15 Cho biết dạng chuẩn lược đồ quan hệ sau: a.Q(ABCDEG);
F=[A → BC, C → DE, E → G] b.Q(ABCDEGH);
F=[C → AB, D → E, B → G] c.Q(ABCDEGH);
F=[A → BC D → E, H → G] d.Q(ABCDEG);
F=[AB → C; C → B; ABD → E;G → A] e.Q(ABCDEGHI);
F=[AC → B; BI → ACD; ABC → D; H → I; ACE → BCG, CG → AE]
(54)TÀI LIỆU THAM KHẢO
1 EFFREY D ULLMAN: Principles of database and knowledge base systems Nguyễn Bá Tường: sở liệu- Lý thuyết thực hành
3 NGUYỄN ĐĂNG TỴ- ĐỖ PHÚC: Cơ sở liệu
4 Codd E.F., “Relational model of data for large share banks”, Comm, ACM 13,6 (June 1970)
5 Date C.J., “ An introduction to data base systems”, Second editon 1977
6 Codd, E.F., “ Data models in data base management”, ACM SIGMOD record,11,2(Feb,1981)
7 Aho,A.V., Hocrof, J.E., and Ullman, J.D “The design of analysic of computer Algorithms” Addision-Wesley,Reading 1974
8 Beeri, C., and Bernstein “Computational problems related to the design of normal form relation schemes”, ACM on database Systems 4:1, pp 30-39 (1979)
9 Beeri, C “ On the mebership problem for functional and multivaluted denpendencies”, ACM trans on database 5:3,pp 241-259 (1980)
10 Armstrong , W.W “Dependency structures of data base relationaships”, Proc 1974 EFIP Congress,pp 580-583,Nort Holland, Amsterdam, (1974)
11 [8] Hồ Thuần Lê Văn Bào, “ Khoá lược đồ quan hệ”, Khoa học kỹ thuật & tự động hoá huy 2/1983
12 Ullman, J “Principles of database systems”, Prentice Hall,1980
13 Michanel V Mannino, “ Database Application Development & Design”, Published by McGaw-Hill /Irwin, New Yor.k, 2001
14 Abram Siberschatz, Henry F.Korth, S.Sudarshan “ Database Systems Concepts”, Published by McGaw-Hill /Irwin, New Yor.k, 2002
(55)MỤC LỤC
LỜI MỞ ĐẦU 1
CHƯƠNG TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 2
1.1 MỘT SỐ KHÁI NIỆM CƠ BẢN 2
1.1.1.Định nghĩa Cơ Sở Dữ Liệu (Data Base) 2
1.1.2.Ưu điểm sở liệu 2
1.1.3 Những vấn đề mà CSDL cần phải giải 2
1.1.4 Các đối tượng sử dụng CSDL 2
1.1.5 Hệ Quản Trị Cơ Sở Dữ Liệu (Data Base Management System) 2
1.1.6 Các Ứng Dụng Của Cơ Sở Dữ Liệu 3
1.2 CÁC MƠ HÌNH DỮ LIỆU 3
1.3 MƠ HÌNH THỰC THỂ KẾT HỢP 3
1.3.1 Thực Thể (entity) 4
1.3.2 Thuộc tính (attribute) 4
1.3.3.Loại thực thể (entity type) 4
1.3.4.Khoá (key) 4
1.3.5.Mối Kết Hợp (relationship) 5
BÀI TẬP 6
(56)2.1 CÁC KHÁI NIỆM CƠ BẢN 10
2.1.1.Thuộc Tính(attribte): 10
2.1.2 Lược Đồ Quan Hệ (relation schema) 10
2.1.3.Quan Hệ (relation) 11
2.1.4 Bộ (Tuple) 11
2.1.5 Siêu Khoá – Khoá (super key- key) 11
2.2.CHUYỂN MƠ HÌNH THỰC THỂ KẾT HỢP SANG MƠ HÌNH DỮ LIỆU QUAN HỆ 12
Quy tắc 1: 12
Quy tắc 2: 12
Quy tắc 3: 12
Quy tắc 4: 12
2.3 NGÔN NGỮ ĐẠI SỐ QUAN HỆ 13
2.3.1 Phép Hợp quan hệ(Union) 13
2.3.2 Phép Giao quan hệ (Intersection) 14
2.3.3.Phép Trừ quan hệ (Minus) 14
2.3.4.Tích Decac quan hệ Cartesian Product) 14
2.3.5.phép chia quan hệ: 15
2.3.6.Phép Chiếu (projection) 15
2.3.7.Phép Chọn (Selection) 16
2.3.8 Phép θ - Kết 16
2.3.9.Phép Kết Tự Nhiên (natural join) 17
BÀI TẬP 18
CHƯƠNG NGÔN NGỮ TRUY VẤN DỮ LIỆU 19
3.1 Mở Đầu 19
3.2.TÌM THƠNG TIN TỪ CÁC CỘT CỦA BẢNG - MỆNH ĐỀ SELECT 21
3.3.CHỌN CÁC DÒNG CỦA BẢNG – MỆNH ĐỀ WHERE 22
3.4.SẮP XẾP CÁC DÒNG CỦA BẢNG - MỆNH ĐỀ ORDER BY 23
3.5 CÂU LỆNH TRUY VẤN LỒNG NHAU 24
3.6.GOM NHÓM DỮ LIỆU– MỆNH ĐỀ GROUP BY 25
BÀI TẬP 26
CHƯƠNG RÀNG BUỘC TOÀN VẸN 29
4.1 RÀNG BUỘC TOÀN VẸN 29
4.1.1 Khái Niệm Ràng Buộc Toàn Vẹn 29
4.1.2 Các Yếu Tố Của Ràng Buộc Toàn Vẹn 29
4.1.2.1 Nội dung 29
4.1.2.2.Bối cảnh 30
(57)4.1.2.3.Bảng tầm ảnh hưởng 30
4.1.2.4.Hành động cần phải có phát có RBTV bị vi phạm: 30
4.2 PHÂN LOẠI RÀNG BUỘC TOÀN VẸN 31
4.2.1.Ràng buộc tồn vẹn có bối cảnh quan hệ 32
4.2.1.1.Ràng Buộc Toàn Vẹn liên bộ: 32
4.2.1.2.Ràng Buộc Toàn Vẹn Về Miền Giá Trị 32
4.2.1.3.Ràng Buộc Tồn Vẹn Liên Thuộc Tính 33
4.2.2.Ràng buộc tồn vẹn có bối cảnh nhiều quan hệ 33
4.2.2.1.Ràng Buộc Toàn Vẹn Về Khố Ngoại: 33
4.2.2.2.Ràng Buộc Tồn Vẹn Liên Thuộc Tính Liên Quan Hệ 33
4.2.2.3.Ràng Buộc Tồn Vẹn Liên Bộ Liên Quan Hệ 34
BÀI TẬP 34
CHƯƠNG LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU 36
5.1 CÁC VẤN ĐỀ GẶP PHẢIKHI TỔ CHỨC DỮ LIỆU 36
5.2 PHỤ THUỘC HÀM 36
5.2.1 Định Nghĩa Phụ Thuộc Hàm 37
5.2.2 Cách Xác Định Phụ Thuộc Hàm Cho Lược Đồ Quan Hệ 37
5.2.3 Một Số Tính Chất Của Phụ Thuộc Hàm - hệ luật dẫn Armstrong 38
5.3 BAO ĐÓNG CỦA TẬP PHỤ THUỘC HÀM VÀ BAO ĐÓNG CỦA TẬP THUỘC TÍNH 38
5.3.1 Bao Đóng Của Tập Phụ Thuộc Hàm F 38
5.3.2.Bao Đóng Của Tập Thuộc Tính X 39
5.3.3.Bài Tốn Thành Viên 39
5.3.4.Thuật Tốn Tìm Bao Đóng Của Một Tập Thuộc Tính 40
5.4 KHỐ CỦA LƯỢC ĐỒ QUAN HỆ - MỘT SỐ THUẬT TỐN TÌM KHỐ 41
5.4.1.Định Nghĩa Khoá Của Quan Hệ (relation key) 41
5.4.2.Thuật Tốn Tìm Một Khố Của Một Lược Đồ Quan Hệ Q 41
5.4.3 Thuật Tốn Tìm Tất Cả Các Khoá Của Một Lược Đồ Quan Hệ 41
5.5 PHỦ TỐI THIỂU 43
5.5.1 Tập Phụ Thuộc Hàm Tương Đương (equivalent functional dependancy) 43
5.5.2 Phủ Tối Thiểu 44
5.5.3.Thuật Tốn Tìm Phủ Tối Thiểu 44
5.6.DẠNG CHUẨN CỦA LƯỢC ĐỒ QUAN HỆ 45
5.6.1.Một Số Khái Niệm Liên Quan Đến Các Dạng Chuẩn 46
5.6.2.Dạng Chuẩn Một (First Normal Form) 46
5.6.3.Dạng Chuẩn (second normal form) 47
(58)5.6.5.Dạng Chuẩn BC (Boyce Codd normal form) 48
BÀI TẬP 49
TÀI LIỆU THAM KHẢO 53
MỤC LỤC 55