Tải bản đầy đủ (.doc) (59 trang)

Cơ sở dữ liệu 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (701.62 KB, 59 trang )

Cơ sở dữ liệu
PHẦN A: KIẾN THỨC CƠ BẢN
CHƯƠNG I:
CÁC KHÁI NIỆM CƠ BẢN VỀ CƠ SỞ DỮ LIỆU
I. MỘT SỐ KHÁI NIỆM CƠ BẢN
Thí dụ trong một thư viện có quá nhiều sách, để biết chúng hiện đang nằm ở đâu,
trên giá nào và có thể tìm kiếm dễ dàng thì các tên sách cần được sắp xếp lại theo thứ tự.
Đối với mỗi cuốn sách người ta không chỉ ghi tên của chúng, mà còn ghi nhớ cả tên tác
giả, năm xuất bản, nhà xuất bản, số trang,… Nếu như chỉ có một số lượng nhỏ những
cuốn sách thì người ta có thể tìm kiếm ngay và lưu thông tin của chúng bằng thủ công.
Nhưng nếu có quá nhiều sách thì việc làm thủ công không còn thích hợp, phải sử dụng
một cơ sở dữ liệu để lưu trữ thông tin của chúng. Đối với danh bạ điện thoại cũng vậy,
thông tin về từng con người được lưu trữ để tra cứu thuận tiện.
Các cơ sở dữ liệu (CSDL) dùng để lưu trữ các thuộc tính và các đối tượng của thế
giới thực, xử lý và tìm kiếm dữ liệu trong hầu hết các tổ chức, từ kinh doanh, bảo hiểm,
giáo dục, đến thư viện,… Công nghệ CSDL có thể sử dụng trên máy tính đơn hoặc nhiều
máy tính nối nhau (mạng), trong quy mô rộng lớn.
1. Định nghĩa cơ sở dữ liệu (CSDL)
Cơ sở dữ liệu là tập hợp có tổ chức của các dữ liệu về thế giới thực trong một lĩnh
vực nào đó có liên quan với nhau về mặt logic. Chúng được lưu trữ ở bộ nhớ ngoài.
2. Định nghĩa môn cơ sở dữ liệu
Môn CSDL là lĩnh vực của tin học chuyên nghiên cứu các cơ chế, nguyên lý,
phương pháp tổ chức các nhóm dữ liệu trên các bộ nhớ ngoài nhằm phục vụ cho việc khai
thác dữ liệu được tốt hơn.
3. Định nghĩa dữ liệu
Khi nói đến dữ liệu là nói để những sự kiện đã biết; Chẳng hạn trong CSDL về các
cuốn sách, dữ liệu bao gồm các sự kiện như tên sách, năm xuất bản, nhà xuất bản,… hay
trong CSDL về số điện thoại, gồm tên người quen, số điện thoại, địa chỉ của họ. Các dữ
liệu tuân theo loại dữ liệu được mô tả trước và được thể hiện dưới dạng văn bản, hình
ảnh, âm thanh thậm chí cả những đoạn video. Chẳng hạn CSDL về thư viện có thể lưu
ảnh của bạn đọc.


Dữ liệu là các sự kiện, văn bản, đồ họa, hình ảnh và đoạn phim video có ý nghĩa
trong môi trường của người dùng.
II. KHUNG NHÌN DỮ LIỆU (VIEW OF DATA)
1. Sự trừu tượng hoá dữ liệu
Những người sử dụng không phải luôn thành thạo về máy tính, vì vậy các nhà tin
học phải che dấu sự phức tạp về biểu diễn bên trong của dữ liệu máy tính thông qua nhiều
mức trừu tượng hoá dữ liệu để làm đơn giản hoá sự tương tác giữa người sử dụng và hệ
thống.
a. Mức vật lý (physical level):
Mức thấp nhất của sự trừu tượng hoá, mô tả cách thức dữ liệu được lưu trữ thực
sự.
Ví dụ: Các mẫu tin được lưu thành những khối liên tiếp nhau (bye, từ nhớ,…).
Trình biên dịch che dấu các chi tiết này không cho người lập trình thông thường biết, trừ
những người quản trị CSDL.
b. Mức luận lý (logical level):
Mức trung gian, mô tả những dữ liệu nào được lưu trữ trong CSDL và mối liên
kết giữa chúng. Người quản trị CSDL (database administrator) và các nhà lập trình
thường xuyên làm việc ở mức này.
Trang: 1
Cơ sở dữ liệu
c. Mức quan niệm (conceptual level) hay con gọi là mức khung nhìn (view
level):
Đây là mức cao nhất của sự trừu tượng hoá. Mặc dù mức luận lý đã đơn giản
hoá đi nhiều nhưng do CSDL có kích thước quá lớn, nó vẫn còn phức tạp. Nhiều người
sử dụng chỉ cần truy xuất một phần CSDL trong toàn bộ CSDL. Vì vậy khung nhìn được
đặt ra để mô tả chỉ một phần của toàn bộ CSDL cho một nhóm người sử dụng nào đó.
Ngoài ra, khung nhìn còn cung cấp cơ chế an toàn để ngăn ngừa người sử dụng truy xuất
trái phép các phần thẩm quyền.
2. Tính độc lập dữ liệu
Tính độc lập dữ liệu là tính bất biến của các chương trình ứng dụng đối với các

thay đổi trong cấu trúc lưu trữ và chiến lược truy xuất dữ liệu. Hay nói cách khác, độc lập
dữ liệu là việc tách các mô tả dữ liệu ra khỏi các chương trình ứng dụng sử dụng dữ liệu
đó.
III. ƯU VÀ KHUYẾT ĐIỂM KHI TIẾP CẬN CƠ SỞ DỮ LIỆU
1. Những ưu điểm khi tiếp cận CSDL
a. Giảm bớt dư thừa dữ liệu:
Khi có hai hệ ứng dụng khác nhau cùng đòi hỏi những tập dữ liệu như nhau thì
chỉ lưu trữ một lần và dùng chung cho cả hai hệ nói trên. Tuy nhiên việc dư thừa dữ liệu
không thể hết được; chẳng hạn như các dữ liệu liên kết các tập tin dữ liệu khác nhau vẫn
được lưu trữ trên nhiều tập tin.
b. Có thể tránh được sự không nhất quán trong dữ liệu lưu trữ:
Nếu dữ liệu lưu trữ ở nhiều nơi khác nhau thì có thể không nhất quán do những
thao tác cập nhật. Ở đây CSDL đã giảm được dư thừa thì khả năng rủi ro do thay đổi giá
trị cũng giảm đi.
c. Tăng tính dùng chung dữ liệu:
Một CSDL được thiết kế để phục vụ chung cho tất cả các ứng dụng. Mỗi nhóm
người dùng nhìn nhận CSDL như chỉ có một mình họ sử dụng dữ liệu.
d. Tính chuẩn hoá cao:
Khi dữ liệu được sử dụng trong nhiều lĩnh vực thì chúng càng ngày càng được
chuẩn hoá cho phù hợp với nhiều nhu cầu; việc theo chuẩn chung cho phép tăng hiệu quả
sử dụng dữ liệu.
e. Tăng tính an toàn dữ liệu:
Người quản trị CSDL có thể cho phép một nhóm người sử dụng nào đó sử dụng
chỉ một nhóm dữ liệu thuộc thẩm quyền, bằng một mật mã đã được định trước. Đồng thời
cũng có thể kiểm tra các ý đồ truy xuất đến dữ liệu mật.
f. Có thể giữ được sự toàn vẹn dữ liệu:
CSDL chỉ được chứa các dữ liệu đúng. Nhờ sự quản lý tập trung, nó cho phép
người quản trị định ra các thủ tục kiểm tra cần thiết khi thực hiện các thao tác cập nhật.
Ví dụ: Số lượng hàng bán không thể vượt quá số lượng hàng đang tồn.
g. Có thể đảm bảo tính độc lập dữ liệu cao.

f. Giảm bớt việc bảo trì các chương trình.
2. Giá phải trả cho ứng dụng CSDL
Như với bất kỳ quyết định kinh doanh nào, ứng dụng theo hướng CSDL cần trả giá
và chịu một vài rủi ro như cần đến nhân sự mới và chuyên sâu, chi phí quản lý và thực
hiện, giải quyết va chạm tâm lý…
a. Nhu cầu về nhân sự mới, chuyên môn: Cần phải thuê hay tự đào tạo các
chuyên gia công nghệ thông tin để phân tích, thiết kế, thực hiện CSDL trong tổ chức.
Mặc khác công nghệ ngày càng phát triển nhanh đã khiến các hệ thống CSDL thường
xuyên cập nhật tri thức cho các cán bộ.
b. Chi phí về quản lý, thực hiện: Hệ thống quản trị CSDL nhiều người dùng
thường lớn và phức tạp, đòi hỏi nhiều người tham gia và bảo trì. Người ta cần tính đến
chi phí thiết bị máy tính, chi phí phần mềm, chi phí truyền thông.
Trang: 2
Cơ sở dữ liệu
c. Chi phí chuyển đổi hệ thống: Trước khi áp dụng CSDL, tổ chức đã xử lý dữ
liệu theo phương pháp thủ công, hay sử dụng hệ thống xử lý tệp. Để chuyển công nghệ
xử lý dữ liệu sang cách tiếp cận mới, tổ chức cần có kinh phí chuyển các mô hình cũ sang
mô hình mới, chuyển đổi dữ liệu cho phù hợp với môi trường mới.
d. Nhu cầu sao chép và khôi phục dữ liệu: Tuy không mong muốn, nhưng đôi khi
vẫn xẩy ra rủi ro với CSDL như mất dữ liệu, hỏng phần mềm, hư phần cứng,…Hệ thống
CSDL có các công cụ cho phép sao chép dữ liệu phòng khi hỏng hóc và khôi phục lại dữ
liệu khi xảy ra sự cố.
e. Va chạm về quan điểm sử dụng CSDL: Trước khi CSDL được áp dụng trong tổ
chức, người ta cần thống nhất về mô tả dữ liệu, các khuôn dạng thể hiện dữ liệu,… Sau
khi hình thành CSDL, việc sử dụng dữ liệu của CSDL cần đạt hiệu quả. Cần khuyến
khích các bộ phận phát huy tốt hệ thống CSDL vì rất có thể một số bộ phận nào đó muốn
độc quyền thông tin hay e ngại dùng hệ thống tự động hoá, cho nên có xu hướng giảm
hiệu quả của CSDL.
IV. HỆ THỐNG CSDL
1. Hệ thống xử lý tệp cổ điển

