Giáo trình Cơ sở dữ liệu nâng cao (Nghề Lập trình máy tính): Phần 1 do Tổng cục dạy nghề biên soạn nhằm trang bị cho người học một số kiến thức cơ bản về định nghĩa mô hình dữ liệu và phân biệt sự khác nhau giữa lược đồ khái niệm, lược đồ vật lý và lược đồ ngoài. Giải thích ràng buộc khóa, ràng buộc tham gia, thực thể yếu, phân cấp lớp, sự gộp lại. Mô tả một số chọn lựa nảy sinh trong quá trình thiết kế cơ sở dữ liệu mức khái niệm dùng mô hình E-R.
BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ Dự án giáo dục kỹ thuật dạy nghề (VTEP) GIÁO TRÌNH Mơn học: CƠ SỞ DỮ LIỆU NÂNG CAO Mã số: ITPGR3_02 NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ : Cao đẳng nghề NĂM 2012 Tun bố quyền : Tài liệu thuộc loại sách giáo trình Cho nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác có ý đồ lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm Tổng Cục Dạy nghề làm cách để bảo vệ quyền Tổng Cục Dạy Nghề cám ơn hoan nghênh thông tin giúp cho việc tu sửa hoàn thiện tốt tài liệu Địa liên hệ: Dự án giáo dục kỹ thuật nghề nghiệp Tiểu Ban Phát triển Chương trình Học liệu ……………………………………………… LỜI TỰA Đây tài liệu xây dựng theo chương trình dự án giáo dục kỹ thuật dạy nghề, để có đươc giáo trình dự án tiến hành theo hai giai đoạn Giai đoạn : Xây dựng chương trình theo phương pháp DACUM, kết gian đoạn khung chương trình gồm 230 trang cấp độ 170 trang cấp độ Giai đoạn : 29 giáo trình 29 tài liệu hướng dẫn giáo viên cho nghề lập trình máy tính cấp độ Để có khung chương trình chúng tơi mời giáo viên, chuyên gia làm việc lĩnh vực công nghệ thông tin xây dựng chương trình Trong giai đoạn viết giáo trình chúng tơi có điều chỉnh để giáo trình có tính thiết thực phù hợp với phát triển lĩnh vực công nghệ thông tin Cơ sở liệu môn sở cho sinh viên ngành công nghệ thông tin, giai đoạn sinh viên tìm hiểu số khái niệm hệ thống sở liệu biết thiết kế hệ thống sở liệu phục cho ứng dụng cụ thể, nhiên để hịa nhập với mơi trường phát triển phần mềm chuyên nghiệp thị trường nước giới, sinh viên cần có hệ thống sở liệu chuyên nghiệp hơn, an toàn hiệu hơn, mục đích mơn học Trong trình biên soạn, cố gắng tham khảo nhiều tài liệu giáo trình khác tác giả khơng khỏi tránh thiếu sót hạn chế Tác giả chân thành mong đợi nhận xét, đánh giá góp ý để giáo trình ngày hồn thiện Tài liệu thiết kế theo mô đun/ môn học thuộc hệ thống mơ đun/mơn học chương trình, để đào tạo hồn chỉnh nghề Lập trình máy tính cấp trình độ bậc cao dùng làm Giáo trình cho học viên khố đào tạo, sử dụng cho đào tạo ngắn hạn cho công nhân kỹ thuật, nhà quản lý người sử dụng nhân lực tham khảo Đây tài liệu thử nghiệm hoàn chỉnh để trở thành giáo trình thức hệ thống dạy nghề MỤC LỤC ĐỀ MỤC TRANG LỜI TỰA MỤC LỤC GIỚI THIỆU VỀ MÔN HỌC CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MƠN HỌC 10 BÀI GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 11 1.1 Giới thiệu hệ thống sở liệu 12 1.2 So sánh hệ thống tập tin hệ quản trị sở liệu (DBMS) 12 1.3 Các ưu điểm DBMS Mô tả lưu trữ liệu DBMS 14 1.4 Ngôn ngữ giao tiếp người sử dụng (NSD) CSDL 15 1.5 Cấu trúc DBMS 16 1.6 Những người liên quan đến sở liệu 21 BÀI 2: MƠ HÌNH THỰC THỂ LIÊN KẾT 22 2.1 Giới thiệu mơ hình thực thể kết hợp 23 2.2 Mơ hình thực thể - kết hợp, thực thể, thuộc tính tập thực thể Mối kết hợp tập mối kết hợp 26 2.3 Các tính bổ sung mơ hình thực thể kết hợp (mơ hình E-R) 27 2.4 Chuyển từ mơ hình thực thể kết hợp sang lược đồ CSDL 29 BÀI 3: MƠ HÌNH QUAN HỆ 35 3.1 Giới thiệu mơ hình quan hệ 36 3.2 Ràng buộc toàn vẹn quan hệ Hiệu lực ràng buộc toàn vẹn 37 3.3 Truy vấn liệu quan hệ 44 3.6 Thiết kế sở liệu mức logic: chuyển sơ đồ E-R thành lược đồ sở liệu quan hệ 57 BÀI 4: NGÔN NGỮ TRUY VẤN SQL 61 4.1 Giới thiệu SQL 62 4.2 Dạng thức truy vấn SQL 63 4.2.1 Các lệnh hỏi - tìm kiếm liệu: (Data Retrieval SQL) 63 4.2.2 Phép toán UNION 73 4.3 Truy vấn lồng 76 4.4 Các phép toán gộp Các giá trị rỗng 78 4.4.1 Các phép toán gộp 78 4.4.2 Các giá trị rỗng 78 4.5 Giới thiệu khung nhìn 80 4.5.1 Tạo khung nhìn 81 4.5.2 Cập nhật, bổ sung xoá liệu thơng qua khung nhìn 83 4.5.3 Sửa đổi khung nhìn 86 4.5.4 Xố khung nhìn 87 BÀI 5: NGÔN NGỮ TRUY VẤN QBE 88 5.1 Giới thiệu QUERY 89 5.1.1 Chức 89 5.1.2 Dạng thức 89 5.1.3 Các toán tử 90 5.2 Thiết kế QUERY 94 5.2.1 QUERY đơn (SELECT QUERY ) 94 5.2.2 Lập tiêu chuẩn lựa chọn query 94 5.2.3 Sử dụng Field tính tốn query 98 5.2.4 Dùng dịng total để nhóm dòng 99 5.3 QUERY tổng hợp 103 5.3.1 Query có thơng số (PARAMETER QUERY) 103 5.3.2 CROSSTAB QUERY 103 5.3.3 SUB QUERY 105 5.3.4 MAKE TABLE QUERY 106 5.3.5 UPDATE QUERY 107 5.3.6 DELETE QUERY 108 5.3.7 UNION QUERY 109 Bài 6: THIẾT KẾ CƠ SỞ DỮ LIỆU VỚI CÁC DẠNG CHUẨN 113 6.1 Dạng chuẩn lược đồ quan hệ (normal forms for relation schemes) 114 6.1.1 Định nghĩa dạng chuẩn 114 6.2 Phép tách kết nối bảo toàn 121 6.2.1 Phép tách kết nối bảo toàn thông tin (lossless-join decomposition) 121 6.2.1.1 Định nghĩa phép tách Q thành lược đồ 122 6.2.1.2 Tính chất 122 6.2.1.3 Phép tách Q thành n lược đồ 123 6.2.1.4 Thuật tốn kiểm tra phép tách kết nối bảo tồn thông tin 124 6.2.2 Phép tách bảo toàn phụ thuộc hàm 127 6.2.2.1 Tập phụ thuộc hàm Fi Qi 127 6.2.2.2 Định nghĩa 127 6.2.2.3 Ý nghĩa phân rã có bảo tồn phụ thuộc hàm 130 6.2.2.4 Thuật toán kiểm tra bảo toàn phụ thuộc hàm 131 6.3 Thiết kế csdl cách phân rã 132 6.3.1 Phân rã thành dạng chuẩn BC (hay chuẩn 3) bảo tồn thơng tin 132 6.3.1.1 Cách thông thường 132 6.3.1.2 Bổ đề 137 6.3.1.3 Thuật toán 137 6.3.1.4 Chú ý 139 6.3.2 Phân rã thành dạng chuẩn vừa bảo tồn thơng tin vừa bảo tồn phụ thuộc hàm 140 GIỚI THIỆU VỀ MÔN HỌC Vị trí, ý nghĩa, vai trị Mơn học: Đây môn học sở bắt buộc công nhân lành nghề bậc cao, để học tốt môn học học viên cần có kiến thức Kỹ Tin học văn phịng, Lập trình Nhập mơn Cơ sở liệu Giáo trình thành phần hệ thống giáo trình Tổng cục dạy nghề Giáo trình biên soạn theo chương trình quy cơng nhân lành nghề bậc cao ngành Cơng nghệ thông tin Mục tiêu Môn học: Sau học xong mơn học này học viên có khả năng: - Tự thiết kế sở liệu phục vụ cho ứng dụng chuyên nghiệp - Tự thiết kế hệ thống tác nghiệp dựa vào thông tin vấn từ khách hàng Mục tiêu thực môn học : Học xong môn học học viên có khả năng: Định nghĩa mơ hình liệu phân biệt khác lược đồ khái niệm, lược đồ vật lý lược đồ Định nghĩa độc lập liệu phân biệt khác độc lập liệu logic độc lập liệu vật lý Định nghĩa giao tác giải thích thực đồng thời giao tác, giao tác không đầy đủ vỡ hệ thống Định nghĩa mơ hình liệu thực thể - kết hợp (mơ hình E-R) Giải thích bước phân tích yêu cầu, thiết kế sở liệu mức khái niệm, thiết kế sở liệu logic Giải thích ràng buộc khóa, ràng buộc tham gia, thực thể yếu, phân cấp lớp, gộp lại Mô tả số chọn lựa nảy sinh trình thiết kế sở liệu mức khái niệm dùng mơ hình E-R Định nghĩa xác thuật ngữ sở dự liệu Nhận biết ràng buộc tồn vẹn bị vi phạm Biết cách chuyển đổi sơ đồ ER thành lược đồ sở liệu quan hệ Định nghĩa khung nhìn Giải thích vấn đề liên quan đến nhìn bao gồm: độc lập liệu, an tồn, cập nhật Giải thích khía cạnh liên quan đến ngôn ngữ SQL Định nghĩa chốt chuyển sở liệu hoạt động Phân biệt khác ràng buộc chốt chuyển Sử dụng QBE dạng để tìm thơng tin quan hệ Sử dụng QBE tìm thơng tin nhiều quan hệ Mô tả bốn vấn đề bất thường liệu Phát biểu áp dụng sáu luật hệ tiên đề Armstrong Biết cách áp dụng thuật tốn bao đóng để tìm bao đóng tập thuộc tính cho Định nghĩa dạng chuẩn phân loại dạng chuẩn Dùng dạng chuẩn để phân rã lược đồ quan hệ thành lược đồ dạng chuẩn Phân tích yêu cầu nối khơng thơng tin trì phụ thuộc q trình chuẩn hóa phân rã Nội dung mơn học: Bài 1: Giới thiệu hệ thống sở liệu Giới thiệu tổng quát So sánh hệ thống tập tin hệ quản trị sở liệu (DBMS) Các ưu điểm DBMS Mô tả lưu trữ liệu DBMS Truy vấn tin DBMS Quản lý giao tác Cấu trúc DBMS Những người liên quan đến sở liệu Bài 2: Mơ hình thực thể - kết hợp Tổng quát thiết kế sở liệu Thực thể, thuộc tính tập thực thể Mối kết hợp tập mối kết hợp Các tính bổ sung mơ hình thực thể kết hợp (mơ hình E-R) Thiết kế sở liệu mức khái niệm dùng mơ hình E-R Bài 3: Mơ hình quan hệ Giới thiệu mơ hình quan hệ Ràng buộc tồn vẹn quan hệ Hiệu lực ràng buộc toàn vẹn Truy vấn liệu quan hệ Thiết kế sở liệu mức logic: chuyển sơ đồ E-R thành lược đồ sở liệu quan hệ Giới thiệu khung nhìn Bài 4: Ngơn ngữ truy vấn SQL Giới thiệu SQL Dạng thức truy vấn SQL Các phép toán UNION Truy vấn lồng Các phép toán gộp Các giá trị rỗng SQL nhúng Ràng buộc tồn vẹn SQL Bài 5: Ngơn ngữ truy vấn QBE Giới thiệu QBE Các truy vấn QBE Truy vấn nhiều quan hệ Phủ định cột tên quan hệ Các phép toán gộp Hộp điều kiện Cột không đặt tên Cập nhật Bài 6: Thiết kế sở liệu với dạng chuẩn Giới thiệu làm mịn lược đồ Phụ thuộc hàm Các ví dụ thúc đẩy làm mịn lược đồ Lý luận phụ thuộc hàm Các dạng chuẩn Phân rã Chuẩn hóa SƠ ĐỒ MỐI LIÊN HỆ GIỮA CÁC MƠ ĐUN VÀ MƠN HỌC TRONG CHƯƠNG TRÌNH Học kỳ V Học kỳ VI Tiếng Anh chuyên ngành Lập trình nâng cao hướng NET Phát triển phần mềm ứng dụng Phân tích thiết kế giải thuật I Cấp độ Lý thuyết ngơn ngữ lập trình Kho liệu Mơ hình client-server hệ chun gia SQL server Phân tích hướng đối tượng UML Lập trình logic Tích hợp ứng dụng mạng Cơ sở trí tuệ nhân tạo An tồn thơng tin Chun đề tự chọn Cơ sở liệu nâng cao Cơ sở liệu nâng cao môn học nâng cao hệ công nhân lành nghề bậc cao Để học môn học này, học viên cần phải học qua môn học cấp độ sở liệu, hệ quản trị sở liệu, Những học viên qua kiểm tra thi mà không đạt phải thu xếp cho học lại phần chưa đạt phải đạt điểm chuẩn phép học tiếp mô đun/ môn học Học viên, chuyển trường, chuyển ngành.nếu học sở đào tạo khác phải xuất trình giấy chứng nhận; Trong số trường hợp phải qua sát hạch lại CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MƠN HỌC - Học lớp : - Lý thuyết chuẩn hóa dạng chuẩn - Kiến trúc mơ hình sở liệu - Kiến thức sở liệu quan hệ - Cú pháp truy vấn SQL - Học phòng học thực hành trường về: - Thiết kế sở liệu máy tính - Sử dụng câu lệnh SQL YÊU CẦU VỀ ĐÁNH GIÁ HỒN THÀNH MƠN HỌC Kỹ thực hành: - Sử dụng thành thạo ngôn ngữ SQL server - Sử lý lỗi xảy - Xây dựng thành công hệ thống sở liệu vừa lớn Thái độ học viên: - Cẩn thận lắng nghe ý kiến thảo luận nhóm thiết kế - Học viên cần tuân thủ tập thực hành theo thứ tự chương, từ dễ đến khó Đánh giá thơng qua kiểm tra trắc nghiệm: Đánh giá học viên thực cách sau: 1- Làm ứng dụng nhỏ cụ thể, giải vấn đề cụ thể 2- Thi trắc nghiệm, thi giấy máy bẳng phần mềm thi trắc nghiệm Thang điểm: 0-49: Khơng đạt 50-69 : Đạt trung bình 70-85 : Đạt 86-100: Đạt Giỏi BÀI GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Mã : ITPRG3_02.1 Giới thiệu : Trong năm gần đây, thuật ngữ "CƠ SỞ DỮ LIỆU" (Tiếng Anh DataBase, viết tắt tiếng Việt CSDL) trở nên quen thuộc không riêng với người làm Tin học mà người làm nhiều lĩnh vực khác Thống kê, Kinh tế, Quản lý Doanh nghiệp v.v Các ứng dụng Tin học vào công tác quản lý ngày nhiều đa dạng Có thể nói hầu hết lĩnh vực kinh tế, xã hội, giáo dục, y tế v.v ứng dụng thành tựu Tin học vào phục vụ công tác chuyên mơn Chính lẽ mà ngày nhiều người quan tâm đến lĩnh vực thiết kế xây dựng CSDL Mục tiêu thực hiện: Học xong học viên có khả năng: - Mơ tả chức hệ quản trị sở liệu (DBMS) - So sánh hai cách tiếp cận: hệ thống tập tin truyền thống DBMS - Định nghĩa số thuật ngữ liên quan đến mơ hình liệu Giải thích phân loại ngơn ngữ truy vấn - Định nghĩa giao tác số vấn đề liên quan - Vẽ mô tả vắn tắt cấu trúc DBMS Giải thích người liên quan đến sở liệu Nội dung chính: 1.1 Giới thiệu hệ thống sở liệu 1.2 So sánh hệ thống tập tin hệ quản trị sở liệu (DBMS) 1.3 Các ưu điểm DBMS Mô tả lưu trữ liệu DBMS 1.4 Ngôn ngữ giao tiếp người sử dụng (NSD) CSDL 1.5 Cấu trúc DBMS 1.6 Những người liên quan đến sở liệu 1.1 Giới thiệu hệ thống sở liệu Cơ sở liệu hệ thống thơng tin có cấu trúc lưu trữ thiết bị lưu trữ thông tin thứ cấp (như băng từ, đĩa từ ) để thỏa mãn u cầu khai thác thơng tin đồng thời 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 10 105 Watson Mngr 4.500 103 Reed Anlt 210 Ramirez 110 Turner 30 M 3.500 30 M Mngr 3.600 50 M Clrk 1.800 50 M 4.2.1.4 Điều kiện hiển thị ghi - Mệnh đề HAVING Mệnh đề WHERE cho phép chọn ghi bảng thỏa mãn điều kiện tìm kiếm Trong số trường hợp sau tìm ghi thỏa điều kiện tìm, muốn hiển thị ghi thỏa điều kiện khác SQL hỗ trợ yêu cầu mệnh đề HAVING Thông thường mệnh đề áp dụng câu lệnh tìm giá trị thơng qua q trình tính tốn nhóm Câu hỏi 4.2.1.10: đưa sau để làm ví dụ khơng "đắt giá" cho đủ để minh họa điều vừa nêu "Hãy cho danh sách nhân viên phòng 10, 30 50 Chỉ in người lãnh đạo phòng ban" SELECT * FROM EMPLOYEE WHERE Deptno IN (10, 30, 50) ORDER BY ASC, DESC HAVING Job = "Mngr"; Kết bảng: EmpNo Name Job Salary 200 Chen Mngr 2.900 105 Watson Mngr 4.500 210 Ramirez Mngr 3.600 Comm DeptNo Sex 10 F 30 M 50 M Câu hỏi 4.2.1.11: Cho Mã phịng mà người có mức lương cao phòng lớn 4000 $US Rõ ràng phải thực công việc: Phân tổ nhân viên theo phòng ban Xác định mức lương cao phòng ban Chọn phịng có mức lương cao 4000 $US Việc tiến hành sau tìm tất mức lương cao phòng ban Câu lệnh sau gợi mở mục 6.2 trình bày SELECT Deptno, MAX(Salary) FROM EMPLOYEE GROUP BY DeptNo HAVING MAX(Salary) > 4000; 63 Deptno Max (Salary) 30 4.500 40 4.200 4.2.1.5 Truy vấn thông tin từ nhiều bảng liệu Việc thực câu truy vấn nhiều bảng, chất giống bảng, tức cần thơng tin cần tìm lấy từ nguồn liệu Các bảng liệu nguồn cần mệnh đề FROM câu lệnh SELECT Nếu bảng liệu nguồn có tên thuộc tính giống tên thuộc tính phải viết tường minh biểu thức tìm kiếm với tên bảng kèm phía trước Nói chung CSDL quan hệ, bảng thường có mối liên hệ với Các bảng liên hệ với thông qua phép kết nối thường kết nối (Equi-Join) Mối liên hệ phải thể phép kết nối mệnh đề FROM thông qua điều kiện mệnh đề WHERE câu lệnh SELECT Nếu mối liên hệ này, kết bảng tích Đề-các bảng Câu hỏi 4.2.1.12: Cho Mã phòng, Tên phòng tên người lãnh đạo phòng tương ứng Trong câu hỏi này, Tên phòng lấy từ bảng DEPARTMENT, Mã phịng lấy từ DEPARTMENT từ bảng EMPLOYEE, tên nhân viên làm lãnh đạo phòng lấy từ bảng EMPLOYEE Hai bảng kết nối với thơng qua giá trị thuộc tính Mgr DEPARTMENT EmpNo EMPLOYEE Một điểm cần lưu ý thuộc tính DeptNo có bảng DEPARTMENT EMPLOYEE, viết lệnh phải rõ DeptNo bảng (mặc dù chúng nhau) SELECT DEPARTMENT.DeptNo, DeptName FROM DEPARTMENT, EMPLOYEE WHERE DEPARTMENT.Mgr = EMPLOYEE.EmpNo; ; Hoặc viết cách khác nhờ sử dụng phép kết nối INNER JOIN (đã trình bày chương V, mục 5.1, điểm 5.1.1) sau: SELECT DEPARTMENT.DeptNo, DeptName FROM DEPARTMENT INNER JOIN EMPLOYEE ON (DEPARTMENT.Mgr = EMPLOYEE.EmpNo); ); Để giảm nhẹ công việc phải viết tên bảng nhiều lần lệnh, SQL hỗ trợ tên bí danh cho bảng cách đặt bí danh sau tên bảng nguồn Bí danh dùng trước đặt Dạng ví dụ viết lại tương đương sau: SELECT D.DeptNo, D.DeptName, E.Name 64 FROM DEPARTMENT D, EMPLOYEE E WHERE D.Mgr = E.Empno; ; Kết cách thể câu hỏi là: D.Deptno D.Deptname E.Name 10 Accounting Chen 30 Research Watson 40 Sales Allen 50 Manufacturing Ramirez 60 Shipping Di Salvo 4.2.2 Phép toán UNION Toán tử UNION cho phép ta hợp kết hai hay nhiều truy vấn thành tập kết Cú pháp phép hợp sau: Query_1 [UNION [ALL] Query_2 ] [UNION [ALL] Query_N ] [ORDER BY clause] [COMPUTE clause] Trong đó: Query_1 có dạng: SELECT select_list [INTO clause] [FROM clause] [WHERE clause] [GROUP BY clause] [HAVING clause] Query_i (i=2, ,N) có dạng: SELECT select_list [FROM clause] [WHERE clause] [GROUP BY clause] [HAVING clause] Ví dụ: Giả sử ta có hai bảng sau: 65 Thì phép hợp: SELECT A,B FROM R UNION SELECT * FROM S Có kết sau: A B abc adf bgd 10 edf 15 hht hht 12 jks Theo mặc định, phép toán UNION loại bỏ dòng giống kết Nếu ta sử dụng tùy chọn ALL dịng giống khơng bị loại bỏ Ta sử dụng dấu ngoặc để xác định thứ tự tính tốn phép hợp 4.2.2.1 Các nguyên tắc xây dựng câu lệnh UNION Khi xây dựng câu lệnh UNION, ta cần ý nguyên tắc sau: • Tất danh sách chọn câu lệnh UNION phải có số biểu thức (các tên cột, biểu thức số học, hàm gộp, ) • Các cột tương ứng tất bảng, tập cột sử dụng thân truy vấn phải kiểu liệu • Các cột tương ứng thân truy vấn câu lệnh UNION phải xuất theo thứ tự Nguyên nhân phép hợp so sánh cột cột theo thứ tự cho truy vấn • Khi kiểu liệu khác kết hợp với câu lệnh UNION, chúng chuyển sang kiểu liệu cao (nếu đợc) • Tiêu đề cột kết phép hợp tiêu đề cột định truy vấn 66 4.2.2.2 Sử dụng UNION với giao tác SQL khác Các nguyên tắc sau phải tuân theo sử dụng phép hợp với câu lệnh giao tác SQL khác: • Truy vấn câu lệnh UNION có INTO để tạo bảng từ kết cuối • Mệnh đề ORDER BY COMPUTE dùng để xác định thứ tự kết cuối tính tốn giá trị tóm tắt cho phép sử dụng cuối câu lệnh UNION Chúng không phép sử dụng thân truy vấn phép hợp • Mệnh đề GROUP BY HAVING sử dụng thân truy vấn Chúng sử dụng để tác động lên kết cuối • Phép tốn UNION sử dụng bên câu lệnh INSERT • Phép tốn UNION khơng thể sử dụng câu lệnh CREATE VIEW 4.3 Truy vấn lồng Trong nhiều trường hợp cần phải tìm kiếm thơng tin qua nhiều bước: kết bước trước sử dụng biểu thức câu truy vấn tiếp theo, kết câu truy vấn lại dùng biểu thức câu truy vấn v.v Bằng ngôn ngữ thủ tục, qua bước phải ghi nhớ lại kết trung gian Nếu cơng việc truy vấn liệu vất vả cho người thao tác trực tiếp với CSDL SQL - SELECT cho phép lấy kết câu truy vấn để xây dựng biều thức điều kiện cho câu hỏi khác Câu hỏi trung gian gọi câu hỏi (SubQuery) Câu hỏi phải bao cặp dấu ngoặc tròn biểu thức câu hỏi Sự cho phép câu hỏi ưu điểm bật ngôn ngữ quản trị CSDL quan hệ Câu hỏi 4.4.1: Cho danh sách người làm việc phòng với ơng Watson: Phân tích câu hỏi ta có bước: Bước 1: Tìm số hiệu phịng (mà) ơng Watson nhân viên (giả sử phịng tìm có mã pp) Bước 2: Tìm người có số hiệu phòng làm việc pp Câu hỏi bước câu hỏi cho câu hỏi bước Câu lệnh SQL sau: SELECT * FROM EMPLOYEE WHERE DeptNo = ANY ( SELECT DeptNo FROM EMPLOYEE WHERE Name = ‘Watson’ ); Kết bảng: EmpNo Name Job Salary 103 Reed Anlt 3.500 105 Watson Mngr 4.500 67 Comm DeptNo Sex 30 M 30 M Câu hỏi 4.4.2: Cho biết Mã số, Tên Mức lương người lãnh đạo ông Smith Câu hỏi phải thực qua bước: Bước 1: Tìm Mã số phịng (mà) ơng Smith làm nhân viên (phịng pp) Bước 2: Tìm Mã số người lãnh đạo phịng pp (nhân viên xx) Bước 3: Tìm Mà số, Tên, Mức lương nhân viên có mã số xx Như phải viết câu hỏi lồng câu hỏi chính: SELECT EmpNo, Name, Salary FROM EMPLOYEE WHERE EmpNo = ANY ( SELECT Mgr FROM DEPARTMENT WHERE DeptNo = SOME ( SELECT DeptNo FROM EMPLOYEE WHERE Name = ‘Smith’ ) ); Câu trả lời là: Empno Name Salary 109 Allen 3.800 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: [] (SELECT - câu hỏi con) Ở : phép so sánh số học (>, >=, 1.92 4.4.2 Các giá trị rỗng Giá trị NULL nhập vào cột cho phép chấp nhận giá trị NULL theo ba cách sau: • Nếu khơng có liệu đưa vào khơng có mặc định cho cột hay kiểu liệu cột • Người sử dụng trực tiếp đưa giá trị NULL vào cho cột • Một cột có kiểu liệu kiểu số chứa giá trị NULL giá trị định gây tràn số Trong mệnh đề WHERE, ta sử dụng IS NULL IS NOT NULL sau: WHERE col_name IS [NOT] NULL 70 Các toán tử logic Các toán tử logic sử dụng mệnh đề WHERE bao gồm AND, OR, NOT AND OR sử dụng để kết hợp nhiều điều kiện WHERE 4.5 Giới thiệu khung nhìn Một khung nhìn (view) xem bảng “ảo” sở liệu có nội dung định nghĩa thơng qua truy vấn (câu lệnh SELECT) Như ậy, khung nhìn trơng giống bảng với tên khung nhìn tập bao gồm dịng cột Điểm khác biệt khung nhìn bảng khung nhìn khơng xem cấu trúc lưu trữ liệu tồn sở liệu Thực chất liệu quan sát khung nhìn lấy từ bảng thơng qua câu lệnh truy vấn liệu Hình minh hoạ cho ta thấy khung nhìn có tên DSSV định nghĩa thông qua câu lệnh SELECT truy vấn liệu hai bảng SINHVIEN LOP: SELECT masv,hodem,ten, (year(GETDATE()-year(ngaysinh)) AS tuoi,tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop Việc sử dụng khung nhìn sở liệu đem lại lợi ích sau đây: • Bảo mật liệu: Người sử dụng cấp phát quyền khung nhìn với phần liệu mà người sử dụng phép Điều hạn chế phần việc người sử dụng truy cập trực tiếp liệu • Đơn giản hố thao tác truy vấn liệu: Một khung nhìn đóng vai trị đối tượng tập hợp liệu từ nhiều bảng khác vào “bảng” Nhờ vào đó, người sử dụng thực yêu cầu truy vấn liệu cách đơn giản từ khung nhìn thay phải đưa câu truy vấn phức tạp • Tập trung đơn giản hóa liệu: Thơng qua khung nhìn ta cung cấp cho người sử dụng cấu trúc đơn giản, dễ hiểu liệu sở liệu đồng thời giúp cho người sử dụng tập trung phần liệu cần thiết • Độc lập liệu: Một khung nhìn cho phép người sử dụng có nhìn liệu độc lập với cấu trúc bảng sở liệu cho dù bảng sở có bị thay đổi phần cấu trúc 71 Tuy nhiên, việc sử dụng khung nhìn tồn số nhược điểm sau: • * Do hệ quản trị sở liệu thực việc chuyển đổi truy vấn khung nhìn thành truy vấn bảng sở nên khung nhìn định nghĩa truy vấn phức tạp dẫn đến chi phí mặt thời gian thực truy vấn liên quan đến khung nhìn lớn * Mặc dù thơng qua khung nhìn thực thao tác bổ sung cập nhật liệu cho bảng sở hạn chế khung nhìn đơn giản Đối với khung nhìn phức tạp thường khơng thực được; hay nói cách khác liệu khung nhìn đọc 4.5.1 Tạo khung nhìn Câu lệnh CREATE VIEW sử dụng để tạo khung nhìn có cú pháp sau: CREATE VIEW tên_khung_nhìn[(danh_sách_tên_cột)] AS Câu_lệnh_SELECT Ví dụ: Câu lệnh tạo khung nhìn có tên DSSV từ câu lệnh SELECT truy vấn từ hai bảng SINHVIEN LOP CREATE VIEW DSSV AS SELECT masv, hodem, ten DATEDIFF(YY,ngaysinh,GETDATE()) AS tuoi,tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop thực câu lệnh: SELECT * FROM dssv ta có kết sau: - Nếu câu lệnh CREATE VIEW, ta không định danh sách tên cột cho khung nhìn, tên cột khung nhìn tiêu đề cột kết câu lệnh 72 SELECT Trong trường hợp tên cột khung nhìn đươc định, chúng phải có số lượng với số lượng cột kết câu truy vấn Ví dụ: Câu lệnh tạo khung nhìn từ câu truy vấn tương tự ví dụ có đặt tên cho cột khung nhìn: CREATE VIEW dssv(ma,ho,ten,tuoi,lop) AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()),tenlop FROM sinhvien,lop WHERE sinhvien.malop =lop.malop Và câu lệnh: SELECT * FROM DSSV Sẽ cho kết sau: Khi tạo khung nhìn với câu lệnh CREATE VIEW ta cần phải lưu ý số điểm sau đây: + Tên khung nhìn, tên cột tên bảng, nghĩa phải tuân theo quy tắc định danh + Không thể quy định ràng buộc tạo mục cho khung nhìn + Phải đặt tên cho cột khung nhìn trường hợp sau: * Trong kết câu lệnh SELECT có cột sinh biểu thức (tức là tên cột bảng sở) cột khơng đặt tiêu đề * Tồn hai cột kết câu lệnh SELECT có tiêu đề cột Ví dụ: Câu lệnh câu lệnh sai cột thứ không xác định tên cột CREATE VIEW tuoisinhvien AS SELECT masv,hodem,ten,DATEDIFF(YY,ngaysinh,GETDATE()) FROM sinhvien 4.5.2 Cập nhật, bổ sung xoá liệu thơng qua khung nhìn Đối với số khung nhìn, ta tiến hành thực thao tác cập nhập, bổ sung xoá liệu Thực chất, thao tác chuyển thành thao tác tương tự bảng sở có tác động đến bảng sở 73 Về mặt lý thuyết, để thực thao tác bổ sung, cập nhật xố, khung nhìn trước tiên phải thoả mãn điều kiện sau đây: •* Trong câu lệnh SELECT định nghĩa khung nhìn khơng sử dụng từ khoá DISTINCT, TOP, GROUP BY UNION • * Các thành phần xuất danh sách chọn câu lệnh SELECT phải cột bảng sở Trong danh sách chọn không chứa biểu thức tính tốn, hàm gộp Ngoài điều kiện trên, thao tác thay đổi đến liệu thơng qua khung nhìn cịn phải đảm bảo thoả mãn ràng buộc bảng sở, tức đảm bảo tính tồn vẹn liệu Ví dụ minh hoạ cho ta thấy việc thực thao tác bổ sung, cập nhật xố liệu thơng qua khung nhìn Ví dụ: Xét định nghĩa hai bảng DONVI NHANVIEN sau: CREATE TABLE donvi ( madv INT PRIMARY KEY, tendv NVARCHAR(30) NOT NULL, dienthoai NVARCHAR(10) NULL, ) CREATE TABLE nhanvien ( manv NVARCHAR(10) PRIMARY KEY, hoten NVARCHAR(30) NOT NULL, ngaysinh DATETIME NULL, diachi NVARCHAR(50) NULL, madv INT FOREIGN KEY REFERENCES donvi(madv) ON DELETE CASCADE ON UPDATE CASCADE ) Giả sử hai bảng có liệu sau: Bảng DONVI Bảng NHANVIEN 74 Câu lệnh định nghĩa khung nhìn NV1 cung cấp thơng tin mã nhân viên, họ tên mã đơn vị nhân viên làm việc: CREATE VIEW NV1 AS SELECT manv,hoten,madv FROM nhanvien Nếu ta thực câu lệnh INSERT INTO NV1 VALUES('NV04','Le Thi D',1) Một ghi bổ sung vào bảng NHANVIEN liệu bảng là: Thơng qua khung nhìn này, ta thực thao tác cập nhật xoá liệu Chẳng hạn, ta thực câu lệnh: DELETE FROM NV1 WHERE manv='NV04' Thì ghi tương ứng với nhân viên có mã NV04 bị xố khỏi bảng NHANVIEN Nếu danh sách chọn câu lệnh SELECT có xuất biểu thức tính tốn đơn giản, thao tác bổ sung liệu thông qua khung nhìn khơng thể thực Tuy nhiên, trường hợp thao tác cập nhật xoá liệu vấn có khả thực (hiển nhiên cập nhật liệu cột có từ biểu thức tính tốn) Ví dụ: Xét khung nhìn NV2 định nghĩa sau: CREATE VIEW nv2 AS SELECT manv,hoten,YEAR(ngaysinh) AS namsinh,madv FROM nhanvien Đối với khung nhìn NV2, ta khơng thể thực thao tác bổ sung liệu cập nhật xố liệu bảng thơng qua khung nhìn Câu lệnh khơng thể thực khung nhìn NV2 INSERT INTO nv2(manv,hoten,madv) VALUES('NV05','Le Van E',1) Nhưng câu lệnh: UPDATE nv2 SET hoten='Le Thi X' WHERE manv='NV04' câu lệnh DELETE FROM nv2 WHERE manv='NV04' lại thực có tác động liệu bảng NHANVIEN Trong trường hợp khung nhìn tạo từ phép nối (trong ngồi) nhiều bảng, ta thực thao tác bổ sung cập nhật liệu thao 75 tác có tác động đến bảng sở (câu lệnh DELETE thực trường hợp này) Ví dụ: Với khung nhìn định nghĩa sau: CREATE VIEW nv3 AS SELECT manv,hoten,ngaysinh, diachi,nhanvien.madv AS noilamviec, donvi.madv,tendv,dienthoai FROM nhanvien FULL OUTER JOIN donvi ON nhanvien.madv=donvi.madv Câu lệnh: INSERT INTO nv3(manv,hoten,noilamviec) VALUES('NV05','Le Van E',1) bổ sung thêm vào bảng NHANVIEN ghi Hoặc câu lệnh: INSERT INTO nv3(madv,tendv) VALUES(3,'P Ke toan') bổ sung thêm vào bảng DONVI ghi hai câu lệnh có tác động đđến bảng sở Câu lệnh khơng thể thực có tác động lúc đến hai bảng sở INSERT INTO nv3(manv,hoten,noilamviec,madv,tendv) VALUES('NV05','Le Van E',1,3,'P Ke toan') 4.5.3 Sửa đổi khung nhìn Câu lệnh ALTER VIEW sử dụng để định nghĩa lại khung nhìn có khơng làm thay đổi quyền cấp phát cho người sử dụng trước Câu lệnh sử dụng tương tự câu lệnh CREATE VIEW có cú pháp sau: ALTER VIEW tên_khung_nhìn [(danh_sách_tên_cột)] AS Câu_lệnh_SELECT Ví dụ: Ta định nghĩa khung nhìn sau: CREATE VIEW view_lop AS SELECT malop,tenlop,tenkhoa FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Vật lý’ định nghĩa lại khung nhìn câu lệnh: ALTER VIEW view_lop AS SELECT malop,tenlop,hedaotao 76 FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Cơng nghệ thơng tin' 4.5.4 Xố khung nhìn Khi khung nhìn khơng cịn sử dụng, ta xố khỏi sở liệu thơng qua câu lệnh: DROP VIEW tên_khung_nhìn Ví dụ : Câu lệnh xố khung nhìn VIEW_LOP khỏi sở liệu DROP VIEW view_lop Bài tập: Cho sở liệu quản lý sinh viên gồm quan hệ sau: LOPHOC(MaLop, TenLop, HinhThucDaoTao) SINHVIEN(MaSV, HotenSV, NgaySinh, DiaChi, MaLop) MONHOC(MaMH, TenMH, SoDVHT) DIEMTHI(MaSV, MaMH, LanThi, DiemThi) 1- Hãy thực truy vấn SQL để thực yêu cầu sau: a) Cho biết số sinh viên lớp b) Cho biết danh sách sinh viên có điểm thi lần cao môn Cơ sở liệu c) Cho biết môn học chưa học 2- Tạo khung nhìn để lưu sinh viên có điểm thi lần mơn Thiết kế Web nhỏ BÀI NGÔN NGỮ TRUY VẤN QBE Mã : ITPRG3_02.5 Giới thiệu : Mục tiêu thực hiện: Học xong học viên có khả năng: - Sử dụng QBE dạng để tìm thông tin quan hệ - Sử dụng QBE tìm thơng tin nhiều quan hệ - Biết cách áp dụng phép phủ định cột tên quan hệ, phép toán gộp hộp điều kiện QBE để tìm thơng tin phức tạp - Cập nhật liệu quan hệ QBE Nội dung chính: 5.1 Giới thiệu QUERY 5.1.1 Chức 5.1.2 Dạng thức 77 ... loại máy bay phi công: KHẢ-NĂNG (Số-hiệu-phi-công, Số-hiệu -máy- bay) Số-hiệu-phi- Số-hiệu -máy- công bay 32 10 2 30 10 1 30 10 3 32 10 3 33 10 0 30 10 2 42 31 102 30 10 0 31 100 Câu hỏi: Cho biết phi cơng... cơng có khả lái loại máy bay 10 0, 10 1, 10 3 ? Trả lời: Đó thương phép chia quan hệ KHẢ-NĂNG cho quan hệ MÁY-BAY (Số-hiệumáy-bay): 10 0 10 1 10 3 Và kết quan hệ PHI-CƠNG (Số-hiệu-phi-cơng) có giá trị... phịng, Lập trình Nhập mơn Cơ sở liệu Giáo trình thành phần hệ thống giáo trình Tổng cục dạy nghề Giáo trình biên soạn theo chương trình quy cơng nhân lành nghề bậc cao ngành Công nghệ thông tin