Giáo trình Cơ sở dữ liệu nâng cao giúp người đọc có thể trình bày được các khái niệm cơ bản về cơ sở dữ liệu. Trình bày được khái niệm quy trình thực hiện tối ưu hóa truy vấn. Trình bày được các khái niệm phân quyền, quản trị người dùng. Trình bày được khái niệm về cơ sở dữ liệu phân tán, hệ cơ sở dữ liệu phân tán. Phân biệt được cơ sở dữ liệu phân tán và cơ sở dữ liệu tập trung. Nhận biết các tính chất và đặc điểm của hệ cơ sở dữ liệu phân tán
MỞ ĐÂU
Các khái niệm cơ sở
Cơ sở dữ liệu là tập hợp có cấu trúc của các dữ liệu tác nghiệp, được lưu trữ và sử dụng bởi các hệ ứng dụng cụ thể.
Ví dụ: ứng dụng quản lý kho hàng, hệ thống đặt chỗ máy bay, quản lý nguồn nhân lực
1.1.2 Hệ cơ sở dữ liệu
Hệ cơ sở dữ liệu (database system) là một hệ thống bao gồm 4 thành phần
- Cơ sở dữ liệu hợp nhất:
Cơ sở dữ liệu của hệ có hai tính chất tối thiểu hóa dư thừa và được chia sẻ
Mọi cá nhân có nhu cầu truy cập vào cơ sở dữ liệu, bao gồm người dùng cuối, lập trình viên ứng dụng và quản trị viên hệ thống, đều cần hiểu rõ vai trò của mình trong việc quản lý và sử dụng thông tin hiệu quả.
- Phần mềm quản trị cơ sở dữ liệu
Bao gồm các thiết bị nhớ thứ cấp được sử dụng để lưu trữ cơ sở dữ liệu
Phân loại cơ sở dữ liệu
- Cơ sở dữ liệu hướng đối tượng:
Tích hợp khái niệm đối tượng vào hệ quản trị cơ sở dữ liệu như: lớp, kế thừa…
- Cơ sở dữ liệu suy diễn:
Tăng khả năng suy diễn cho hệ quản trị cơ sở dữ liệu
- Cơ sở dữ liệu multimedia:
Tích hợp vào hệ quản trị cơ sở dữ liệu khả năng quản lý văn bản, ảnh, âm thanh, vidéo…
- Cơ sở dữ liệu phân tán:
Cho phép truy vấn và cập nhật dữ liệu từ các sites phân tán (địa lý)
Mô hình hóa dữ liệu
Khó tích hợp kiểu dữ liệu mới
Mô hình đơn giản: phân cấp của các liên kết chặt có thể bị bẻ gãy
Không phân biệt giữa các khái niệm khác nhau trong khi mô hình hóa: chỉ có khái niệm quan hệ
Không mô hình hóa xử lý thông tin
Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu (DBMS) là phần mềm cho phép tạo lập và quản lý cơ sở dữ liệu, điều khiển mọi truy cập vào dữ liệu DBMS được chia thành bốn loại chính.
- Hệ quản trị cơ sở dữ liệu phân cấp:
Mô hình phân cấp, ra đời vào những năm 1960, tổ chức dữ liệu theo cấu trúc cây Trong mô hình này, các nút (node) đại diện cho tập hợp các thực thể, trong khi các cành thể hiện mối quan hệ cứng nhắc giữa hai nút theo một quy tắc nhất định.
Là mô hình dữ liệu trong đó các bản ghi được sắp xếp theo cấ trúc top-down (tree)
Một con chỉ có một cha , chỉ có một đường truy nhập tới dữ liệu đó trước
Tập dữ liệu được tổ chức theo cấ u trúc của mô hình dữ liệu phân cấp gọi là cơ sở dữ liệu phân cấp
Hình 1.1 Mô hình phân cấp quản lý nhân sự của một công ty
Mô hình mạng, ra đời vào cuối những năm 1960, tổ chức dữ liệu dưới dạng đồ thị có hướng Trong đó, các đỉnh đại diện cho các thực thể và các cung thể hiện mối quan hệ giữa các thực thể, cho phép một kiểu bản ghi liên kết với nhiều kiểu bản ghi khác.
Một cơ sở dữ liệu mạng cho phép một con có thể có nhiều cha và nhiều đường truy nhập, tổ chức dữ liệu theo cấu trúc mô hình mạng.
Hình 1.2 Mô hình mạng quản lý nhân sự của một công ty
- Hệ quản trị cơ sở dữ liệu quan hệ:
Mô hình dữ liệu quan hệ, được E.F Codd giới thiệu vào đầu những năm 1970, dựa trên lý thuyết tập hợp và đại số quan hệ, cung cấp một cách mô tả dữ liệu rõ ràng và linh hoạt Với tính chất chặt chẽ của toán học, mô hình này trở thành tiêu chuẩn phổ biến nhất hiện nay trong tổ chức dữ liệu Hầu hết các hệ quản trị cơ sở dữ liệu đều áp dụng mô hình này, trong đó dữ liệu được sắp xếp dưới dạng bảng và các phép toán thao tác trên dữ liệu dựa trên lý thuyết tập hợp Cấu trúc dữ liệu theo mô hình này được gọi là cơ sở dữ liệu quan hệ.
Hình 1.3 Mô hình quan hệ mô tả dữ liệu bảng
Record (bảng ghi) Field (trường)
Tuple (bộ) Attribute (thuộc tính)
- Hệ quản trị cơ sở dữ liệu nâng cao:
Mô hình dữ liệu này tập trung vào việc đóng gói các thuộc tính dữ liệu và các phương thức thao tác trên chúng trong các cấu trúc được gọi là đối tượng.
Tập dữ liệu được tổ chức theo cấu trúc của mô hình dữ liệu hướng đối tượng gọi là cơ sở dữ liệu hướng đối tượng
Hình 1.4 Mô hình đối tượng quản lý nhân sự của một công ty
Họ tên Phòng ban Ngày vào làm Tính thâm niên
Số giờ LV Tính lương
NV làm theo hợp đồng
Lượng lắm cổ phần Tính lương
Chương 1: Mở đầu CÂU HỎI LÝ THUYẾT
Câu hỏi 1: Cơ sở dữ liệu là gì? Một hệ cơ sở dữ liệu gồm những thành phần gì?
Câu hỏi 2: Mô hình hóa dữ liệu là gì? Cho ví dụ một mô hình của cơ sở dữ liệu?
Câu hỏi 3: Trình bày tiêu chuẩn hóa hệ quản trị cơ sở dữ liệu bằng tiếp cận dựa vào các thành phần
TỐI ƯU HÓA TRUY VẤN
Giới thiệu
Truy vấn là một biểu thức được diễn đạt bằng ngôn ngữ phù hợp, nhằm xác định một phần dữ liệu trong cơ sở dữ liệu.
Một truy vấn có thể xác định ngữ nghĩa của một ứng dụng hoặc công việc mà ứng dụng thực hiện để truy xuất dữ liệu từ cơ sở dữ liệu.
2.1.2 Tối ưu hóa truy vấn
Tối ưu hóa truy vấn, hay còn gọi là tối ưu hóa vấn tin, là quá trình lựa chọn kế hoạch thực thi câu truy vấn một cách hiệu quả nhất.
Tối ưu hóa truy vấn giúp tốn ít tài nguyên nhất và hồi đáp nhanh nhất
2.2 Quá trình thực hiện một câu truy vấn
Quá trình thực hiện một câu truy vấn/ vấn tin gồm 5 bước:
- Bước 1: Kiểm tra ngữ pháp (syntax checking)
Trong bước này, hệ quản trị cơ sở dữ liệu (DBMS) sẽ kiểm tra ngữ pháp của truy vấn SQL Nếu truy vấn sai ngữ pháp, DBMS sẽ thông báo lỗi và không thực hiện truy vấn Ngược lại, nếu truy vấn đúng ngữ pháp, DBMS sẽ tiến hành bước tiếp theo.
- Bước 2: Kiểm tra sự hợp lệ (validation)
Trong bước này, DBMS sẽ thực hiện các công việc:
+ Kiểm tra sự tồn tại của các đối tượng dữ liệu (các cột, các biến, các bảng, …) của truy vấn trong cơ sở dữ liệu
Chương 2: Tối ưu hóa truy vấn
- Bước 3: Đưa về dạng biểu diễn trong đại số quan hệ
Truy vấn ban đầu được biến đổi thành một biểu thức đại số quan hệ hay còn gọi là truy vấn đại số quan hệ (relational algebra query)
- Bước 4: Tối ưu hóa biểu thức đại số quan hệ (relational algebra optimization)
Trong bước này, hệ quản trị cơ sở dữ liệu (DBMS) sử dụng các phép biến đổi tương đương của đại số quan hệ để chuyển đổi biểu thức đại số có được từ bước 3 thành một biểu thức tương đương nhưng hiệu quả hơn Quá trình này giúp loại bỏ các phép toán không cần thiết và giảm thiểu vùng nhớ trung gian Cuối cùng, DBMS tạo ra một truy vấn đại số quan hệ đã được tối ưu hoá.
- Bước 5: Sinh mã (code genesite)
Viết ra ngôn ngữ chủ của hệ quản trị cơ sở dữ liệu
Ví dụ: Thuật toán cài đặt 3 hàm gồm:
Hàm Projection (x, q, r) -> trả phép chiếu
Hàm Selection (e, q, k) -> trả phép chọn
Hàm Join (s, r, t) -> trả phép nối
2.3 Cây đại số quan hệ
2.3.1 Đại số quan hệ là gì? Đại số quan hệ (relational algebra) là một bộ các toán tử và quy tắc được sử dụng để thao tác trên các quan hệ và kết quả trả về là một quan hệ mới Sau khi Edgar
F Codd đưa ra mô hình dữ liệu quan hệ vào năm 1970, đại số quan hệ được xem là nền tảng cho các ngôn ngữ truy vấn dữ liệu nói chung và SQL nói riêng SQL cung cấp cú pháp đơn giản nhưng mạnh mẽ, giúp người dùng có được các kết quả mong muốn mà không cần nêu rõ cách thức để đạt được điều đó như thế nào Tuy nhiên, với những vấn đề và yêu cầu mang tính phức tạp, việc viết một câu truy vấn chính xác và hiệu quả đòi hỏi phải có hiểu biết về cấu trúc dữ liệu và cách thức hoạt động của ngôn ngữ truy vấn Vì vậy nắm vững các kiến thức về đại số quan hệ sẽ là nền tảng để việc tìm hiểu về SQL trở nên dễ dàng hơn
Các phép toán trong đại số quan hệ có thể được chia thành ba loại: Phép toán tập hợp, phép chọn và các phép toán mở rộng
Bao gồm: Phép hội (set union), phép giao (set intersection), phép hiệu (set defference) và phép tích (castesian product)
Các bộ trùng nhau sẽ bị loại đi
Phép hội được biểu diễn qua biểu thức sau:
R ∪ S = { t │t € R ∨ t € S } Với R và S là 2 quan hệ khả hợp
Một quan hệ mới chỉ bao gồm các bộ đồng thời thuộc hai qua hệ ban đầu Phép giao được biểu diễn qua biểu thức sau:
R ∩ S = { t │t € R ∧ t € S } Với R và S là 2 quan hệ khả giao
Phép hiệu trong đại số quan hệ có nét tương đồng với phép hiệu đại số thông thường
Phép hiệu của R và S tạo ra một quan hệ mới, bao gồm các phần tử thuộc R nhưng không thuộc S, dẫn đến kết quả chỉ có một bộ duy nhất.
R - S = { t │t € R ∧ t ∉ S } Với R và S là 2 quan hệ khả hiệu
Một quan hệ mới có số bộ bằng tích số giữa số bộ, điều này tạo nên sự khác biệt giữa phép tích và các phép hội, giao, cũng như hiệu.
Phép tích tạo ra tổ hợp theo "hai chiều", dẫn đến việc xuất hiện những bộ trong quan hệ kết quả có thể không mang nhiều ý nghĩa Vì vậy, phép tích thường đi kèm với các điều kiện nhằm loại trừ những kết quả không mong muốn.
2.3.1.2 Phép chọn/cắt ngang (select)
Phép chọn là công cụ dùng để lọc ra một tập hợp các bộ thỏa mãn điều kiện từ một quan hệ Nó hoạt động như một bộ lọc, chỉ giữ lại những bộ phù hợp với các tiêu chí đã được xác định.
Phép chọn được ký hiệu là: σ< điều kiện chọn>( R) Trong đó:
+ σ: là ký hiêu phép chọn
Điều kiện chọn là một biểu thức lôgic dựa trên các thuộc tính của R, có dạng: .
Chương 2: Tối ưu hóa truy vấn
: là một trong các phép toán so sánh { 3000>( NHÂNVIÊN).
Phép chọn là một phép toán một ngôi, áp dụng cho một quan hệ cụ thể Nó được thực hiện độc lập cho từng bộ, do đó, các điều kiện chọn không thể liên quan đến nhiều bộ khác nhau Quan hệ kết quả từ phép chọn có cấp tương tự như cấp của R, và số lượng bộ trong quan hệ kết quả luôn nhỏ hơn hoặc bằng số lượng bộ trong R.
Phép chọn là một phép toán có tính chất giao hoán, nghĩa là: σ < Điều kiện 1> (σ< Điều kiện 2>( R)) = σ< Điều kiện 2> (σ< Điều kiện 1>( R))
Hơn nữa ta có thể kết hợp một loạt các phép chọn thành một phép chọn đơn giản bằng cách sử dụng phép toán AND
Ví dụ: σ< Điều kiện 1> (σ< Điều kiện 2>( R)) = σ< Điều kiện 2>AND< Điều kiện 1>( R) 2.3.1.3 Phép chiếu/cắt dọc (project)
Phép chiếu là phép toán chọn một số cột của bảng Phép chiếu dùng để chiếu lên các thuộc tính đó
Phép chiếu được ký hiệu là: π( R) Trong đó:
+ π: là ký hiệu dùng để biểu diễn phép chiếu
+ : là một danh sách con các thuộc tính của quan hệ R
+ R: là một biểu thức đại số quan hệ
Cây đại số quan hệ
2.3.1 Đại số quan hệ là gì? Đại số quan hệ (relational algebra) là một bộ các toán tử và quy tắc được sử dụng để thao tác trên các quan hệ và kết quả trả về là một quan hệ mới Sau khi Edgar
F Codd đưa ra mô hình dữ liệu quan hệ vào năm 1970, đại số quan hệ được xem là nền tảng cho các ngôn ngữ truy vấn dữ liệu nói chung và SQL nói riêng SQL cung cấp cú pháp đơn giản nhưng mạnh mẽ, giúp người dùng có được các kết quả mong muốn mà không cần nêu rõ cách thức để đạt được điều đó như thế nào Tuy nhiên, với những vấn đề và yêu cầu mang tính phức tạp, việc viết một câu truy vấn chính xác và hiệu quả đòi hỏi phải có hiểu biết về cấu trúc dữ liệu và cách thức hoạt động của ngôn ngữ truy vấn Vì vậy nắm vững các kiến thức về đại số quan hệ sẽ là nền tảng để việc tìm hiểu về SQL trở nên dễ dàng hơn
Các phép toán trong đại số quan hệ có thể được chia thành ba loại: Phép toán tập hợp, phép chọn và các phép toán mở rộng
Bao gồm: Phép hội (set union), phép giao (set intersection), phép hiệu (set defference) và phép tích (castesian product)
Các bộ trùng nhau sẽ bị loại đi
Phép hội được biểu diễn qua biểu thức sau:
R ∪ S = { t │t € R ∨ t € S } Với R và S là 2 quan hệ khả hợp
Một quan hệ mới chỉ bao gồm các bộ đồng thời thuộc hai qua hệ ban đầu Phép giao được biểu diễn qua biểu thức sau:
R ∩ S = { t │t € R ∧ t € S } Với R và S là 2 quan hệ khả giao
Phép hiệu trong đại số quan hệ có nét tương đồng với phép hiệu đại số thông thường
Phép hiệu của R và S tạo ra một quan hệ mới, bao gồm các bộ thuộc R nhưng không thuộc S, dẫn đến việc quan hệ kết quả chỉ chứa một bộ duy nhất.
R - S = { t │t € R ∧ t ∉ S } Với R và S là 2 quan hệ khả hiệu
Một quan hệ mới có số bộ bằng tích số giữa số bộ, điều này tạo ra sự khác biệt rõ rệt giữa phép tích và các phép toán khác như phép hội, phép giao và phép hiệu.
Phép tích tạo ra tổ hợp theo cả hai chiều, dẫn đến việc xuất hiện những bộ kết quả không có ý nghĩa rõ ràng Vì vậy, phép tích thường được áp dụng kèm theo một điều kiện nhằm loại trừ các kết quả không mong muốn.
2.3.1.2 Phép chọn/cắt ngang (select)
Phép chọn là công cụ dùng để lọc ra các bộ thỏa mãn điều kiện từ một quan hệ, hoạt động như một bộ lọc giữ lại những bộ phù hợp với tiêu chí đã đặt ra.
Phép chọn được ký hiệu là: σ< điều kiện chọn>( R) Trong đó:
+ σ: là ký hiêu phép chọn
Điều kiện chọn là một biểu thức lôgic dựa trên các thuộc tính của R, có cấu trúc gồm tên thuộc tính, phép so sánh và giá trị hằng.
Chương 2: Tối ưu hóa truy vấn
: là một trong các phép toán so sánh { 3000>( NHÂNVIÊN).
Phép chọn là một phép toán một ngôi, áp dụng cho một quan hệ cụ thể Nó được thực hiện độc lập cho từng bộ, do đó, các điều kiện chọn không thể liên quan đến nhiều bộ cùng lúc Quan hệ kết quả của phép chọn giữ cấp tương tự như cấp của R, và số lượng bộ trong quan hệ kết quả luôn nhỏ hơn hoặc bằng số bộ trong R.
Phép chọn là một phép toán có tính chất giao hoán, nghĩa là: σ < Điều kiện 1> (σ< Điều kiện 2>( R)) = σ< Điều kiện 2> (σ< Điều kiện 1>( R))
Hơn nữa ta có thể kết hợp một loạt các phép chọn thành một phép chọn đơn giản bằng cách sử dụng phép toán AND
Ví dụ: σ< Điều kiện 1> (σ< Điều kiện 2>( R)) = σ< Điều kiện 2>AND< Điều kiện 1>( R) 2.3.1.3 Phép chiếu/cắt dọc (project)
Phép chiếu là phép toán chọn một số cột của bảng Phép chiếu dùng để chiếu lên các thuộc tính đó
Phép chiếu được ký hiệu là: π( R) Trong đó:
+ π: là ký hiệu dùng để biểu diễn phép chiếu
+ : là một danh sách con các thuộc tính của quan hệ R
+ R: là một biểu thức đại số quan hệ
Kết quả của phép chiếu là một quan hệ với các thuộc tính nằm trong danh sách và theo thứ tự tương ứng Phép chiếu loại bỏ tất cả các bộ trùng lặp, tạo ra một tập hợp các bộ và đảm bảo tính chính xác của quan hệ.
Phép chiếu không có tính giao hoán, nghĩa là: π< danh sách1>(π< danh sách2> ( R)) = π< danh sách 1> ( R)
Kết quả chiếu từ quan hệ NHÂNVIÊN bao gồm các thuộc tính như MãsốNV, Họđệm, Tên, địa chỉ và Lương, được biểu diễn bằng cú pháp: π < MãsốNV, Họđệm, Tên, địa chỉ, Lương>(NHÂNVIÊN).
Phép nối là một kỹ thuật quan trọng trong cơ sở dữ liệu quan hệ, cho phép kết hợp các bộ dữ liệu có liên hệ từ hai quan hệ khác nhau thành một bộ duy nhất Phép toán này giúp xử lý hiệu quả các mối liên kết giữa các quan hệ, đặc biệt khi làm việc với nhiều bảng dữ liệu Dạng tổng quát của phép nối được áp dụng trên hai quan hệ R (A1, A2,…,An) và S (B1,B2,…, Bm).
Phép nối được ký hiệu là: ⋈ (R)< Điều kiện nối> (S) Trong đó:
Điều kiện nối giữa hai quan hệ R và S được xác định bởi các thuộc tính tương ứng Một điều kiện nối tổng quát có thể được biểu diễn dưới dạng: AND AND … AND .
Điều kiện có dạng Ai θ Bj, trong đó Ai là thuộc tính của R, Bj là thuộc tính của S Hai thuộc tính Ai và Bj có cùng miền, và θ là một trong các phép toán so sánh như {, ≠}.
Thuật toán tối ưu
Từ Select, from, where ban đầu
Xây dựng cây đại số quan hệ đầu tiên
SQL dựa vào từ khóa Select, From, Where
Sao đó đẩy các phép chọn xuống
Sao đó đẩy các phép chiếu xuống đến khi không đẩy được nữa thì được cây này là cây tối ưu
Kết luận: Từ đại số quan hệ viết được cây, từ cây viết lại đại số quan hệ được vì
Chương 2: Tối ưu hóa truy vấn
Câu hỏi 1: Trình bày 5 bước liên tiếp của tầng phân rã vấn tin
Câu hỏi 2: Trình bày các chiến lược tìm kiếm
Bài tập 1: Cho các quan hệ sau:
EMP (ENO, ENAME, TITLE) PROJ (PNO, PNAME, BUDGET) PAY (TITLE, SAL)
ASG (ENO, PNO, DUR, RESP) Xét câu vấn tin như sau:
SELECT ENAME, RESP FROM EMP, ASG, PROJ WHERE EMP.ENO = ASG.ENO AND PNAME = “CAD/CAM”
AND DUR>6 AND TITLE = “PROGRAMMER”
Yêu cầu: Hãy vẽ đồ thị vấn tin và chỉ ra chổ sai của vấn tin này
Bài tập 2: Cho các quan hệ sau:
EMP (ENO, ENAME, TITLE) PROJ (PNO, PNAME, BUDGET) PAY (TITLE, SAL)
ASG (ENO, PNO, DUR, RESP) Giả sử EMP và ASG được phân mảnh thành
EMPH1 = ENO