Trong hệ thống xử lý tệp trước đây thì các bộ phận của công ty được tổ chức lưu
trữ dữ liệu theo từng tập tin độc lập, không có liên quan với nhau. Các ứng dụng của mỗi
bộ phận được phát triển riêng lẽ và chỉ truy cập đến dữ liệu của riêng bộ phận đó, không
có một mô hình tổng thể cho toàn công ty. Hệ thống này nhanh hơn thao tác thủ công
nhưng còn nhiều hạn chế:
- Dễ xẩy ra tình trạng dữ liệu bị trùng lắp, phán tán, thiếu nhất quán.
Ví dụ:
Trong một trường đại học, kết quả học tập của sinh viên được lưu ở phòng
Đào tạo, đồng thời cũng được lưu ở Phòng tài vụ để căn cứ vào đó mà phát học bổng cho
sinh viên (gây dư thừa dữ liệu). Nhưng nếu kết quả học tập của một sinh viên đã bị sút
giảm, em này đáng lý không còn được nhận học bổng như trước nữa. Nhưng do phòng tài
vụ không cập nhật kịp thời thông tin này nên vẫn tiếp tục duy trì học bổng cho em (gây
dữ liệu không nhất quán).
- Số lượng dữ liệu tăng nhanh.
- Sự chia sẽ dữ liệu bị hạn chế.
- Chương trình ứng dụng làm chủ những cách tổ chức số liệu nên nó bị phụ
thuộc dữ liệu. Hơn nữa, phí tổn viết và bảo trì chương trình cao.
- Các mối liên hệ giữa các thông tin không được chú trọng.
2. Hệ thống CSDL
Hệ thống CSDL là hệ thống thông tin, cho phép người sử dụng dùng chung các dữ
liệu có trong hệ thống. Khái niệm dùng chung, chia sẽ dữ liệu được dùng rộng rãi trong
nhiều ứng dụng với nghĩa nhiều người dùng cùng truy cập một dữ liệu tại cùng một thời
điểm. Vì vậy, hệ quản trị CSDL cần điều khiển sự tương tranh giữa các thao tác của
nhiều ứng dụng. Có thể thao tác này cần cập nhật dữ liệu trong khi thao tác khác chỉ đọc
dữ liệu này. Chẳng hạn trong hệ thống quản lý sách, nơi này cho độc giả mượn một cuốn
sách, đang thể hiện trạng thái đánh dấu “đã cho mượn” vào thông tin của cuốn sách trong
CSDL thì nơi khác cũng đang cho độc giả khác mượn cuốn sách đó.
Hệ thống CSDL còn đảm bảo tính an toàn và toàn vẹn của dữ liệu. Dữ liệu an toàn
có nghĩa giữ được bí mật. Máy tính ngăn cản các truy cập không hợp lệ và khôi phục các
sai sót trên dữ liệu nếu chẳng may sự an toàn không đảm bảo được. Người ta hay đề cập

tính toàn vẹn của dữ liệu khi nói về tính an toàn. Tính toàn vẹn liên quan đến các điều
kiện mà dữ liệu cần thỏa mãn. Các điều kiện, hay các ràng buộc trên dữ liệu cũng quan
trọng đối với dữ liệu. Chẳng hạn số sách đã đăng ký trong hệ thống quản lý sách phải
luôn bằng tổng số sách trong kho và số sách độc giả mượn. Quản lý các sai sót dữ liệu và
điều khiển tính toàn vẹn dữ liệu đòi hỏi qui trình phức tạp trong hệ quản trị CSDL.
3. Các thành phần của hệ thống CSDL
Trang: 3
Cơ sở dữ liệu
Nhìn tổng quát, hệ thống CSDL gồm những thành phần sau:
- Người dùng: Người dùng là người tiếp xúc với dữ liệu thông qua các ứng
dụng, tức là thực hiện các phép như thêm, xoá, thay đổi dữ liệu hay yêu cầu nhận các dữ
liệu từ CSDL.
- Ứng dụng: Các chương trình, phần mềm cho phép người dùng truy cập dữ liệu
đều được coi như ứng dụng của hệ thống CSDL.
- Hệ quản trị CSDL: Hệ quản trị CSDL là phần mềm ứng dụng dùng để tạo mới,
bảo trì và đảm bảo truy cập có điều khiển đến các CSDL của người dùng.
- Dữ liệu: Là thông tin liên quan đến ứng dụng, được lưu trữ trong các tập tin
CSDL.
- Hệ thống chủ: Hệ thống chủ là hệ thống máy tính quản lý các tập tin. Nó thực
hiện việc truy cập tập tin dữ liệu. Vai trò của hệ quản trị CSDL là yêu cầu các phương
tiện lưu trữ tập tin phục vụ các ứng dụng. Do vậy, hệ quản trị CSDL là phần mềm nằm
trong phần mềm của hệ thống chủ.
- Cơ sở dữ liệu: CSDL là tập các dữ liệu liên quan logic với nhau, được thiết kế
để phục vụ các nhu cầu về thông tin của nhiều người dùng trong tổ chức.
- Giao diện người dùng: Giao diện người dùng hay giao diện người sử dụng là
các phương tiện cho phép người dùng thao tác với các thành phần của hệ thống CSDL.
- Người quản trị CSDL: Người quản trị CSDL là người có quyền điều khiển tập
trung trên toàn bộ hệ thống, về cả dữ liệu lẫn các chương trình truy xuất các dữ liệu đó.
Họ chuyên về công nghệ thông tin, có nhiệm vụ tạo mới CSDL và cài đặt các điều khiển
kỹ thuật.

- Người phát triển hệ thống: Những người như phân tích viên hệ thống, lập trình
viên được gọi là người phát triển hệ thống.
V. HỆ QUẢN TRỊ CSDL
Hệ quản trị CSDL là một hệ thống phần mềm nhằm cung cấp cho người sử dụng một
môi trường vừa thích hợp, vừa hiệu quả để khai thác CSDL theo 3 chức năng mô tả, lưu
trữ, tìm kiếm, và cập nhật dữ liệu.
Như vậy, HQTCSDL phải được thiết kế sao cho quản trị được một khối lượng lớn dữ
liệu. Công việc quản trị này bao gồm:
- Định nghĩa các cấu trúc để lưu trữ thông tin.
- Cung cấp cơ chế để sử dụng thông tin.
- Tạo sự an toàn cho dữ liệu cho dù có bất trắc của hệ thống.
VI. TIẾN HÓA CỦA CÁC HỆ THỐNG CSDL
1. Lịch sử của các hệ thống CSDL
Các hệ thống CSDL được giới thiệu vào những năm 60 của thế kỉ XX và đã phát
triển liên tục trong hàng chục năm qua. Một số công nghệ về CSDL đã phát triển lâu dài
như mô hình quan hệ có từ năm 1970 nhưng các hệ thống CSDL theo mô hình quan hệ có
ý nghĩa thương mại chỉ vào những năm 80. Các hệ thống CSDL đã khắc phục được nhiều
hạn chế của hệ thống xử lý tệp truyền thống. Để đánh giá những gì đã đạt được trong thời
gian qua của các hệ thống CSDL, người ta luôn nhìn nhận việc phát triển, tiến hoá theo
các mục đích:
- Cần thiết đảm bảo độc lập giữa chương trình và dữ liệu, giảm chi phí bảo trì.
- Mong muốn quản lý nhiều loại dữ lịêu và cấu trúc dữ liệu phức tạp.
- Yêu cầu truy cập dễ dàng đến dữ liệu, cho dù người dùng là chuyên viên công
nghệ thông tin hay không.
a. Từ năm 1960-1970: Các hệ thống xử lý tệp vẫn còn thông dụng trong giai đoạn
này. Tuy nhiên, các hệ thống CSDL đầu tiên đã được giới thiệu, dù còn cồng kềnh. Thực
ra, mô hình phân cấp và mô hình mạng đã tạo nên thế hệ thứ nhất cho hệ thống CSDL.
b.Từ năm 1970-1980: Các hệ thống theo thế hệ thứ nhất vẫn được phát huy và có
nhiều sản phẩm thương mại. Tuy nhiên, hai mô hình phân cấp và mạng vẫn được dùng
rộng rãi mặc dù chúng vẫn có các nhược điểm như: Các thủ tục tìm kiếm bản ghi, người

Trang: 4
Cơ sở dữ liệu
ta khó truy cập dữ liệu; tính độc lập giữa chương trình và dữ liệu chưa thật tốt; chưa có
cơ sở lý thuyết hoàn thiện.
c. Từ năm 1980-1990: Mô hình quan hệ của E.F.Codd đã khắc phục nhược điểm
của hai mô hình CSDL trên. Mô hình CSDL quan hệ tạo nên các hệ thống CSDL thế hệ
thứ hai. Các hệ thống quan hệ được bán nhiều trên thị trường và chiếm ưu thế so với các
hệ thống CSDL khác. Người ta dùng ngôn ngữ SQL và các ngôn ngữ khác để truy cập dữ
liệu.
d. Từ năm 1990-2000: Những năm này, người ta vẫn sử dụng các CSDL trong
những năm 80 của thế kỷ XX để quản trị dữ liệu với cấu trúc phức tạp như dữ liệu kế
toán tài chính, dữ liệu đa phương tiện (âm thanh, đồ hoạ, hình ảnh). Trong những năm 90,
vấn đề hướng đối tượng không những được đề cập trong ngành CSDL mà còn trong
nhiều ngành tin học khác. Tuy nhiên cho đến nay chẳng có mấy hệ thống CSDL hướng
đối tượng xuất hiện trên thị trường.
e. Từ năm 2000 trở đi: Trong chục năm tới, công nghệ về CSDL có thể có những
đột phá đáng ngạc nhiên. Tuy nhiên người ta vẫn vạch ra các hướng vững chắc:
- Các kiểu dữ liệu phức tạp được quản lý tốt hơn. Chúng gồm dữ liệu đa chiều,
phù hợp với các ứng dụng của kho dữ liệu.
- Phát triển tiếp tục các máy chủ cực lớn. Người ta dựa vào hệ quản trị CSDL
quan hệ hướng đối tượng để thiết lập các CSDL có khả năng quản lý nhiều loại dữ liệu đa
dạng, thuận tiện cho các ứng dụng CSDL trên mạng Internet.
- Các CSDL phân tán sẽ trở thành hiện thực. Do vậy các tổ chức có thể phân bố
các dữ liệu tại nhiều địa điểm xa nhau về không gian.
- Việc lưu trữ dữ liệu theo địa chỉ và nội dung sẽ thông dụng hơn. Điều này cho
phép người dùng truy cập dữ liệu theo nội dung của dữ liệu, mà không cần biết cách thức
truy cập các dữ liệu này.
- Các công nghệ về CSDL, trí tuệ nhân tạo và các dịch vụ thông tin sẽ tạo nên
môi trường truy cập dữ liệu dễ dàng hơn, chẳng hạn giao tiếp bằng ngôn ngữ tự nhiên.
Mô hình phân cấp và mô hình mạng được coi là đại diện cho các hệ thống CSDL thế

