CHƯƠNG 1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 1. Định nghĩa cơ sở dữ liệu CSDL (Cơ sở dữ liệu) là một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bị lưu trữ thông tin thứ cấp nhằm thỏa yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích khác nhau. Điều đầu tiên cần lưu ý trong định nghĩa là CSDL phải là một tập hợp các thông tin mang tính hệ thống chứ không phải là các thông tin rời rạc, không có mối quan hệ với nhau.
Các thông tin này phải có cấu trúc và tập hợp các thông tin này phải có khả năng đáp ứng các nhu cầu khai thác của nhiều người sử dụng một cách đồng thời. Đó cũng chính là các đặc trưng của CSDL Để dễ dàng cho việc giải thích các khái niệm, trước hết ta xét một ví dụ hệ thống bán vé máy bay của một hãng hàng không. Để lựa chọn chuyến bay, khách hàng có thể tham khảo lịch bay của hãng. Mỗi chuyến bay là một mối quan hệ giữa các thuộc tính: MÃ CHUYẾN BAY, LOẠI MÁY BAY, SÂN BAY ĐI, SÂN BAY ĐẾN, NGÀY BAY, GIỜ BAY, THỜI GIAN BAY.
Thông tin về lịch bay được lập theo bảng sau: Mã Loại Sân bay Sân bay Ngày Thời chuyến Giờ bay máy bay đi đến bay gian bay bay VN272 ATR72 SAI NHA 28-04-97 7h05ph 55 pt VN372 ATR72 NHA SAI 28-04-97 8h35ph 55 pt VNA32 A320A SAI HAN 28-04-97 7g10ph 1g35ph VN472 ATR72 SAI DAK 28-04-97 6g55ph 55 pt VNB77 BOE77 SAI HAN 28-04-97 7h25ph 1g25ph 4 Mã Loại Sân bay Sân bay Ngày Thời chuyến Giờ bay máy bay đi đến bay gian bay bay VNB67 BOE67 HAN SAI 28-04-97 6g45ph 1g35ph VNT06 TU106 HAN DAN 28-04-97 7g25ph 1g05ph Bảng 1.1 Thông tin lịch bay Bảng trên được gọi là một bảng dữ liệu. Tùy từng đối tượng mà khai thác các dữ liệu trong bảng trên theo mục tiêu của mình, nghĩa là, các dữ liệu trong bảng trên độc lập với các chương trình khai thác chúng. Dữ liệu được tổ chức thành một bảng gồm các cột và các hàng. Các cột được gọi là lược đồ (scheme) hay bộ khung của bảng dữ liệu, mỗi cột được gọi là một thuộc tính (attribute) hay một trường (field), mỗi hàng được gọi là một thể hiện (instance), một bộ (tuple) hay một bản ghi (record) của bảng dữ liệu.
Các thao tác chính trên một bảng dữ liệu là: Thêm một bản ghi, xóa một bản ghi hay sửa một bản ghi. Các thao tác trên một bảng dữ liệu được gọi tắt là: Cập nhật dữ liệu. Tích Đề-các Cho hai tập hợp A và B , tích Đề-các của hai tập A và B là một tập hợp, ký hiệu AxB, được định nghĩa: AxB = {(x,y)| x A và y B} Ví dụ: A = {1, 2, 3}; B = {a, b} A x B = {(1,a), (1,b), (2,a), (2,b), (3,a), (3,b)} Cho n tập hợp A1, A2, ., An , tích Đề-các của n tập hợp A1, A2, ., An là một tập hợp, ký hiệu và định nghĩa: A1 x A2 x .,xn) | xi Ai, i = 1.n} Ví dụ: A = {1, 2, 3}; B = {a, b}, C = {, } 5 A x B x C = {(1,a,), (1,b,), (2,a,), (2,b,), (3,a,), (3,b,), (1,a,), (1,b,), (2,a,), (2,b,), (3,a,), (3,b,)} Đặc biệt: Nếu A1=A2=. x An = An (ký hiệu) An = {(x1,x2,., (3,3,3,3)} Ta chấp nhận định lý: Nếu Ai có mi phần tử thì A1x A2 x .* mn phần tử.
Nếu A có m phần tử thì An có mn phần tử. Lược đồ quan hệ và quan hệ 1. Lược đồ quan hệ Một lược đồ quan hệ là một tập hữu hạn các thuộc tính (tập hợp) A1, A2, …, An ≠ ∅, với mỗi Ai có miền giá trị là Di = Dom(Ai) với 1≤ i ≤ n. Về lý thuyết thì có thể số phần tử của Di là vô hạn, tuy nhiên ở đây ta chỉ xét các trường hợp hữu hạn.
Ký hiệu : R = {A1, A2, …, An} hay R = A1, A2. An hay R(A1, A2, …, An ) Một bộ (tuple) hay một phần tử của lược đồ quan hệ R là một phần tử của tích Đề- các của n tập hợp D1, D2, …, Dn. Quan hệ Cho một lược đồ quan hệ R = {A1, A2, …, An}, với Dom(Ai) = Di với 1≤ i ≤ n. Một quan hệ r định nghĩa trên lược đồ quan hệ R là một tập con của tích Đề-các của n tập hợp D1, D2, …, Dn.
Như vậy, một quan hệ r trên lược đồ quan hệ R là tập hợp một số hữu hạn các phần tử của R. Để mô tả một quan hệ r gồm p bộ trên lược đồ R có n thuộc tính, người ta dùng một bảng gồm n cột và p+1 hàng, mỗi cột tương ứng một thuộc tính, hàng thứ nhất là tên các thuộc tính, các hàng còn lại, mỗi hàng là một phần tử của quan hệ. 6 A1 A2 … An a11 a21 … an1 a12 a21 … an2 … … … … a1p a2p … anp Bảng 1.2 Mô tả một quan hệ r gồm p bộ trên lược đồ R có n thuộc tính Ví dụ: Xét lược đồ quan hệ LICHBAY(MÃ CHUYẾN BAY, LOẠI MÁY BAY, SÂN BAY ĐI, SÂN BAY ĐẾN, NGÀY BAY, GIỜ BAY, THỜI GIAN BAY) Ta có quan hệ Lichbay04-97(LICHBAY) như sau: MÃ LOẠI SÂN THỜI SÂN NGÀY CHUYẾN MÁY BAY GIỜ BAY GIAN BAY ĐI BAY BAY BAY ĐẾN BAY VN272 ATR72 SAI NHA 28-04-97 7h05ph 55 pt VN372 ATR72 NHA SAI 28-04-97 8h35ph 55 pt VNA32 A320A SAI HAN 28-04-97 7g10ph 1g35ph VN472 ATR72 SAI DAK 28-04-97 6g55ph 55 pt VNB77 BOE77 SAI HAN 28-04-97 7h25ph 1g25ph VNB67 BOE67 HAN SAI 28-04-97 6g45ph 1g35ph VNT06 TU106 HAN DAN 28-04-97 7g25ph 1g05ph Bảng 1.3 Quan hệ Lichbay04-97(LICHBAY) 7 Ta có : MÃ CHUYẾN BAY, LOẠI MÁY BAY, SÂN BAY ĐI, SÂN BAY ĐẾN, NGÀY BAY, GIỜ BAY, THỜI GIAN BAY là các thuộc tính của lược đồ quan hệ LICHBAY Dom(MÃ CHUYẾN BAY) = Tập các mã chuyến bay do công ty hàng không quy định. Dom(LOẠI MÁY BAY) = Tập các mã máy bay mà công ty hàng không đang có.
= {ATR72, A320A, A320, BOE77, BOE47, TU106, …} Dom(SÂN BAY ĐI) = Dom(SÂN BAY ĐẾN) = Tập các mã sân bay mà công ty hàng không có chuyến bay đi, đến. Dom(NGÀY BAY) = Các ngày có chuyến bay. Dom(GIỜ BAY) = Giờ trong ngày. Dom(THỜI GIAN BAY) = Thời gian của chuyến bay, là số nguyên có tối đa 3 chữ số.
t = (VN272, ATR72, SAI, NHA, 28-04-97, 7g05ph, 55) là một bộ của Lichbay04-97. Ghi chú : Từ định nghĩa của lược đồ quan hệ và quan hệ ta chú ý rằng: 1) Thứ tự của các thuộc tính của lược đồ quan hệ không được xét đến. Nghĩa là: R ={A, B,C} ≡ R’ = ={A, B,C} 2) Trên mỗi lược đồ quan hệ, có thể có nhiều quan hệ. Thứ tự của các bộ trong quan hệ không được xét đến.
3) Trong một quan hệ, không có hai bộ giống nhau. Để đơn giản trong việc biểu diễn, ta dùng các mẫu tự in hoa A, B, C, … để chỉ tên các thuộc tính trong lược đồ quan hệ, ai, bj, ck … để chỉ các phần tử trong Dom(A), Dom(B), Dom(C), … X, Y là một tập các thuộc tính của R (X, Y ⸦R). Các phép toán trên quan hệ Cho một lược đồ quan hệ R = A1, A2, …, An, q là một biểu thức logic định nghĩa trên các thuộc tính của R gọi là một điều kiện trên R , khi đó, r là quan hệ định nghĩa trên R, thì ∀ t ∈ r ta có q(t) đúng hoặc sai. 8 ❖ Phép chọn (Selection) Cho r(R) và một điều kiện q trên lược đồ quan hệ R.
Một phép chọn trên r thỏa điều kiện q là một tập hợp, được định nghĩa và ký hiệu: 𝜎q (r) = {t ∈ r | q(t)} = { t ∈ r | q(t) đúng} Ví dụ: Cho q(t): t ∈ r và t.C = c1 và quan hệ: r(A B C D) thì 𝜎q (r) = ( A B C D) a1 b1 c1 d1 a1 b2 c2 d1 a1 b2 c2 d1 a1 b2 c2 d2 a1 b2 c2 d2 𝜎p (r) = ( A B C D) a2 b1 c2 d1 a1 b1 c1 d1 a2 b2 c1 d2 a2 b2 c1 d2 ❖ Phép chiếu (Projection) Cho r(R) là một quan hệ trên lược đồ quan hệ R, X ⸦R. Một phép chiếu của r lên X là một tập hợp, được định nghĩa và ký hiệu: 𝜋x (r) = {t.X | t ∈ r } Ví dụ: Cho X= AB và quan hệ: r(A B C D) thì 𝜋x (r) = ( A B) a1 b1 c1 d1 a1 b1 a1 b2 c2 d1 a1 b2 a1 b2 c2 d2 a1 b2 a1 b2 c2 d1 ❖ Phép kết nối tự nhiên ( Natural Join) Cho r1(R1) và r2(R2). Phép nối tự nhiên trên hai quan hệ r1 và r2 là một quan hệ r trên R được kí hiệu và định nghĩa: r = r1 x r2 = {t | ∃t1 ∈ r1, ∃t2 ∈ r2 và t.R2 = t2} Nếu S = ∅ thì r1 x r2 là tích đề-các thông thường. 9 Ví dụ 1: r1 ( A B) r2 (B C) => r1 x r2 (A B C) a1 b1 b1 c1 a1 b1 c1 a1 b2 b1 c2 a1 b1 c2 a1 b1 b1 c1 a1 b2 c1 a1 b3 b1 c2 a1 b2 c2 a1 b3 a2 b1 c1 a2 b1 c2 Ví dụ 2: r1 (A B C) r2 (B C D) => r1 x r2 (A B C D) a1 b1 c1 b1 c1 d1 a1 b1 c1 d1 a1 b2 c1 b1 c2 d2 a1 b2 c1 d1 a2 b1 c2 b2 c1 d1 a2 b1 c2 d2 a2 b3 c1 b2 c2 d2 a3 b3 c1 d1 a3 b3 c2 b3 c1 d1 Ví dụ 3: r1 (A B) r2 (C D) => r1 x r2 (A B C D) a1 b1 c1 d1 a1 b1 c1 d1 a1 b2 c1 d2 a1 b1 c1 d2 c2 d1 a1 b1 c2 d1 a1 b2 c1 d1 a1 b2 c1 d2 ❖ Phép kết nối 𝜽 (Theta Join) Trong phép kết nối tự nhiên, ta nhận thấy rằng, ta chỉ kết nối được những thể hiện (bộ) có giá trị bằng nhau trên những thuộc tính chung.
Tuy nhiên, trong đời sống thực, có 10 những trường hợp kết nối không phải trên cùng những thuộc tính hay tất cả các thuộc tính chung. Cho hai lược đồ quan hệ R1, R2, r1(R1) và r2(R2) là hai quan hệ trên R1 và R2, X ∈ R1, Y ∈ R2, 𝜃 là một trong các phép so sánh: <, ≤, >, ≥, ≠ giữa các giá trị của Dom(X) và Dom(Y). Phép nối kết 𝜃 giữa r1 và r2 là một quan hệ trên R= R1R2 được kí hiệu và định 𝑋 nghĩa như sau: r = r1 r2 (R) = { t ∈ r(R) | t.