Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 93 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
93
Dung lượng
0,98 MB
Nội dung
MỘT SỐ KÝ HIỆU VÀ QUY ƯỚC A, B, C ,… tên thuộc tính đơn X, Y, Z, … tập hợp thuộc tính t, t1, t2,…là giá trị t.[A]: giá trị t ứng với thuộc tính A t.A: giá trị t ứng với thuộc tính A F: tập phụ thuộc hàm f: kí hiệu phụ thuộc hàm U : Tập hữu hạn thuộc tính R, S : Ký hiệu quanhệ r, s : Ký hiệu lược đồ quanhệsơ đồ quanhệ R(f) : Ta nói quanhệ R thoả mãn phụ thuộc hàm f PTH : Phụ thuộc hàm F ├ f: ta gọi f phụ thuộc hàm suy dẫn logic từ F X Y : Y phụ thuộc hàm vào X X! Y : Y không phụ thuộc hàm vào X Sơ đồ quanhệ (lược đồ quan hệ) DANH SÁCH CÁC HÌNH VẼ VÀ CÁC BẢNG DỮLIỆU Hình 1.1 :Các thành phần hệsởliệu Hình 1.2: Cấu trúc hệsởliệu Hình 1.3: Hệsở liệu: a) Personal DB; b) Central DB Hình 1.4: Client/Server Database Hình 1.5: Hệsởliệu phân tán Bảng 1.1: Khách hàng Bảng 1.2: Hàng hoá Bảng 1.3: Hàng bán Bảng 2.1: Chứa thông tin học sinh Bảng 2.2: Quanhệ LOPHOC Bảng 2.3: Quanhệ SINHVIEN Bảng 2.4: Quanhệ MONHOC Bảng 2.5: Quanhệ DIEMTHI Bảng 3.1: Sổ theo dõi việc bán hàng Bảng 3.2: Chứa thông tin hàng hoá Bảng 3.3 Chứa thông tin khách hàng Bảng 3.4: Chứa thông tin hoá đơn bán hàng Bảng 3.5 : Chứa thông tin chi tiết hoá đơn bán hàng Bảng 3.6: Chứa thông tin sinh viên Bảng 3.7: Bảng chứng minh định lý phép tách Bảng 3.7: Bảng đăng ký học sinh viên Bảng 4.1: Các kiểu liệu Chương NHẬP MÔN CƠSỞDỮLIỆU 1.1 Giới thiệu thống quản lý tệp truyền thống Hệ thống quản lý tệp truyền thống thường tổ chức riêng rẽ, phục vụ cho mục đích đơn vị đơn vị trực thuộc cụ thể Hệ thống quản lý tệp truyền thống cho phép ta tạo tệp, truy cập xử lý thông tin tệp thông qua chương trình ứng dụng Các phần mềm ứng dụng viết ngôn ngữ lập trình đa PASCAL, C - Ưu điểm: Việc xây dựng hệ thống tệp tin riêng đơn vị quản lý tốn thời gian khối lượng thông tin cần quản lý khai thác nhỏ, không đòi hỏi đầu tư vật chất chất xám nhiều, triển khai ứng dụng nhanh Thông tin khai thác phục vụ mục đích hẹp nên khả đáp ứng nhanh chóng, kịp thời - Nhược điểm: Thông tin tổ chức riêng rẽ nhiều nơi nên việc cập nhật dễ làm tính quánliệu Hệ thống thông tin tổ chức thành hệ thống file riêng lẻ nên thiếu chia sẻ thông tin nơi Códư thừa liệu lớn qua việc trùng lặp tệp tin ứng dụng khác Không gian đĩa bị lãng phí, khó khăn việc bảo trì hệ thống Khó khăn việc truy xuất liệu Một ví dụ điển hình trùng lắp liệuHệquản lý nguồn nhân lực bao gồm ba hệ chính: Hệ lương, hệ trì ngày công lương cho tất nhân viên Hệ nhân sự, hệ trì lý lịch cá nhân, liệu tổ chức, công việc đào tạo vị trí thăng tiến Hệ hưu, hệquản trị qui tắc liên quan đến nghỉ hưu, loại nghỉ hưu Chi tiết hưu nhân viên Vấn đề bất lợi Hệquản lý lương thông thường quản lý phòng Tài chính, Hệquản lý nhân Hệquản lý hưu quản lý phòng Tổ chức cán Rõ ràng, có nhiều liệu nhân viên chung cho ba hệ Thường hệ thực lưu trữ riêng biệt nên chúng tạo trùng lặp liệu Qua phân tích trên, nhận thấy việc tổ chức liệu theo hệ thống tệp hoàn toàn không phù hợp với hệ thống thông tin lớn Việc xây dựng hệ thống thông tin đảm bảo tính quán liệu, đáp ứng nhu cầu khai thác đồng thời nhiều người thực cần thiết 1.2 Hệsởliệu 1.2.1 Các thành phần hệsởliệu Người dùng Các ứng dụng Hệquản trị sởliệu Phần cứng Cơsởliệu Hình 1.1 : Các thành phần hệsởliệu Các thành phần hệ CSDL gồm: - Người dùng (User), gồm có đối tượng sử dụng: + Người quản trị sở liệu: Trong tổ chức có nhiều người sử dụng chung nguồn liệu thiết phải có người đứng đầu quản lý, chịu trách nhiệm nguồn liệu Đó người quản trị sởliệu (Database Administrators - DBA ) DBA có nhiệm vụ tổ chức nội dung sở liệu, tạo cấp quyền truy cập sởliệu cho người dùng, đưa yêu cầu phần cứng phần mềm… cần thiết DAB phải chịu trách nhiệm bảo vệ an toàn, Backup thông tin…khi cócố + Người phân tích thiết kế hệ thống: Là người chịu trách nhiệm: (a) xác định liệu cần lưu trữ CSDL; (b) lựa chọn cấu trúc thích hợp để biểu diễn lưu trữ; (c) vấn tất người sử dụng CSDL sau để hiểu yêu cầu họ CSDL; (d) tiến hành phân tích thiết kế hệ thống sau thống tất yêu cầu người sử dụng + Người viết chương trình ứng dụng: Là người viết phần mềm phục vụ cho việc thực chức hệ thống ngôn ngữ phù hợp, có nhiệm vụ: (a) chạy thử chương trình (test); (b) chữa lỗi gỡ rối chương trình (debug); (c) viết tài liệu, hướng dẫn sử dụng; (d) bảo trì hệ thống + Người dùng cuối (EndUser): Người dùng cuối người truy cập CSDL để: (a) cập nhật liệu; (b) cruy vấn liệu; (c) thống kê, báo cáo Mỗi EndUse có quyền hạn phạm vi định đỗi với sởliệu quyền đọc, ghi, copy ) - Các ứng dụng: Các thao tác cần thiết truy cập vào sởliệu tạo lập, xử lý, cập nhật liệu - Hệquản trị sở liệu: Hệquản trị sởliệu phần mềm cho phép định nghĩa cấu trúc để lưu trữ liệu thao tác liệu cho đảm bảo an toán bí mật liệu Hiện cósốhệquản trị sởliệu thông dụng FOXPRO, ACCESS, SQL SERVER, ORACLE - Phần cứng: Phần cứng thiết bị phương tiện sử dụng để lưu trữ truy cập vào sởliệu - Cơsở liệu: Cơsởliệuhệ thống thông tin có cấu trúc lưu trữ thiết bị lưu trữ thông tin (như băng từ, đĩa từ…), để thoả mãn yê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 mục đích sử dụng khác 1.2.2 Kiến trúc hệsởliệu USER Khung nhìn USER Khung nhìn USER k Khung nhìn k CSDL CSDL mức khái niệm mức Mức lô gic Mức vật lý Mức Hình 1.2: Cấu trúc hệsởliệu Cấu trúc hệsởliệu gồm ba mức: + Mức ngoài: Là mức sát với người sử dụng nhất, cách nhìn, quan niệm người sử dụng sởliệu mức khái niệm Khả truy nhập tuỳ thuộc vào quyền hạn USER + Mức logic (CSDL mức khái niệm): Là tập liệu biểu diễn dạng trừu tượng sởliệu vật lý + Mức vật lý: Là tập liệu biểu diễn theo cấu trúc đó, lưu thiết bị nhớ thứ cấp (như đĩa từ, băng từ …) 1.3 Phân loại hệsởliệu 1.3.1 Các hệ tập trung Hệsởliệu tập trung hệ CSDL lưu trữ vị trí định, gồm hệsởliệu sau: - Hệsởliệu cá nhân (Personal Database): Mô hình hệsởliệu nhỏ gồm máy tính cá nhân với vài người sử dụng làm nhiệm vụ đơn lẻ với quy mô nhỏ - Hệsởliệu trung tâm (Central Database): Hệsởliệu trung tâm hệ đa người dùng từ thiết bị đầu cuối (terminal) có hình phím để trao đổi thông tin Mọi xử lý, tính toán thực trung tâm với máy tính mạnh xử lý nhiều yêu cầu Một hệ máy tính trung tâm có cố, toàn hệ thống ngừng hoạt động User (a) (b) Hình 1.3: Hệsở liệu; (a) Cá nhân; (b) Trung tâm - Hệsởliệu Client/Server (Client/Server Database): Cơsởliệu lưu trữ máy chủ (Server) nhiều máy trạm (Client) kết nối sử dụng chung sởliệu LAN, WAN, INTERNET Hình 1.4 Kiến trúc Client/Server Database 1.3.2 Các hệsởliệu phân tán Hệsởliệu phân tán hệ CSDL sởliệu tổ chức phân bố thành nhiều sởliệu địa phương, lưu trữ máy tính vị trí địa lý khác thuộc hệ thống Các sởliệu liên kết với qua mạng máy tính phục vụ nhu cầu người dùng nhiều địa điểm khác mức suốt Mạng máy tính Hình 1.5: Hệsởliệu phân tán Hệsởliệu phân tán phân thành hai loại + Hệ nhất: Trong hệ CSDL địa phương biểu diễn theo mô hình giống phương thức truy cập giống + Hệ không nhất: Ngược lại với mô hình hệhệ không 1.4 Những ưu điểm việc xây dựng hệsởliệu - Đảm bảo độc lập liệu: Dữliệu độc lập với chương trình làm cho liệu sử dụng rộng rãi thuận lợi - Giảm thiểu việc dư thừa liệu: Khác với hệ thống tệp, hệ thống sởliệu tổ chức theo cấu trúc thống nhất, hợp lý hạn chế việc lưu trữ nhiều nơi - Đảm bảo tính quán toàn vẹn liệu: Do dư thừa nên hạn chế dị thường thay đổi, cập nhật - Tăng tính dùng chung: Cơsởliệucó khả cho nhiều người truy cập sử dụng người nhìn vào sởliệu riêng không bị ảnh hưởng người khác - Tăng khả phát triển ứng dụng: Do có mở rộng giao lưu nên khả sáng tạo cải tiến thuận lợi - Tính chuẩn hoá cao - Chất lượng liệu cải thiện - Giảm bớt chi phí bảo trì hệ thống 1.5 Tính độc lập liệu Tính độc lập liệu bất biến chương trình ứng dụng thay đổi cấu trúc lưu trữ chiến lược truy nhập vào sở sữ liệu Tính độc lập liệucó hai mặt: - Độc lập vật lý: Là độc lập lưu trữ, chương trình ứng dụng không phụ thuộc vào việc liệu lưu giữ đâu lưu giữ thiết bị nhớ thứ cấp - Độc lập lôgic: Sự thay đổi, thêm bớt thông tin thực thể mức quan niệm không đòi hỏi thay đổi khung nhìn người sử dụng dẫn tới không cần thay đổi chương trình ứng dụng 1.6 Hệquản trị sởliệu 1.6.1 Các chức hệquản trị CSDL Một hệquản trị CSDL thực chức sau: + Tạo cấu trúc liệu tương ứng với mô hình liệu chọn + Đảm bảo tính độc lập liệu + Cho phép cập nhật liệu + Kết xuất báo cáo từ liệu CSDL + Đảm bảo tính an toàn toàn vẹn liệu CSDL + Cung cấp tiện ích lưu phục hồi liệu + Cung cấp thủ tục điều khiển tương tranh 1.6.2 Các thành phần hệ QTCSDL Một hệquản trị thông thường có thành phần sau: + Ngôn ngữ định nghĩa liệu (Data Definition Language) + Ngôn ngữ thao tác liệu (Data Manipulation Language) + Ngôn ngữ hỏi đáp liệu (Query Language) + Bộ viết báo cáo + Từ điển liệu + Bộ phát sinh đồ hoạ 1.7 Các mô hình liệu Mô hình liệu cho phép người dùng biểu diễn sởliệu cấu trúc thuật ngữ dễ hiểu Một mô hình liệu hình thức mô tả toán học bao gồm: + Một hệ thống ký hiệu để mô tả liệu + Tập phép toán để thao tác sởliệu Vào năm đầu thập kỷ 60 (thế kỷ 20), mô hình mạng mô hình phân cấp hệ họ mô hình liệu Sang đầu thập kỷ 70 E.F Codd đề xuất mô hình quanhệ mới, hệ thứ hai Mô hình quanhệcó cấu trúc chặt chẽ, sáng sủa, quáncó tính trực quan cao 1.7.1 Khái niệm thực thể liên kết a) Thực thể Thực thể (entity) đối tượng cụ thể hay trừu tượng mà ta cần quan tâm công tác quản lý Tên thực thể danh từ Thí dụ 1.1: Quản lý thư viện ta có thực thể như: “Sách”, “Độc giả” đối tượng cụ thể Các đối tượng trừu tượng là: Khoa công nghệ thông tin, Ngành toán ứng dụng… b) Kiểu thực thể Kiểu thực thể tập hợp thực thể (đối tượng) mô tả đặc trưng, tính chất giống Thí dụ 1.2: Một nhân viên thực thể, tập hợp nhân viên hệ thống tạo thành kiểu thực thể Biểu diễn kiểu thực thể: Là hình chữ nhật bên ghi tên kiểu thực thể Thí dụ 1.3: Biểu diễn thực thể « Nhân viên », « Sách », « Độc giả »: Nhân viên Sách 10 Độc giả SELECT SinhVien.* FROM SinhVien , SV_DeTai WHERE SinhVien.MaSV = SV_DeTai.MaSV AND MaDT=’DT02’ Kết MaSV HotenSV NS GT Diachi MaLop 08K7A1 Nguyễn Văn Dũng 09/11/1989 Hà Nội L01 08K7A2 Lê Ngọc Dương 01/09/1989 Bắc Giang L01 f) Thống kê liệu với GROUP BY Mệnh đề GROUP BY sử dụng câu lệnh SELECT nhằm phân hoạch dòng liệu bảng thành nhóm liệu nhóm liệu thực tính toán giá trị thống kê tính tổng, tính giá trị trung bình… Các hàm nhóm sử dụng để tính giá trị thống kê cho toàn bảng nhóm liệu Chúng sử dụng cột danh sách chọn câu lệnh SELECT xuất mệnh đề HAVING, không phép xuất mệnh đề WHERE SQL cung cấp hàm nhóm đây: Chức Hàm nhóm SUM(Tên_thuộc_tính|biểu_thức) Tính tổng giá trị AVG(Tên_thuộc_tính|biểu_thức) Tính trung bình giá trị COUNT(Tên_thuộc_tính|biểu_thức) Đếm số giá trị biểu thức COUNT(*) Đếm số dòng chọn MAX(Tên_thuộc_tính|biểu_thức) Tính giá trị lớn MIN(Tên_thuộc_tính|biểu_thức) Tính giá trị nhỏ Trong đó: Hàm SUM, AVG làm việc với biểu thức số Hàm SUM, AVG, COUNT, MIN MAX bỏ qua giá trị NULL tính toán 79 Hàm COUNT(*) không bỏ qua giá trị NULL S1: Thống kê toàn liệu Khi cần tính toán giá trị thống kê toàn liệu, ta sử dụng hàm nhóm danh sách chọn câu lệnh SELECT Trong trường hợp này, danh sách chọn không sử dụng bẩt kỳ tên cột hay biểu thức hàm nhóm Ví dụ 4.19 : Để tính trung bình kinh phí tất đề tài ta sử dụng câu lệnh sau: SELECT AVG(KP) AS TBKP FROM DeTai Kết quả: TBKP 2500000 S2: Thống kê liệu nhóm Trong trường hợp cần thực tính toán giá trị thống kê nhóm liệu, ta sử dụng mệnh đề GROUP BY để phân hoạch liệu thành nhóm riêng biệt Các hàm nhóm sử dụng thực thao tác tính toán nhóm cho biết giá trị thống kê theo nhóm liệu Ví dụ 4.20: Câu lệnh cho biết sĩ số sinh viên lớp SELECT LopHoc.MaLop, TenLop, COUNT(MaSV) AS SiSo FROM LopHoc, SinhVien WHERE LopHoc.MaLop = SinhVien MaLop GROUP BY LopHoc.MaLop, TenLop Kết quả: MaLop TenLop SiSo L01 K7A-CNTT L02 K7B-CNTT Chú ý: 80 Biểu thức điều khiển việc phân nhóm liệu biểu thức phải liệt kê sau mệnh đề GROUP BY Trong trường hợp danh sách chọn câu lệnh SELECT có hàm nhóm biểu thức thuộc tính đối số hàm nhóm biểu thức thuộc tính phải liệt kê đầy đủ mệnh đề GROUP BY, không câu lệnh không hợp lệ Ví dụ 4.21: Dưới câu lệnh sai thiếu trường TenLop sau mệnh đề GROUP BY SELECT LopHoc.MaLop, TenLop, COUNT(MaSV) AS SiSo FROM LopHoc, SinhVien WHERE LopHoc.MaLop = SinhVien MaLop GROUP BY LopHoc.MaLop g) Mệnh đề điều kiện nhóm HAVING Mệnh đề HAVING mệnh điều kiện tác động nhóm liệu Mệnh đề HAVING sử dụng kết hợp với mệnh đề GROUP BY Một điểm khác biệt HAVING WHERE điều kiện WHERE không phép sử dụng hàm nhóm HAVING lại cho phép sử dụng hàm nhóm điều kiện Ví dụ 4.22: Cho biết lớp có sĩ số >=50 học sinh SELECT LopHoc.MaLop, TenLop, COUNT(*) AS SiSo FROM LopHoc, SinhVien WHERE LopHoc.MaLop = SinhVien MaLop GROUP BY LopHoc.MaLop, TenLop HAVING COUNT(*)>=50 h) Truy vấn (Subquery) Truy vấn câu lệnh SELECT lồng vào bên câu lệnh SELECT, INSERT, UPDATE, DELETE bên truy vấn khác Loại truy vấn sử dụng để biểu diễn cho truy vấn điều kiện câu truy vấn liệu cần phải sử dụng đến kết truy vấn khác Ví dụ 4.23 :Đưa danh sách sinh viên thực đề tài có mã ‘DT02’ 81 SELECT SV.* FROM SinhVien SV, SV_DeTai TT WHERE SV.MaSV=TT.MaSV AND MaDT=’DT02’ Hoặc viết sau: SELECT * FROM SinhVien WHERE MaSV IN (SELECT MaSV FROM SV_DeTai WHERE MaDT = 'DT02') Ví dụ 4.24: Cho biết sinh viên thực tập đề tài có tên đề tài ‘Truy vấn liệu Multimedia’ SELECT * FROM SinhVien WHERE MaSV IN (SELECT MaSV FROM SV_DeTai WHERE MaDT=(SELECT MaDT FROM DeTai WHERE TenDT= ’Truy vấn liệu Multimedia’)) Ví du 4.25: Câu lệnh sau cho biết danh sách đề tài chưa có sinh viên thực tập SELECT * FROM DeTai WHERE MaDT NOT IN (SELECT DICTINCT MaDT FROM SV_DeTai) Ví du 4.26: Cho biết danh sách đề tài có kinh phí lớn nhất? SELECT * FROM DeTai WHERE KP = (SELECT Max(KP) FROM SV_DeTai) 4.2.3.2 Nhập liệuDữliệu bảng thể dòng (bản nghi) Để nhập thêm dòng liệu vào bảng, ta sử dụng câu lệnh INSERT với cú pháp sau: INSERT INTO [()] VALUES () 82 Trong câu lệnh INSERT, danh_sách_tên_cột sau tên bảng không cần thiết phải định Trong trường hợp này, thứ tự giá trị danh sách trị phải số lượng trường bảng cần bổ sung liệu phải tuân theo thứ tự trường bảng định nghĩa Ví dụ 4.27: Câu lệnh bổ sung thêm lớp học vào bảng lớp INSERT INTO LopHoc VALUES (‘L03’, ‘K7C-KT’) Ngược lại định sau tên bảng phải tương ứng với thứ tự cột có danh sách Ví dụ: INSERT INTO LopHoc(TenLop) VALUES (‘K7D-ĐTVT’, ‘L04’) Ghi chú: Trong trường hợp nhập giá trị cho số cột bảng, ta phải định danh sách cột cần nhập liệu sau tên bảng Khi cột không nhập liệu nhận giá trị mặc định (nếu có) nhận giá trị NULL (nếu cột cho phép nhận giá trị NULL) Nếu cột giá trị mặc định không chấp nhận giá trị NULL mà không nhập liệu, câu lệnh bị lỗi 4.2.3.3 Cập nhật liệu Câu lệnh UPDATE SQL sử dụng để cập nhật liệu bảng Câu lệnh có cú pháp sau: UPDATE SET = [, …., = ] [WHERE ] Sau UPDATE tên bảng cần cập nhật liệu Một câu lệnh UPDATE cập nhật liệu cho nhiều cột cách định danh sách tên cột biểu thức tương ứng sau từ khoá SET Mệnh đề WHERE câu lệnh UPDATE thường sử dụng đề định dòng liệu chịu tác động câu lệnh (nêu không định, phạm vi tác động câu lệnh toàn dòng bảng) Ví dụ 4.28: Cập nhật lại địa sinh viên có mã 08K7A1 thành Thái Nguyên UPDATE SinhVien 83 SET DiaChi = 'Thái Nguyên' WHERE MaSV ='08K7A1' Ví dụ 4.29: Cập nhhật lại kết thực tập sinh viên thực tập đề tài có tên đề tài ‘Truy vấn liệu Multimedia’ UPDATE SV_DeTai SET KQ = 10 WHERE MaDT=(SELECT MaDT FROM DeTai WHERE TenDT=’Truy vấn liệu Multimedia’) 4.2.3.4 Xo¸ d÷ liÖu Để xoá liệu bảng, ta sử dụng câu lệnh DELETE Cú pháp câu lệnh sau: DELETE FROM [WHERE ] Trong đó, tên bảng cần xoá liệu định sau DELETE FROM Mệnh đề WHERE câu lệnh sử dụng để định điều kiện dòng liệu cần xoá Nếu câu lệnh DELETE mệnh đề WHERE toàn dòng bảng bị xoá Mệnh đề FROM định danh sách bảng cóliệu liên quan đến việc xoá liệu +Ví dụ 4.30: Câu lệnh sau xoá khỏi bảng SinhVien sinh viên có địa Hà nội DELETE FROM SinhVien WHERE DiaChi = 'Hà nội' Ví dụ 4.31: Xoá khỏi bảng sinh viên sinh viên chưa tham gia đề tài thực tập nào? DELETE FROM SinhVien WHERE MaSV NOT IN (SELECT DISTINCT MaSV FROM SV_DeTai ) + Xoá tất thông tin tình hình thực tập sinh viên DELETE FROM SV_DeTai 84 BÀI TẬP CÂU HỎI Cho CSDL gồm quanhệ CC(MSNCC,TEN_CC,DCCC) MH(MSNCC,MSMH) Trong đó: MSNCC: Mã số người cung cấp TEN_CC: Tên người cung cấp DCCC: Địa cung cấp MSMH: Mã số mặt hàng Hãy cho quanhệliệu Hãy biểu diễn yêu cầu sau ngôn ngữ SQL a Tìm mã số người cung cấp Q1: mặt hàng Q2: không cung cấp mặt hàng Q3: cung cấp mặt hàng có MSMH 15 Q4: cung cấp mặt hàng mặt hàng có mã số 15 b Mặt hàng có mã số 12, 13, 15 dược cung cấp nhà cung cấp địa nào? c Lập danh sách gồm cột MSNCC, TEN_CC,MSMH) từ sởliệu Cho CSDL gồm quanhệ sau: DAIHOC(TENTRUONG,HIEUTRUONG,DIACHI) KHOA(TENTRUONG,MSKHOA,TENKHOA,SOSINHVIEN) SINHVIEN(TENTRUONG,MSKHOA,MSSV,TENSV,DIACHISV) đó: SOSINHVIEN: số lượnglà sinh viên MSKHOA: mã số khoa TENSV: tên sinh viên DIACHISV: địa sinh viên (hiểu quê quán) Hãy cho quanhệliệu Biểu diễn câu hỏi sau ngôn ngữ SQL a/ Trường Đại học có khoa TINHOC b/ Tổng số sinh viên học tất trường đại học c/ Sinh viên học quê nhà (giả sử lấy tên tỉnh, thành phố) d/ Khoa trường cósố sinh viên cao nhất? e/ Cho biết tên hiệu trưởng trường có khoa TINHOC 85 Cho CSDL với quan hệ: NHANVIEN(MSNV,TENNHANVIEN,MSCOQUAN,CONGVIEC, THUTRUONG,LUONG) COQUAN(MSCOQUAN,TENCOQUAN,DIACHI) Hãy cho quanhệliệu Biểu diễn ngôn ngữ SQL, đại sốquanhệ yêu cầu sau đây: Q1: Tìm tên nhân viên quancó mã số 50 Q2: Tìm mã số tất quan từ quanhệ NHANVIEN Q3: Tìm tên nhân viên quancó mã số 15, 20, 25 Q4: Tìm tên người làm việc Đồ Sơn Cho sởliệuquản lý dự án gồm bảng liệu sau: + Bảng NHANVIEN chứa danh sách nhân viên gồm thuộc tính sau: Tên Thuộc tính MaNV Hoten Ngaysinh GT Giải thích Mã nhân viên Họ tên nhân viên Ngày sinh Giới tính + Bảng DU_AN chứa thông tin dự án gồm có thuộc tính sau: Tên Thuộc tính MaDA TenDA NganSach Giải thích Mã dự án Tên dự án Ngân sách + Bảng THAMGIA ghi danh sách sinh viên đăng ký tham gia dự án Tên Thuộc tính MaDA MaNV TGBD TGKT Giải thích Mã dự án Mã nhân viên Thời gian bắt đầu Thời gian kết thúc 86 Biểu diễn ngôn ngữ SQL, đại sốquanhệ yêu cầu sau đây: a/ Đưa danh sách nhân viên ? b/ Đưa danh sách nhân viên có giới tính ? c/ Đưa danh sách dự án có ngân sách lớn ? d/ Cho biết nhân viên tham gia tổng sốdự án ? e/ Cho biết dự án có tổng số nhân viên tham gia ? f/ Cho biết mã tên dự án cósố tổng số nhân viên tham gia >=10 người ? g/ Cho biết mã tên nhân viên tham gia dự án có tên dự án ‘Dự án nước nông thôn’ ? h/ Đưa mã tên dự án mà nhân viên có mã NV01 tham gia ? i/ Đưa danh sách nhân viên chưa tham gia dự án ? k/ Cho biết thông tin nhân viên tham gia dự án ? m/ Đưa danh sách dự án có xếp giảm dần theo ngân sách ? Cho sởliệu gồm bảng liệu sau: + Bảng NSX (nước sản xuất) Tên Thuộc tính MaNSX TenNSX Giải thích Mã nhà sản xuất Tên nhà sản xuất + Bảng SANPHAM (sản phẩm) Tên Thuộc tính MaSP TenSP DVT NgaySX SoLuong ChungLoai MaNSX Giải thích Mã sản phẩm Tên sản phẩm Đơn vị tính Ngày sản xuất Số lượng Chủng loại Mã nhà sản xuất Biểu diễn ngôn ngữ SQL, đại sốquanhệ yêu cầu sau đây: a) Cho biết mã tên nhà sản xuất sản xuất sản phẩm có tên ‘Máy lọc nước’? b) Cho biết mã, tên, số lượng, ngày sản xuất sản phẩm nhà sản 87 xuất có mã ‘N01’ sản xuất? c) Hãy tổng hợp thông tin loại sản phẩm nhà sản xuất(gồm thuộc tính sau: MaSP, TenSP, DVT, TongSoLuong)? d) Cho biết nhà sản xuất sản xuất tổng số loại sản phẩm? e) Cho biết danh sách sản phẩm nhà sản xuất có tên ‘Panasonic’ sản xuất? Cho sởliệuquản lý điểm gồm bảng sau: + Bảng LopHoc gồm thuộc tính Tên Thuộc tính MaLop TenLop Giải thích Mã lớp Tên lớp +Bảng SinhVien gồm thuộc tính Tên Thuộc tính MaSV HoTen NS GT DC MaLop Giải thích Mã sinh viên Họ tên sinh viên Ngày sinh Giới tính Địa Mã lớp + Bảng MonHoc gồm thuộc tính Tên Thuộc tính MaMon TenMon TC Giải thích Mã môn Tên môn Số tín +Bảng Diem gồm thuộc tính Tên Thuộc tính MaSV MaMon Ky DiemLan1 DiemLan2 Giải thích Mã sinh viên Mã môn Kỳ thi Điểm thi lần thi Điểm thi lần 88 Hãy biểu diễn yêu cầu sau ngôn ngữ SQL: a) Cho biết danh sách sinh viên có giới tính ? b) Cho biết danh sách sinh viên có địa Thái Nguyên? c) Cho biết mã tên điểm thi lần sinh viên học môn học có mã MH01? d) Cho biết mã tên điểm thi lần sinh viên học môn học có tên môn Cơsở liệu? e) Cho biết danh sách sinh viên phải thi lại môn học có tên môn Cơsở liệu? f) Cho biết sinh viên có mã SV01 phải thi lại môn học nào? g) Cho biết điểm cao thi cao môn học Hệquản trị sởliệu bao nhiêu? h) Cho biết sinh viên đạt điểm thi cao môn Cơsở liệu? 89 Chương TỐI ƯU HOÁ CÂU HỎI Nói chung ngông ngữ bậc cao, đòi hỏi thực máy tính tốn thời gian Do trước thực câu hỏi thuộc ngôn ngữ cần thiết phải biến đổi hợp lý để giảm thời gian tính toán Việc làm tạm thời gọi "tối ưu hoá " Trong chương chủ yếu trình bày vài phương pháp tối ưu hoá biểu thức quan hệ, đặc biệt xử lý biểu thức có liên quan tới phép kết nối phép tích Đề - Sau trình bày chi tiết phương pháp tối ưu ho lớp phổ cập biểu thức quanhệ 5.1 Các chiến lược tối ưu 1- Thức phép chọn sớm Biến đổi câu hỏi để đưa phép chọn vào thực trước nhằm làm giảm bớt kích cỡ kết trung gian chi phí phải trả giá cho việc truy nhập nhớ thứ cấp lưu trữ nhớ nhỏ 2-Tổ hợp phép chọn với phép tích Đề-các thành phép kết nối Như biết, phép kết nối, đặc biệt phép kết nối thực "rẻ" thực phép tích Đề-các quanhệ Nếu kết tích Đề-các R x S đối số phép chọn phép chọn liên quan tới phép so sánh thuộc tính R S rõ ràng phép tích Đề-các phép kết nối 3-Tổ hợp dãy phép tính thành 90 Một dãy phép phép chọn phép chiếu mà kết chúng phụ thuộc vào quanhệ độc lập nhóm phép lại 4-Tìm biểu thức chung biểu thức F = F1 x F2 F1 x F3 F = F1 x (F2 F3) 5-Xử lý độc lập tệp trước xử lý chung CSDL Có thể xếp thiết lập tệp số cho quanhệ độc lập trước xử lý 6- Lựa chọn thứ tự thực phép toán Một cần chọn trình tự thực phép tính biểu thức chọn hai đối số phép hai cần tính toán xem chi phí thực phép tính (thường số phép tính, thời gian, dung tích nhớ theo tỷ lệ kích cỡquan hệ… ) Từ có chi phí phải trả cho cách khác để thực câu hỏi 5.2 Các phép biến đổi tương đương 1-Phép giao hoán Nếu R1 R2 hai quan hệ, F điều kiện thuộc tính R1 R2 R1 F R2 ≡ R2 F R1 ; R1*R2 ≡ R2* R1; R1 x R2 ≡ R2 x R1 2- Phép kết hợp Nếu R1, R2 R3 quan hệ, F1 F2 biểu thức điều kiện (R1 x R2) x R3 ≡ R1 x (R2 x R3); (R1 F1 R2) F2 R3 ≡ R1 F1 (R2 F2 R3) 3- Xử lý dãy phép toán chọn F1(F2(F3 (F1n(r))) ≡ F1F2F3 Fn(r) 4- Xử lý dãy phép toán chiếu Nếu có: A1A2 An B1B2 Bn Thì A1A2 An(B1B2 Bn(R)) ≡ A1A2 An(R) 5- Giao hoán phép chọn phép chiếu 91 F(A1A2 An( R)) ≡ A1A2 An(F(R)) 6-Giao hoán phép chọn phép tích Đề -các -Nếu điều kiện chọn liên quan đến R1 F(R1 x R2) ≡ F1(R1) x (R2) -Nếu F = F1F2 F1 liên quan đến R1; F2 liên quan đến R2 F(R1 x R2) ≡ F1(R1) x F2(R2) -Nếu F1 liên quan đến R1, F2 liên quan đến R1 R2 F(R1 x R2) ≡ F2(F1(R1) x R2) 7- Giao hoán phép chọn phép hợp F(R1 R2) ≡ F(R1) F(R2) 8- Giao hoán phép chọn phép trừ F(R1 - R2) ≡ F(R1) - F(R2) 9- Giao hoán phép chiếu phép tích Đề Nếu thuộc tính A1, A2, ,An R1; B1, B2, ,Bn R2 Ta có: A1A2…An,B1B2….Bn (R1 x R2) ≡ A1A2 An,(R1) x B1B2 Bn (R2) 10-Giao hoán phép chiếu phép hợp A1A2…An (R1 R2) ≡ A1A2 An,(R1) A1A2 An (R2) Ví dụ: Cho sởliệu gồm bảng liệu sau Bảng Công Ty (CONGTY) gồm thuộc tính: Mã công ty (MaCongTy), Tên công ty (TenCongTy), Ngân sách (NganSach), Địa (DiaChi) Bảng Hàng Hoá (HANGHOA) gồm thuộc tính: Mã hàng (MaHang), Tên hàng (TenHang), Mầu sắc (Mau), Đơn vị tính (DonViTinh) Bảng Cung Cấp hàng (CUNGCAP) gồm thuộc tính: MaCongTy, MaHang, Số lượng (SoLuong), Đơn giá (DonGia) Yêu cầu: Cho biết tên công ty cung cấp mặt hàng màu đỏ 1/ Dùng đại sốquanhệ TenCongTy(Mau =”đỏ”(CongTy.MaCongTy = CungCap.MaCongTy 92 (CungCap.MaHang=HangHoa.MaHang (CONGTY x HANGHOA x CUNGCAP)))) -Đẩy phép chọn lên trước TenCongTy(Mau =”đỏ”(CongTy.MaCongTy = CungCap.MaCongTy ( CongTy x CungCap.MaHang=HangHoa.MaHang(HangHoa x CungCap))) -Chuyển phép chọn phép tích Đề thành phép kết nối TenCongTy(Mau =”đỏ”(CongTy.MaCongTy = CungCap.MaCongTy( CongTy x (HangHoa * CungCap))) MaHang -Chuyển phép chọn phép tích Đề thành phép kết nối TenCongTy(Mau =”đỏ”( CongTy *( HangHoa * CungCap)) MaCongTy MaHang -Đẩy phép chọn lên trước TenCongTy( CongTy * (Mau =”đỏ”HangHoa) * CungCap)) MaHang MaCongTy 2/ Dùng SQL -Không tối ưu: SELECT TenCongTy FROM Congty, HangHoa,CungCap WHERE (CongTy.MaCongTy = CungCap.MaCongTy) AND (CungCap.MaHang = HangHoa.MaHang) AND (HangHoa Mau = “Đỏ”) - Tối ưu: SELECT TenCongTy FROM CongTy WHERE MaCongTy IN ( SELECT MaCongTy FROM CungCap WHERE MaHang IN ( SELECT MaHang FROM HangHoa WHERE Mau = “Đỏ”))) 93 ... thực cần thiết 1.2 Hệ sở liệu 1.2.1 Các thành phần hệ sở liệu Người dùng Các ứng dụng Hệ quản trị sở liệu Phần cứng Cơ sở liệu Hình 1.1 : Các thành phần hệ sở liệu Các thành phần hệ CSDL gồm: - Người... thiết kế hệ sở liệu Nêu tính độc lập liệu Trình bày khái niệm hệ quản trị sở liệu? Các hệ quản trị sở liệu sử dụng Nêu chức thành phần hệ quản trị sở liệu Thế mô hình liệu ? Các mô hình liệu 16 Chương... hình quan hệ đơn giản thuận tiện so với mô hình BÀI TẬP VÀ CÂU HỎI CHƯƠNG 1 Định nghĩa sở liệu Nêu thành phần hệ sở liệu Nêu kiến trúc hệ sở liệu Phân loại hệ sở liệu Nêu ưu điểm việc thiết kế hệ