hệ thứ nhất. Mô hình quan hệ đại diện cho hệ thống CSDL thế hệ thứ hai. Các mô hình
CSDL thế hệ sau được kể ra gồm mô hình hướng đối tượng, mô hình phân tán, mô hình
suy diễn.
2. Mô hình phân cấp (Hierarchical model)
- Mô hình phân cấp hay mô hình CSDL dạng cây được tổ chức theo cấu trúc từ trên
xuống dưới giống như cây lộn ngược. Mỗi nút tương ứng với một kiểu dữ liệu, có thể có
một hoặc nhiều trường, mô tả thực thể và một nhánh cây tạo nên một liên kết giữa kiểu
dữ liệu này với kiểu dữ liệu khác. Mỗi nút đều có một nút cha và nhiều nút con, trừ nút
gốc là không có cha.
- Ví dụ:
Trang: 5
PHÒNG
NHÂN VIÊN DỰ ÁN
CHUYÊN MÔN CẤP DƯỚI THIẾT BỊ
Cơ sở dữ liệu
- Tuy nhiên, mô hình chỉ thể hiện được quan hệ 1-n, tức là mô tả được trường hợp
nút cha có nhiều nút con như một phòng thì có thể có nhiều nhân viên hay một phòng có
thể có nhiều dự án, còn trường hợp ngược lại thì không. Chẳng hạn nếu một dự án mà
thuộc về nhiều phòng thì dự án phải được lưu ở nhiều nơi khác nhau. Điều này gây dư
thừa dữ liệu và lãng phí không gian lưu trữ.
- Điểm nổi bật trong các thủ tục truy xuất đến một đối tượng trong mô hình phân
cấp là đường dẫn đi từ gốc đến phần tử cần xét trong cây phân cấp.
3. Mô hình mạng
- Mô hình mạng được biểu diễn như một đồ thị có hướng. Mỗi nút có thể nối với
một nút bất kỳ để biểu diễn một liên kết 1-n thông qua con trỏ liên kết. Sự khác nhau
chính giữa hệ thống mạng và hệ thống phân cấp là mô hình mạng không ràng buộc về số
và hướng của các liên kết thiết lặp giữa các nút.
- Ví dụ:
4. Mô hình quan hệ
- Cơ sở dữ liệu quan hệ được xây dựng theo lý thuyết do E.F.Codd giới thiệu năm

1970. Thuật ngữ “quan hệ” là do bảng dữ liệu hai chiều được Codd gọi là bảng quan hệ.
Mô hình quan hệ khác hẳn với các mô hình trước nó và từ năm 1980 đã trở thành mô hình
được dùng rộng rãi để phát triển hệ quản trị CSDL.
- Theo mô hình quan hệ, dữ liệu được thể hiện trong bảng hai chiều, gồm các dòng
và cột. Các bảng gọi là các “quan hệ”, các dòng gọi là các “bộ” và cột là “thuộc tính”.
Theo cách nhìn của các mô hình trước thì mỗi dòng là một bản ghi, các thuộc tính cho
biết ý nghĩa của các giá trị trong bản ghi.
- Ví dụ:
KHÁCH HÀNG Mã Tên Tuổi Địa chỉ
Khách hàng 1 Mơ 16 Láng
Khách hàng 2 Mận 18 Bưởi
Khách hàng 3 Đào 21 Vọng
ĐƠN HÀNG Khách hàng Đơn hàng
Khách hàng 1 Đơn hàng 1
Khách hàng 1 Đơn hàng 2
Khách hàng 2 Đơn hàng 3
Khách hàng 2 Đơn hàng 4
Khách hàng 3 Đơn hàng 5
Trang: 6
Công chức
Ngân hàng
Tài khoản
Khách hàng
Đăng ký
tài khoản-khách hàng
tài khoản-ngân hàng
chủ tài khoản
người quản lý
nơi làmquản lý
Cơ sở dữ liệu

- Cơ sở dữ liệu quan hệ dùng các thuộc tính để liên kết dữ liệu giữa các bảng khác
nhau thay vì dùng con trỏ để liên kết tập bản ghi như trong mô hình mạng. Chẳng hạn
thuộc tính mã của bảng KHÁCH HÀNG và thuộc tính khách hàng của bảng ĐƠN HÀNG
là hai thuộc tính dùng để liên kết hai bảng quan hệ này. Đi sâu vào chi tiết của mô hình
quan hệ sẽ được giới thiệu trong Chương III.
5. Mô hình hướng đối tượng
- Mô hình phân cấp và mô hình mạng được xếp vào thế hệ đầu của CSDL. Thế hệ
thứ hai của các hệ quản trị CSDL có mô hình quan hệ. Các mô hình này được xem là mô
hình cổ điển. Mô hình mới nhất được xếp vào thế hệ thứ ba của CSDL là mô hình hướng
đối tượng. Công nghệ CSDL hướng đối tượng dùng lược đồ gồm tập các “lớp”. Mỗi lớp
được mô tả gồm tập các “thuộc tính” và “phương thức”. Mỗi đối tượng thuộc lớp đều
mang đầy đủ các thuộc tính và phương thức của lớp đó.
- Thế hệ thứ ba của hệ quản trị nhằm đáp ứng các yêu cầu về:
+ Các ứng dụng mới của công nghệ thông tin.
+ Khai thác trong môi trường phức tạp như phân tán, không đồng nhất,…
+ Xử lý các dữ liệu hướng đối tượng và thực hiện suy diễn trên các dữ liệu.
- Theo cách tổ chức CSDL truyền thống, người ta có thể viết đoạn chương trình
riêng để mô tả các phương thức và dùng một giao diện để liên kết với hệ quản trị. Tuy
nhiên điều quan trọng cần lưu ý là: trong CSDL truyền thống phần chương trình này là
độc lập, còn trong CSDL hướng đối tượng thì chương trình này được mô tả như một đối
tượng của CSDL. Vậy bằng công cụ đối tượng và phương thức, người ta có thể lưu trữ và
chia sẻ không những cấu trúc của đối tượng CSDL, mà còn cả các hành vi của các đối
tượng.
- Tuy tiếp cận hướng đối tượng được phổ biến vào đầu những năm 90 của thế kỷ
XX nhưng đến nay vẫn chưa có nhiều CSDL thuộc loại này do nó còn nhiều khuyết
điểm:
+ Chưa thống nhất rõ ràng các lĩnh vực của lý thuyết.
+ Chưa có phương pháp luận thiết kế CSDL hướng đối tượng theo cách hình
thức như việc chuẩn hoá trong CSDL quan hệ. Rất ít hướng dẫn thiết kế CSDL hướng đối
tượng cho phép tối ưu hoá. Điều này khiến hệ thống không hiệu quả.

+ Các hệ thống chưa có khả năng cho phép người dùng hỏi các câu hỏi tùy ý.
+ Hệ thống thiếu các luật về tính toàn vẹn tổng quát.
Trang: 7
Cơ sở dữ liệu
CHƯƠNG II:
TỔ CHỨC DỮ LIỆU Ở MỨC VẬT LÝ
I. QUẢN TRỊ TỆP VÀ QUẢN TRỊ CSDL
Định nghĩa tệp (file-tập tin):
Tệp là đơn vị nhỏ nhất do phần mềm hệ thống quản lý, dùng để
chứa các dữ liệu về ứng dụng, được đặt tên.
Các tệp trên máy tính được lưu trên các phương tiện nhớ ngoài như băng, đĩa từ,…
Đĩa từ được coi như đại diện cho phương tiện nhớ, cho phép truy cập trực tiếp. Điều này
có nghĩa hệ thống tới ngay bản ghi trên tệp mà không cần xét lần lượt một số bản ghi
khác. Băng từ thường được lấy làm ví dụ về phương tiện nhớ tuần tự, có nghĩa người ta
cần xét lần lượt các bản ghi trên tệp trước khi thấy bản ghi cần thiết. Trước khi xây dựng
CSDL với qui mô khoa học, người ta đã từng sử dụng hệ quản trị tệp, gồm các tệp trên
băng từ, đĩa từ, và truy cập nhờ các ngôn ngữ lập trình trong hệ thống điều hành. Còn
CSDL về bản chất cần bộ nhớ truy cập trực tiếp và có hệ thống quản trị độc lập với hệ
thống điều hành máy tính.
Hình 1: Hệ thống quản trị tệp và hệ quản trị CSDL
Hệ thống điều hành máy tính đảm bảo việc vào/ra của dữ liệu. Nó là tập các chương
trình nửa cố định, đảm bảo giao diện giữa chương trình ứng dụng và phần cứng máy tính.
Hệ thống điều hành cho phép chương trình ứng dụng dùng các dịch vụ như quản lý bộ
nhớ, thao tác vào/ra. Còn hệ quản trị CSDL thì tự đảm bảo các dịch vụ này. Dịch vụ
chính trong hệ quản trị CSDL là quản lý các tệp vật lý.
Định nghĩa tệp vật lý:
Tệp vật lý là một phần trên bộ nhớ ngoài dùng để lưu trữ các bản
ghi dữ liệu.
Phần lộ ra của hệ thống điều hành là việc quản lý tệp và quản lý bộ nhớ. Khi máy tính
đọc/ghi dữ liệu, không phải một xâu các byte được xử lý mà là một đoạn dữ liệu có kích

thước cố định. Đoạn này thường được gọi là trang nhớ, hay khối,… Như vậy một trang là
đơn vị vào ra. Khi ghi dữ liệu, dữ liệu được ghi lên trang, khi trang đầy sẽ được chuyển
đến bộ nhớ ngoài. Tương tự, nếu cần đọc vào, máy đọc lên trang rồi sau đó đưa vào bộ
nhớ trong để xử lý.
Mỗi trang trên đĩa có số trang, cho biết vị trí tương đối trên đĩa. Qui ước này cho phép
thông tin cập nhật của một trang được ghi đúng chỗ. Người quản lý đĩa có trách nhiệm
quản lý các số trang và dùng mã chuyên dụng đối với thiết bị để đọc/ghi trang đặc biệt
của đĩa.
Trang: 8
Người dùng hệ thống tệp Người dùng CSDL
Chương trình ứng dụng
Hệ thống điều hành máy tính
Hệ quản trị CSDL
Tệp dữ liệu CSDL
Cơ sở dữ liệu
II. TỔ CHỨC DỮ LIỆU Ở MỨC VẬT LÝ
1. Chỉ số
Định nghĩa chỉ số (index):
Chỉ số là bảng dữ liệu hay cấu trúc dữ liệu dùng để xác định vị trí
của các bản ghi trong tệp theo điều kiện nào đó.
Định nghĩa tổ chức tệp theo chỉ số (indexed file organization):
Tổ chức tệp theo chỉ số là kỹ thuật lưu trữ các bản ghi của tệp theo
cơ chế tuần tự hay không tuần tự, sử dụng bảng chỉ số cho phép
phần mềm truy cập nhanh đến bản ghi cần thiết.
Ví dụ:
Người ta có tập các dòng trong bảng sau:
NHÂN VIÊN Mã nhân viên Tên Tên chi nhánh
17 Đào Thanh Xuân
63 Mơ Bình Minh
44 Mận Thanh Xuân

