Giáo án dạy công nghệ thông tin
Trang 1Chương 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
1 Chức Năng Của Một Hệ Quản Trị Cơ Sở Dữ Liệu
1.1 Các Khái Niệm Về Cơ Sở Dữ Liệu
Để dễ dàng cho việc giải thiïch các khái niệm về Cơ Sở Dữ Liệu, trước hết ta xem xét hệ thống bán vé may bay bằng máy tính Dữ liệu lưu trữ trong máy tính bao gồm các thông tin về hành khách, chuyến bay, đường bay Mọi thông tin về mối quan hệ này được biểu diễn trong máy tính thông qua việc đặt chổ của khách hàng Vậy làm thế nào để biểu diễn được dữ liệu đó và để đảm bảo cho khách hàng đi đúng chuyến bay
Tập hợp dữ liệu trên được lưu trữ trong máy tính theo một quy định nào đó và được gọi là Cơ Sở Dữ Liệu( Database - CSDL)
1.2 Hệ quản trị Cơ Sở Dữ Liệu
1.2.1 Định nghĩa: Phần Chương trình có thể xử lý, thay đổi dữ liệu gọi là hệ quản trị Cơ Sở Dữ Liệu (Database management System - viết tắt DBMS)
1.2.2 Những khả năng của Hệ quản trị Cơ Sở Dữ Liệu
Có hai đặc tính để phân biệt DBMS với các hệ thống lập trình khác, đó là:
1 Khả năng quản lý những dữ liệu cố định
2 Khả năng truy xuất có hiệu quả một khối lượng dữ liệu lớn
Điểm (1) khẳn định rằng có một CSDL tồn tại thường xuyên ; nội dung của Cơ Sở Dữ Liệu này là những dữ liệu được DBMS truy xuất và quản lý Điểm (2) phân biệt một DBMS với một hệ thống tập tin cũng quản lý dữ liệu nhưng nói chung không cho phép truy xuất nhanh chóng các thành phần tùy ý của dữ liệu Những khả năng của một DBMS sẽ rất cần thiết khi số lượng dữ liệu rất lớn
Hai đặc tính trên là hai đặc tính cơ bản của một DBMS, ngoài ra một DBMS thường có các khả năng sau:
- Hỗ trợ ít nhất một mô hình dữ liệu (Data model) nhờ đó người sử dụng có thể xem được dữ liệu
- Hỗ trợ một số ngôn ngữ bậc cao cho phép người sử dụng định nghĩa các cấu trúc dữ liệu, truy xuất và thao tác dữ liệu
- Quản lý giao dịch, nghĩa là cho phép nhiều người sử dụng truy xuất đồng thời và
chính xác đến một Cơ Sở Dữ Liệu
- Điều khiển các quá trình truy xuất, là khả năng giới hạn các quá trình truy xuất
dữ liệu của những người không được phép , và khả năng kiểm tra độ tin cậy của dữ liệu
Trang 2- Các đặc tính tự thích ứng, là khả năng tự phục hồi lại dữ liệu do sự cố của hệ
thống mà không làm mất dữ liệu
1.3 Các mô hình dữ liệu
Một DBMS cần phải cung cấp ít nhất một mô hình trừu tượng qua đó người sử dụng có thể thấy được dữ liệu không phải bằng các bit “thô” mà bằng các dạng dễ hiểu, dễ nhận biết hơn
Trong thực tế các Cơ Sở Dữ Liệu có thể có một vài mức trừu tượng , trong đó mức thấp nhất là tập hợp các file dữ liệu ( Mức vật lý)
Ví dụ: Xét một tổng công ty có nhiều công ty con và hồ sơ về các nhân viên của tổng công ty có thể được lưu trữ trong một file dữ liệu gồm các trường MNV( mã nhân viên), HOTEN, LUONG_NV, ĐIACHI để đơn giản ta giả thiết cấu trúc bản ghi gồm 2 trường sau:
TEN_NV: họ tên nhân viên
NGUOI_QL: Họ tên giám đốc công ty nơi nhân viên làm việc
Khi đó cấu trúc bản ghi như sau:
Record
TEN_NV: char[30];
NGUOI_QL: char[30];
end;
Khi đó file dữ liệu là tập các bản ghi và mỗi bản ghi chứa thông tin về một nhân viên của công ty
Trong nhiều mô hình Cơ Sở Dữ Liệu người ta sử dụng các quan hệ thay cho các file Quan hệ : NHAN_VIEN(TEN_NV,NGUOI_QL)
Ta cần phân biệt giữa file và quan hệ
Trong file các bản ghi không nhất thiết phải phân biệt
Trong quan hệ, các bản ghi(bộ) cần phải phân biệt nhau
1.4 Hiệu quả truy cập dữ liệu
Các hệ điều hành đều có khả năng tổ chức và lưu trữ các tập tin vì vậy việc lưu trữ các tập tin dữ liệu đối với DBMS là không đáng chú ý Hiệu quả của các DBMS trong việc xử lý trên các tập tin là tổ chức các tập tin phụ hoặc các công cụ hỗ trợ để truy cập dữ liệu nhanh chóng, kịp thời Chẳn hạn các file INDEX, hoặc các hàm HASH
1.5 Quản lý giao dịch
Ngày nay do sự phát triển của mạng máy tính mà các Cơ Sở Dữ Liệu lớn có thể được sử dụng bởi nhiều người trên các máy tính khác nhau vì vậy các DBMS cần phải cung cấp một khả năng quản lý sự truy cập dữ liệu của nhiều người sử dụng Chẳn hạn các dữ liệu về tài khoản cúa ngân hàng được sử dụng bởi hàng vạn khách hàng trên các máy tính khác nhau hoặc trên các máy đổi tiền tự động; Cơ Sở Dữ Liệu phục vụ cho việc đặt chổ cho một hãng hàng không được sử dụng bởi hàng ngàn đại lý của hãng hàng
Trang 3giao dịch giữa các khách hàng trên cùng một hạng mục dữ liệu , vì vậy DBMS cần phải cung cấp một khả năng khóa dữ liệu (clock data) khi có người sử dụng truy cập đến hạng mục dữ liệu đó
1.6 An toàn dữ liệu
Một DBMS cần phải có khả năng phục hồi lại dữ liệu khi có sự hỏng hóc xảy ra, đồng thời và rất quan trọng là bảo vệ sự truy cập của các người sử dụng không được phép Để thực hiện công việc này các DBMS cho phép tạo ra các khung nhìn (View) mà người sử dụng chỉ được phép quan sát dữ liệu trên các view Chẳn hạn chúng ta có một file dữ liệu là NHAN_VIEN gồm các trường
TEN ( Họ tên nhân viên)
DIA_CHI(địa chỉ nhân viên)
TEN_CTY( tên công ty)
LUONG(lương nhân viên)
nếu sử dụng mô hình Quan hệ ta có Quan hệ sau:
NHAN_VIEN(TEN, DIA_CHI, TEN_CTY,LUONG)
Để mọi người có thể truy cập vào file dữ liệu này nhưng không được biết lương của nhân viên Trong ngôn ngữ SQL khung nhìn được tạo ra như sau:
CREAT VIEW L_NHAN_VIEN
SELECT TEN, DIA_CHI,TEN_CTY
FROM NHAN_VIEN;
Khi đó khung nhìn được tạo ra như một quan hệ với tên L_NHAN_VIEN(TEN, DIA_CHI, TEN_CTY) Khung nhìn này không tồn tại vật lý như tập tin , nhưng có thể vấn tin nó giống như tập tin
2 Kiến trúc một Hệ quản trị Cơ Sở Dữ Liệu
Một Hệ quản trị Cơ Sở Dữ Liệu được mô tả bởi 3 mức trừu tượng sau
Được viết bằng ngôn ngữ định nghĩa dữ liệu
Cơ Sở Dữ Liệu khái niệm CSDL vật
lý
Khung nhìn 1 Khung nhìn 2
Khung nhìn n
Nhóm UESR 1
Nhóm UESR 2
Nhóm UESR n
Được viết bằng ngôn ngữ định nghĩa dữ liệu lược đồ con
Được cài đặt trên thiết bị vật lý
Trang 42.1 Mức Cơ Sở Dữ Liệu vật lý( physical level)
Là một tập các tập tin (file) và các file chỉ mục (Index) hoặc các cấu trúc lưu trữ khác dùng để truy xuất chúng một cách có hiệu quả , gọi là Cơ Sở Dữ Liệu vật lý Cơ Sở Dữ Liệu vật lý tồn tại thường xuyên trong thiết bị lưu trữ như đĩa từ
2.2 Mức Cơ Sở Dữ Liệu khái niệm (Concept level )
Cơ Sở Dữ Liệu khái niệm là sự trừu tượng hóa của thế giới thực khi nó dược gắn với người sử dụng Cơ Sở Dữ Liệu Các DBMS cung cấp ngôn ngữ địng nghĩa dữ liệu (data definition language DDL), để mô tả lược đồ khái niệm (conceptual scheme)và nó sẽ được cài đặt bằng lược đồ vật lý (physical scheme) DDL cho chúng ta mô tả Cơ Sở Dữ Liệu khái niệm nhờ các thuật ngữ của “Mô hình dữ liệu “ , chẳn hạn như trong mô hình quan hệ dữ liệu được trình bày qua các bảng với các cột là các thuộc tính các hàng là các
“bộ” tương tự như các mẫu tin
2.3 Khung nhìn(VIEW)
Khung nhìn(view) hay lược đồ con (Subscheme)là một phần của Cơ Sở Dữ Liệu khái niệm hoặc là sự trừu tượng hóa một phần Cơ Sở Dữ Liệu khái niệm hầu hết các DBMS đều cung cấp phương tiện để khai báo khung nhìn , được gọi là ngôn ngữ định nghĩa dữ liệu lược đồ con( subscheme data definition language) và các phương tiện để thao tác và vấn tin trên khung nhìn gọi là ngôn ngữ thao tác dữ liệu lược đồ con (subscheme data manipulation language)
Thí dụ1
Chúng ta thử phân tích các khác biệt giữa các mức vật lý, khía niệm, khung nhìn nhờ vào tính tương tự của chúng với các ngôn ngữ lập trình Cụ thể ta sẽ nói về mảng:
- Ở mức khái niệm mảng có thể khia báo như sau:
Integer array A[1 n,1 m]
Còn ở mức vật lý, mảng A được lưu trữ trong một vùng liên tục bắt đầu từ địa chỉ a0 theo thứ tự hết cột đến dòng Phần tử A[i,j] sẽ ở vị trí a0 +4(m(i-j)+j-1)
Ở mức khung nhìn, ta có thể tạo ra nhiều khung nhìn tùy ý Chẳn hạn
f(i)=∑
=
m
1
j
] j
,
[
A cho biết tổng các phần tử trên dòng thứ i
Lược đồ và thể hiện
Ngoài việc phân chia mức trừu tượng như trong phần (2) chúng ta còn có một cách hiểu khác về Cơ Sở Dữ Liệu Khi thiết kế chúng ta quan tâm đến những hoạch định (plan) trên Cơ Sở Dữ Liệu ; nhưng khi sử dụng chúng ta lại quan tâm đến những dữ liệu thực sự tồn tại trong Cơ Sở Dữ Liệu Cần phải hiểu rằng dữ liệu trong Cơ Sở Dữ Liệu thưòng xuyên thay đổi , trong khi các plan vẫn như cũ
Nội dung hiện thời của Cơ Sở Dữ Liệu gọi là thể hiện (instance) của Cơ Sở Dữ Liệu Thuật ngữ Lược đồ (Scheme) được dùng để nói đến các hoạch định này vì vậy khi nói đến lược đồ khái niệm là nói về hoạch định cho Cơ Sở Dữ Liệu khái niệm , và chúng
ta gọi hoạch định Cơ Sở Dữ Liệu vật lý là lược đồ vật lý
Trang 5Chúng ta tiếp tục với mảng trong ví dụ 1 Mô tả mảng và hàm được đưa ra trong thí dụ đó thực sự là thông tin kiểu lược đồ
1 Lược đồ vật lý là mệnh đề: Phần tử A[i,j] sẽ ở vị trí a0 +4(m(i-j)+j-1), khẳn định rằng mảng A được lưu tại vị trí bắt đầu là a0 và phần tử a[i,j] được lưu ở vị trí a0 +4(m(i-j)+j-1)
2 Lược đồ khái niệm là khai báo Integer array A[1 n,1 m]; A là một mảng số nguyên với n hàng và m cột
3 Lược đồ con là định nghĩa của hàm f, nghĩa là
f(i)=∑
=
m
1
j
] j
,
[
A
Để đưa ra một thí dụ về một thể hiện của lược đồ khái niệm này , chúng ta có thể cho n=m=3 khi đó A là một ma phương:
8 1 6
3 5 7
4 9 2
Khi đó thể hiện vật lý (Physical instance)sẽ là 9 word khởi đầu từ vị trí a0 theo thứ tự chứa 8 1 6 3 5 7 4 9 2 Cuối cùng thể hiện khung nhìn view là hàm
f(1)=f(2)=f(3)=15
Tính Độc lập dữ liệu
Sơ đồ về các mức trừu tượng trong phần (2) chỉ rõ đi từ khung nhìn qua Cơ Sở Dữ Liệu khái niệm đến Cơ Sở Dữ Liệu vật lý đưa ra hai mức độc lập dữ liệu (data independence)
- Độc lập dữ liệu vật lý (physcal data independence) : Chúng ta có thể thay đổi lược đồ vật lý mà không làm ảnh hưởng đến lược đồ khái niệm hay phải định nghĩa lại các lược đồ con Nó khẳn định rằng việc sửa đổi về tổ chức về Cơ Sở Dữ Liệu vật lý có thể ảnh hưởng đến tính hiệu của các chương trình ứng dụng , nhưng không bao giờ phải viết lại những chương trình này
- Độc lập dữ liệu logic (logical data independence) được đưa ra bởi mối quan hệ giữa khung nhìn và Cơ Sở Dữ Liệu khái niệm Khi sử dụng Cơ Sở Dữ Liệu cũng có thể cần phải sửa đổi lược đồ khái niệm, có nhiều sửa đổi lược đồ khái niệm không làm ảnh hưởng đến các lược đồ con hiện có, và cũng có một số sửa đổi khác sẽ cần phải định nghĩa lại các ánh xạ từ lược đồ con đến lược đồ khái niệm trường hợp này không cần thay đổi chương trình ứng dụng Một laọi thay đổi duy nhất trong lược đồ khái niệm buộc phải thay đổi lược đồ con làviệc xóa các thông
Trang 6tin tương ứng với các thông tin đang tồn tại trong lược đồ con Những thay đổi này đòi hỏi phải thay đổi chương trình ứng dụng
3 Các ngôn ngữ của Cơ Sở Dữ Liệu
Trong các ngôn ngữ lập trình các chỉ thị mô tả và các chỉ thị thực hiện là 2 bộ phận của một ngôn ngữ, trong các Hệ quản trị Cơ Sở Dữ Liệu hai chức năng mô tả và xử lý nói chung được chia thành 2 ngôn ngữ khác nhau
1 Ngôn ngữ định nghĩa dữ liệu(data definition language - DDL)
Đây không phải là ngôn ngữ thủ tục mà chỉ là một hệ thống ký hiệu để mô tả các loại đối tượng và quan hệ giữa chúng
Ví dụ 3
Chúng ta có thể định nghĩa một quan hệ mô tả một chuyến bay thực hiện bởi một hãng hàng không với định nghĩa dữ liệu như sau:
CREAT TABLE FLIGHT(NUMBER: INT, DATE CHAR(6), SEAT:INT, FROM : CHAR(3), TO : CHAR(3))
Đoạn mã trên là một thí dụ về ngôn ngữ định nghĩa dữ liệu SQL , nó mô tả quan hệ và các thuộc tính cùng với việc cài đặt vật lý của chúng là các số nguyên và chuổi có độ dài cố định
2 Ngôn ngữ thao tác dữ liệu
Các thao tác trên Cơ Sở Dữ Liệu đồi hỏi phải có một ngôn ngữ đặc biệt gọi là ngôn ngữ thao tác dữ liệu (data manipulation language- DML) hay còn gọi là ngôn ngữ vấn tin (Query language)
Ví dụ 4
Với Cơ Sở Dữ Liệu các chuyến bay FLIGHT được định nghĩa bằng ngôn ngữ SQL trong
ví dụ 3, trong ngôn ngữ SQL ta có thể thực hiện các thao tác sau:
a Giảm 4 chổ ngồi còn trống trên chuyến bay 123 ngày 31 tháng tám
UPDATE FLIGHT
SET SEAT=SEAT-4
WHERE NUMBER=123 AND DATE=’AUG 31’
b nhập vào chuyến bay 456 với 100 chổ ngồi từ hà nội đi đà nẵng ngày 21 tháng tám INSERT INTO FLIGHT
VALUE(456, ‘AUG 21’, ‘HANOI’, ‘DANANG’)
c Tìm xem trong Cơ Sở Dữ Liệu có bao nhiêu chổ ngồi còn trống trong chuyến bay số
999 ngày 24 tháng 7
SELECT SEAT
FROM FLIGHT
WHERE NUMBER=999AND DATE=’JUL 24’
Trang 73 Ngôn ngữ chủ
Các chỉ thị của các ngôn ngữ thao tác dữ liệu thường là đơn giản hay nói cách khác là thực hiện những phép xử lý đơn giản, nhưng trong trong quá trình thực hiện công việc trên Cơ Sở Dữ Liệu có thể phải xử lý các công việc phức tạp hơn như soạn thảo văn bản báo cáo , in ấn vì vậy các Hệ quản trị Cơ Sở Dữ Liệu cần phải có sự hổ trợ của các ngôn ngữ thuận tiện cho việc lập trình như C hay COBOL gọi là các ngôn ngữ chủ( host language) Các lệnh của DMLb được nhúng vào ngôn ngữ chủ theo hai cách
a Các lệnh của DML được kích hoạt bằng việc gọi các thủ tục được cung cấp bởi Hệ quản trị Cơ Sở Dữ Liệu
b Các lệnh này là các chỉ thị trong ngôn ngữ chủ được mở rộng