SlideShare a Scribd company logo
1 of 59
Download to read offline
Cơ sở dữ liệu
Trang: 1
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.
Cơ sở dữ liệu
Trang: 2
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.
Cơ sở dữ liệu
Trang: 3
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.
Cơ sở dữ liệu
Trang: 4
3. Các thành phần của hệ thống CSDL
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.
Cơ sở dữ liệu
Trang: 5
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
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ụ:
PHÒNG
NHÂN VIÊN DỰ ÁN
CHUYÊN MÔN CẤP DƢỚI THIẾT BỊ
Cơ sở dữ liệu
Trang: 6
- 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
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
Trang: 7
- 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.
Cơ sở dữ liệu
Trang: 8
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.
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
Trang: 9
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í
Sao Sáng 6 
Thanh Xuân 1,3,4 
Bình Minh 2,5,7 
Trang 6
Trang 1
Trang 2
Trang 3 Trang 4
Trang 5 Trang 7
Cơ sở dữ liệu
Trang: 10
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.
18
8 96
21 238 10
21 33 3710 17 18 19
chỉ số
Trang nhớ
Cơ sở dữ liệu
Trang: 11
Đị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)
…
123
113
05600
…
…
1523
…
92513
…
…
2800
Cơ sở dữ liệu
Trang: 12
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.
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
Trang: 13
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 Ti và Tj, hoặc Tj kết thúc
trƣớc khi Ti bắt đầu, hoặc Tj phải bắt đầu sau khi Ti đã 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.
Cơ sở dữ liệu
Trang: 14
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.
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.
Cơ sở dữ liệu
Trang: 15
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.
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.
Cơ sở dữ liệu
Trang: 16
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(A1, A2,…, An)
đƣợ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ử Di là miền giá trị của thuộc tính Ai, ta viết:
Di = dom(Ai) i = 1..n
Các Di (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ị.
Cơ sở dữ liệu
Trang: 17
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
Cơ sở dữ liệu
Trang: 18
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.
Cơ sở dữ liệu
Trang: 19
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.
ĐEAN
PCONG
NV
PHONG
soĐA
maNV
maP
phongPT
(b)
(a)
Cơ sở dữ liệu
Trang: 20
* 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.
Cơ sở dữ liệu
Trang: 21
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
014 Kim Đồng ĐTTH 310
Cơ sở dữ liệu
Trang: 22
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.
NH_KS = NHAHANG & KHACHSAN
Cơ sở dữ liệu
Trang: 23
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}
Cơ sở dữ liệu
Trang: 24
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.
Cơ sở dữ liệu
Trang: 25
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(X1,…,Xn) là một công thức, trong đó p là biểu tƣợng vị từ, X1,…,Xn 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
X1,…,Xn 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 F1 và F2 là những công thức thì F1  F2 là một công thức với nghĩa “cả
hai F1 và F2 đều đúng”. Tƣơng tự, F1  F2 cũng là một công thức với nghĩa “ít nhất 1
trong 2 F1 hoặc F2 là đúng”.  F1 cũng là một công thức với nghĩa “F1 không đúng”.
Lƣu ý: Một thể hiện của biến s có thể giới hạn trong F1, nhƣng một thể hiện khác của s
là tự do trong F2.
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.
Cơ sở dữ liệu
Trang: 26
f. Chúng ta có thể sử dụng các dấu ngoặc để bao các công thức lại khi cần. Nếu
không có dấu ngoặc thì trật tự ƣớc tính là:
, (X), (X) có độ ƣu tiên cao nhất và đƣợc nhóm từ bên phải nhất khi chúng xuất
hiện liên tiếp.
 có độ ƣu tiên kế tiếp và nhóm từ bên trái.
 có độ ƣu tiên thấp nhất và nhóm từ bên trái.