32 Quít Thanh Xuân
71 Cam Bình Minh
12 Bưởi Sao Sáng
81 Xoài Bình Minh
Giả sử cần tìm nhân viên ở chi nhánh “Sao Sáng” và mỗi bản ghi cần đến một phép
đọc, để tìm thấy dòng tin đầu tiên thỏa điều kiện chúng ta phải mất 6 phép đọc. Nhưng
nếu cần liệt kê tất cả các nhân viên làm ở chi nhánh “Sao Sáng” thì chúng ta phải rà soát
tất cả các dòng tin; dòng nào cũng kiểm tra xem tên chi nhánh là “Sao Sáng” không. Việc
tìm kiếm này sẽ nhanh hơn nếu chúng ta dùng chỉ số theo tên chi nhánh. Chỉ số là tập giá
trị được sắp xếp. Chúng ta có thể hình dung bảng chỉ số như mục lục của cuốn sách, được
xếp theo thứ tự từ vựng, Căn cứ vào thông tin cần tra cứu, chúng ta đến được trang sách
cần thiết.
Nếu mỗi dòng trong CSDL sử dụng một trang nhớ thì chỉ số đối với chi nhánh có dạng
sau:
Hình 2: Bảng chỉ số trỏ đến bộ nhớ.
Trong thí dụ trên, thay vì duyệt nhiều dòng để trả lời câu hỏi, với bảng chỉ số chúng
ta chỉ cần đọc dòng chỉ số, rồi theo con trỏ nhảy đến vị trí cần tìm. Nhưng thí dụ này còn
quá xa thực tế. Với số lượng bản tin như vậy thì thường chỉ chiếm tối đa một trang nhớ
và việc có lập bảng chỉ số hay không có thì thời gian dò tìm cũng chẳng khác biệt nhau là
bao. Tuy nhiên những quan hệ lớn sẽ chiếm nhiều trang đĩa, việc quét toàn bộ quan hệ để
tìm một số dòng sẽ dẫn đến việc tìm trên tất cả các trang, trừ khi chúng ta dùng bảng chỉ
số. Bảng chỉ số có kích thước nhỏ hơn bảng dữ liệu thực, vậy nên đọc và tải bảng chỉ số
sẽ nhanh hơn rất nhiều. Sau khi đọc bảng chỉ số, hệ thống chỉ tìm trong các trang liên
quan đến chỉ số, tức các trang có thể có các bản tin cần tìm. Bảng quan hệ càng lớn, số
các bản tin yêu cầu càng ít thì việc dùng chỉ số càng hiệu quả.
Mọi việc sẽ đơn giản nếu bảng chỉ số của chúng ta chỉ chiếm một trang nhớ. Tuy
nhiên, với các bài toán lớn, bản thân bảng chỉ số đã chiếm nhiều trang. Khi đó thậm chí
Trang: 9
Sao Sáng6Thanh
Xuân1,3,4Bình Minh2,5,7

Trang 6
Trang 1
Trang 2
Trang 3 Trang 4
Trang 5 Trang 7
Cơ sở dữ liệu
cần phải có chỉ số cho các bảng chỉ số. Một kỹ thuật hay được dùng là cây cân bằng, B-
cây, hay cây B (balanced tree).
Hình 3: Bảng chỉ số theo cây cân bằng.
Tổ chức dữ liệu dạng cây đã được giới thiệu như một cấu trúc dữ liệu. Cây chỉ số
sẽ dùng các trang nhớ. Mỗi trang sẽ ghi một số nhất định các chỉ số, chẳng hạn trong thí
dụ mỗi trang ghi được hai chỉ số. Tùy theo thiết kế để tìm kiếm sau này, cây cân bằng có
thể lấy giá trị chỉ số tại gốc là chỉ số đầu tiên; các chỉ số lớn hơn sẽ được lưu trong các
nút phải của cây; chỉ số nhỏ hơn chỉ số tại gốc sẽ được lưu trong nút trái của cây. Riêng
nút gốc cây có một giá trị chỉ số. Tại mỗi nút số con trỏ tùy thuộc vào số chỉ số có trong
từng nút. Nút có một chỉ số sẽ có hai con trỏ, con trỏ trái trỏ đến những nút có giá trị nhỏ
hơn; con trỏ phải trỏ đến những nút có giá trị lớn hơn. Nếu nút có 2 chỉ số thì sẽ có 3 con
trỏ cho nút đó. Con trỏ trái trỏ đến những nút có giá trị nhỏ hơn chỉ số trái; con trỏ phải
trỏ đến những nút có giá trị nhỏ hơn chỉ số phải; con trỏ giữa trỏ đến những nút có giá trị
nằm trong khoảng hai giá trị chỉ số.
Việc tìm kiếm trên cây tùy thuộc theo thủ tục duyệt cây, căn cứ vào thiết kế cây lúc
đầu. Chẳng hạn để tìm dòng có chỉ số 17, từ gốc người ta sang trái do 17<18, rồi thấy
17>10, người ta sang phải. Khi thấy trang với chỉ số 17, người ta theo con trỏ đến được
nơi có dữ liệu cần tìm.
Sở dĩ cây có tên cân bằng là vì độ sâu của nhánh trái và phải là như nhau. Tốc độ
tìm kiếm một phần tử tùy thuộc vào độ sâu của nó. Trong trường hợp chúng ta có thêm
vào hoặc xoá bớt những bản tin thì cây có thể không duy trì được sự cân bằng, dẫn đến
tốc độ tìm kiếm không còn tối ưu như trước. Để khắc phục tình trạng này chúng ta cần
sử dụng thuật toán để sắp xếp lại các chỉ số sau cho cây cân bằng.
* Ưu và khuyết điểm của việc dùng bảng chỉ số:

a. Ưu điểm:
- Tìm kiếm nhanh.
- Có thể kiểm tra sự có mặt của dữ liệu dựa vào bảng chỉ số.
b. Khuyết điểm:
- Chi phí công sức và bộ nhớ cho việc tạo và bảo quản chỉ số.
- Khi cập nhật dữ liệu nhất thiết phải cập nhật cả bảng chỉ số.
- Khi bổ sung giá trị mới, cây chỉ số mất tính cân đối, gây tình tạng phải
nhiều lần tổ chức lại cây.
2. Hàm băm
Định nghĩa tổ chức tệp băm:
Tổ chức tệp băm là cách tổ chức cho phép xác định địa chỉ của mỗi
bản ghi dữ liệu theo thuật toán băm.
Trang: 10
18
8 96
21 238 10
21 33 3710 17 18 19
chỉ số
Trang nhớ
Cơ sở dữ liệu
Định nghĩa thuật toán băm (hashed algorithm):
Thuật toán băm là chương trình chuyển giá trị khoá chính thành số
thứ tự tương đối của bản ghi, tức là địa chỉ tương đối trong tệp.
Vấn đề đầu tiên là chúng ta phải tính toán hàm băm để chuyển đổi các khoá của bản
ghi (các khoá có thể là những số nguyên hay các ký tự ngắn) thành các địa chỉ tương đối
trong tệp. Đây là một tính toán số học có các tính chất tương tự như các bộ phát sinh số
ngẫu nhiên. Chúng ta cần một hàm chuyển đổi các khoá thành các số nguyên trong
khoảng [0..M-1] trong đó M là số mẫu tin có thể chứa vừa đủ trong số lượng không gian
nhớ có sẵn. Vậy nên phương pháp này có đặc trưng là phải biết toàn bộ không gian nhớ
trước khi phân bố cho bất kỳ bản ghi nào.

Ví dụ:
Chúng ta dự định lưu trữ 1000 bản ghi vào trong vùng nhớ có khả năng lưu trữ
1400 bản ghi. Giả sử khoá của các bản ghi có giá trị trong khoảng từ 0 đến 99999, và
không gian nhớ được đánh địa chỉ tương đối từ 0 đến 1399. Hàm băm của chúng ta sử
dụng là:
địa chỉ = phần dư (giá trị khoá / kích thước không gian nhớ)
Hình 4: Phân bố địa chỉ các bản ghi vào trong không gian nhớ
dựa vào hàm băm đã cho.
Yêu cầu đặt ra đối với hàm phân bố địa chỉ (hàm băm) là không quá phức tạp,
nhưng đảm bảo các bản ghi được phân bố rải khắp không gian nhớ. Một hàm băm lý
tưởng làm một hàm mà dễ dàng tính và gần giống như một hàm “ngẫu nhiên”.
Do khả năng của hàm địa chỉ mà đôi khi hai hay nhiều bản ghi được phân bố cùng
một địa chỉ. Các bản ghi trùng địa chỉ được gọi là “bản ghi tràn”. Vấn đề tiếp theo là
chúng ta cần phải giải quyết tình trạng xung đột địa chỉ, có thể thực hiện theo các phương
pháp sau:
a. Sử dụng vùng nhớ riêng cho các bản ghi tràn:
Khi lưu trữ, nếu chúng ta truy cập đến một vị trí trong không gian nhớ mà ở
đó đã có bản ghi khác thì dùng con trỏ để đi sang vùng nhớ tràn cho các bản ghi, lưu trữ
bản ghi này vào đó. Khi muốn tìm bản ghi tràn vừa mới được lưu trữ, chúng ta cũng đi
theo con trỏ vật lý đó.
Ví dụ:
Cần lưu trữ thông tin của 3 người vào các ngăn chứa 15 bản ghi. Khoá bản
ghi là tuổi của những người này. Giả sử hàm băm có dạng:
địa chỉ = phần dư (tuổi / 15)
Trang: 11

123
113
0
5600



