Bài giảng Nhập môn điện toán - Chương 5: Cơ sở dữ liệu
Định nghĩa và thuật ngữ
Dữ liệu (data): sự biểu diễn của các đối tượng và sự kiện
được ghi nhận và được lưu trữ trên các phương tiện của máy
tính.
Dữ liệu có cấu trúc: số, ngày, chuỗi ký tự,
Dữ liệu không có cấu trúc: hình ảnh, âm thanh, đoạn phim,
Các đối tượng biểu diễn dữ liệu có thể
được tìm thấy ở đâu ?
Cơ sở dữ liệu
Cơ sở dữ liệu (database) tập hợp có tổ
chức các dữ liệu có liên quan luận lý với nhau.
Có tổ chức (organized): user dễ dàng lưu trữ,
thao tác và truy xuất dữ liệu.
Có liên quan luận lý (logically related): dữ liệu
mô tả một lãnh vực mà nhóm user quan tâm và
được dùng để trả lời các câu hỏi liên quan đến
Market Shares
From 2004
• IBM: 35% market
with $2.5BN in
sales
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Bài giảng Nhập môn điện toán - Chương 5: Cơ sở dữ liệu
mp (Empnum, Name, Sal, Tax, Mgrnum, Deptnum) Dept (Deptnum, Name, Area, Mgrnum) Supplier (Snum, Name, City) Supply (Snum, Pnum, Deptnum, Quan) SQL – Ngôn ngữ truy vấn có cấu trúc Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 51 Source: Ngôn ngữ SQL Ngôn ngữ truy vấn có cấu trúc (SQL -Structured Query Language) là một ngôn ngữ chuNn được dùng để tạo lập và truy vấn các cơ sở dữ liệu quan hệ. SQL là một ngôn ngữ chuNn cho các hệ quản trị CSDL quan hệ (RDBMS - Relational DBMS). Ngôn ngữ SQL là một ngôn ngữ tựa tiếng Anh (English-like language), sử Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 52 dụng các từ như select, insert, delete, update trong tập lệnh. Ngôn ngữ SQL là một ngôn ngữ phi thủ tục (nonprocedural language). Chỉ ra các thông tin gì cần thiết (what). Không cần phải chỉ ra cách thực hiện như thế nào (how) để có được các thông tin này. SQL xử lý các tập hợp mNu tin (bảng) hơn là mỗi lần một mNu tin đơn lẻ. Đặc điểm của ngôn ngữ SQL Nhiều loại người có thể sử dụng SQL: người quản trị CSDL (DBA), người lập trình ứng dụng, người quản lý, người sử dụng cuối cùng (end user). SQL cung cấp nhiều lệnh cho nhiều công việc khác nhau: Truy vấn dữ liệu. Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Thêm vào, cập nhật và xóa bỏ các hàng của bảng. Tạo lập, thay đổi và xóa bỏ các đối tượng CSDL. Điều khiển truy xuất cơ sở dữ liệu và các đối tượng CSDL. Bảo đảm tính nhất quán của CSDL. Nhập môn Điện Toán - Chương 5 Slide 53 Một số kiểu dữ liệu Kiểu chuỗi CHAR(n) – kiểu chuỗi có chiều dài cố định gồm n ký tự (chiều dài tối đa 2000 bytes). VARCHAR2(n) – kiểu chuỗi có chiều dài thay đổi gồm n ký tự (chiều dài tối đa 4000 bytes). LONG – kiểu chuỗi có chiều dài thay đổi, tối đa 4GB (chỉ có một cột trong một bảng). Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Kiểu số NUMBER(p,q) – kiểu số có p ký số và q số lẻ. INTEGER(p) – kiểu số nguyên có p ký số. Kiểu ngày giờ DATE – kiểu ngày giờ có chiều dài cố định theo dạng dd-mm-yy. Nhập môn Điện Toán - Chương 5 Slide 54 Ngôn ngữ SQL Ngôn ngữ định nghĩa dữ liệu DDL - Data Definition Language Các lệnh dùng để định nghĩa CSDL: tạo lập (create), thay đổi (alter) và hủy bỏ (drop) các đối tượng dữ liệu, thiết lập các ràng buộc. Ngôn ngữ thao tác dữ liệu DML - Data Manipulation Language Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 55 Các lệnh dùng để bảo trì và truy vấn CSDL: thêm (insert), sửa (update), xóa (delete) dữ liệu của bảng, truy vấn (select). Ngôn ngữ điều khiển dữ liệu DCL - Data Control Language Các lệnh dùng để điều khiển CSDL: quản trị các quyền (grant, revoke). Ngôn ngữ định nghĩa dữ liệu Tạo cấu trúc của một bảng. CREATE TABLE (, []); Hủy bỏ một bảng. DROP TABLE [CASCADE CONSTRAINTS]; DROP TABLE CUSTOMER; Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 56 CREATE TABLE CUSTOMER (CUST_ID NUMBER(11,0) NOT NULL, NAME VARCHAR(25) NOT NULL, ADDRESS VARCHAR(30), CITY VARCHAR(20), CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_ID)); Ngôn ngữ thao tác dữ liệu Mệnh đề của lệnh SELECT SELECT: liệt kê các cột (các biểu thức) của kết quả. FROM: các bảng hoặc các khung nhìn chứa dữ liệu cần thiết cho truy vấn. WHERE: điều kiện xử lý các hàng để tạo ra kết quả. GROUP BY: gom nhóm các hàng. Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 57 HAVING: điều kiện xử lý các nhóm. ORDER BY: sắp thứ tự kết quả. SELECT CUST_ID, NAME, ADDRESS FROM CUSTOMER WHERE CITY = ‘HCM’; Liệt kê mã, tên và địa chỉ của các khách hàng thuộc thành phố ‘HCM’ Ví dụ về lệnh SELECT SELECT * FROM Order; SELECT OrderID, OrderDate, CustomerID FROM Order; Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 58 SELECT DISTINCT OrderDate AS “Date of Order” FROM Order; SELECT Order_ID AS Identifier, OrderDate AS Date FROM Order; Ví dụ về lệnh SELECT SELECT ProductID, StandardPrice FROM Product WHERE StandardPrice < 275; SELECT Cust.CustomerName AS Name, CustomerAddress FROM Customer Cust WHERE CustomerName = ‘Home Furnishings’; Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 59 SELECT ProductID, StandardPrice FROM Product WHERE StandardPrice BETWEEN 100 AND 200; SELECT CustomerName, District, City FROM Customer WHERE City IN (‘Long An’, ‘Tien Giang’, ‘My Tho’); Ví dụ về lệnh SELECT SELECT ProductDescription, ProductFinish, StandardPrice FROM Product WHERE (ProductDescription LIKE ‘%Desk’ OR ProductDescription LIKE ‘S%’) AND StandardPrice > 300; SELECT ProductID, ProductFinish, StandardPrice FROM Product Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 60 WHERE ProductDescription IS NULL; SELECT COUNT(*) FROM Order WHERE OrderID = 1004; SELECT District, COUNT(District) FROM Customer WHERE District IN (‘Q1’, ‘Q2’, ‘Q3’, ‘Q9’) GROUP BY District HAVING COUNT(District) >= 10 ORDER BY District DESC; Thêm dữ liệu vào một bảng INSERT INTO Customer VALUES (001, ‘Contemporary Casuals’, ‘1355 S. Himes Blvd.’, ‘Gainesville’, ‘FL’, 32601); INSERT INTO Product (ProductID, ProductDescription, ProductFinish, StandardPrice, ProductOnHand) • Cú pháp thêm một hàng: INSERT INTO [()] VALUES (); Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 61 VALUES (1, ‘End Table’, ‘Cherry’, 175, 8); INSERT INTO CA_Customer SELECT * FROM Customer WHERE State = ‘CA’; • Cú pháp thêm nhiều hàng: INSERT INTO [()] SELECT statement; Cập nhật dữ liệu Sử dụng lệnh UPDATE: UPDATE [] SET = {, } [, = {, } ] [WHERE ]; Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 62 UPDATE Product SET UnitPrice = 775 WHERE ProductID = 7; Xóa các hàng trong một bảng Sử dụng lệnh DELETE: DELETE [FROM] [WHERE ]; Xóa một số hàng của bảng Customer DELETE FROM Customer Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 63 WHERE State = ‘HI’; Xóa tất cả các hàng của bảng Customer DELETE FROM Customer; Ngôn ngữ điều khiển dữ liệu Cho phép người sử dụng Tien và Truc được phép xem và thêm dữ liệu vào bảng Customer GRANT SELECT, INSERT ON CUSTOMER TO TIEN, TRUC; Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 64 REVOKE INSERT ON CUSTOMER FROM TRUC; Xóa quyền thêm dữ liệu vào bảng Customer của Truc Ràng buộc toàn vẹn Ràng buộc toàn vẹn (integrity constraint) Ràng buộc toàn vẹn là một qui tắc mà tất cả các dữ liệu trong CSDL phải thỏa mãn qui tắc này. Ràng buộc miền trị (domain constraint) Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Các giá trị cho phép của một thuộc tính. Toàn vẹn thực thể (entity integrity) Thuộc tính khóa chính không có giá trị rỗng (null value). Nhập môn Điện Toán - Chương 5 Slide 65 Ví dụ về ràng buộc miền trị Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 66 Định nghĩa miền trị cho các thuộc tính Ràng buộc toàn vẹn tham chiếu Referential integrity constraint là một qui tắc mà tất cả các giá trị của khóa ngoại (nếu khác null) của một bảng phải có trong các giá trị của khóa chính trong bảng liên quan. Qui tắc xóa các hàng dữ liệu Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 67 Hạn chế (restrict): không cho phép xóa các hàng bên phía cha (parent) nếu tồn tại các hàng liên quan bên phía phụ thuộc (dependent). Tầng (cascade): tự động xóa các hàng bên phía phụ thuộc tương ứng với các hàng bên phía cha. Gán null (set-to-null): gán null cho khóa ngoại của các hàng bên phía phụ thuộc tương ứng với các hàng bên phía cha. Ví dụ về ràng buộc toàn vẹn tham chiếu Ràng buộc toàn vẹn tham chiếu được biểu diễn bằng Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 68 những mũi tên từ phía phụ thuộc đến phía cha tương ứng ChuNn hóa dữ liệu data normalization là một quá trình thuận nghịch từng bước để thay thế tập hợp các quan hệ cho trước thành các quan hệ có cấu trúc đơn giản hơn và chun hơn. nhằm để cải tiến một thiết kế CSDL thỏa mãn các ràng buộc toàn vẹn và tránh dữ liệu bị lặp lại không cần thiết. Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 69 Mục đích của chuNn hóa dữ liệu Loại bỏ các bất thường (anomaly) của một quan hệ để có được các quan hệ có cấu trúc tốt hơn, nhỏ hơn. Quan hệ có cấu trúc tốt (well-structured relation) Có sự dư thừa dữ liệu là tối thiểu. Cho phép người sử dụng thêm vào, cập nhật và xóa bỏ dữ liệu mà không gây ra sự mâu thuẫn dữ liệu. Phụ thuộc hàm Functional Dependency Cho R là một quan hệ, X và Y là hai tập thuộc tính của R. Chúng ta nói “X xác định hàm Y” hoặc “Y phụ thuộc hàm vào X”, ký hiệu là X → Y và được gọi là phụ thuộc hàm nếu với mỗi giá trị của X trong R chỉ tương ứng với một giá trị của Y. Khóa của một quan hệ xác định hàm các thuộc tính không Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM khóa của quan hệ này. Nhập môn Điện Toán - Chương 5 Slide 70 Các loại phụ thuộc hàm Phụ thuộc hàm riêng phần partial functional dependency X → A được gọi là phụ thuộc hàm riêng phần nếu tồn tại Y ⊂ X để cho Y → A. Phụ thuộc hàm đầy đủ full functional dependency Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM X → A được gọi là phụ thuộc hàm đầy đủ nếu không tồn tại Y ⊂ X để cho Y → A. Phụ thuộc bắc cầu transitive dependency X → A được gọi là phụ thuộc bắc cầu nếu tồn tại Y để cho X → Y, Y → A, Y −/→ X và A ∉ XY. Nhập môn Điện Toán - Chương 5 Slide 71 Ví dụ về phụ thuộc hàm R Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm S1 Tiến L1 MT01 M1 9 S1 Tiến L1 MT01 M2 7 S1 Tiến L1 MT01 M3 8 S2 Trúc L1 MT01 M1 9 S2 Trúc L1 MT01 M2 8 S3 Hiền L2 MT02 M1 5 Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 72 Các phụ thuộc hàm: Mãsv → {Họtên, Mãlớp} Mãlớp → Tênlớp {Mãsv, Mônhọc} → Điểm {Mãsv, Môn học} → Họtên là phụ thuộc hàm riêng phần {Mãsv, Mônhọc} → Điểm là phụ thuộc hàm đầy đủ Mãsv → Tênlớp là phụ thuộc bắc cầu Khóa của R: {Mãsv, Mônhọc} Dạng chuNn 1 Định nghĩa Quan hệ R ở dạng chun 1 (1NF - First Normal Form) nếu mọi thuộc tính của R đều chứa các giá trị nguyên tố (atomic value), giá trị này không là một danh sách các giá trị hoặc các giá trị phức hợp (composite value). Các thuộc tính của quan hệ R Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Không là thuộc tính đa trị (multivalued attribute). Không là thuộc tính phức hợp (composite attribute). Nhập môn Điện Toán - Chương 5 Slide 73 R Mãsv Họtên Mãlớp Tênlớp Điểmthi S1 Tiến L1 MT01 M1 9 S1 Tiến L1 MT01 M2 7 S1 Tiến L1 MT01 M3 8 S2 Trúc L1 MT01 M1 9 S2 Trúc L1 MT01 M2 8 Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 74 S3 Hiền L2 MT02 M1 5 Quan hệ R không ở dạng chuNn 1 vì thuộc tính Điểmthi là thuộc tính phức hợp. R Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm S1 Tiến L1 MT01 M1 9 S1 Tiến L1 MT01 M2 7 S1 Tiến L1 MT01 M3 8 S2 Trúc L1 MT01 M1 9 Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 75 S2 Trúc L1 MT01 M2 8 S3 Hiền L2 MT02 M1 5 Quan hệ R ở 1NF vì các thuộc tính của R không là thuộc tính đa trị, không là thuộc tính phức hợp. Các bất thường của quan hệ ở 1NF Thêm vào Không thể thêm thông tin của sinh viên mới có mã là S4, tên là Thành, thuộc lớp có mã là L1 nếu sinh viên này chưa đăng ký học môn học nào cả. Cập nhật Sửa tên của sinh viên có tên là Tiến với tên mới là Thành sẽ phải sửa tất cả các hàng của sinh viên này. Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Xóa bỏ Xóa thông tin sinh viên S3 đăng ký môn học M1 sẽ làm mất thông tin của sinh viên này. Nguyên nhân Tồn tại thuộc tính không khóa phụ thuộc hàm riêng phần vào khóa. Nhập môn Điện Toán - Chương 5 Slide 76 Dạng chuNn 2 • Quan hệ R ở dạng chun 2 (2NF - Second Normal Form) nếu R ở dạng chuNn 1 và mọi thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào mọi khóa của R. R Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm S1 Tiến L1 MT01 M1 9 Khóa của R {Mãsv, Mônhọc} Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 77 S1 Tiến L1 MT01 M2 7 S1 Tiến L1 MT01 M3 8 S2 Trúc L1 MT01 M1 9 S2 Trúc L1 MT01 M2 8 S3 Hiền L2 MT02 M1 5 Các phụ thuộc hàm: Mãsv → {Họtên, Mãlớp} Mãlớp → Tênlớp {Mãsv, Mônhọc} → Điểm Lược đồ quan hệ R không ở 2NF vì thuộc tính không khóa Họtên phụ thuộc hàm riêng phần vào khóa {Mãsv, Mônhọc}. R1 Mãsv Họtên Mãlớp Tênlớp S1 Tiến L1 MT01 S2 Trúc L1 MT01 S3 Hiền L2 MT02 Mãsv Mônhọc Điểm S1 M1 9 S1 M2 7 S1 M3 8 S2 M1 9 S2 M2 8 R2 Khóa của R1: Mãsv Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 78 S3 M1 5 Lược đồ quan hệ R1 và R2 đều ở 2NF vì các thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa. Khóa của R2: {Mãsv, Mônhọc} Các bất thường của quan hệ ở 2NF Thêm vào Không thể thêm thông tin của lớp L3 có tên là MT03 nếu chưa có sinh viên nào học lớp này. Cập nhật Sửa tên của lớp có mã L1 với tên mới là MT_1 sẽ phải sửa tất cả các hàng của lớp này. Xóa bỏ Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Xóa thông tin của sinh viên có mã S3 sẽ làm mất thông tin của lớp L2. Nguyên nhân Tồn tại thuộc tính không khóa phụ thuộc bắc cầu vào khóa. Nhập môn Điện Toán - Chương 5 Slide 79 Dạng chuNn 3 • Quan hệ R ở dạng chun 3 (3NF- Third Normal Form) nếu R ở dạng chuNn 1 và mọi thuộc tính không khóa đều không phụ thuộc bắc cầu vào một khóa của R. R1 Mãsv Họtên Mãlớp Tênlớp S1 Tiến L1 MT01 Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 80 S2 Trúc L1 MT01 S3 Hiền L2 MT02 Lược đồ quan hệ R1 không ở 3NF vì thuộc tính không khóa Tênlớp phụ thuộc bắc cầu vào khóa Mãsv. Mãsv → Mãlớp Mãlớp → Tênlớp Mãlớp −/→ Mãsv Tênlớp ∉ {Mãsv, Mãlớp} R11 Mãlớp Tênlớp L1 MT01 L2 MT02 Mãsv Họtên Mãlớp S1 Tiến L1 S2 Trúc L1 S3 Hiền L2 R12 Khóa của R11: Mãlớp Khóa của R12: Mãsv Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Nhập môn Điện Toán - Chương 5 Slide 81 Lược đồ quan hệ R11 và R12 đều ở 3NF vì các thuộc tính không khóa đều không phụ thuộc bắc cầu vào khóa. Sự phát triển các hệ DB Hệ thống tập tin (flat file): 1960 - 1980 Hệ CSDL phân cấp (hierarchical): 1970 - 1990 Hệ CSDL mạng (network): 1970 - 1990 Hệ CSDL quan hệ (relational): 1980 - nay Khoa KH & KT Máy Tính, ĐẠI HỌC BÁCH KHOA TP.HCM Hệ CSDL hướng đối tượng (object-oriented): 1990 - nay Hệ CSDL đối tượng - quan hệ (object-relational): 1990 - nay Kho dữ liệu (data warehouse): 1980 - nay Web-enabled: 1990 - nay Nhập môn Điện Toán - Chương 5 Slide 82
File đính kèm:
- bai_giang_nhap_mon_dien_toan_chuong_5_co_so_du_lieu.pdf