Ví dụ: Công thức:
(X)p(X,Y)  q(Y)  r(X)
nếu đƣợc đặt trong dấu ngoặc đơn thì:
((X)(p(X,Y)))  (q(Y)  r(X))
g. Ví dụ:
Công thức đại số quan hệ:
cust (INAME = „Brie‟ (INCLUDES ⋈ ORDERS)
liên quan đến những quan hệ:
INCLUDES(O#, INAME, QUANTITY)
ORDERS(O#, DATE, CUST)
Trong phép tính quan hệ, toán tử kết nối đƣợc phản ánh bằng logical AND
cùng những biến đƣợc chọn tƣơng ứng với những thuộc tính của những quan hệ tham
gia vào quá trình kết nối. Chúng ta có thể bắt đầu với những công thức includes(N, I, Q)
và orders(N, D, C) tƣơng ứng với những quan hệ INCLUDES và ORDERS với biến N
đƣợc sử dụng trong cả hai biến thể của thuộc tính O#. Khi đó:
INCLUDES ⋈ ORDERS
đƣợc mô tả bằng công thức sau:
includes(N, I, Q)  orders(N, D, C)
Phép chọn ITEM = „Brie‟ đƣợc quản lý bởi logical AND của công thức bên
trên với công thức nhân, I = „Brie‟. Kế đến là phép chiếu trên thuộc tính CUST cho thấy
rằng chúng ta chỉ quan tâm đến sự tồn tại của một vài giá trị cho mỗi biến N, I, Q, và D
để tạo thành công thức:
includes(N, I, Q)  orders(N, D, C)  I = „Brie‟
là đúng. Chúng ta có thể sử dụng lƣợng từ  áp dụng cho công thức trên để nó trở thành
công thức:
(N)(I)(Q)(D) (includes(N, I, Q)  orders(N, D, C)  I = „Brie‟)
Công thức trên chỉ đúng khi và chỉ khi I = „Brie‟. Chúng ta có thể bỏ lƣợng
từ (I) nếu chúng ta thay thế thể hiện của I bằng hằng „Brie‟. Với nổi lực nhỏ, chúng ta
có thể chứng minh 2 công thức là tƣơng đƣơng:
(N)(Q)(D) (includes(N, „Brie‟, Q)  orders(N, D, C))
2. Phép tính quan hệ trên miền
a. Biểu thức của phép tính quan hệ trên miền:
Những công thức có thể đƣợc sử dụng để diễn tả những truy vấn một cách đơn
giản. Mỗi công thức có một hoặc nhiều biến tự do định nghĩa một quan hệ mà những
thuộc tính của nó tƣơng ứng với những biến tự do này. Biểu thức biễu diễn phép tính
trên miền có dạng:
{X1…X2 | F(X1…X2)} (1)
nghĩa là tập hợp những bộ a1…an mà khi chúng ta thay thế ai cho Xi, 1  i  n, công thức
F(a1…an) là đúng.
Ngôn ngữ truy vấn chứa những biểu thức dạng (1) đựơc gọi là phép tính quan
hệ trên miền (DRC). Các biến là những bộ phận của bộ trong khi phép tính quan hệ trên
bộ (giới thiệu sau) thì các biến là đại diện cho tất cả các bộ.
Những quan hệ định nghĩa bởi biểu thức DRC thì không cần phải xác định. Ví
dụ:
{XY | p(X,Y)}
Cơ sở dữ liệu
Trang: 27
là một biểu thức DRC hợp lý định nghĩa tập hợp những cặp (X,Y) mà không có trong
quan hệ của vị từ p.
b. Chuyển từ đại số quan hệ sang phép tính quan hệ trên miền:
Định lý: Mỗi truy vấn có thể biểu diễn trong đại số quan hệ thì có thể biểu
diễn trong phép tính quan hệ trên miền.
- Sau đây chúng ta xem xét 5 trƣờng hợp tƣơng ứng với 5 phép toán cơ bản của
đại số quan hệ:
* Trƣờng hợp 1: E = E1  E2
Chúng ta có thể giả sử rằng E, E1, và E2 tất cả đều có ngôi k. Theo giả
thuyết qui nạp, có công thức DRC F1 và F2 định nghĩa quan hệ E1 và E2 tƣơng ứng.
Bằng cách thay thế những biến tự do vào trong công thức (chúng ta giả sử cả hai công
thức F1 và F2 có những biến là X1…Xk), và những biến này tƣơng ứng với những bộ
phận của các bộ trong E, E1, E2 theo một trật tự đặc biệt đó, X1…Xk. Công thức cho E
là:
F1  F2
* Trƣờng hợp 2: E = E1 – E2
Nhƣ ở trƣờng hợp 1, giả sử có những công thức F1(X1…Xk) và
F2(X1…Xk) tƣơng ứng với những quan hệ E1 và E2. Công thức cho E là:
F1  F2
* Trƣờng hợp 3: E = πi1…ik
(E1)
Đặt quan hệ E1 có ngôi n. Bằng giả thuyết quy nạp, có một công thức
F1(X1,…,Xn) tƣơng ứng với quan hệ E1. Đặt j1,…,jn-k (thuộc danh sách {1,…,n}) mà
không xuất hiện trong khoảng i1,…,ik. Thì một bộ  trong quan hệ E nếu và chỉ nếu có
tồn tại những giá trị của những bộ phận j1,…,jn-k mà chúng ta có thể kết hợp  với
những bộ phận này sinh ra một bộ trong E1. Trong giới hạn phép tính quan hệ, chúng ta
có công thức:
F(Xi1
,…,Xik
) = (Xj1
)(Xj2
)(…)(Xjn-k
)F1(X1,…,Xn)
* Trƣờng hợp 4: E = E1 x E2
Đặt F1(X1,…,Xn) và F2(Y1,…,Ym) là những công thức tƣơng ứng với E1
và E2. Đổi tên biến nếu cần thiết, chúng ta giả sử rằng cả hai không có những biến
chung. Công thức cho E là:
F(X1,…,Xn , Y1,…,Ym) = F1(X1,…,Xn)  F2(Y1,…,Ym)
* Trƣờng hợp 5: E = A(E1)
Chúng ta giả sử A là một phép chọn đơn giản có dạng i  j hoặc i  a.
Theo giả thuyết quy nạp, có một công thức F1(X1,…,Xk) tƣơng ứng cho E1, thì công
thức F1  Xi  Xj hoặc F1  Xi  a tƣơng ứng cho E, tùy thuộc vào dạng của A.
- Ví dụ: Ta có biểu thức đại số:
likes(X,Y) – (broke(X) x y(likes(X,Y)))
áp dụng những trƣờng hợp trên để có công thức DRC:
Đối với toán hạng bên trái của dấu -, chúng ta có công thức DRC
likes(X,Y).
Bây giờ chúng ta tiến hành toán hạng bên phải của dấu -, toán tử bên ngoài
của nó là dấu x. Toán tử này có một toán hạng bên trái với công thức DRC là broke(X).
Toán hạng bên phải của nó có đƣợc bằng cách áp dụng trƣờng hợp 3 cho công thức
likes(X,Y), tạo nên (X)likes(X,Y). Công thức này có biến tự do là Y, công thức
broke(X) có biến tự do là X, vì vậy chúng ta có thể nối kết chúng lại mà không cần đổi
tên để thu đƣợc công thức cho toán hạng bên phải của dấu – là:
broke(X)  (X)likes(X,Y) (2)
Chúng ta cần thấy rằng công thức (2) thể hiện của X trong broke là tự do,
trong khi thể hiện của X trong likes là giới hạn bởi lƣợng từ tồn tại.
Cơ sở dữ liệu
Trang: 28
Công thức cuối cùng thu đƣợc bằng cách áp dụng trƣờng hợp 2 cho
likes(X,Y) và công thức (2) ở trên:
{XY | likes(X,Y)  (broke(X)  (Z)likes(Z,Y)}
3. Phép tính quan hệ trên bộ
a. Biểu thức của phép tính quan hệ trên bộ:
Phép tính quan hệ trên bộ, hay TRC, là một dạng của phép tính quan hệ mà
những biến đại diện cho những bộ chứ không là những bộ phận của bộ. Để đề cập đến
bộ phận i của bộ , chúng ta sử dụng [i]. Công thức của TRC đƣợc định nghĩa một
cách đệ quy, và cấu trúc của công thức TRC là hoàn toàn giống cấu trúc của công thức
DRC. Cơ bản là:
- Nếu p là một vị từ và  là một biến bộ, thì p() là công thức nhân với
nghĩa “bộ  ở trong quan hệ p”.
- X  Y là một công thức nhân nếu  là một toán tử số học, còn X và Y là
những hằng hoặc những tham chiếu bộ phận; Cuối cùng thì nó có dạng [i] trong đó 
là biến bộ, còn i là chỉ số bộ phận hay là thuộc tính.
Nếu F1 và F2 là những công thức TRC,  là một biến bộ xuất hiện tự do trong
F, thì những công thức sau là công thức TRC:
1) F1  F2 4) ()F1
2) F1  F2 5) ()F1
3) F1
Quan hệ nối kết với một công thức TRC đƣợc định nghĩa tƣơng tự nhƣ DRC.
Quan hệ cho F có một bộ phận cho mỗi bộ phận của mỗi biến bộ tự do của F mà đƣợc
đề cập trong F. Giá trị của quan hệ cho F là tập những bộ mà giá trị của nó khi thay thế
cho những bộ phận tƣơng ứng của những biến bộ thì làm cho F đúng. Biểu thức TRC có
dạng:
{ | F()}
trong đó  là biến tự do duy nhất ở trong F. Một cách tự nhiên, biểu thức này định nghĩa
quan hệ của tất cả những bộ  mà làm cho F đúng.
Trong trƣờng hợp ngôi của một biến bộ không đƣợc rõ ràng từ ngữ cảnh,
chúng ta sẽ sử dụng (i)
để diễn tả một biến bộ  có ngôi i. Chúng ta có thể sử dụng chỉ
số trên này khi biến bộ đƣợc định lƣợng bởi lƣợng từ  hay  và bỏ qua nó ở những chỗ
khác.
Ví dụ: Cho công thức DRC sau:
{XY | likes(X,Y)  (broke(X)  (Z)likes(Z,Y)}
Từ công thức này chúng ta có thể chuyển nó thành công thức TRC nếu
chúng ta sử dụng bộ  thay cho (X,Y), v thay cho X trong broke và  thay cho (Z,Y)
trong likes. Kết quả là:
{(2)
| likes()   ((v(1)
)(broke(v)  v[1] = [1])  ((2)
)(likes()  [2] = [2])}
Chú ý cách mà công thức nhân v[1] = [1] thay thế mối quan hệ mà
trong DRC đƣợc biểu diễn bằng biến cùng tên X trong likes và trong broke. Chúng ta
không thể sử dụng  nhƣ đối số cho broke bởi vì broke là một bộ đơn trong khi likes là
một bộ đôi. Tƣơng tự, [2] = [2] thay thế cho biến cùng tên Y.
b.Chuyển từ đại số quan hệ sang phép tính quan hệ trên bộ:
Bổ đề: Bất kỳ một truy vấn có thể biểu diễn trong đại số quan hệ thì có thể biểu
diễn trong phép toán quan hệ trên bộ.
- Sau đây chúng ta xem xét 5 trƣờng hợp tƣơng ứng với 5 phép toán cơ bản của
đại số quan hệ:
Cơ sở dữ liệu
Trang: 29
* Trƣờng hợp 1: E = E1  E2
Có hai công thức dựa trên phép tính quan hệ trên bộ F1 và F2 tƣơng ứng
với E1 và E2. Biến bộ tự do đơn độc trong F1 và F2 là . Bởi vì E1 và E2 có cùng ngôi
nên biến bộ tự do trong F1 và F2 cũng phải có cùng ngôi, vì thế việc đổi tên là đƣợc
phép (nếu cần thiết). Công thức TRC của E là:
F1  F2
* Trƣờng hợp 2: E = E1 – E2
Nhƣ trong trƣờng hợp 1, chúng ta giả sử rằng có 2 công thức F1() và
F2() tƣơng ứng với E1 và E2. Khi đó công thức TRC cho E là:
F1  F2
* Trƣờng hợp 3: E = πi1…ik
(E1)
Đặt F1(v) là một công thức TRC tƣơng đƣơng E1 thì công thức TRC cho
E với biến tự do  là:
(v)(F1(v)  [1] = v[i1]  [2] = v[i2] … [k] = v[ik])
* Trƣờng hợp 4: E = E1 x E2
Đặt F1(v(m)
) và F2((n)
) là công thức TRC tƣơng ứng với E1 và E2. Công
thức TRC cho E với biến tự do độc nhất (m+n)
là:
(v)()(F1(v)  F2()  [1] = v[1] … [m] = v[m]  [m+1] = [1] …
[m+n] = [n])
* Trƣờng hợp 5: E = A(E1)
Chúng ta giả sử A là một phép chọn đơn giản có dạng i  j hoặc i  a. Đặt
F1() là công thức TRC tƣơng ứng với E1. Công thức TRC cho E là:
F1()  [i]  [j] hoặc F1()  [i]  a
phụ thuộc vào dạng của A.
- Ví dụ: Chúng ta hãy chuyển biểu thức đại số sau thành phép tính trên bộ:
likes(X,Y) – (broke(X) x y(likes(X,Y)))
Đầu tiên, 3 thể hiện của những vị từ sẽ đƣợc đổi thành likes(),
broke() và likes(v) theo thứ tự xuất hiện trong biểu thức trên. Đối với y(likes(X,Y)),
chúng ta phải để ra một biến bộ mới  áp dụng trƣờng hợp 3 chuyển thành (v)(likes(v)
 [1] = v[2]).
Đối với broke(X) x y(likes(X,Y)) chúng ta phải đƣa vào một biến
mới, bộ phận thứ nhất của biến đôi này phải cân bằng với bộ phận đơn của  và bộ phận
thứ hai của biến đôi này phải cần bằng với bộ phận đơn của biến . Chúng ta có thể gọi
biến mới này bằng bất cứ tên gì mà chúng ta thích, nhƣng ở đây nó đƣợc gọi là  là
hoàn toàn có ý nghĩa. Lý do là ở bƣớc tiếp theo, chúng ta phải thực hiện phép trừ công
thức nên biến bộ tự do của hai công thức tham gia vào phép trừ phải nhƣ nhau. Vì vậy
chúng ta có:
()()(broke()  ((v)(like(v)  [1] = v[2]))  [1] = [1]  [2] = [1])
Biểu thức cuối cùng là:
{(2)
| likes() (((1)
)((1)
)(broke() 
((v(2)
)(like(v)  [1] = v[2])) 
[1] = [1]  [2] = [1])) }
Cơ sở dữ liệu
Trang: 30
CHƢƠNG IV:
NGÔN NGỮ THAO TÁC DỮ LIỆU
Ở chƣơng III chúng ta đã tìm hiểu về đại số quan hệ và phép tính quan hệ. Trong
chƣơng này chúng ta sẽ xem xét 2 ngôn ngữ hỏi (còn gọi là ngôn ngữ thao tác dữ liệu)
đƣợc xây dựng dựa trên nền tản của hai khái niệm này. Ngôn ngữ hỏi đầu tiên là ngôn
ngữ ALPHA dựa trên phép tính quan hệ, còn ngôn ngữ thứ hai mà chúng ta sẽ xem xét
là ngôn ngữ SQL dựa trên đại số quan hệ. Mục đích của hai ngôn ngữ này là giúp ngƣời
sử dụng tiếp cận với CSDL chẳng hạn nhƣ tìm kiếm, cập nhật,… các bộ của quan hệ.
A. NGÔN NGỮ CON DỮ LIỆU ALPHA
Ngôn ngữ con dữ liệu ALPHA do E.F. Codd đề xƣớng và đƣợc sử dụng khá điển
hình trong các HQTCSDL nhƣ INGRES, DAMAS. Để thuận tiện cho việc trình bày,
cần thống nhất một số quy định sau:
{ }: Biểu thức định nghĩa tập (tức là các quan hệ).
Dấu hai chấm (:): Có ý nghĩa là “sao cho” hoặc “trong đó”.
Hạng thức đứng trƣớc dấu hai chấm biểu thị một bộ của quan hệ và hạng thức
đứng sau dấu hai chấm là điều kiện hoặc tân từ để xác định bộ đứng trƣớc dấu hai chấm.
Mỗi ngƣời sử dụng cần phải có một vùng làm việc W để kết quả tìm đƣợc sẽ xếp
vào vùng này. Vùng này tạo thành miền liên lạc giữa ngƣời sử dụng và CSDL.
I. BIỂU THỨC ALPHA
Biểu thức ALPHA đƣợc ký hiệu là:
{<T1, T2,…, Tn> : P}
trong đó Ti, i = 1..n, là tên các thuộc tính và P là điều kiện hoặc tân từ.
Biểu thức nhằm xác định quan hệ của những n bộ dạng (v1,…,vn), vi 
DOM(Ti), i=1..n, sao cho bộ đó có thỏa tân từ P.
Danh sách <T1, T2,…, Tn> gọi là danh sách đích, P còn gọi là biểu thức đánh giá.
Ví dụ: Một CSDL gồm 3 quan hệ. Quan hệ S (các hãng cung ứng), quan hệ P (các
mặt hàng) và quan hệ SP (các mặt hàng đã cung cấp). Quan hệ S chứa dữ liệu về mỗi
hãng cung ứng: số hiệu hãng, tên hãng, tình trạng và địa chỉ. Quan hệ P chứa dữ liệu về
mỗi mặt hàng: số hiệu mặt hàng, tên mặt hàng, màu sắc, trọng lƣợng và nơi lƣu kho mặt
hàng đó. Quan hệ SP chứa dữ liệu về các mặt hàng đã đƣợc cung cấp: số hiệu hãng cung
ứng, số hiệu mặt hàng và số lƣợng hàng gửi đi.
S S# SNAME STATUS CITY
S1 Smith 20 London
S2 Jones 10 Paris
S3 Blacke 30 Paris
SP S# P# QTY
S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 300
S2 P2 400
S3 P2 200
Cơ sở dữ liệu
Trang: 31
P P# PNAME COLOR WEIGHT CITY
P1 Nut Red 12 London
P2 Bolt Green 17 Paris
P3 Screw Blue 17 Rom
P4 Screw Red 14 London
Ta có biểu thức ALPHA:
{<P.PNAME, P.COLOR> : P.WEIGHT > 12}
câu lệnh tìm kiếm tƣơng ứng với biểu thức này là:
GET W (P.PNAME, P.COLOR) : P.WEIGHT >12
trong đó W là vùng chứa kết quả trả về (tức những record trong quan hệ P thoả
P.WEIGHT > 12), GET là tên lệnh.
II. PHÉP TÌM KIẾM
1. Phép tìm kiếm đơn giản
Ví dụ: Tìm số hiệu mặt hàng đã đƣợc cung ứng:
GET W (SP.P#)
kết quả:
W P#
P1
P2
P3
Chú ý: trong ví dụ trên có 6 giá trị nhƣng trùng lặp nên chỉ có 3 giá trị phân
biệt đƣợc lƣu trong vùng làm việc W.
2. Phép tìm kiếm theo điều kiện
Ví dụ: Tìm số hiệu những hãng ở Paris có tình trạng lớn hơn 20:
GET W (S.S#) : S.CITY = „Paris‟  S.STATUS > 20
kết quả:
W S#
S3
Nhƣ đã quy định ở trên, nhắc lại rằng dấu “:” có nghĩa là “sao cho”, biểu
thức đi sau dấu hai chấm là biểu thức điều kiện hoặc tân từ; danh sách đích chỉ rõ quan
hệ S đƣợc chiếu trên thuộc tính S#. Kết quả chứa trong vùng W là một quan hệ chỉ còn
một thuộc tính.
Chú ý rằng biểu thức điều kiện (tân từ) là một biểu thức có độ phức tạp bất
kỳ đƣợc viết theo những quy tắt thông thƣờng với các phép tính so sánh =, , >, >=, <,
<= và các phép tính của đại số boolean là  (và) , (hoặc), - (không).
3. Phép tìm kiếm có sắp xếp
Ví dụ: Tìm số hiệu và tình trạng của những hãng ở Paris và sắp xếp theo thứ tự
giảm dần của tình trạng:
GET W (S.S#, S.STATUS) : S.CITY = „Paris‟ DOWN STATUS
kết quả:
W S# STATUS
S3 30
S2 10
Bình thƣờng kết của GET là một quan hệ có thể chƣa có thứ tự. Khi ngƣời
sử dụng cần sắp xếp kết quả theo một cách nào đó thì cần chỉ và đƣa vào vùng làm việc
theo cách sau:
Cơ sở dữ liệu
Trang: 32
UP <tên thuộc tính> UP <tên thuộc tính>… (tăng dần) hoặc
DOWN <tên thuộc tính>… (giảm dần)
trong đó ƣu tiên đƣợc tính từ trái qua phải.
4. Phép tìm kiếm bộ phận
Ví dụ: Tìm số hiệu của một hãng bất kỳ ở Paris:
GET W (1) (S.S#) : S.CITY = „Paris‟
kết quả:
W S#
S2
W S#
S3
Số 1 trong ký hiệu W (1) biểu thị một bộ phận. Có nghĩa là đƣa ra đúng
một bộ thỏa điều kiện tìm kiếm, đó là bộ đầu tiên gặp đƣợc.
5. Phép tìm kiếm có sử dụng biến vùng
Ví dụ: Tìm kiếm số hiệu của những hãng có cung ứng mặt hàng P2. Có hai
cách giải quyết:
Cách 1:
GET W (SP.S#) : SP.P# = „P2‟
Cách 2:
RANGE SP X
GET W (X.S#) : X.P# = „P2‟
Hai cách thể hiện trên là hoàn toàn tƣơng đƣơng. Trong câu lệnh thứ
hai, X là một biến vùng. Các giá trị cho phép của biến này là các bộ của SP. Nói chung
biến vùng thƣờng cho phép để viết tắt cho nhanh, gọn. Các trƣờng hợp khác sẽ đƣợc
trình bày sau.
6. Phép tìm kiếm có sử dụng lƣợng từ tồn tại ()
Ví dụ: Tìm tên những hãng nào cung ứng mặt hàng P2:
GET W (S.SNAME) :  SP(SP.S# = S.S#  SP.P# = „P2‟)
kết quả:
W SNAME
Smith
Jones
Blacke
Có thể hình dung câu lệnh GET nhƣ sau: Xét lần lƣợt từng giá trị SNAME
xem có thỏa mãn biểu thức điều kiện không. Nhƣ vậy giá trị đầu là Smith, S# tƣơng ứng
là P1. Có tồn tại một SP với S# = „S1‟ và P# = „P2‟ không? Nếu câu trả lời có thì
„Smith‟ là giá trị cần tìm. Công việc tiếp tục nhƣ vậy cho đến hết.
7. Phép tìm kiếm có sử dụng nhiều lƣợng từ tồn tại ()
Ví dụ: Tìm tên những hãng nào cung ứng ít nhất là một mặt hàng màu đỏ:
GET W (S.SNAME) :  SP(SP.S# = S.S# 
 P(P.P# = SP.P#  P.COLOR = „Red‟))
8. Phép tìm kiếm có sử dụng lƣợng từ với mọi ()
Ví dụ: Tìm tên những hãng không cung ứng mặt hàng P1:
GET W(S.SNAME) : SP(SP.S#  S.S#  SP.P#  „P1‟)
kết quả:
Cơ sở dữ liệu
Trang: 33
W SNAME
Blacke
9. Phép tìm kiếm có sử dụng cả hai lƣợng từ với mọi () và tồn tại ()
Ví dụ: Tìm số hiệu của những hãng nào cung ứng tất cả các mặt hàng:
GET W (SP.S#) : PSP(P.P# = SP.P#)
kết quả:
W S#
S1
B. NGÔN NGỮ SQL (Structured query language)
I. NÉT CHÍNH CỦA NGÔN NGỮ SQL
SQL (trƣớc kia đƣợc gọi là SEQUEL) là một ngôn ngữ hỏi hiện nay rất đƣợc phổ
biến trên thị trƣờng. Câu lệnh đơn giản, gần gũi với ngƣời sử dụng. Nó là một ngôn ngữ
CSDL quan hệ có tính chuyên sâu, đƣợc dùng để định nghĩa, sử dụng và kiểm tra các
CSDL quan hệ.
II. CÁC LỆNH ĐỊNH NGHĨA VÀ CẬP NHẬT SƠ ĐỒ CSDL
(DDL – Data Definition Language)
1. Tạo bảng
a. Cú pháp:
CREATE TABLE | DBF <tên tập tin cần tạo>
(<tên trường 1> <kiểu>[(<độ dài> [,<số chữ số thập phân])] [, <tên trường 2>…])
b. Ý nghĩa:
Tạo một tập tin CSDL (.DBF) với tên cột, kiểu dữ liệu,… đƣợc chỉ định
trong cú pháp câu lệnh.
c. Ví dụ:
CREATE TABLE salary(empl_id chara(5), first_name chara(10), last_name
chara(10), salary number, dept chara(4), job_title chara(3))
2. Xóa bảng
a. Cú pháp:
DROP TABLE <tên bảng> | <tên tập tin> | ? [RECYCLE]
b. Giải thích:
<tên bảng>: tên của bảng cần xoá khỏi CSDL hiện hành và xoá luôn khỏi
ổ đĩa.
<tên tập tin>: tên của một bảng tự do cần xoá khỏi đĩa.
?: Cho hiện ra một hộp thoại Remove để từ đó ta có thể chọn ra một bảng
để xoá.
[RECYCLE]: bảng không bị xoá ngay mà đƣợc đặt trong Recycle Bin.
c. Lƣu ý:
- Khi lệnh DROP TABLE đƣợc phát ra, mọi ràng buộc toàn vẹn (RBTV)
trên bảng cũng bị xoá theo. DROP TABLE cũng tác động đến các bảng khác trong
CSDL hiện hành nếu các bảng đó có các RBTV hoặc các liên kết có dính dáng đến bảng
bị xoá. Các RBTV và các liên kết nói trên sẽ không có hiệu lực nữa.
- Bất kỳ bảng nào bị xoá bằng lệnh này đều không thể phục hồi lại. Ngay cả
khi lệnh SET SAFETY là ON, chúng ta vẫn không đƣợc nhắc nhở gì trƣớc khi bảng bị
xoá.
d. Ví dụ:
DROP TABLE salary
Cơ sở dữ liệu
Trang: 34
3. Sửa cấu trúc bảng
a. Thêm thuộc tính vào bảng đang tồn tại sử dụng lệnh ALTER TABLE với cú
pháp:
ALTER TABLE <tên bảng> ADD <tên trường> <kiểu>
b. Xoá bỏ một thuộc tính khỏi bảng đang tồn tại sử dụng lệnh ALTER TABLE
với cú pháp:
ALTER TABLE <tên bảng> DROP <tên trường cần xoá>
c. Thay đổi kiểu dữ liệu của một thuộc tính:
ALTER TABLE <tên bảng> CHANGE COLUMN <tên trường> TO <kiểu mới>
4. Thêm một bảng tự do vào CSDL hiện hành
a. Cú pháp:
ADD TABLE <tên bảng> | ? [NAME <tên dài>]
b. Giải thích:
<tên bảng>: tên bảng cần thêm vào CSDL.
?: hiện ra một hộp thoại Open để từ đó có thể chọn ra một bảng thêm vào
CSDL.
[NAME <tên dài>]: tên dài của bảng, chứa tối đa 128 ký tự và có thể đƣợc
dùng để thay thế cho tên ngắn.
c. Lƣu ý:
- Sau khi bảng đƣợc thêm vào CSDL, chúng ta có thể thực hiện cùng các
thao tác nhƣ trên bất kỳ bảng nào khác.
- Nó không còn là bảng tự do mà thuộc vào một CSDL. Tuy nhiên, bất kỳ
bảng nào đang ở trong CSDL đều có thể trở thành tự do nếu có lệnh REMOVE TABLE.
- Bảng mà chúng ta muốn thêm vào:
+ Phải là một tập tin DBF hợp lệ.
+ Không thể trùng tên với một bảng đã có trong CSDL đang mở hay đã
tồn tại rồi trong một CSDL khác.
d. Ví dụ:
ADD TABLE salary
5. Tạo một CSDL
a. Cú pháp:
CREATE DATABASE <tên CSDL cần tạo>
b. Ví dụ:
CLOSE ALL
CREATE DATABASE people
6. Xoá một CSDL khỏi đĩa
a. Cú pháp:
DELETE DATABASE <tên CSDL> | ? | [DELETETABLES] [RECYCLE]
b. Giải thích:
<tên CSDL>: tên CSDL cần xoá và phải đảm bảo rằng nó đã đƣợc đóng.
<tên CSDL> có thể chứa cả đƣờng dẫn đến CSDL.
?: Hiện ra hộp thoại Delete để từ đó ta có thể chọn tên CSDL cần xoá khỏi
đĩa.
[DELETETABLES]: Xoá đồng thời vừa CSDL vừa các bảng chứa trong đó.
[RECYCLE]: CSDL sau khi xoá sẽ đƣợc đƣa vào Recycle bin.
c. Ví dụ:
CREATE DATABASES qlnv
CLOSE ALL
DELETE DATABASE qlnv
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu
Cosodulieu

More Related Content

What's hot

Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1pisu412
 
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.comBài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.commai_non
 
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]bookbooming1
 
Bai giang bai 1 tin hoc 12
Bai giang bai 1 tin hoc 12Bai giang bai 1 tin hoc 12
Bai giang bai 1 tin hoc 12Lê Thắm
 
Cơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quếCơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quếTran Tien
 
Bttrinh tin hoc dai cuong
Bttrinh tin hoc dai cuongBttrinh tin hoc dai cuong
Bttrinh tin hoc dai cuongnnguyenphuongg
 
Chuong 1 - CSDL phân tán
Chuong 1 - CSDL phân tánChuong 1 - CSDL phân tán
Chuong 1 - CSDL phân tánduysu
 
Cơ sở dữ liệu phân tán
Cơ sở dữ liệu phân tánCơ sở dữ liệu phân tán
Cơ sở dữ liệu phân tánQuy Nguyen
 
Bai 2 k33103237_pham_thi_ngoc_linh
Bai  2 k33103237_pham_thi_ngoc_linhBai  2 k33103237_pham_thi_ngoc_linh
Bai 2 k33103237_pham_thi_ngoc_linhTin 5CBT
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tanThao Vu
 
Tổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệuTổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệuTonhaco Bestco
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanhJohn Carter
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Nguyễn Trọng
 
Bai giang tin_hoc_ql_2_046
Bai giang tin_hoc_ql_2_046Bai giang tin_hoc_ql_2_046
Bai giang tin_hoc_ql_2_046Heo Mọi
 
Kich ban bai 1 tin hoc 12
Kich ban bai 1 tin hoc 12Kich ban bai 1 tin hoc 12
Kich ban bai 1 tin hoc 12Lê Thắm
 
csdl - buoi1
csdl - buoi1csdl - buoi1
csdl - buoi1kikihoho
 

What's hot (18)

51645016 csdl
51645016 csdl51645016 csdl
51645016 csdl
 
17406 bai giang csdl nang cao
17406   bai giang csdl nang cao17406   bai giang csdl nang cao
17406 bai giang csdl nang cao
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.comBài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
 
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
 
Bai giang bai 1 tin hoc 12
Bai giang bai 1 tin hoc 12Bai giang bai 1 tin hoc 12
Bai giang bai 1 tin hoc 12
 
Cơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quếCơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quế
 
Bttrinh tin hoc dai cuong
Bttrinh tin hoc dai cuongBttrinh tin hoc dai cuong
Bttrinh tin hoc dai cuong
 
Chuong 1 - CSDL phân tán
Chuong 1 - CSDL phân tánChuong 1 - CSDL phân tán
Chuong 1 - CSDL phân tán
 
Cơ sở dữ liệu phân tán
Cơ sở dữ liệu phân tánCơ sở dữ liệu phân tán
Cơ sở dữ liệu phân tán
 
Bai 2 k33103237_pham_thi_ngoc_linh
Bai  2 k33103237_pham_thi_ngoc_linhBai  2 k33103237_pham_thi_ngoc_linh
Bai 2 k33103237_pham_thi_ngoc_linh
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tan
 
Tổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệuTổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệu
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanh
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1
 
Bai giang tin_hoc_ql_2_046
Bai giang tin_hoc_ql_2_046Bai giang tin_hoc_ql_2_046
Bai giang tin_hoc_ql_2_046
 
Kich ban bai 1 tin hoc 12
Kich ban bai 1 tin hoc 12Kich ban bai 1 tin hoc 12
Kich ban bai 1 tin hoc 12
 
csdl - buoi1
csdl - buoi1csdl - buoi1
csdl - buoi1
 

Viewers also liked

Viewers also liked (20)

Aspnet 3.5 -06
Aspnet 3.5 -06Aspnet 3.5 -06
Aspnet 3.5 -06
 
Asp.net 3.5 _8
Asp.net 3.5 _8Asp.net 3.5 _8
Asp.net 3.5 _8
 
Bg access
Bg accessBg access
Bg access
 
Gt pttk he_thong_thong_tin
Gt pttk he_thong_thong_tinGt pttk he_thong_thong_tin
Gt pttk he_thong_thong_tin
 
Asp.net 3.5 _1
Asp.net 3.5 _1Asp.net 3.5 _1
Asp.net 3.5 _1
 
Aspnet 3.5 _05
Aspnet 3.5 _05Aspnet 3.5 _05
Aspnet 3.5 _05
 
Giaotrinh access 2010_full_3531
Giaotrinh access 2010_full_3531Giaotrinh access 2010_full_3531
Giaotrinh access 2010_full_3531
 
Aspnet 3.5 _02
Aspnet 3.5 _02Aspnet 3.5 _02
Aspnet 3.5 _02
 
Aspnet 3.5_03
Aspnet 3.5_03Aspnet 3.5_03
Aspnet 3.5_03
 
Asp.net 3.5 _7
Asp.net 3.5 _7Asp.net 3.5 _7
Asp.net 3.5 _7
 
Huong dan ky dien tu offline
Huong dan ky dien tu offlineHuong dan ky dien tu offline
Huong dan ky dien tu offline
 
Kynangtinhoc
KynangtinhocKynangtinhoc
Kynangtinhoc
 
Mô hình mvc trong ASP
Mô hình mvc trong ASPMô hình mvc trong ASP
Mô hình mvc trong ASP
 
Access
AccessAccess
Access
 
Co so du lieu
Co so du lieuCo so du lieu
Co so du lieu
 
Mô Hình MVC 3.0
Mô Hình MVC 3.0Mô Hình MVC 3.0
Mô Hình MVC 3.0
 
Aspnet 3.5 _04
Aspnet 3.5 _04Aspnet 3.5 _04
Aspnet 3.5 _04
 
Bảng tham chiếu quy đổi một số chứng chỉ ngoại ngữ
Bảng tham chiếu quy đổi một số chứng chỉ ngoại ngữBảng tham chiếu quy đổi một số chứng chỉ ngoại ngữ
Bảng tham chiếu quy đổi một số chứng chỉ ngoại ngữ
 
HTML (Tai lieu Nhat Nghe)
HTML (Tai lieu Nhat Nghe)HTML (Tai lieu Nhat Nghe)
HTML (Tai lieu Nhat Nghe)
 
Làm game animation bằng HTML5/CSS3
Làm game animation bằng HTML5/CSS3Làm game animation bằng HTML5/CSS3
Làm game animation bằng HTML5/CSS3
 

Similar to Cosodulieu

Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệuThành Luân
 
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdfGiáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdfMan_Ebook
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfCriz20
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Designyht4ever
 
Chương 1 . Khái niệm chung về CSDL.pdf
Chương 1 . Khái   niệm chung về CSDL.pdfChương 1 . Khái   niệm chung về CSDL.pdf
Chương 1 . Khái niệm chung về CSDL.pdfBiNgh4
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTMasterCode.vn
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcChu TheKop
 
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2NguynMinh294
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlHuy Feng
 
Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02nguyen minh
 
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]bookbooming1
 
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4caolanphuong
 
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4caolanphuong
 
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4caolanphuong
 

Similar to Cosodulieu (20)

Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệu
 
Csdl
CsdlCsdl
Csdl
 
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdfGiáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
 
Chương 1 . Khái niệm chung về CSDL.pdf
Chương 1 . Khái   niệm chung về CSDL.pdfChương 1 . Khái   niệm chung về CSDL.pdf
Chương 1 . Khái niệm chung về CSDL.pdf
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
 
Com201 slide 1
Com201   slide 1Com201   slide 1
Com201 slide 1
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
 
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdl
 
Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02
 
Data Warehouse
Data WarehouseData Warehouse
Data Warehouse
 
Nghiên Cứu Ứng Dụng Các Kỹ Thuật Của Big Data Trong Hệ Thống Phát Hiện Sao Ch...
Nghiên Cứu Ứng Dụng Các Kỹ Thuật Của Big Data Trong Hệ Thống Phát Hiện Sao Ch...Nghiên Cứu Ứng Dụng Các Kỹ Thuật Của Big Data Trong Hệ Thống Phát Hiện Sao Ch...
Nghiên Cứu Ứng Dụng Các Kỹ Thuật Của Big Data Trong Hệ Thống Phát Hiện Sao Ch...
 
CSDLPT
CSDLPTCSDLPT
CSDLPT
 
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
 
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4
 
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4
 
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4
 
On thi kpdl
On thi kpdlOn thi kpdl
On thi kpdl
 

More from Nguyễn Duy Hưng (10)

Csdl
CsdlCsdl
Csdl
 
Giao trinh word 2003
Giao trinh word 2003Giao trinh word 2003
Giao trinh word 2003
 
Giao trinh access_2003
Giao trinh access_2003Giao trinh access_2003
Giao trinh access_2003
 
Nguyen ly cua he co so du lieu
Nguyen ly cua he co so du lieuNguyen ly cua he co so du lieu
Nguyen ly cua he co so du lieu
 
Phan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tinPhan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tin
 
Pttkhttt
PttkhtttPttkhttt
Pttkhttt
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanh
 
Tu hoc excel
Tu hoc excelTu hoc excel
Tu hoc excel
 
Huong dan ky_nang_su_dung_excel_2003
Huong dan ky_nang_su_dung_excel_2003Huong dan ky_nang_su_dung_excel_2003
Huong dan ky_nang_su_dung_excel_2003
 
Howtopronunce
HowtopronunceHowtopronunce
Howtopronunce
 

Recently uploaded

[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào môBryan Williams
 
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )lamdapoet123
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Học viện Kstudy
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếngTonH1
 
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHTư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHThaoPhuong154017
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocVnPhan58
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
cuộc cải cách của Lê Thánh Tông - Sử 11
cuộc cải cách của Lê Thánh Tông -  Sử 11cuộc cải cách của Lê Thánh Tông -  Sử 11
cuộc cải cách của Lê Thánh Tông - Sử 11zedgaming208
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...Nguyen Thanh Tu Collection
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...Nguyen Thanh Tu Collection
 
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptxCHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx22146042
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
 
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
 
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHTư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
cuộc cải cách của Lê Thánh Tông - Sử 11
cuộc cải cách của Lê Thánh Tông -  Sử 11cuộc cải cách của Lê Thánh Tông -  Sử 11
cuộc cải cách của Lê Thánh Tông - Sử 11
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
 
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptxCHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 

Cosodulieu

  • 1. Cơ sở dữ liệu Trang: 1 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.
  • 2. Cơ sở dữ liệu Trang: 2 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.
  • 3. Cơ sở dữ liệu Trang: 3 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.
  • 4. Cơ sở dữ liệu Trang: 4 3. Các thành phần của hệ thống CSDL 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.
  • 5. Cơ sở dữ liệu Trang: 5 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 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ụ: PHÒNG NHÂN VIÊN DỰ ÁN CHUYÊN MÔN CẤP DƢỚI THIẾT BỊ
  • 6. Cơ sở dữ liệu Trang: 6 - 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 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ý
  • 7. Cơ sở dữ liệu Trang: 7 - 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.
  • 8. Cơ sở dữ liệu Trang: 8 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. 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
  • 9. Cơ sở dữ liệu Trang: 9 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í Sao Sáng 6  Thanh Xuân 1,3,4  Bình Minh 2,5,7  Trang 6 Trang 1 Trang 2 Trang 3 Trang 4 Trang 5 Trang 7
  • 10. Cơ sở dữ liệu Trang: 10 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. 18 8 96 21 238 10 21 33 3710 17 18 19 chỉ số Trang nhớ
  • 11. Cơ sở dữ liệu Trang: 11 Đị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) … 123 113 05600 … … 1523 … 92513 … … 2800
  • 12. Cơ sở dữ liệu Trang: 12 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. 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
  • 13. Cơ sở dữ liệu Trang: 13 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 Ti và Tj, hoặc Tj kết thúc trƣớc khi Ti bắt đầu, hoặc Tj phải bắt đầu sau khi Ti đã 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.
  • 14. Cơ sở dữ liệu Trang: 14 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. 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.
  • 15. Cơ sở dữ liệu Trang: 15 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. 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.
  • 16. Cơ sở dữ liệu Trang: 16 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(A1, A2,…, An) đƣợ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ử Di là miền giá trị của thuộc tính Ai, ta viết: Di = dom(Ai) i = 1..n Các Di (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ị.
  • 17. Cơ sở dữ liệu Trang: 17 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
  • 18. Cơ sở dữ liệu Trang: 18 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.
  • 19. Cơ sở dữ liệu Trang: 19 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. ĐEAN PCONG NV PHONG soĐA maNV maP phongPT (b) (a)
  • 20. Cơ sở dữ liệu Trang: 20 * 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.
  • 21. Cơ sở dữ liệu Trang: 21 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 014 Kim Đồng ĐTTH 310
  • 22. Cơ sở dữ liệu Trang: 22 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. NH_KS = NHAHANG & KHACHSAN
  • 23. Cơ sở dữ liệu Trang: 23 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}
  • 24. Cơ sở dữ liệu Trang: 24 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.
  • 25. Cơ sở dữ liệu Trang: 25 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(X1,…,Xn) là một công thức, trong đó p là biểu tƣợng vị từ, X1,…,Xn 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 X1,…,Xn 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 F1 và F2 là những công thức thì F1  F2 là một công thức với nghĩa “cả hai F1 và F2 đều đúng”. Tƣơng tự, F1  F2 cũng là một công thức với nghĩa “ít nhất 1 trong 2 F1 hoặc F2 là đúng”.  F1 cũng là một công thức với nghĩa “F1 không đúng”. Lƣu ý: Một thể hiện của biến s có thể giới hạn trong F1, nhƣng một thể hiện khác của s là tự do trong F2. 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.
  • 26. Cơ sở dữ liệu Trang: 26 f. Chúng ta có thể sử dụng các dấu ngoặc để bao các công thức lại khi cần. Nếu không có dấu ngoặc thì trật tự ƣớc tính là: , (X), (X) có độ ƣu tiên cao nhất và đƣợc nhóm từ bên phải nhất khi chúng xuất hiện liên tiếp.  có độ ƣu tiên kế tiếp và nhóm từ bên trái.  có độ ƣu tiên thấp nhất và nhóm từ bên trái. Ví dụ: Công thức: (X)p(X,Y)  q(Y)  r(X) nếu đƣợc đặt trong dấu ngoặc đơn thì: ((X)(p(X,Y)))  (q(Y)  r(X)) g. Ví dụ: Công thức đại số quan hệ: cust (INAME = „Brie‟ (INCLUDES ⋈ ORDERS) liên quan đến những quan hệ: INCLUDES(O#, INAME, QUANTITY) ORDERS(O#, DATE, CUST) Trong phép tính quan hệ, toán tử kết nối đƣợc phản ánh bằng logical AND cùng những biến đƣợc chọn tƣơng ứng với những thuộc tính của những quan hệ tham gia vào quá trình kết nối. Chúng ta có thể bắt đầu với những công thức includes(N, I, Q) và orders(N, D, C) tƣơng ứng với những quan hệ INCLUDES và ORDERS với biến N đƣợc sử dụng trong cả hai biến thể của thuộc tính O#. Khi đó: INCLUDES ⋈ ORDERS đƣợc mô tả bằng công thức sau: includes(N, I, Q)  orders(N, D, C) Phép chọn ITEM = „Brie‟ đƣợc quản lý bởi logical AND của công thức bên trên với công thức nhân, I = „Brie‟. Kế đến là phép chiếu trên thuộc tính CUST cho thấy rằng chúng ta chỉ quan tâm đến sự tồn tại của một vài giá trị cho mỗi biến N, I, Q, và D để tạo thành công thức: includes(N, I, Q)  orders(N, D, C)  I = „Brie‟ là đúng. Chúng ta có thể sử dụng lƣợng từ  áp dụng cho công thức trên để nó trở thành công thức: (N)(I)(Q)(D) (includes(N, I, Q)  orders(N, D, C)  I = „Brie‟) Công thức trên chỉ đúng khi và chỉ khi I = „Brie‟. Chúng ta có thể bỏ lƣợng từ (I) nếu chúng ta thay thế thể hiện của I bằng hằng „Brie‟. Với nổi lực nhỏ, chúng ta có thể chứng minh 2 công thức là tƣơng đƣơng: (N)(Q)(D) (includes(N, „Brie‟, Q)  orders(N, D, C)) 2. Phép tính quan hệ trên miền a. Biểu thức của phép tính quan hệ trên miền: Những công thức có thể đƣợc sử dụng để diễn tả những truy vấn một cách đơn giản. Mỗi công thức có một hoặc nhiều biến tự do định nghĩa một quan hệ mà những thuộc tính của nó tƣơng ứng với những biến tự do này. Biểu thức biễu diễn phép tính trên miền có dạng: {X1…X2 | F(X1…X2)} (1) nghĩa là tập hợp những bộ a1…an mà khi chúng ta thay thế ai cho Xi, 1  i  n, công thức F(a1…an) là đúng. Ngôn ngữ truy vấn chứa những biểu thức dạng (1) đựơc gọi là phép tính quan hệ trên miền (DRC). Các biến là những bộ phận của bộ trong khi phép tính quan hệ trên bộ (giới thiệu sau) thì các biến là đại diện cho tất cả các bộ. Những quan hệ định nghĩa bởi biểu thức DRC thì không cần phải xác định. Ví dụ: {XY | p(X,Y)}
  • 27. Cơ sở dữ liệu Trang: 27 là một biểu thức DRC hợp lý định nghĩa tập hợp những cặp (X,Y) mà không có trong quan hệ của vị từ p. b. Chuyển từ đại số quan hệ sang phép tính quan hệ trên miền: Định lý: Mỗi truy vấn có thể biểu diễn trong đại số quan hệ thì có thể biểu diễn trong phép tính quan hệ trên miền. - Sau đây chúng ta xem xét 5 trƣờng hợp tƣơng ứng với 5 phép toán cơ bản của đại số quan hệ: * Trƣờng hợp 1: E = E1  E2 Chúng ta có thể giả sử rằng E, E1, và E2 tất cả đều có ngôi k. Theo giả thuyết qui nạp, có công thức DRC F1 và F2 định nghĩa quan hệ E1 và E2 tƣơng ứng. Bằng cách thay thế những biến tự do vào trong công thức (chúng ta giả sử cả hai công thức F1 và F2 có những biến là X1…Xk), và những biến này tƣơng ứng với những bộ phận của các bộ trong E, E1, E2 theo một trật tự đặc biệt đó, X1…Xk. Công thức cho E là: F1  F2 * Trƣờng hợp 2: E = E1 – E2 Nhƣ ở trƣờng hợp 1, giả sử có những công thức F1(X1…Xk) và F2(X1…Xk) tƣơng ứng với những quan hệ E1 và E2. Công thức cho E là: F1  F2 * Trƣờng hợp 3: E = πi1…ik (E1) Đặt quan hệ E1 có ngôi n. Bằng giả thuyết quy nạp, có một công thức F1(X1,…,Xn) tƣơng ứng với quan hệ E1. Đặt j1,…,jn-k (thuộc danh sách {1,…,n}) mà không xuất hiện trong khoảng i1,…,ik. Thì một bộ  trong quan hệ E nếu và chỉ nếu có tồn tại những giá trị của những bộ phận j1,…,jn-k mà chúng ta có thể kết hợp  với những bộ phận này sinh ra một bộ trong E1. Trong giới hạn phép tính quan hệ, chúng ta có công thức: F(Xi1 ,…,Xik ) = (Xj1 )(Xj2 )(…)(Xjn-k )F1(X1,…,Xn) * Trƣờng hợp 4: E = E1 x E2 Đặt F1(X1,…,Xn) và F2(Y1,…,Ym) là những công thức tƣơng ứng với E1 và E2. Đổi tên biến nếu cần thiết, chúng ta giả sử rằng cả hai không có những biến chung. Công thức cho E là: F(X1,…,Xn , Y1,…,Ym) = F1(X1,…,Xn)  F2(Y1,…,Ym) * Trƣờng hợp 5: E = A(E1) Chúng ta giả sử A là một phép chọn đơn giản có dạng i  j hoặc i  a. Theo giả thuyết quy nạp, có một công thức F1(X1,…,Xk) tƣơng ứng cho E1, thì công thức F1  Xi  Xj hoặc F1  Xi  a tƣơng ứng cho E, tùy thuộc vào dạng của A. - Ví dụ: Ta có biểu thức đại số: likes(X,Y) – (broke(X) x y(likes(X,Y))) áp dụng những trƣờng hợp trên để có công thức DRC: Đối với toán hạng bên trái của dấu -, chúng ta có công thức DRC likes(X,Y). Bây giờ chúng ta tiến hành toán hạng bên phải của dấu -, toán tử bên ngoài của nó là dấu x. Toán tử này có một toán hạng bên trái với công thức DRC là broke(X). Toán hạng bên phải của nó có đƣợc bằng cách áp dụng trƣờng hợp 3 cho công thức likes(X,Y), tạo nên (X)likes(X,Y). Công thức này có biến tự do là Y, công thức broke(X) có biến tự do là X, vì vậy chúng ta có thể nối kết chúng lại mà không cần đổi tên để thu đƣợc công thức cho toán hạng bên phải của dấu – là: broke(X)  (X)likes(X,Y) (2) Chúng ta cần thấy rằng công thức (2) thể hiện của X trong broke là tự do, trong khi thể hiện của X trong likes là giới hạn bởi lƣợng từ tồn tại.
  • 28. Cơ sở dữ liệu Trang: 28 Công thức cuối cùng thu đƣợc bằng cách áp dụng trƣờng hợp 2 cho likes(X,Y) và công thức (2) ở trên: {XY | likes(X,Y)  (broke(X)  (Z)likes(Z,Y)} 3. Phép tính quan hệ trên bộ a. Biểu thức của phép tính quan hệ trên bộ: Phép tính quan hệ trên bộ, hay TRC, là một dạng của phép tính quan hệ mà những biến đại diện cho những bộ chứ không là những bộ phận của bộ. Để đề cập đến bộ phận i của bộ , chúng ta sử dụng [i]. Công thức của TRC đƣợc định nghĩa một cách đệ quy, và cấu trúc của công thức TRC là hoàn toàn giống cấu trúc của công thức DRC. Cơ bản là: - Nếu p là một vị từ và  là một biến bộ, thì p() là công thức nhân với nghĩa “bộ  ở trong quan hệ p”. - X  Y là một công thức nhân nếu  là một toán tử số học, còn X và Y là những hằng hoặc những tham chiếu bộ phận; Cuối cùng thì nó có dạng [i] trong đó  là biến bộ, còn i là chỉ số bộ phận hay là thuộc tính. Nếu F1 và F2 là những công thức TRC,  là một biến bộ xuất hiện tự do trong F, thì những công thức sau là công thức TRC: 1) F1  F2 4) ()F1 2) F1  F2 5) ()F1 3) F1 Quan hệ nối kết với một công thức TRC đƣợc định nghĩa tƣơng tự nhƣ DRC. Quan hệ cho F có một bộ phận cho mỗi bộ phận của mỗi biến bộ tự do của F mà đƣợc đề cập trong F. Giá trị của quan hệ cho F là tập những bộ mà giá trị của nó khi thay thế cho những bộ phận tƣơng ứng của những biến bộ thì làm cho F đúng. Biểu thức TRC có dạng: { | F()} trong đó  là biến tự do duy nhất ở trong F. Một cách tự nhiên, biểu thức này định nghĩa quan hệ của tất cả những bộ  mà làm cho F đúng. Trong trƣờng hợp ngôi của một biến bộ không đƣợc rõ ràng từ ngữ cảnh, chúng ta sẽ sử dụng (i) để diễn tả một biến bộ  có ngôi i. Chúng ta có thể sử dụng chỉ số trên này khi biến bộ đƣợc định lƣợng bởi lƣợng từ  hay  và bỏ qua nó ở những chỗ khác. Ví dụ: Cho công thức DRC sau: {XY | likes(X,Y)  (broke(X)  (Z)likes(Z,Y)} Từ công thức này chúng ta có thể chuyển nó thành công thức TRC nếu chúng ta sử dụng bộ  thay cho (X,Y), v thay cho X trong broke và  thay cho (Z,Y) trong likes. Kết quả là: {(2) | likes()   ((v(1) )(broke(v)  v[1] = [1])  ((2) )(likes()  [2] = [2])} Chú ý cách mà công thức nhân v[1] = [1] thay thế mối quan hệ mà trong DRC đƣợc biểu diễn bằng biến cùng tên X trong likes và trong broke. Chúng ta không thể sử dụng  nhƣ đối số cho broke bởi vì broke là một bộ đơn trong khi likes là một bộ đôi. Tƣơng tự, [2] = [2] thay thế cho biến cùng tên Y. b.Chuyển từ đại số quan hệ sang phép tính quan hệ trên bộ: Bổ đề: Bất kỳ một truy vấn có thể biểu diễn trong đại số quan hệ thì có thể biểu diễn trong phép toán quan hệ trên bộ. - Sau đây chúng ta xem xét 5 trƣờng hợp tƣơng ứng với 5 phép toán cơ bản của đại số quan hệ:
  • 29. Cơ sở dữ liệu Trang: 29 * Trƣờng hợp 1: E = E1  E2 Có hai công thức dựa trên phép tính quan hệ trên bộ F1 và F2 tƣơng ứng với E1 và E2. Biến bộ tự do đơn độc trong F1 và F2 là . Bởi vì E1 và E2 có cùng ngôi nên biến bộ tự do trong F1 và F2 cũng phải có cùng ngôi, vì thế việc đổi tên là đƣợc phép (nếu cần thiết). Công thức TRC của E là: F1  F2 * Trƣờng hợp 2: E = E1 – E2 Nhƣ trong trƣờng hợp 1, chúng ta giả sử rằng có 2 công thức F1() và F2() tƣơng ứng với E1 và E2. Khi đó công thức TRC cho E là: F1  F2 * Trƣờng hợp 3: E = πi1…ik (E1) Đặt F1(v) là một công thức TRC tƣơng đƣơng E1 thì công thức TRC cho E với biến tự do  là: (v)(F1(v)  [1] = v[i1]  [2] = v[i2] … [k] = v[ik]) * Trƣờng hợp 4: E = E1 x E2 Đặt F1(v(m) ) và F2((n) ) là công thức TRC tƣơng ứng với E1 và E2. Công thức TRC cho E với biến tự do độc nhất (m+n) là: (v)()(F1(v)  F2()  [1] = v[1] … [m] = v[m]  [m+1] = [1] … [m+n] = [n]) * Trƣờng hợp 5: E = A(E1) Chúng ta giả sử A là một phép chọn đơn giản có dạng i  j hoặc i  a. Đặt F1() là công thức TRC tƣơng ứng với E1. Công thức TRC cho E là: F1()  [i]  [j] hoặc F1()  [i]  a phụ thuộc vào dạng của A. - Ví dụ: Chúng ta hãy chuyển biểu thức đại số sau thành phép tính trên bộ: likes(X,Y) – (broke(X) x y(likes(X,Y))) Đầu tiên, 3 thể hiện của những vị từ sẽ đƣợc đổi thành likes(), broke() và likes(v) theo thứ tự xuất hiện trong biểu thức trên. Đối với y(likes(X,Y)), chúng ta phải để ra một biến bộ mới  áp dụng trƣờng hợp 3 chuyển thành (v)(likes(v)  [1] = v[2]). Đối với broke(X) x y(likes(X,Y)) chúng ta phải đƣa vào một biến mới, bộ phận thứ nhất của biến đôi này phải cân bằng với bộ phận đơn của  và bộ phận thứ hai của biến đôi này phải cần bằng với bộ phận đơn của biến . Chúng ta có thể gọi biến mới này bằng bất cứ tên gì mà chúng ta thích, nhƣng ở đây nó đƣợc gọi là  là hoàn toàn có ý nghĩa. Lý do là ở bƣớc tiếp theo, chúng ta phải thực hiện phép trừ công thức nên biến bộ tự do của hai công thức tham gia vào phép trừ phải nhƣ nhau. Vì vậy chúng ta có: ()()(broke()  ((v)(like(v)  [1] = v[2]))  [1] = [1]  [2] = [1]) Biểu thức cuối cùng là: {(2) | likes() (((1) )((1) )(broke()  ((v(2) )(like(v)  [1] = v[2]))  [1] = [1]  [2] = [1])) }
  • 30. Cơ sở dữ liệu Trang: 30 CHƢƠNG IV: NGÔN NGỮ THAO TÁC DỮ LIỆU Ở chƣơng III chúng ta đã tìm hiểu về đại số quan hệ và phép tính quan hệ. Trong chƣơng này chúng ta sẽ xem xét 2 ngôn ngữ hỏi (còn gọi là ngôn ngữ thao tác dữ liệu) đƣợc xây dựng dựa trên nền tản của hai khái niệm này. Ngôn ngữ hỏi đầu tiên là ngôn ngữ ALPHA dựa trên phép tính quan hệ, còn ngôn ngữ thứ hai mà chúng ta sẽ xem xét là ngôn ngữ SQL dựa trên đại số quan hệ. Mục đích của hai ngôn ngữ này là giúp ngƣời sử dụng tiếp cận với CSDL chẳng hạn nhƣ tìm kiếm, cập nhật,… các bộ của quan hệ. A. NGÔN NGỮ CON DỮ LIỆU ALPHA Ngôn ngữ con dữ liệu ALPHA do E.F. Codd đề xƣớng và đƣợc sử dụng khá điển hình trong các HQTCSDL nhƣ INGRES, DAMAS. Để thuận tiện cho việc trình bày, cần thống nhất một số quy định sau: { }: Biểu thức định nghĩa tập (tức là các quan hệ). Dấu hai chấm (:): Có ý nghĩa là “sao cho” hoặc “trong đó”. Hạng thức đứng trƣớc dấu hai chấm biểu thị một bộ của quan hệ và hạng thức đứng sau dấu hai chấm là điều kiện hoặc tân từ để xác định bộ đứng trƣớc dấu hai chấm. Mỗi ngƣời sử dụng cần phải có một vùng làm việc W để kết quả tìm đƣợc sẽ xếp vào vùng này. Vùng này tạo thành miền liên lạc giữa ngƣời sử dụng và CSDL. I. BIỂU THỨC ALPHA Biểu thức ALPHA đƣợc ký hiệu là: {<T1, T2,…, Tn> : P} trong đó Ti, i = 1..n, là tên các thuộc tính và P là điều kiện hoặc tân từ. Biểu thức nhằm xác định quan hệ của những n bộ dạng (v1,…,vn), vi  DOM(Ti), i=1..n, sao cho bộ đó có thỏa tân từ P. Danh sách <T1, T2,…, Tn> gọi là danh sách đích, P còn gọi là biểu thức đánh giá. Ví dụ: Một CSDL gồm 3 quan hệ. Quan hệ S (các hãng cung ứng), quan hệ P (các mặt hàng) và quan hệ SP (các mặt hàng đã cung cấp). Quan hệ S chứa dữ liệu về mỗi hãng cung ứng: số hiệu hãng, tên hãng, tình trạng và địa chỉ. Quan hệ P chứa dữ liệu về mỗi mặt hàng: số hiệu mặt hàng, tên mặt hàng, màu sắc, trọng lƣợng và nơi lƣu kho mặt hàng đó. Quan hệ SP chứa dữ liệu về các mặt hàng đã đƣợc cung cấp: số hiệu hãng cung ứng, số hiệu mặt hàng và số lƣợng hàng gửi đi. S S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Paris S3 Blacke 30 Paris SP S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S2 P1 300 S2 P2 400 S3 P2 200
  • 31. Cơ sở dữ liệu Trang: 31 P P# PNAME COLOR WEIGHT CITY P1 Nut Red 12 London P2 Bolt Green 17 Paris P3 Screw Blue 17 Rom P4 Screw Red 14 London Ta có biểu thức ALPHA: {<P.PNAME, P.COLOR> : P.WEIGHT > 12} câu lệnh tìm kiếm tƣơng ứng với biểu thức này là: GET W (P.PNAME, P.COLOR) : P.WEIGHT >12 trong đó W là vùng chứa kết quả trả về (tức những record trong quan hệ P thoả P.WEIGHT > 12), GET là tên lệnh. II. PHÉP TÌM KIẾM 1. Phép tìm kiếm đơn giản Ví dụ: Tìm số hiệu mặt hàng đã đƣợc cung ứng: GET W (SP.P#) kết quả: W P# P1 P2 P3 Chú ý: trong ví dụ trên có 6 giá trị nhƣng trùng lặp nên chỉ có 3 giá trị phân biệt đƣợc lƣu trong vùng làm việc W. 2. Phép tìm kiếm theo điều kiện Ví dụ: Tìm số hiệu những hãng ở Paris có tình trạng lớn hơn 20: GET W (S.S#) : S.CITY = „Paris‟  S.STATUS > 20 kết quả: W S# S3 Nhƣ đã quy định ở trên, nhắc lại rằng dấu “:” có nghĩa là “sao cho”, biểu thức đi sau dấu hai chấm là biểu thức điều kiện hoặc tân từ; danh sách đích chỉ rõ quan hệ S đƣợc chiếu trên thuộc tính S#. Kết quả chứa trong vùng W là một quan hệ chỉ còn một thuộc tính. Chú ý rằng biểu thức điều kiện (tân từ) là một biểu thức có độ phức tạp bất kỳ đƣợc viết theo những quy tắt thông thƣờng với các phép tính so sánh =, , >, >=, <, <= và các phép tính của đại số boolean là  (và) , (hoặc), - (không). 3. Phép tìm kiếm có sắp xếp Ví dụ: Tìm số hiệu và tình trạng của những hãng ở Paris và sắp xếp theo thứ tự giảm dần của tình trạng: GET W (S.S#, S.STATUS) : S.CITY = „Paris‟ DOWN STATUS kết quả: W S# STATUS S3 30 S2 10 Bình thƣờng kết của GET là một quan hệ có thể chƣa có thứ tự. Khi ngƣời sử dụng cần sắp xếp kết quả theo một cách nào đó thì cần chỉ và đƣa vào vùng làm việc theo cách sau:
  • 32. Cơ sở dữ liệu Trang: 32 UP <tên thuộc tính> UP <tên thuộc tính>… (tăng dần) hoặc DOWN <tên thuộc tính>… (giảm dần) trong đó ƣu tiên đƣợc tính từ trái qua phải. 4. Phép tìm kiếm bộ phận Ví dụ: Tìm số hiệu của một hãng bất kỳ ở Paris: GET W (1) (S.S#) : S.CITY = „Paris‟ kết quả: W S# S2 W S# S3 Số 1 trong ký hiệu W (1) biểu thị một bộ phận. Có nghĩa là đƣa ra đúng một bộ thỏa điều kiện tìm kiếm, đó là bộ đầu tiên gặp đƣợc. 5. Phép tìm kiếm có sử dụng biến vùng Ví dụ: Tìm kiếm số hiệu của những hãng có cung ứng mặt hàng P2. Có hai cách giải quyết: Cách 1: GET W (SP.S#) : SP.P# = „P2‟ Cách 2: RANGE SP X GET W (X.S#) : X.P# = „P2‟ Hai cách thể hiện trên là hoàn toàn tƣơng đƣơng. Trong câu lệnh thứ hai, X là một biến vùng. Các giá trị cho phép của biến này là các bộ của SP. Nói chung biến vùng thƣờng cho phép để viết tắt cho nhanh, gọn. Các trƣờng hợp khác sẽ đƣợc trình bày sau. 6. Phép tìm kiếm có sử dụng lƣợng từ tồn tại () Ví dụ: Tìm tên những hãng nào cung ứng mặt hàng P2: GET W (S.SNAME) :  SP(SP.S# = S.S#  SP.P# = „P2‟) kết quả: W SNAME Smith Jones Blacke Có thể hình dung câu lệnh GET nhƣ sau: Xét lần lƣợt từng giá trị SNAME xem có thỏa mãn biểu thức điều kiện không. Nhƣ vậy giá trị đầu là Smith, S# tƣơng ứng là P1. Có tồn tại một SP với S# = „S1‟ và P# = „P2‟ không? Nếu câu trả lời có thì „Smith‟ là giá trị cần tìm. Công việc tiếp tục nhƣ vậy cho đến hết. 7. Phép tìm kiếm có sử dụng nhiều lƣợng từ tồn tại () Ví dụ: Tìm tên những hãng nào cung ứng ít nhất là một mặt hàng màu đỏ: GET W (S.SNAME) :  SP(SP.S# = S.S#   P(P.P# = SP.P#  P.COLOR = „Red‟)) 8. Phép tìm kiếm có sử dụng lƣợng từ với mọi () Ví dụ: Tìm tên những hãng không cung ứng mặt hàng P1: GET W(S.SNAME) : SP(SP.S#  S.S#  SP.P#  „P1‟) kết quả:
  • 33. Cơ sở dữ liệu Trang: 33 W SNAME Blacke 9. Phép tìm kiếm có sử dụng cả hai lƣợng từ với mọi () và tồn tại () Ví dụ: Tìm số hiệu của những hãng nào cung ứng tất cả các mặt hàng: GET W (SP.S#) : PSP(P.P# = SP.P#) kết quả: W S# S1 B. NGÔN NGỮ SQL (Structured query language) I. NÉT CHÍNH CỦA NGÔN NGỮ SQL SQL (trƣớc kia đƣợc gọi là SEQUEL) là một ngôn ngữ hỏi hiện nay rất đƣợc phổ biến trên thị trƣờng. Câu lệnh đơn giản, gần gũi với ngƣời sử dụng. Nó là một ngôn ngữ CSDL quan hệ có tính chuyên sâu, đƣợc dùng để định nghĩa, sử dụng và kiểm tra các CSDL quan hệ. II. CÁC LỆNH ĐỊNH NGHĨA VÀ CẬP NHẬT SƠ ĐỒ CSDL (DDL – Data Definition Language) 1. Tạo bảng a. Cú pháp: CREATE TABLE | DBF <tên tập tin cần tạo> (<tên trường 1> <kiểu>[(<độ dài> [,<số chữ số thập phân])] [, <tên trường 2>…]) b. Ý nghĩa: Tạo một tập tin CSDL (.DBF) với tên cột, kiểu dữ liệu,… đƣợc chỉ định trong cú pháp câu lệnh. c. Ví dụ: CREATE TABLE salary(empl_id chara(5), first_name chara(10), last_name chara(10), salary number, dept chara(4), job_title chara(3)) 2. Xóa bảng a. Cú pháp: DROP TABLE <tên bảng> | <tên tập tin> | ? [RECYCLE] b. Giải thích: <tên bảng>: tên của bảng cần xoá khỏi CSDL hiện hành và xoá luôn khỏi ổ đĩa. <tên tập tin>: tên của một bảng tự do cần xoá khỏi đĩa. ?: Cho hiện ra một hộp thoại Remove để từ đó ta có thể chọn ra một bảng để xoá. [RECYCLE]: bảng không bị xoá ngay mà đƣợc đặt trong Recycle Bin. c. Lƣu ý: - Khi lệnh DROP TABLE đƣợc phát ra, mọi ràng buộc toàn vẹn (RBTV) trên bảng cũng bị xoá theo. DROP TABLE cũng tác động đến các bảng khác trong CSDL hiện hành nếu các bảng đó có các RBTV hoặc các liên kết có dính dáng đến bảng bị xoá. Các RBTV và các liên kết nói trên sẽ không có hiệu lực nữa. - Bất kỳ bảng nào bị xoá bằng lệnh này đều không thể phục hồi lại. Ngay cả khi lệnh SET SAFETY là ON, chúng ta vẫn không đƣợc nhắc nhở gì trƣớc khi bảng bị xoá. d. Ví dụ: DROP TABLE salary
  • 34. Cơ sở dữ liệu Trang: 34 3. Sửa cấu trúc bảng a. Thêm thuộc tính vào bảng đang tồn tại sử dụng lệnh ALTER TABLE với cú pháp: ALTER TABLE <tên bảng> ADD <tên trường> <kiểu> b. Xoá bỏ một thuộc tính khỏi bảng đang tồn tại sử dụng lệnh ALTER TABLE với cú pháp: ALTER TABLE <tên bảng> DROP <tên trường cần xoá> c. Thay đổi kiểu dữ liệu của một thuộc tính: ALTER TABLE <tên bảng> CHANGE COLUMN <tên trường> TO <kiểu mới> 4. Thêm một bảng tự do vào CSDL hiện hành a. Cú pháp: ADD TABLE <tên bảng> | ? [NAME <tên dài>] b. Giải thích: <tên bảng>: tên bảng cần thêm vào CSDL. ?: hiện ra một hộp thoại Open để từ đó có thể chọn ra một bảng thêm vào CSDL. [NAME <tên dài>]: tên dài của bảng, chứa tối đa 128 ký tự và có thể đƣợc dùng để thay thế cho tên ngắn. c. Lƣu ý: - Sau khi bảng đƣợc thêm vào CSDL, chúng ta có thể thực hiện cùng các thao tác nhƣ trên bất kỳ bảng nào khác. - Nó không còn là bảng tự do mà thuộc vào một CSDL. Tuy nhiên, bất kỳ bảng nào đang ở trong CSDL đều có thể trở thành tự do nếu có lệnh REMOVE TABLE. - Bảng mà chúng ta muốn thêm vào: + Phải là một tập tin DBF hợp lệ. + Không thể trùng tên với một bảng đã có trong CSDL đang mở hay đã tồn tại rồi trong một CSDL khác. d. Ví dụ: ADD TABLE salary 5. Tạo một CSDL a. Cú pháp: CREATE DATABASE <tên CSDL cần tạo> b. Ví dụ: CLOSE ALL CREATE DATABASE people 6. Xoá một CSDL khỏi đĩa a. Cú pháp: DELETE DATABASE <tên CSDL> | ? | [DELETETABLES] [RECYCLE] b. Giải thích: <tên CSDL>: tên CSDL cần xoá và phải đảm bảo rằng nó đã đƣợc đóng. <tên CSDL> có thể chứa cả đƣờng dẫn đến CSDL. ?: Hiện ra hộp thoại Delete để từ đó ta có thể chọn tên CSDL cần xoá khỏi đĩa. [DELETETABLES]: Xoá đồng thời vừa CSDL vừa các bảng chứa trong đó. [RECYCLE]: CSDL sau khi xoá sẽ đƣợc đƣa vào Recycle bin. c. Ví dụ: CREATE DATABASES qlnv CLOSE ALL DELETE DATABASE qlnv