1523…
92513
……
2800
Cơ sở dữ liệu
Lúc đó các bản ghi được lưu trữ như hình sau:
Hình 5: Sử dụng vùng nhớ tràn để xử lý các bản ghi tràn
trong tổ chức ngẫu nhiên dùng hàm băm
b. Lưu trữ các bản ghi tràn trên cùng không gian nhớ:
Khi xảy ra xung đột các bản ghi, người ta không trỏ tới vùng nhớ tràn riêng
mà tiếp tục dò tìm trong không gian nhớ để tìm một chỗ cho bản ghi tràn. Có thể tìm
xuống dưới hay lên trên để tìm vị trí khác cho bản ghi tràn. Giữa bản ghi thứ nhất và bản
ghi sau có cùng địa chỉ được nối với nhau bằng con trỏ để truy cập dễ dàng.
Ví dụ:
Hình 6: Lưu trữ trên không gian nhớ.
III. ĐIỀU KHIỂN TƯƠNG TRANH
1. Giao tác (transaction)
a. Định nghĩa:
Giao tác là đơn vị hoạt động cụ thể (tập các thao tác) cần được thực hiện trọn
vẹn hoặc không được thực hiện gì cả trong hệ thống tính toán.
b. Ví dụ:
Giả thiết có hai tài khoản ngân hàng trong CSDL và người ta muốn chuyển tiền
từ tài khoản này sang tài khoản kia. Yêu cầu này có nghĩa giảm số dư của một tài khoản
với số lượng bằng lượng tăng số dư cho tài khoản thứ hai. Hai phép toán được thực hiện
tách rời. Trong CSDL trên SQL, câu lệnh như sau:
UPDATE tài khoản
SET số dư = số dư – 100
WHERE số tài khoản = 10002;

UPDATE tài khoản
SET số dư = số dư + 100
WHERE số tài khoản = 20002;
Hai đoạn lệnh thực hiện việc chuyển 100 từ tài khoản 10002 sang tài khoản
20002. Hai đoạn này thực hiện hai giao tác đơn.
Trang: 12
Titi, 30, 11 Hàng Đồng
Tutu, 32, 15 Hàng Quạt
Toto, 47, 12 Hàng chuối
Hàm băm
Không gian
nhớ chính
0. Titi
1.
2. Tutu
Không gian
nhớ bổ sung
0. Titi
1.
2. Toto
Titi, 30, 11 Hàng Đồng
Tutu, 32, 15 Hàng Quạt
Toto, 47, 12 Hàng chuối
Hàm băm
Không gian
nhớ chính
0. Titi
1.
2. Tutu
3. Toto

Tata, 33, 12 Hàng mía
Cơ sở dữ liệu
c. Tính chất:
Giao tác phải đảm bảo 4 tính chất:
- Tính nguyên tố (atomicity): Giao tác phải được thực hiện hoàn toàn hoặc
không được thực hiện gì cả.
- Tính nhất quán (consistency): Giao tác phải đảm bảo tính nhất quán của
CSDL. Nếu CSDL đã nhất quán khi giao tác bắt đầu, nó vẫn phải nhất quán sau khi giao
tác chấm dứt.
- Tính riêng biệt (isolation): Mặc dù nhiều giao tác có thể được khai thác
cạnh tranh nhau nhưng phải bảo đảm đối với mỗi cặp giao tác T
i
và T
j
, hoặc T
j
kết thúc
trước khi T
i
bắt đầu, hoặc T
j
phải bắt đầu sau khi T
i
đã kết thúc. Phần này sẽ được bàn
nhiều trong phần 2 (điều khiển tương tranh).
- Tính bền vững (durability): Kết quả của một giao tác đã hoàn tất phải luôn
được bảo lưu, cho dù hệ thống có thể bị trục trặc nào đó.
d. Trạng thái của giao tác:
Giao tác có 3 trạng thái sau:
- Hoàn tất (commit): Sau khi thực hiện giao tác xong, HQTCSDL kiểm tra

thấy thỏa các ràng buộc toàn vẹn và các ràng buộc khác, giao tác được xác nhận là đúng.
CSDL sẽ ở trạng thái mới, nhận những kết quả do giao tác đem lại.
- Thoái bộ (roll back/rollback): Các ràng buộc không thỏa, hoặc do người sử
dụng không muốn chấp nhận giao tác nên mặc dù giao tác đã thực hiện, CSDL phải trở về
trạng thái ban đầu.
- Thất bại (fail): Giao tác không thực hiện được trọn vẹn.
2. Điều khiển tương tranh
- Vấn đề tương tranh thường xẩy ra trong hệ thống nhiều người dùng. Nhiều người
cùng truy cập đồng thời một số đối tượng như các dòng quan hệ, các bảng, các thuộc tính
hay khung nhìn,… Chúng ta cần điều khiển tương tranh để các giao tác có thể thực hiện
một cách song hành nhằm tăng hiệu xuất sử dụng tài nguyên máy tính, tăng hiệu xuất của
CSDL. Nếu không có điều khiển tương tranh, việc truy cập đồng thời của nhiều người
dùng sẽ đe dọa tính toàn vẹn dữ liệu. Để minh họa ý này, dưới đây chúng ta xem xét một
số nguy cơ khi khai thác các giao tác theo cách tương tranh.
a. Mất dữ liệu:
Giả sử chúng ta có hai giao tác được đặt tên là TA và TB gồm các lệnh:
TA: UPDATE tài khoản
SET số dư = số dư + 100
WHERE số tài khoản = 10002;
TB: UPDATE tài khoản
SET số dư = số dư + 200
WHERE số tài khoản = 10002;
Thi hành đúng thì tài khoản 10002 sẽ tăng lên 300. Tuy nhiên khi hai giao tác
thực hiện đồng thời, có thể xảy ra sự cố. Xét thao tác cập nhật trong ngôn ngữ SQL người
ta thấy chúng gồm các phép toán sau:
1. Tới bản ghi cần thiết.
2. Thay đối giá trị trong bộ nhớ trong.
3. Ghi lại vào bản ghi ban đầu.
Cả hai giao tác trên đều truy cập bản ghi ứng với tài khoản 10002, cùng thay đổi
và cùng ghi lại vào bản ghi đó. Như vậy có thể xẩy ra các sự kiện theo thời gian như sau:

1. TA đọc bản ghi tài khoản 10002, giá trị số dư trên đó là 150.
2. TB đọc bản ghi tài khoản 10002, có số dư là 150.
3. TA tăng số dư thành 250 = 150 + 100. Việc này thực hiện trong bộ nhớ
trong với biến trung gian ứng với số dư.
4. TB tăng số dư thành 350 = 150 + 200.
5. TA ghi giá trị trung gian vào CSDL, tức cập nhật bản ghi với số dư là 250.
Trang: 13
Cơ sở dữ liệu
6. TB ghi lại số dư là 350.
Thực tế số dư tài khoản phải là 450. Điều này có nghĩa cập nhật của TA đã bị
mất.
b. Không khẳng định sự phụ thuộc:
Khi việc cập nhật CSDL chưa được khẳng định thì vấn đề đảm bảo sự phụ thuộc
vốn có giữa các dữ liệu có thể bị vi phạm. Giao tác khác có thể sử dụng dữ liệu chưa
được khẳng định. Khi có sự cố, quá trình khôi phục quay lui bằng ROLLBACK (trạng
thái thoái bộ) được thực hiện thì khi giao tác làm lại lần hai sẽ thao tác trên các thông tin
không đúng. Chẳng hạn có hai giao tác TA, cập nhật dữ liệu và TB, xóa dữ liệu.
TA: UPDATE tài khoản
SET số dư = số dư – 100
WHERE số tài khoản = 10002;
IF số dư < 0 THEN rollback ELSE commit;
TB: DELETE FROM tài khoản
WHERE số dư < 0;
Giao tác thứ nhất TA khấu trừ số dư 100 và sẽ khôi phục nếu số dư âm. Giao tác
thứ hai TB, kiểm tra để xóa các tài khoản có số dư âm. Có thể xảy ra quá trình sau:
1. TA đọc bản ghi tài khoản 10002, giá trị số dư trên đó là 50.
2. TA giảm số dư, thu được kết quả trong bộ nhớ trong là –50.
3. TA ghi vào CSDL, số dư là –50.
4. TB tìm thấy tài khoản 10002 có số dư âm.
5. TB xóa tài khoản 10002 theo điều kiện đã định.

6. TA khôi phục cập nhật, nhưng tài khoản đã bị hủy.
Chúng ta gọi đây là hiện tượng không khẳng định phụ thuộc. Giao tác TB đã
truy cập dữ liệu mà dữ liệu này chưa được khẳng định. Trường hợp này còn nguy hiểm
hơn cả trường hợp mất dữ liệu.
c. Phân tích không bền vững:
Tính không bền vững của dữ liệu thường xẩy ra trong trường hợp truy cập tập
các bản ghi mà một số bản ghi này đang được giao tác khác cập nhật. Giả sử có hai giao
tác TA và TB với các lệnh sau:
TA: SELECT sum(số dư)
FROM tài khoản;
TB: UPDATE tài khoản
SET số dư = số dư - 100
WHERE số tài khoản = 10003;
UPDATE tài khoản
SET số dư = số dư + 100
WHERE số tài khoản = 10001;
Giao tác thứ hai có nhiệm chuyển tiền từ tài khoản 10003 sang tài khoản 10001,
không tác động đển tổng dư các tài khoản mà giao tác thứ nhất cần tính. Tuy vậy hai giao
tác thực hiện đồng thời vẫn xảy ra vấn đề, chẳng hạn ban đầu số dư của cả bốn tài khoản
đều là 100:
1. TA tìm tài khoản 10001, số dư là 100. Tổng là 100.
2. TB tìm tài khoản 10003, số dư là 100.
3. TA tìm tài khoản 10002, số dư là 100. Tổng cộng dồn là 200.
4. TB cập nhật tài khoản 10003, gán số dư là 0.
5. TA tìm tài khoản 10003, do số dư 0 nên tổng dư cộng dồn vẫn là 200.
6. TB tìm tài khoản 10001, số dư là 100.
7. TA tìm tài khoản 10004, số dư 100. Tổng cộng dồn là 300.
8. TB cập nhật tài khoản 10001, nâng số dư thành 200.
Đúng ra số dư phải 400 vì giao tác thứ hai không ảnh hưởng đến tổng chung. Do
giao tác TB xen vào các phép toán của giao tác TA nên kết quả không theo ý muốn.

Trang: 14
Cơ sở dữ liệu
Chúng ta gọi hiện tượng này là phân tích không bền, tức thời điểm này phân tích thấy
400, thời điểm khác lại là 300.
- Để tránh các hiện tượng như trên người ta dùng kỹ thuật khoá. Việc khoá qui định
bất kỳ dữ liệu nào được người dùng tìm kiếm để cập nhật cần được khoá lại, hay từ chối
mọi truy cập của người dùng khác, cho đến khi việc cập nhật hoàn tất hay bị hủy bỏ.
- Trong cùng một thời điểm, nếu hai giao tác cùng truy cập một đối tượng thì một
trong hai giao tác phải đợi giao tác kia giải phóng khoá. Theo giao thức này, sẽ hình
thành một hàng đợi các giao tác có cùng yêu cầu.
- Tuy nhiên không phải lúc nào cũng cần khoá, khi cả hai giao tác chỉ cần đọc dữ
liệu. Thực chất việc khoá chỉ thích hợp cho nhu cầu cập nhật dữ liệu. Vì vậy người ta tạo
ra hai loại khoá: khoá S (shared) dùng cho các giao tác có nhu cầu đọc dữ liệu; khoá X
(exclusive) dùng cho các giao tác có nhu cầu cập nhật dữ liệu. Người ta có giao thức khoá
sau:
+ Khi một đối tượng có khoá S, các yêu cầu khoá S khác có thể truy cập đối
tượng này. Giao tác cần đối tượng này theo khoá X cần đợi tất cả các khoá S giải phóng
đối tượng này.
+ Khi đối tượng có khoá X, người ta không tiến hành khoá nào khác trên đối
tượng này. Tất cả các giao tác yêu cầu khoá, cả X lần S đều phải đợi cho đến khi khoá X
được giải phóng.
- Tuy nhiên, hệ thống cần lưu ý thời gian các khoá được giải phóng. Chẳng hạn có
hai giao tác TA và TB:
1. TA khoá S đối tượng 1, khoá S đối tượng 2, rồi khoá X đối tượng 1.
2. TB khoá S đối tượng 1, khoá X đối tượng 1, rồi khoá S đối tượng 2.
Giả sử chúng ta cho giải phóng đối tượng ngay sau khi đã kết thúc công việc liên
quan đến nó và giao tác TA yêu cầu khoá trước, có thể xảy ra các dãy sự kiện sau nếu hai
giao tác thực hiện đồng thời:
1. TA khoá S đối tượng 1.
2. TB khoá S đối tượng 1.

3. TA giải phóng khoá S trên đối tượng 1. Nó khoá S đối tượng 2.
4. TB giải phóng khoá S trên đối tượng 1.
5. TB khoá X đối tượng 1. Việc này được phép do TA và TB đã giải phóng đối
tượng 1.
6. TA giải phóng khoá S trên đối tượng 2. TA ở trạng thái đợi khoá X đối tượng
1.
7. TB giải phóng khoá X trên đối tượng 1. Đặt khoá S lên đối tượng 2.
8. TA khoá X đối tượng 1.
9. TB giải phóng khoá S trên đối tượng 2.
10. TA giải phóng khoá X trên đối tượng 1.
Như vậy TB đã cập nhật đối tượng 1 trước TA. Điều này trái với giả thuyết TA là
giao tác trước về logic phải được thực hiện trước. Để đảm bảo được lịch tuần tự người ta
dùng giao thức khoá hai pha. Giao thức này qui định một giao tác không được khoá một
đối tượng khi nó đã giải phóng đối tượng này.
Định nghĩa Giao thức khóa hai pha:
Giao thức khoá hai pha là thủ tục yêu cầu khoá các giao tác cần khoá
trước khi mở khoá bất kỳ giao tác nào.
Trang: 15
Cơ sở dữ liệu
CHƯƠNG III:
MÔ HÌNH QUAN HỆ
I. KHÁI NIỆM CƠ BẢN
1. Bảng quan hệ
- Bảng quan hệ là hình ảnh trực quan của quan hệ. Nó gồm các dòng và các cột: các
cột ứng với các thuộc tính, các dòng ứng với các bộ; dùng để lưu trữ thông tin của quan
hệ.
- Ví dụ:
NHANVIEN Manv Tennv TenCN
17 Đào Thanh Xuân
63 Mơ Bình Minh

44 Mận Thanh Xuân
32 Quít Thanh Xuân
71 Cam Bình Minh
12 Bưởi Sao Sáng
81 Xoài Bình Minh
- Không được có hai dòng giống nhau trên cùng một bảng.
2. Bộ
Là một dòng của bảng quan hệ. Nó gồm tập tất cả các thuộc tính trong bảng quan
hệ.
Ví dụ:
(17, Đào, Thanh Xuân) là một bộ của quan hệ NHANVIEN.
3. Sơ đồ quan hệ
Tập hợp gồm tên các thuộc tính
R(A
1
, A
2
,…, A
n
)
được gọi là sơ đồ quan hệ hay lược đồ quan hệ.
Ví dụ:
NHANVIEN(Manv,Tennv,TenCN) là sơ đồ quan hệ của Nhân Viên.
4. Miền giá trị và thuộc tính
Miền là phạm vi giá trị có thể dùng cho một thuộc tính. Nó phải nhận giá trị đơn.
Miền tương tự về mặt khái niệm với kiểu dữ liệu trong lập trình. Cũng như kiểu dữ liệu,
miền không chỉ xác định tập các giá trị gán cho thuộc tính, mà còn xác định các thao tác
được phép sử dụng trên các dữ liệu. Chẳng hạn đối với dữ liệu số chúng ta mới có thể áp
dụng các phép toán số học, cộng, trừ, nhân, chia,… Nếu nhìn khía cạnh khác, miền còn
có ý nghĩa ngữ nghĩa. Chẳng hạn cân nặng và chiều cao của một người đều nhận giá trị

số, nhưng hai số này không thể so sánh với nhau được.
Khi xác định một thuộc tính người ta cần tính đến tên và miền của thuộc tính. Các
giá trị gán cho thuộc tính cần thỏa mãn các ràng buộc về miền. Chẳng hạn tuổi của một
người được thể hiện bằng số, và nhận giá trị từ 1 đến 300.
Giả sử D
i
là miền giá trị của thuộc tính A
i
, ta viết:
D
i
= dom(A
i
) i = 1..n
Các D
i
(i=1..n) không nhất thiết phải khác nhau, có nghĩa là các thuộc tính khác
nhau có thể lấy trị trên cùng một miền giá trị. Miền giá trị không được chứa giá trị rỗng.
5. Giá trị rỗng
Giá trị rỗng là giá trị có thể gán cho một thuộc tính khi không dùng giá trị khác
được, hay khi người ta chưa biết giá trị cần gán.
NULL là giá trị đặc biệt, với nghĩa “không giống bất kỳ giá trị nào”, thậm chí
không giống cả giá trị rỗng khác. Hai nhân viên tại đơn vị có giá trị rỗng có thể không
cùng đơn vị.
Trang: 16
Cơ sở dữ liệu
6. Khoá của quan hệ
a. Khoá (khoá chính – primary key)
Khoá của quan hệ là một tập nhỏ nhất các thuộc tính mà các giá trị của các thuộc
tính này dùng để phân biệt các bộ với nhau.

b. Siêu khoá
Là một tập thuộc tính có chứa khoá. Như vậy, khoá là một trường hợp có chứa
khóa.
c. Khoá ngoại
Là một tập thuộc tính không phải là khoá (primary key) của quan hệ R, nhưng là
khoá của quan hệ S khác (R≠S). Lúc này quan hệ S gọi là quan hệ cha, R gọi là quan hệ
con.
II. RÀNG BUỘC TOÀN VẸN TRÊN CSDL QUAN HỆ
1. Khái niệm chung
Ràng buộc toàn vẹn trên CSDL quan hệ giúp cho ứng dụng trở nên thực tế hơn, hợp
lý hơn và nhất quán hơn. Chẳng hạn ngày sinh không thể lớn hơn ngày tháng hiện tại,
điểm không thể vượt quá 10. Các ràng buộc này kiểm tra một bộ trước khi thuộc về một
quan hệ, kiểm tra các thao tác cập nhật trên quan hệ.
2. Ràng buộc trên một quan hệ
a. Ràng buộc về miền giá trị
Đây là loại ràng buộc xác định các giá trị dữ liệu nhập vào có hợp với kiểu dữ
liệu và phạm vi giá trị của thuộc tính qui định hay không.
Ví dụ: Cho sơ đồ quan hệ:
KQMH(maSV, mhoc, diem)
RB: diem >= 0 và <=10
b. Ràng buộc về thuộc tính
Ràng buộc về thuộc tính là ràng buộc về dữ liệu giữa các thuộc tính với nhau
trong một quan hệ.
Ví dụ: Cho sơ đồ quan hệ:
DATHANG(SoĐH, ngayĐ, Hang, SLĐ, ngayG)
RB: ngayĐ <= ngayG
c. Ràng buộc liên bộ
Ràng buộc liên bộ là ràng buộc về dữ liệu giữa các dòng (bản tin) trên một quan
hệ.
Ví dụ: Cho sơ đồ quan hệ:

RUTTIEN(SoRT, ngayR, Sotien, TK)
RB: Một ngày không được rút quá một lần cho một tài khoản.
d. Ràng buộc về khoá
Khoá chính không được mang trị rỗng (NULL), do đó một bộ có khoá mang trị
rỗng sẽ không được thêm vào quan hệ.
3. Ràng buộc trên nhiều quan hệ
a. Ràng buộc tham chiếu (Ràng buộc về khoá ngoại)
- Ràng buộc tham chiếu là qui định cho biết hoặc là giá trị của khoá ngoại cần
khớp với một trong những giá trị khoá chính của quan hệ cha, hoặc là giá trị khoá ngoại
là rỗng.
Ví dụ: Cho hai quan hệ:
NHANVIEN maNV tenNV maDV
001 Đào BH
002 Quít KT
003 Mận NC
Trang: 17
Cơ sở dữ liệu
DONVI maDV tenDV
BH Bán hàng
KT Kế toán
NC Nghiên cứu
Theo hai bảng quan hệ trên thì maDV là khoá ngoại của bảng NHANVIEN và
là khoá chính của bảng DONVI. Giả sử chúng ta thêm bộ (004, Bưởi, QL) vào bảng
NHANVIEN thì sẽ vi phạm ràng buộc toàn vẹn tham chiếu vì trong bảng DONVI không
có đơn vị với mã số QL. Nếu chúng ta thêm bộ (QL, Quản lý) vào bảng DONVI trước
việc thêm bộ (004, Bưởi, QL) vào bảng NHANVIEN thì việc này không xâm phạm ràng
buộc toàn vẹn.
- Tính toàn vẹn tham chiếu liên quan đến vấn đề đặc biệt về sự nhất quán, đảm
bảo tính toàn vẹn khi cập nhật thông tin, tức thêm, xoá hay sửa các dòng của bảng quan
hệ. Chẳng hạn khi chúng ta sửa mã đơn vị trong bảng đơn vị thì không thể không cập

nhật giá trị này trong bảng nhân viên. Do vậy khi cập nhật thông tin, chúng ta thực hiện
theo ba chiến lược sau:
* Hạn chế (Restriction):
Với chiến lược hạn chế, người ta cấm bất kỳ thay đổi nào đối với khoá
chính nếu có khoá ngoại tham chiếu đến nó. Do vậy yêu cầu xoá mã số NC hay thay NC
bằng một mã khác là không được phép.
* Thông tầng (Cascade):
Theo nguyên tắc thông tầng, khi cần cập nhật tại một dòng của bảng quan
hệ cha, chúng ta cần lần lượt thực hiện cùng phép cập nhật ấy tại các dòng của các bảng
con liên quan. Chẳng hạn thay đối dòng có mã đơn vị là NC thì không những thay đổi tại
bảng DONVI mà còn thay đổi tại bảng NHANVIEN.
* Thiết lặp giá trị rỗng:
Theo nguyên tắc thiết lặp giá trị rỗng, khi cập nhật một dòng của bảng
quan hệ cha, chúng ta cần gán giá trị NULL cho tất cả các khoá ngoại của các bảng liên
quan.
Chú ý: Khi có sự thay đổi các giá trị trong một bảng gây ảnh hưởng đến khoá
ngoại của bảng khác thì hệ thống cần đề xuất các lựa chọn để người dùng quyết định cập
nhật khoá ngoại hay chuyển về giá trị rỗng. Tác động ảnh hưởng này được nhìn theo một
chiều; chỉ các khoá ngoại của bảng NHANVIEN thay đổi theo các khoá chính của bảng
DONVI. Tuy nhiên chúng ta có thể đề cập các trường hợp mà việc thay đổi của khoá
ngoại gây ảnh hưởng đến bảng dữ liệu kia (bảng quan hệ cha). Ngoài ra, việc xoá các
dòng trong bảng NHANVIEN có gây ảnh hưởng ngược đến bảng DONVI không?
Nhìn chung tính toàn vẹn tham chiếu yêu cầu các khoá ngoại cần cập
nhật theo các phép toán thực hiện trên khoá chính của bảng liên quan. Nếu không đảm
bảo được việc cập nhật hợp lý thì cần gán giá trị rỗng cho khoá ngoài.
b. Ràng buộc liên thuộc tính - liên quan hệ
Ràng buộc liên thuộc tính – liên quan hệ là ràng buộc về dữ liệu giữa các thuộc
tính trên nhiều quan hệ khác nhau.
Ví dụ: Cho hai sơ đồ quan hệ:
ĐH(SoĐH, ngayĐ, hang, SLĐ)

GH(SoGH, ngayG, SoĐH, SLG)
RB: ngayĐ <= ngayG
c. Ràng buộc liên bộ - liên quan hệ
Ràng buộc liên bộ – liên quan hệ là ràng buộc về dữ liệu giữa các dòng (bộ) trên
nhiều quan hệ khác nhau.
Trang: 18
Cơ sở dữ liệu
Ví dụ: Cho hai sơ đồ quan hệ:
SV(maSV, htenSV, NS, maL)
LOP(maL, tenL)
RB: Một lớp phải có ít nhất 10 sinh viên
d. Ràng buộc thuộc tính tổng hợp
Ràng buộc này được xác định trong trường hợp một thuộc tính A của quan hệ R
được tính toán từ các thuộc tính của các quan hệ khác.
Ví dụ 1: Cho hai sơ đồ quan hệ:
ĐH(SoĐH, ngayĐ, SLĐ, SLcon)
GH(SoGH, ngayG, SoĐH, SLG)
RB: Slcon = SLĐ - tổng SLG.
Ví dụ 2: Với hai sơ đồ:
HĐ(SoHĐ, ngayHĐ, ngayxuat, tongTG)
CTHĐ(SoCT, ngay, SoHĐ, SL, ĐG)
RB: Tổng trị giá của một hoá đơn = tổng (SL x ĐG).
e. Ràng buộc do chu trình
Một CSDL có thể được biểu diễn bằng một đồ thị vô hướng. Trong đồ thị này,
ta có 2 loại nút: nút thuộc tính và nút quan hệ. Một cung vô hướng trong đồ thị nối một
nút thuộc tính A với một nút quan hệ R khi A thuộc R.
Ví dụ: Đồ thị biễu diễn 4 sơ đồ quan hệ sau:
ĐEAN(soĐA, tenĐA, phongPT)
NV(maNV, tenNV, maP)
PCONG(maNV, soĐA)

PHONG(maP, tenP)
Trong hình vẽ trên, chúng ta nhận thấy đồ thị có chứa một chu trình. Như
vậy, CSDL sẽ phải có một ràng buộc toàn vẹn thuộc 1 trong 3 trường hợp sau:
* a ≠ b
VD: Nhân viên có thể được phân công đề án không thuộc phòng nào
phụ trách.
* a ≡ b
VD: Nhân viên thuộc phòng nào thì phải tham gia tất cả các đồ án
do phòng phụ trách.
a ≡ PCONG[soĐA, maNV]
b ≡ (NV ⋈ ĐEAN)[soĐA, maNV]
⇒ Dẫn đến trùng lắp thông tin.
Trang: 19
ĐEA
PCONG
NV
PHONG
soĐA
maNV
maP
phongPT
(b)
(a)
Cơ sở dữ liệu
* a

b
VD: Một nhân viên chỉ được phân công làm đồ án do phòng mình
phụ trách.
III. ĐẠI SỐ QUAN HỆ

1. Phép chọn
a. Mục đích:
Phép chọn là phép tính lọc ra một tập con các bộ của quan hệ R đã cho, thỏa
biểu thức điều kiện cho trước.
b. Định nghĩa:
Cho quan hệ R trên tập thuộc tính U – ký hiệu R(U) và biểu thức điều kiện e
(còn gọi là biểu thức lọc hay biểu thức chọn). Phép chọn trên quan hệ R theo điều kiện e,
ký hiệu R(e) cho ta quan hệ P(U) như sau:
P(U) = R(e) = {t ∈ R | Sat(t,e)}
trong đó hàm logic Sat(t,e) kiểm tra bộ t thỏa điều kiện e được xác định như sau:
+ Thay mọi xuất hiện của thuộc tính A trong biểu thức chọn e bằng trị tương
ứng của A trong bộ t, t.A, ta thu được một mệnh đề logic A.
+ Tính trị của b. Nếu là đúng (True) thì bộ t thỏa điều kiện e; ngược lại, nếu
trị b là sai (False) thì bộ t không thỏa điều kiện e.
c. Các phép toán:
- Các toán hạng là hằng hoặc số hiệu thành phần.
- Các phép toán so sánh: <, =, >, ≠, ≤, ≥
- Các phép toán logic: &, ∧, AND (và), ∨, |, OR (hoặc), ¬, !, NOT (phủ định).
d. Ví dụ:
Cho quan hệ:
MONHOC maM tenM soĐVHT coĐA
01 Cơ sở dữ liệu 5 .f.
02 Cấu trúc dữ liệu 4 .f.
03 Phân tích hệ thống 6 .f.
04 Cấu trúc máy tính 4 .t.
Chọn ra các môn có 4 đơn vị học trình và có đề án cho sinh viên thực hiện:
MON_ĐA = MONHOC(soĐVHT = 4 ∧ coĐA)
kết quả:
MON_ĐA maM tenM soĐVHT coĐA
04 Cấu trúc máy tính 4 .t.

2. Phép chiếu
a. Mục đích:
Phép chiếu trên một quan hệ thực chất là loại bỏ đi một số thuộc tính của quan
hệ đó.
b. Định nghĩa:
Phép chiếu quan hệ R(U) trên tập con thuộc tính X ⊆ U, ký hiệu R[X], cho ta
quan hệ P(X) như sau:
P(X) = R[X] = {t.X | t ∈ R}
R[X] được tính theo 2 bước sau:
+ Xoá các cột không thuộc X của bảng R.
+ Xoá bớt các dòng không giống nhau trong bảng kết quả P(X): chỉ giữ lại
một dòng trong số các dòng giống nhau.
Trang: 20
Cơ sở dữ liệu
c. Ví dụ:
Với ví dụ trên, cho biết mã và tên của các môn học:
KQ = MONHOC[maM, tenM]
kết quả:
KQ maM tenM
01 Cơ sở dữ liệu
02 Cấu trúc dữ liệư
03 Phân tích hệ thống
04 Cấu trúc máy tính
3. Phép cộng (hợp)
a. Mục đích:
Phép hợp của hai quan hệ thực chất là phép nối dữ liệu của hai quan hệ; điều
kiện là hai quan hệ này phải có cùng số thuộc tính.
b. Định nghĩa:
Phép cộng hai quan hệ tương thích R(U) và S(U), ký hiệu R+S, cho ta quan hệ chứa
các bộ của mỗi quan hệ thành phần.

P(U) = R+S = {t | t ∈ R ∨ t ∈ S}
c. Ví dụ:
Cho 2 quan hệ sau:
BIENCHE maNV hotenNV chucvu donvi mucLG
001 Lê Văn Sỹ GĐ BGĐ 550
002 Nguyễn Chí Thanh PGĐ BGĐ 500
003 Châu Văn Liêm TP HCTH 480
004 Nguyễn An Ninh PP HCTH 475
005 Phan Đình Phùng HCTH 333
006 Ngô Gia Tự TV 290
HOPĐONG maNV hotenNV chucvu donvi mucLG
011 Lê Văn Tám BV 290
012 Phạm Văn Đồng BV 255
013 Nguyễn Văn Linh ĐTTH 310
014 Kim Đồng ĐTTH 310
Trong cơ quan, có hai loại nhân viên: biên chế và hợp đồng. Danh sách chung
toàn bộ của cơ quan là:
NHANVIEN = BIENCHE + HOPĐONG
kết quả:
NHANVIEN maNV hotenNV chucvu donvi mucLG
001 Lê Văn Sỹ GĐ BGĐ 550
002 Nguyễn Chí Thanh PGĐ BGĐ 500
003 Châu Văn Liêm TP HCTH 480
004 Nguyễn An Ninh PP HCTH 475
005 Phan Đình Phùng HCTH 333
006 Ngô Gia Tự TV 290
011 Lê Văn Tám BV 290
012 Phạm Văn Đồng BV 255
013 Nguyễn Văn Linh ĐTTH 310
Trang: 21

Cơ sở dữ liệu
014 Kim Đồng ĐTTH 310
4. Phép trừ
a. Định nghĩa:
Phép trừ hai quan hệ tương thích R(U) và S(U), ký hiệu R-S, cho ta quan hệ
chứa các bộ của quan hệ R nhưng không có trong S.
P(U) = R-S - {t | t ∈ R, t ∉ S}
b. Ví dụ:
NHANVIEN maNV hotenNV chucvu donvi mucLG
001 Lê Văn Sỹ GĐ BGĐ 550
002 Nguyễn Chí Thanh PGĐ BGĐ 500
003 Châu Văn Liêm TP HCTH 480
004 Nguyễn An Ninh PP HCTH 475
005 Phan Đình Phùng HCTH 333
006 Ngô Gia Tự TV 290
LANHĐAO maNV hotenNV chucvu donvi mucLG
001 Lê Văn Sỹ GĐ BGĐ 550
002 Nguyễn Chí Thanh PGĐ BGĐ 500
003 Châu Văn Liêm TP HCTH 480
004 Nguyễn An Ninh PP HCTH 475
NHANVIEN là quan hệ chứa các bộ về tất cả các nhân viên trong cơ quan, còn
LANHĐAO chỉ liên quan đến những người lãnh đạo. Tìm những nhân viên không là lãnh
đạo trong cơ quan.
KQ = NHANVIEN – LANHĐAO
kết quả:
KQ maNV hotenNV chucvu donvi mucLG
005 Phan Đình Phùng HCTH 333
006 Ngô Gia Tự TV 290
5. Phép giao
a. Định nghĩa:

Phép giao hai quan hệ tương thích R(U) và S(U), ký hiệu R&S, cho ta quan hệ
chứa các bộ xuất hiện đồng thời trong cả hai quan hệ thành phần.
P(U) = R&S = {t | t ∈ R, t ∈ S}
b. Ví dụ:
Cho 2 quan hệ:
NHAHANG ten diachi phuong quan
Huy Hoàng 504 Điện Biên Phủ 14 3
Tương Lai 229 Ngô Chí Thanh 6 5
Sinh Đôi 300 Lý Thái Tổ 6 10
Đông Nam Á 230 Ngô Gia Tự 10 1
KHACHSAN ten diachi phuong quan
Viễn Đông 2 Lê Lợi 5 1
Huy Hoàng 504 Điện Biên Phủ 14 3
Ánh Hồng 151 Đặng Dung 2 PN
Tương Lai 229 Ngô Chí Thanh 6 5
Tìm các nơi vừa là khách sạn, vừa là nhà hàng.
Trang: 22
Cơ sở dữ liệu
NH_KS = NHAHANG & KHACHSAN
kết quả:
NH_KS ten diachi phuong quan
Huy Hoàng 504 Điện Biên Phủ 14 3
Tương Lai 229 Ngô Chí Thanh 6 5
6. Phép kết nối tự nhiên
a. Định nghĩa:
Phép kết nối tự nhiên hai quan hệ R(U) và S(V), ký hiếu R∗S, cho ta quan hệ
chứa các bộ là sự phối hợp của bộ u trong quan hệ R với tất cả các bộ v trong quan hệ S
sao cho các trị trên miền thuộc tính chung của hai bộ này là như nhau.
P(UV) = R∗S = {u∗v | u ∈ R, v ∈ S, u.M = v.M, M = U ∩ V}
Nếu M = U ∩ V = ∅, R∗S sẽ là phép tích Descartes trong đó mỗi bộ của quan

hệ R sẽ được ghép với mọi bộ của quan hệ S.
b. Ví dụ:
Có bảng lịch thi và bảng môn học, hãy tổng hợp để in ra bảng lịch thi gồm mã
môn, tên môn thi, ngày, phòng.
LICHTHI maM ngay phong
01 12/07/1994 B
02 14/07/1994 B
03 16/07/1994 C
04 17/07/1994 D
MONHOC maM tenM
01 Phân tích hệ thống
02 Cơ sở dữ liệu
03 Lập trình C
04 Lập trình Web
kết quả:
KQ maM tenM ngay phong
01 Phân tích hệ thống 12/07/1994 B
02 Cơ sở dữ liệu 14/07/1994 B
03 Lập trình C 16/07/1994 C
04 Lập trình Web 17/07/1994 D
7. Phép chia
a. Định nghĩa:
Cho hai quan hệ R(U) và S(V), phép chia quan hệ R cho S là một quan hệ gồm
các bộ t có M=U-V thuộc tính sao cho:
P(M) = R : S = {t.M | t ∈ R, (t.M)*S ⊆ R, M = U-V}
Trang: 23
Cơ sở dữ liệu
b. Ví dụ:
Cho 2 quan hệ sau:
DM ngay maNV maH TenH DVT

20/09/1994 013 A01 Dầu lửa lít
20/09/1994 013 A02 Xăng lít
20/09/1994 013 B01 Đường trắng kg
20/09/1994 013 B02 Đường vàng kg
21/09/1994 014 A01 Dầu lửa lít
21/09/1994 014 A02 Xăng lít
21/09/1994 014 B01 Đường trắng kg
21/09/1994 014 B02 Đường vàng kg
22/09/1994 015 B01 Đường trắng kg
22/09/1994 015 B02 Đường vàng kg
HANG maH tenH DVT
A01 Dầu lửa lít
A02 Xăng lít
B01 Đường trắng kg
B02 Đường vàng kg
Liệt kê những ngày cùng mã nhân viên mà cả 4 mặt hàng đều có bán:
KQ = DM : HANG
kết quả:
KQ ngay maNV
20/09/1994 013
21/09/1994 014
8. Một số hàm tiện ích
a. Hàm Sum(R, A)
Trả về tổng các giá trị số trong thuộc tính A của quan hệ R:
Sum(R,A) = ∑ (t.A | t є R)
b. Hàm Avg(R, A)
Trả về trung bình cộng các giá trị trong thuộc tính A của quan hệ R:
Avg(R,A) = Sum(R,A) / Card(R) nếu Card(R) ≠ 0.
c. Hàm Max(R, A)
Trả về giá trị lớn nhất trong thuộc tính A của quan hệ R.

d. Hàm Min(R, A)
Trả về giá trị nhỏ nhất trong thuộc tính A của quan hệ R.
e. Attr(R)
Trả về tập thuộc tính của quan hệ R.
f. Hàm Card(R)
Trả về số record có trong R.
g. Hàm Sat(t,e)
Kiểm tra bộ t thoả điều kiện e.
Trang: 24
Cơ sở dữ liệu
9. Một vài ký hiệu khác cho các phép toán quan hệ
Phép toán Ký hiệu Ký hiệu khác
chọn R(e)
σ
e
(R)
chiếu R[X]
Π
x
(R)
kết nối tự nhiên R * S
R ⋈ S
cộng R + S
R ∪ S
giao R & S
R ∩ S
trừ R – S R \ S
chia R : S
R ÷ S
IV. PHÉP TÍNH QUAN HỆ

Trong phần này, chúng ta sẽ đi sâu vào hai khai niệm của phép tính quan hệ đó là
“phép tính quan hệ trên miền” và “phép tính quan hệ trên bộ”.
1. Công thức của phép tính quan hệ (Formulas of Relational Calculus)
Công thức là những biểu thức mà nó biểu diễn những quan hệ, có thể là những
quan hệ không xác định. Mỗi công thức có tập hợp những biến “tự do” (free) tương ứng
với những biến được khai báo là toàn cục trong thủ tục gần ngay. Những biến khác xuất
hiện trong công thức là những biến “giới hạn” (bound) tương tự biến cục bộ trong thủ
tục. Lược đồ quan hệ cho một công thức là một tập hợp những thuộc tính tương ứng với
những biến tự do của công thức.
Tương tự biến toàn cục và biến cục bộ của thủ tục, có thể có hai biến thể cùng tên
X đề cập hai lần khai báo X khác nhau. Một có thể là giới hạn trong khi cái kia là tự do.
Nghĩa là chúng ta phải phân biệt giữa biến thể của những biến giới hạn và biến thể của
những biến tự do.
a. p(X
1
,…,X
n
) là một công thức, trong đó p là biểu tượng vị từ, X
1
,…,X
n
là biến
hoặc hằng. Vị từ p miêu tả một quan hệ; tất cả những biến thể của những biến giữa X
1
,
…,X
n
là tự do.
b. Mỗi phép so sánh toán học X θ Y là một công thức, trong đó X, Y là biến
hoặc hằng; θ là 1 trong 6 toán tử so sánh số học như =, >,… Chúng ta quan tâm đến biến

thể của X và Y (nếu chúng là biến) bởi vì nó tự do trong công thức X θ Y. Trong nhiều
trường hợp, X θ Y miêu tả một quan hệ không xác định, tập hợp tất cả những cặp (X,Y)
mà tham gia trong quan hệ θ. Những công thức mà nối với nhau bằng logical AND định
nghĩa một quan hệ xác định thì công thức X θ Y có thể được xem như toán tử “chọn”.
c. Nếu F
1
và F
2
là những công thức thì F
1
∧ F
2
là một công thức với nghĩa “cả hai
F
1
và F
2
đều đúng”. Tương tự, F
1
∨ F
2
cũng là một công thức với nghĩa “ít nhất 1 trong 2
F
1
hoặc F
2
là đúng”. ¬ F
1
cũng là một công thức với nghĩa “F
1

không đúng”. Lưu ý: Một
thể hiện của biến s có thể giới hạn trong F
1
, nhưng một thể hiện khác của s là tự do trong
F
2
.
d. Nếu F là một công thức thì (∃X) F là một công thức với nghĩa “có ít nhất một
giá trị của X mà khi thay thế nó cho tất cả những thể hiện của X trong F thì làm cho công
thức trở nên đúng”. Chúng ta đọc (∃X) là “Tồn tại X”. (∃X) và (∀X) (được giới thiệu
sau) được gọi là lượng từ. Tất cả những thể hiện của X trong F là bị giới hạn bởi lượng từ
(∃X) và được xem là giới hạn trong công thức (∃X) F.
e. Nếu F là một công thức thì (∀X) F cũng là một công thức với nghĩa “bất kỳ
giá trị nào chúng ta chọn, nếu chúng ta thay thế giá trị đó cho tất cả những thể hiện tự do
của X trong F thì công thức trở nên đúng”. Chúng ta đọc (∀X) là “Với mọi X”. Giống
như (∃X), lượng từ (∀X) ràng buộc tất cả những thể hiện tự do của X trong F, vì vậy
những thể hiện này là bị chặn trong (∀X)F.
Trang: 25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×