C sở dữ liệu PHẦN A: KIẾN THỨC CƠ...

59
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.

Transcript of C sở dữ liệu PHẦN A: KIẾN THỨC CƠ...

Page 1: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 2: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 3: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ 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.

Page 4: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 5: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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Ị

Page 6: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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àm quản lý

Page 7: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 8: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 9: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 10: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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 9 6

21 23 8 10

21 33 37 10 17 18 19

chỉ số

Trang nhớ

Page 11: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

0 5600

1523

92513

2800

Page 12: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 13: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 14: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 15: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 16: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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ị.

Page 17: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 18: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 19: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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)

Page 20: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 21: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 22: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 23: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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 RS, 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) = RS = {uv | u R, v S, u.M = v.M, M = U V}

Nếu M = U V = , RS 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}

Page 24: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 25: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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.

Page 26: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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)}

Page 27: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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,…,Xi

k) = (Xj

1)(Xj

2)(…)(Xj

n-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.

Page 28: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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ệ:

Page 29: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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])) }

Page 30: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 31: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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:

Page 32: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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ả:

Page 33: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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#) : PSP(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

Page 34: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

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

Page 35: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 35

7. Tạo project

a. Cú pháp:

CREATE PROJECT <tên project cần tạo>

b. Ví dụ:

CREATE PROJECT qlnv

III. CÁC LỆNH CẬP NHẬT DỮ LIỆU

(DML – Data Manipulation Language)

1. Sửa dữ liệu

a. Cú pháp:

UPDATE [<tên CSDL!>] <tên bảng>

SET <tên cột 1> = <expr1> [, <tên cột 2> = expr2>]

WHERE <điều kiện>

b. Giải thích:

SET <tên cột> = <expr>: cột đang xét sẽ đƣợc thay bằng trị của biểu thức

tƣơng ứng.

<điều kiện>: những dòng thoả điều kiện trong mệnh đề WHERE sẽ đƣợc

cập nhật. Còn nếu không có mệnh đề WHERE thì mọi dòng trong các cột đã đƣợc đặc

tả bởi SET sẽ đƣợc cập nhật cùng một giá trị.

c. Lƣu ý:

- Lệnh này chỉ có thể cập nhật các mẫu tin của một bảng duy nhất.

d. Ví dụ: Tăng lƣơng cho những nhân viên nữ lên 1%.

UPDATE salary

SET salary = salary*1.01

WHERE sex = .F.

2. Xoá một số hoặc tất cả các dòng trong bảng quan hệ

a. Cú pháp:

DELETE FROM <tên bảng>

WHERE <điều kiện>

b. Giải thích:

Chỉ xoá khỏi bảng đƣợc chỉ định bởi <tên bảng> những dòng thoả <điều

kiện>.

c. Ví dụ: Xoá nhân viên mang mã số 12345.

DELETE FROM salary

WHERE empl_id = „12345‟

3. Thêm một hoặc nhiều dòng mới vào bảng quan hệ

a. Cú pháp:

INSERT INTO tên_bảng (danh sách các cột)

VALUES (các giá trị)

hoặc

INSERT INTO tên_bảng (danh sách các cột)

FROM ARRAY mảng | FROM MEMVAR

b. Ý nghĩa:

Thêm một hoặc nhiều mẫu tin mới vào cuối tập tin CSDL đƣợc chỉ định bởi

tên_bảng. Giá trị của những mẫu tin mới này đƣợc liệt kê trong VALUES hoặc chứa

trong mảng, biến nhớ.

c. Ví dụ:

Cho quan hệ:

S S# SNAME STATUS CITY

S1 Smith 20 London

S2 Jones 10 Paris

S3 Blacke 30 Paris

Page 36: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 36

- Sử dụng cú pháp 1:

INSERT INTO S

VALUES(“S4”, “Marry”, 15, “New York”)

- Sử dụng cú pháp 2:

DIME mang(4)

mang(1) = “S5”

mang(2) = “George”

mang(3) = “18”

mang(4) = “London”

INSERT INTO S

FROM ARRAY mang

IV. CÁC LỆNH ĐIỀU KHIỂN

(Control Language)

1. Cấp quyền truy xuất

a. Cú pháp:

GRANT <danh sách quyền> [(<danh sách thuộc tính>)]

ON <danh sách bảng>

TO <danh sách người dùng> [WITH GRANT OPTION]

b. Giải thích:

<danh sách quyền>: Gồm có các quyền sau:

- SELECT: Gọi, đọc dữ liệu, tạo truy vấn.

- UPDATE: Cập nhật dữ liệu.

- DELETE: Xoá bộ.

- INSERT: Thêm bộ.

- INDEX: Tạo chỉ mục.

- ALTER: Hiệu chỉnh cấu trúc.

- ALL: Tất cả các quyền.

Gán <danh sách quyền> sử dụng các bảng trong <danh sách bảng> cho

<danh sách ngƣời dùng>. Nếu muốn hạn chế thuộc tính sử dụng thì khai báo thuộc tính

trong <danh sách thuộc tính>.

[WITH GRANT OPTION]: cho phép ngƣời dùng đƣợc giao quyền của

mình cho ngƣời khác.

c. Ví dụ:

- Gán quyền SELECT, INSERT, UPDATE bảng SALARY cho ngƣời dùng

Minh, Hung:

GRANT SELECT, INSERT, UPDATE

ON Salary

TO Minh, Hung

WITH GRANT OPTION

- Gán quyền ALTER bảng JOB cho ngƣời dùng Lan:

GRANT ALTER

ON job

TO Lan

2. Hủy bỏ quyền truy xuất

a. Cú pháp:

REVOKE <danh sách quyền> [(<danh sách thuộc tính>)]

ON <danh sách bảng>

FROM <danh sách người dùng>

b. Giải thích:

Tƣớc bỏ <danh sách quyền> sử dụng <danh sách bảng> của <danh sách

ngƣời dùng>.

Page 37: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 37

c. Ví dụ:

Hủy bỏ quyền SELECT, INSERT bảng SALARY của ngƣời dùng Minh:

REVOKE SELECT, INSERT

ON Salary

FROM Minh

IV. CÁC LỆNH TRUY VẤN DỮ LIỆU

1. Câu lệnh tìm kiếm đơn giản

- Cú pháp:

SELECT [<bí danh>. ]<trường> [ AS <đặt tên mới cho cột>] [,[<bí

danh>.]<trường> [ AS <đặt tên mới cho cột>]…]

FROM <table> [<bí danh>] [,<table> [<bí danh>]…]

[[INTO <nơi kết xuất>] | [TO FILE <file> [ADDITIVE] | TO

PRINTER | TO SCREEN]]

- Giải thích:

Nếu chúng ta phát ra lệnh SET TALK ON và bắt đầu thực thi câu lệnh

SELECT, Foxpro sẽ hiển thị thời gian thực hiện truy vấn và số mẫu tin có đƣợc trong

kết quả. Số mẫu tin này sẽ đƣợc chứa trong biến hệ thống _TALLY.

<trường>: Có thể là một trong những mục sau:

+ Tên của một trƣờng trong tập tin CSDL đƣợc liệt kê trong điều khoản

FROM.

+ Là một hằng mà sẽ xuất hiện trên mỗi dòng của kết quả truy vấn.

+ Là một biểu thức mà có thể là tên của một hàm tự tạo.

Mỗi <trƣờng> mà chúng ta chỉ định trong điều khoản SELECT sẽ tạo thành

một cột trong kết quả truy vấn. Nếu có nhiều hơn một <trƣờng> cùng tên thì chúng ta

phải sử dụng đến <bí danh> và dấu chấm phân cách giữa <bí danh> và <trƣờng>. <bí

danh> là tên hiệu của tập tin CSDL đƣợc chỉ định trong điều khoản FROM.

Những hàm (field functions) sau đây có sẳn trong Foxpro, có thể thao tác

trên một <trƣờng> trong điều khoản SELECT mà <trƣờng> này phải là một trƣờng

trong tập tin CSDL hoặc là một biểu thức có liên quan đến một trƣờng trong tập tin

CSDL:

+ AVG(<trƣờng>): Tính trung bình cột dữ liệu kiểu số.

+ COUNT(<trƣờng>): Đếm số mục chọn trong cột. COUNT(*) là đếm

số dòng dữ liệu xuất ra của truy vấn.

+ MIN(<trƣờng>): Trả về giá trị nhỏ nhất trong <trƣờng>.

+ MAX(<trƣờng>): Trả về giá trị lớn nhất trong <trƣờng>.

+ SUM(<trƣờng>): Tính tổng cột dữ liệu kiểu số.

[AS <đặt tên mới cho cột>]: Chỉ định tựa đề cho cột trong kết quả xuất ra

của truy vấn. Điều này rất có lợi khi <trƣờng> là một biểu thức hoặc chứa một hàm

field function và chúng ta muốn ghi cột với một tên có ý nghĩa.

FROM <table> [<bí danh>] [,<table> [<bí danh>]…]: Điều khoản FROM

này liệt kê những tập tin CSDL chứa dữ liệu mà câu truy vấn cần truy lục. Nếu một

trong những tập tin mà chúng ta liệt kê không đƣợc mở trong vùng làm việc trƣớc đó

hoặc không tồn tại trong thƣ mục hiện hành hoặc đƣờng dẫn Foxpro thì hộp thoại Open

xuất hiện. Vì vậy, chúng ta có thể chỉ định vị trí của tập tin qua hộp thoại này.

[<bí danh>]: Là tên tạm thời cho tập tin CSDL. Nếu chúng ta có chỉ định bí

danh cục bộ thì chúng ta phải sử dụng nó thay cho tên table trong suốt câu lệnh

SELECT.

[INTO <nơi kết xuất>]: Điều khoản này quyết định nơi mà kết quả truy vấn

đƣợc lƣu trữ. Nó có thể là một trong những mục chọn sau:

+ INTO ARRAY <mảng>: Lƣu trữ kết quả truy vấn trong một mảng có

tên là <mảng>.

Page 38: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 38

+ INTO CURSOR <tên tập tin CSDL tạm thời>: Kết quả truy vấn sẽ

đƣợc lƣu trữ trên bộ nhớ RAM. Sau khi lệnh SELECT đã thi hành xong, thì tập tin tạm

này ở trong tình trạng đang mở và hiện dịch nhƣng chỉ đọc, chúng ta có thể thao tác trên

tập tin này giống nhƣ bất kỳ tập tin CSDL nào khác. Điểm khác biệt là một khi chúng ta

đã đóng tập tin tạm này lại thì nó cũng bị xóa.

+ INTO DBF <tên tâp tin CSDL> | INTO TABLE <tên tập tin CSDL>:

Lƣu trữ kết quả truy vấn trong một tập tin CSDL có tên <tên tập tin CSDL>. Nếu tập tin

này đã tồn tại rồi thì sẽ hiển thị cảnh báo nếu nhƣ SET SAFETY ON.

TO FILE <file> [ADDITIVE]: Kết quả truy vấn sẽ đƣợc chứa trong một

tập tin văn bản (<file>.TXT). Nếu có thêm từ khoá ADDITIVE thì kết quả sẽ đƣợc chép

nối đuôi với dữ liệu trong tập tin <file>.

TO PRINTER: Đƣa kết quả truy vấn ra máy in.

TO SCREEN: Đƣa kết quả truy vấn ra màn hình.

- Ví dụ:

SELECT first_name, last_name FROM salary TO SCREEN

2. Loại bỏ các phần tử trùng nhau

- Cú pháp:

SELECT [ALL | DISTINCT] [<bí danh>.]<trường> [AS <đặt tên mới cho

cột>] [,[<bí danh>.]<trường> [AS <đặt tên mới cho cột>]…]

FROM <table> [<bí danh>] [,<table> [<bí danh>]…]

- Giải thích:

[ALL | DISTINCT]: Điều khoản SELECT chỉ định những trƣờng, những

hằng, và những biểu thức mà sẽ đƣợc hiển thị trong kết quả truy vấn. Mặc định tất cả

những dòng (ALL) trong kết quả truy vấn đều đƣợc hiển thị. Tuy nhiên, nếu có thêm từ

khoá DISTINCT thì sẽ loại trừ những dòng giống nhau trong kết quả truy vấn.

- Ví dụ:

SELECT dept FROM salary

SELECT DISTINCT dept FROM salary

3. Tìm kiếm tất cả các phần tử

- Cú pháp:

SELECT *

FROM <table> [<bí danh>] [,<table> [<bí danh>]…]

- Giải thích:

Hiển thị tất cả các cột của các tập tin CSDL tham gia vào truy vấn.

- Ví dụ:

SELECT * FROM salary

4. Tìm kiếm theo điều kiện

- Cú pháp:

SELECT [<bí danh>.]<trường> [AS <đặt tên mới cho cột>] [,[<bí

danh>.]<trường> [AS <đặt tên mới cho cột>]…]

FROM <table> [<bí danh>] [,<table> [<bí danh>]…]

[WHERE <điều kiện nối kết> [AND <điều kiện nối kết>…] [AND |

OR <điều kiện lọc> [AND | OR <điều kiện lọc>…]]]

- Ý nghĩa:

WHERE cho phép truy lục dữ liệu từ nhiều tables và thỏa một điều kiện

chọn lựa nào đó.

- Giải thích:

<điều kiện nối kết>: Chỉ định những trƣờng để liên kết các tables đƣợc liệt

kê trong điều khoản FROM. Nếu nhƣ có nhiều hơn một table tham gia truy vấn thì

chúng ta nên chỉ định điều kiện liên kết cho mỗi table.

Page 39: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 39

+ Nếu có hai tables tham gia truy vấn mà chúng ta không chỉ định <điều

kiện nối kết> thì cứ một record trong table đầu tiên sẽ liên kết với tất cả các record trong

table thứ hai. Điều này có thể đƣa đến kết quả truy vấn rất dài mà không đáp ứng đƣợc

yêu cầu.

+ Nhiều <điều kiện nối kết> phải đƣợc cách nhau bởi toán tử AND hoặc

OR. Mỗi <điều kiện nối kết> có dạng nhƣ sau:

<field1> <comparision> <field2>

Trong đó: <field1> là tên của một trƣờng từ table 1

<field2> là tên của một trƣờng từ table khác và <comparision> là

một trong những toán tử sau:

Operator Comparision

=

<>, !=, #

>

>=

<

<=

Bằng

Khác nhau

Lớn hơn

Lớn hơn bằng

Nhỏ hơn

Nhỏ hơn bằng

Ví dụ 1:

SELECT s.first_name, s.last_name, d.department

FROM salary s, department d

WHERE s.dept = d.deptnumb

Ví dụ 2:

SELECT salary.first_name, salary.last_name, job.job_name,

department.name

FROM salary, job, department

WHERE

salary.dept = department.deptnumb AND

salary.job_title = job.job_title

<điều kiện lọc>: Chỉ định tiêu chuẩn mà những records phải thỏa tiêu chuẩn

này mới đƣợc chứa trong kết quả truy vấn. Một truy vấn có thể bao gồm nhiều <điều

kiện lọc> và chúng cách nhau bởi toán tử AND hoặc OR. Chúng ta cũng có thể sử dụng

toán tử NOT để đảo ngƣợc giá trị của biểu thức logic hoặc sử dụng hàm EMPTY( ) để

kiểm tra một trƣờng rỗng. <điều kiện lọc> có thể là một trong những dạng sau:

(1): <field1> <comparision> <field2>

(2): <field> <comparision> <expression>

(3): <field> <comparision> ALL (<subquery>) (Xem phần sau)

(4): <field> <comparision> ANY | SOME (<subquery>) (Xem phần sau)

(5): <field> [NOT] BETWEEN <start_range> AND <end_range>

Kiểm tra giá trị của <field> có nằm (hoặc không nằm) trong khoảng chỉ

định là từ <start_range> tới <end_range> hay không.

(6): <field> [NOT] IN (<tâp hợp giá trị>)

Kiểm tra giá trị của field có thuộc (hoặc không thuộc) vào một trong

những giá trị đƣợc liệt kê trong <tập hợp giá trị>.

(7): <field> [NOT] IN (<subquery>) (Xem phần sau)

(8): <field> [NOT] LIKE <exprC>

Kiểm tra xem <field> có giống với <exprC> hay không. Chúng ta có thể

sử dụng ký tự đại diện % hoặc _ nhƣ một phần của <exprC>. Dấu % đại diện cho một

chuỗi ký tự chƣa biết, còn dấu _ đại diện cho một ký tự chƣa biết.

Page 40: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 40

- Ví dụ:

(2): SELECT * FROM salary WHERE salary > 30000

(7): SELECT first_name, last_name

FROM salary

WHERE salary IN (30000, 34000, 45000)

(5): SELECT * FROM salary

WHERE salary BETWEEN 20000 AND 30000

(9): SELECT * FROM salary

WHERE first_name LIKE “%N%”

5. Tìm kiếm có sắp xếp

- Cú pháp:

SELECT [ALL | DISTINCT] [<bí danh>.]<trường> [AS <đặt tên mới cho

cột>] [,[<bí danh>.]<trường> [AS <đặt tên mới cho cột>]…]

FROM <table> [<bí danh>] [,<table> [<bí danh>]…]

ORDER BY <trường> [ASC | DESC] [, <trường> [ASC | DESC]…]

- Giải thích:

Điều khoản ORDER BY này dùng để sắp xếp kết quả truy vấn dựa trên dữ

liệu của một hoặc nhiều cột. Mỗi <trƣờng> sắp xếp phải tƣơng ứng với một cột trong

kết quả truy vấn và có thể là một trong những mục sau:

+ Một mục chọn trong điều khoản SELECT hoặc là một trƣờng trong

table đƣợc liệt kê ở điều khoản FROM.

+ Một biểu thức số chỉ định vị trí của cột trong kết quả truy vấn (cột bên

trái nhất là 1).

Chúng ta có thể chỉ định từ khoá DESC nếu nhƣ chúng ta muốn kết quả truy

vấn sắp xếp theo chiều giảm dần. Còn từ khoá ASC là sắp xếp theo chiều tăng dần và nó

cũng là giá trị mặc định.

- Ví dụ:

SELECT first_name, last_name, salary

FROM salary

ORDER BY salary

6. Truy vấn con

- Cú pháp:

SELECT <các mục chọn>

FROM <danh sách các table tham gia truy vấn>

WHERE <field> <comparision> (SELECT … FROM .. . )

- Giải thích:

<field> <comparision> (SELECT … FROM .. . ) có thể là một trong những

dạng sau:

(1): <field> [NOT] IN (<subquery>)

Record đƣợc đƣa vào kết quả truy vấn khi record đó có <field> phải

thuộc một trong những giá trị do <subquery> trả về.

Ví dụ: Tìm những nhân viên không làm ở phòng kế toán nhƣng có

lƣơng bằng với một trong những nhân viên làm ở phòng kế toán.

SELECT first_name, last_name

FROM salary

WHERE dept <> „ACCT‟ AND

salary IN

(SELECT salary FROM salary WHERE dept = „ACCT‟)

(2): <field> <operator> ALL (<subquery>)

Record đƣợc đƣa vào kết quả truy vấn khi record đó có <field> phù

hợp với tất cả những giá trị do <subquery> trả về.

Page 41: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 41

Ví dụ: Tìm những nhân viên không làm ở phòng kế toán nhƣng có

lƣơng cao hơn tất cả những nhân viên làm trong phòng kế toán.

SELECT first_name, last_name

FROM salary

WHERE dept <> „ACCT‟ AND

salary > ALL

(SELECT max(salary) FROM salary WHERE dept=„ACCT‟)

(3): <field> <operator> ANY | SOME (<subquery>)

Record đƣợc đƣa vào kết quả truy vấn khi record đó có <field> phù

hợp với ít nhất một giá trị do <subquery> trả về.

Ví dụ: Tìm những nhân viên không làm ở phòng kế toán nhƣng có

lƣơng cao hơn ít nhất là một nhân viên làm trong phòng kế toán.

SELECT first_name, last_name

FROM salary

WHERE dept <> „ACCT‟ AND

salary > SOME

(SELECT salary FROM salary WHERE dept = „ACCT‟)

Page 42: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 42

PHẦN B: THIẾT KẾ MỘT CƠ SỞ DỮ LIỆU

CHƢƠNG V:

CÁC LOẠI PHỤ THUỘC DỮ LIỆU

I. GIỚI THIỆU VẤN ĐỀ

1. Đặt vấn đề

Khi thiết kết CSDL quan hệ ta thƣờng đứng trƣớc vấn đề lựa chọn giữa các lƣợc

đồ quan hệ: lƣợc đồ nào tốt hơn? Tại sao? Mục này sẽ nghiên cứu một số tiêu chuẩn

đánh giá lƣợc đồ quan hệ và các thuật toán giúp chúng ta xây dựng đƣợc lƣợc đồ CSDL

quan hệ có cấu trúc tốt.

Có thể nói tổng quát một lƣợc đồ quan hệ có cấu trúc tốt là lƣợc đồ không chứa

đựng các vấn đề liệt kê sau đây:

2. Các vấn đề nảy sinh đối với một CSDL không tốt

a. Dư thừa dữ liệu Là sự trùng lặp thông tin trong CSDL.

Ví dụ: Xét lƣợc đồ quan hệ NHACC(Ten_NCC, Hang, DonGia, Diachi_NCC).

Nếu một nhà cung cấp cung cấp nhiều mặt hàng thì địa chỉ nhà cung

cấp phải lặp lại nhiều lần kéo theo dƣ thừa dữ liệu.

Ngoài việc gây lãng phí dung lƣợng lƣu trữ, sự dƣ thừa dữ liệu có thể gây ra

những hậu quả nghiêm trọng đối với dữ liệu khi ngƣời dùng cập nhật dữ liệu làm cho dữ

liệu không tƣơng thích, thiếu nhất quán.

Ví dụ: Xét lại lƣợc đồ NHACC trên. Ta có thể sửa địa chỉ một nhà cung cấp tại

một bộ nào đó mà không sửa ở một bộ khác gây ra địa chỉ không nhất quán của cùng

một nhà cung cấp.

b. Dị thường do thêm dữ liệu

Không thể chèn bộ mới vào quan hệ nếu không có đầy đủ dữ liệu.

Ví dụ: Ta không thể ghi nhận địa chỉ một nhà cung cấp nếu nhà cung cấp đó

không cung cấp mặt hàng nào cả vì Ten_NCC, Hang tạo thành một khoá cho quan hệ.

c. Dị thường do xóa dữ liệu

Ngƣợc lại với vấn đề c, khi ta xoá hết các mặt hàng do một hãng cung cấp, ta

không thể theo dõi đƣợc địa chỉ của hãng đó.

Trong ví dụ trên, vấn đề này sẽ không còn nữa khi ta thay quan hệ NHACC

bằng hai quan hệ:

NCC_ĐC(TÊN_NCC, ĐC_NCC)

NCC_HG(TÊN_NCC, TÊN_HG, GIA)

Tuy nhiên vẫn còn tồn tại nhiều vấn đề, ví dụ vẫn còn một bất lợi trong cách

phân chia sơ đồ trên: khi muốn tìm địa chỉ hãng cung cấp mặt hàng bột ngọt Vedan, ta

phải làm một kết nối, trong khi chỉ với quan hệ NHACC ta chỉ đơn giản thực hiện phép

chọn và chiếu. Nhƣ vậy làm sao xác định sự thay thế nhƣ trên là có lợi? Có xẩy ra các

vấn đề nhƣ đã bàn ở trên trong hai quan hệ này không? Làm thế nào tìm đƣợc một sự

thay thế tốt đẹp cho một sơ đồ quan hệ tồi tệ?

II. PHỤ THUỘC HÀM

1. Định nghĩa

Cho R(A1,…,An) là một sơ đồ quan hệ với tập thuộc tính U={A1,…,An}. X và Y

là tập con của U. Ta nói X Y (đọc là: X xác định hàm Y hoặc Y phụ thuộc hàm vào

X) nếu với mỗi cặp bộ u, v của R sao cho:

u[X] = v[X] u[Y] = v[Y]

2. Hệ tiên đề Amstrong

a. Định nghĩa hệ tiên đề Armstrong:

Gọi R(U) là lƣợc đồ quan hệ với U = {A1,…,An} là tập các thuộc tính. X, Y, Z,

W U. Hệ tiên đề Armstrong bao gồm:

Page 43: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 43

F1) Tính phản xạ:

Y X X Y

F2) Tính bắc cầu:

X Y, Y Z X

F3) Tính mở rộng hai vế:

X Y (Z U) XZ YZ

b. Định nghĩa tính đầy đủ và tính chặt chẽ của một hệ tiên đề:

Cho tập các phụ thuộc hàm F:

- Một hệ tiên đề S cho các phụ thuộc hàm đƣợc gọi là đầy đủ nếu các luật

của S cho phép suy diễn ra mọi phụ thuộc hàm trong F+.

- Một hệ tiên đề S cho các phụ thuộc hàm đƣợc gọi là chặc chẽ nếu các luật

của S không cho phép suy diễn từ F bất kỳ phụ thuộc hàm nào không thuộc F+.

c. Bổ đề 1:

Hệ tiên đề Armstrong là đúng. Có nghĩa là F là tập các phụ thuộc hàm đúng

trên quan hệ R. Nếu X Y là một phụ thuộc hàm đƣợc suy dẫn từ F nhờ hệ tiên đề

Armstrong thì X Y là đúng trên quan hệ R.

d. Bổ đề 2:

Từ hệ tiên đề Armstrong suy ra đƣợc một số luật sau đây:

F4) Cộng tính ở vế phải:

X Y, X Z X YZ

F5) Tính tựa bắc cầu:

X Y, YZ W XZ W

F6) Luật tách:

X Y, Z Y X Z

e. Bổ đề 3:

X Y suy dẫn từ hệ tiên đề Armstrong khi và chỉ khi Y X+ (X

+ là bao đóng

của tập các thuộc tính - giới thiệu ở mục sau).

f. Định lý 1:

Hệ tiên đề Armstrong là chặt chẽ và đầy đủ.

III. BAO ĐÓNG (CLOSURE)

1. Định nghĩa suy diễn theo logic

Giả sử F là tập phụ thuộc hàm trên lƣợc đồ quan hệ R(U) và X, Y là các tập con

thuộc tính của R (X, Y U). Ta nói rằng F suy diễn logic phụ thuộc hàm X Y hay

phụ thuộc hàm X Y đƣợc suy diễn logic từ F, ký hiệu:

F |== X Y

Nếu mọi quan hệ r thoả các phụ thuộc hàm trong F cũng thoả phụ thuộc hàm X

Y.

Nói cách khác, X Y đƣợc suy diễn logic từ F nếu từ F áp dụng một số lần các

tính chất F1, F2, F3 ta thu đƣợc X Y.

Ví dụ:

Cho tập phụ thuộc hàm F = {A B, B CD} ta chứng minh phụ thuộc hàm

AC CD đƣợc suy diễn logic từ F.

Thật vậy:

F3: A B AC BC

F3: B CD BC CD

F3: AC BC, BC CD AC CD

2. Bao đóng của tập các phụ thuộc hàm

a. Định nghĩa:

Cho tập phụ thuộc hàm F trên tập thuộc tính U. Bao đóng của F, ký hiệu là F+,

là tập nhỏ nhất các phụ thuộc hàm trên U thoả:

F+ = {X Y | F |== X Y}

Page 44: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 44

b. Định nghĩa khác cho bao đóng của tập phụ thuộc hàm:

F+ là tập các phụ thuộc suy diễn từ F nhờ hệ tiên đề Armstrong. Tức nó phải

thoả hai tính chất sau:

F+ F

Khi áp dụng các tính chất F1, F2, F3 cho F+ ta không thu đƣợc phụ thuộc

hàm nào nằm ngoài F+.

c. Tính chất:

(1): Tính phản xạ: F+ F

(2): Tính đơn điệu: F G F+ G

+

(3): Tính lũy đẳng: (F+)+ = F

+

(4): (FG)+ F

+G

+

(5): (F+G)

+ = (FG

+)+ = (FG)

+

3. Bao đóng của tập thuộc tính

a. Định nghĩa:

Cho tập phụ thuộc hàm F trên tập thuộc tính U và X U. Bao đóng của tập

thuộc tính X (đối với F), ký hiệu X+, là tập sau:

X+ = {A | X A F

+}

b. Định nghĩa khác cho bao đóng của tập thuộc tính:

X+ là tập các thuộc tính A sao cho X A có thể suy diễn đƣợc từ F bằng hệ

tiên đề Armstrong.

c. Tính chất:

(1): Tính phản xạ: X+ X

(2): Tính đơn điệu: X Y X+ Y

+

(3): Tính lũy đẳng: (X+)+ = X

+

(4): (XY)+ X

+Y

+

(5): (X+Y)

+ = (XY

+)+ = (XY)

+

(6): X Y Y X+

(7): X Y Y+ X

+

(8): X X+ và X

+ X

(9): X+ = Y

+ X Y, Y X

4. Thuật toán tìm bao đóng

Tính toán bao đóng của tập phụ thuộc hàm F+ rất tốn kém thời gian vì F

+ có thể

rất lớn ngay khi bản thân F nhỏ. Xét tập hợp:

F = {A B1, A B2,…, A Bn}

Khi đó F+ bao gồm tất cả các phụ thuộc hàm dạng A Y, trong đó Y là tập con

của:

{B1, B2,…, Bn}

Bởi vì có đến 2n tập con nhƣ vậy nên danh sách F

+ sẽ rất lớn dù cho n có nhỏ đi

nữa.

Nhƣng việc tính bao đóng của tập thuộc tính X+ không tốn kém lắm, thời gian tính

toán tỉ lệ thuận với độ dài của tất cả phụ thuộc hàm trong F. Theo kết luận từ các định lý

việc xác định X Y F+ tƣơng đƣơng với việc tính bao đóng X

+.

Sau đây là thuật toán tính bao đóng tập thuộc tính X+:

a. Giải thuật:

Input: Một tập hữu hạn các thuộc tính U, một tập các phụ thuộc hàm trên U, và

một tập X U.

Output: X+ thoả F.

Page 45: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 45

Method:

(i): Đặt X(0)

= X, F0 = F

(ii): Biết X(k-1)

, tính X(k)

nhƣ sau:

- Đặt X(k)

= X(k+1)

- Lần lƣợt duyệt qua các phụ thuộc hàm Y Z trong F0, với Y X(i)

. Ta

mở rộng X(k)

= X(k)

Z và đặt F0 = F0 \ {Y Z}

Nếu X(k)

= U hoặc F0 = , thì kết thúc.

(iii): Nếu X(k)

= X(k-1)

thì thuật toán dừng. Ngƣợc lại, tăng k lên 1 và quay lại

bƣớc (ii).

b. Ví dụ:

Cho tập phụ thuộc hàm F:

AB C D EG

C A BE C

BC D CG BD

ACD B CE AG

Đặt X = BD. Áp dụng giải thuật trên để xác định bao đóng X+.

- Đặt X(0)

= X = BD, F0 = F

- Tính X(1)

: Ta tìm các phụ thuộc hàm có phía bên trái là B, D, hoặc BD, có:

D EG

nên ta thêm E và G vào X(0)

để có:

X(1)

= BDEG

Tƣơng tự có:

X(2)

= BCDEG

X(3)

= ABCDEG = U thoát.

Vậy: (BD)+ = ABCDEG

c. Định lý:

Thuật toán trên tính đúng bao đóng X+.

IV. TẬP PHỤ THUỘC HÀM TỐI TIỂU

a. Phủ, phụ thuộc hàm tương đương:

Cho lƣợc đồ quan hệ R và các tập phụ thuộc hàm F và G trên R ta nói:

F phủ phụ thuộc hàm G nếu G+ F

+

F tương đương phụ thuộc hàm G nếu G+ = F

+

Để xác định phụ thuộc hàm Y Z G+ hay không ta sử dụng thuật toán tính bao

đóng tập thuộc tính để tính Y+ đối với G và kiểm tra xem Z Y

+ hay không.

Mệnh đề: F G+ F

+ G

+

Mệnh đề: Mỗi tập phụ thuộc hàm F tƣơng đƣơng với tập phụ thuộc hàm G gồm

các phụ thuộc hàm mà vế phải chỉ có 1 thuộc tính.

b. Phủ tối tiêu:

Để tối ƣu hơn nữa việc thiết kế lƣợc đồ CSDL quan hệ ta yêu cầu mạnh hơn

đối với tập phụ thuộc hàm tƣơng đƣơng.

Định nghĩa: Tập phụ thuộc hàm F gọi là phụ thuộc hàm tối thiểu nếu nó thoả mãn

các điều kiện sau:

(1): Vế phải của mỗi phụ thuộc hàm trong F chỉ có 1 thuộc tính.

(2): Mọi phụ thuộc hàm X A F là quan trọng, tức là tập phụ thuộc hàm có

từ F bằng sự loại bỏ phụ thuộc hàm X A:

F \ {X A}

không tƣơng đƣơng với F.

(3): Với mỗi phụ thuộc hàm X A F, mọi thuộc tính B X đều quan trọng,

tức là tập phụ thuộc hàm có từ F bằng việc thay phụ thuộc hàm X A bởi phụ thuộc

hàm (X \{B}) A:

(F \ {X A}) {X \ {B} A}

không tƣơng đƣơng với F.

Page 46: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 46

Nhận xét: Điều kiện (2) đảm bảo không có phụ thuộc hàm dƣ thừa, điều kiện

(3) đảm bảo không có thuộc tính ở vế trái dƣ thừa.

Thuật toán tìm phủ tối thiểu:

- Input: Tập phụ thuộc hàm F.

- Output: Tập phụ thuộc hàm tối thiểu G tƣơng đƣơng với F.

- Method:

(1): Phân rã vế phải tất cả phụ thuộc hàm của F và gọi G là tập tất cả các

phụ thuộc hàm thu đƣợc.

(2): Loại các phụ thuộc hàm dƣ thừa trong G: Không tồn tại X A nào

trong F mà tập F - {X A} tƣơng đƣơng với F.

(3): Loại các thuộc tính dƣ thừa ở vế trái của các phụ thuộc hàm trong G:

Không tồn tại X A trong F mà Z X để cho:

(F - {X A}) {Z A}

tƣơng đƣơng với F.

Ví dụ:

Cho lƣợc đồ R = (A, B, C, D, E, G) và tập phụ thuộc hàm F gồm các phụ thuộc

hàm sau:

AB C D EG

C A BE C

BC D CG BD

ACD B CE AG

Ta áp dụng thuật toán tính phủ tối thiểu để tính phủ tối thiểu của F.

(1): Phân rã vế phải các phụ thuộc hàm trong F

Tập G thu đƣợc gồm các phụ thuộc hàm:

AB C BE C

C A CG B

BC D CG D

ACD B CE A

D E CE G

D G

(2): Loại các phụ thuộc hàm dƣ thừa và thuộc tính dƣ thừa

* Loại các phụ thuộc hàm dƣ thừa:

- Loại CG B, vì nó suy ra từ C A, ACD B và CG D bằng

các phép kéo theo nhƣ sau:

C A CG AG (qui tắc mở rộng hai vế)

CG A (qui tắc phân rã)

CGA & CGD & CG C CG ACD (qui tắc hợp)

CG ACD & ACD B CG B (qui tắc bắc cầu)

Nhƣ vậy ta loại ra khỏi G.

- Loại CE A, vì nó suy ra từ C A.

Kết thúc bƣớc này các phụ thuộc hàm còn lại nhƣ sau:

AB C BE C

C A

BC D CG D

ACD B

D E CE G

D G

* Loại thuộc tính dƣ thừa:

Trong phụ thuộc hàm ACD B, thuộc tính A dƣ thừa vì C A. Nhƣ

vậy ta thay ACD B bởi CD B.

Page 47: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 47

Cuối cùng ta nhận đƣợc phủ tối thiểu:

AB C BE C

C A

BC D CG D

CD B

D E CE G

D G

V. PHỤ THUỘC ĐA TRỊ

Chúng ta cũng đã thấy rằng dữ liệu có mối quan hệ với nhau và đó gọi là phụ

thuộc hàm. Nhƣng đó không phải là duy nhất. Khái niệm phụ thuộc hàm trong trƣờng

hợp tổng quát không đủ để vét hết các loại phụ thuộc tồn tại trong quan hệ. Trong thực

tế còn có nhiều loại phụ thuộc dữ liệu nữa. Chẳng hạn, mỗi cặp vợ chồng (tên cha, tên

mẹ) không phải là xác định duy nhất tên một đứa con mà là một hoặc một số con. Mối

quan hệ đó trong CSDL gọi là phụ thuộc đa trị.

1. Định nghĩa trực quan:

Giả sử cho R là một sơ đồ quan hệ, X và Y là hai tập con của R. Nói rằng “X xác

định đa trị Y” hay “có một phụ thuộc đa trị giữa X và Y”, ký hiệu X Y, nếu với

mỗi giá trị của X có một tập rỗng hoặc một tập các giá trị tƣơng ứng trên Y mà không

liên quan gì đến các giá trị của các thuộc tính còn lại, R-X-Y.

2. Định nghĩa hình thức:

Gọi R là một sơ đồ quan hệ; X và Y là hai tập con của R, Z = R – XY. Quan hệ

r(R) thoả phụ thuộc đa trị X Y nếu với bất kỳ hai bộ t1 r và t2 r với t1[X] =

t2[X] tồn tại một bộ t3 r sao cho t3[X] = t1[X], t3[Y] = t1[Y] và t3[Z] = t2[Z].

Do tính đối xứng của t1 và t2 dễ dàng thấy rằng trong r còn tồn tại một bộ t4 mà

t4[X] = t1[X], t4[Y] = t2[Y] và t4[Z] = t1[Z].

Chú ý: X và Y có thể là tập rỗng, nếu Y = thì X đúng với mọi quan hệ.

Nếu X = thì Y thoả trên một quan hệ khi và chỉ khi tập giá trị trên tập thuộc

tính Y là độc lập với các giá trị của những thuộc tính còn lại trong quan hệ. Gọi r[YZ] là

một quan hệ, Y Z = khi đó Y thoả trên r khi và chỉ khi r = r[Y] x r[Z] (tích

đề các).

3. Ví dụ:

Giả sử ta muốn duy trì thông tin về tập nhân viên (ENO) và về tập dự án (PNO)

có liên quan đến công ty cũng nhƣ về chi nhánh (PLACE) thực hiện dự án. Yêu này có

thể đƣợc thực hiện bằng cách định nghĩa sơ đồ quan hệ:

SKILL(ENO, PNO, PLACE)

Ta giả sử (có thể không thực tế):

(1): Mỗi nhân viên đều có thể làm việc cho mọi dự án.

(2): Mỗi nhân viên đều có thể làm việc tại mọi chi nhánh.

(3): Mỗi dự án đều có thể đƣợc thực hiện tại bất kỳ chi nhánh nào.

Page 48: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 48

Một quan hệ mẫu thoả các đều kiện này cho ở bảng sau:

ENO PNO PLACE

E1 P1 Toronto

E1 P1 New York

E1 P1 London

E1 P2 Toronto

E1 P2 New York

E1 P2 London

E2 P1 Toronto

E2 P1 New York

E2 P1 London

E2 P2 Toronto

E2 P2 New York

E2 P2 London

Trong quan hệ trên có ENO PNO. Thật vậy với

t1 = (E1, P1, Toronto)

t2 = (E1, P2, New York)

tồn tại 2 bộ:

t3 = (E1, P1, New York)

t4 = (E1, P1, Toronto)

Ta còn một phụ thuộc đa trị khác từ quan hệ trên nhƣ:

ENO PLACE

4. Mối liên quan giữa phụ thuộc hàm và phụ thuộc đa trị:

Mỗi phụ thuộc hàm đều là phụ thuộc đa trị, nhƣng ngƣợc lại thì không đúng. Một

phụ thuộc đa trị X Y sẽ là một phụ thuộc hàm chỉ khi với mỗi giá trị tại X thì tập giá

trị tại Y tƣơng ứng nhiều nhất có một phần tử.

Page 49: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 49

CHƢƠNG VI:

PHÉP TÁCH CÁC LƢỢC ĐỒ QUAN HỆ

I. KHÁI NIỆM PHÉP TÁCH

Phép tách một lƣợc đồ quan hệ R = {A1,…,An} là việc thay thế lƣợc đồ quan hệ R

bằng tập lƣợc đồ {R1,…,Rk}, trong đó R1,…,Rk là các tập con của R, không bắt buộc

phân biệt với nhau, thỏa:

R = R1 … Rk

Mục đích của phép tách là loại bỏ các dị thƣờng dữ liệu, nhằm chuẩn hoá các lƣợc đồ

quan hệ.

1. Ví dụ 1:

Xét sơ đồ quan hệ NHACC(TenNCC, Hang, Diachi, ĐG) với các phụ thuộc

hàm:

TenNCC Diachi

TenNCC, Hang Dongia

Từ tập phụ thuộc hàm chúng ta thấy rằng có dƣ thừa dữ liệu trong quan hệ

NHACC này. Giả sử một TenNCC cung cấp nhiều mặt hàng thì Diachi sẽ bị lập đi lập

lại nhiều lần cho TenNCC đó. Tuy nhiên nếu chúng ta thay NHACC bằng hai lƣợc đồ:

CTY(TenNCC, Diachi)

HANG(TenNCC, Hang, ĐG)

thì có thể loại bỏ đƣợc một số dị thƣờng nhƣ Điachi không bị lập đi, lập lại nhiều lần,

nhƣng liệu có giải quyết đƣợc mọi vấn đề hay không?

Giả sử quan hệ r là giá trị hiện thời của lƣợc đồ NHACC. Ta ký hiệu r1 và r2 là

hai thể hiện ứng với lƣợc đồ CTY và HANG. Ta trông đợi rằng r1 sẽ là phép chiếu của r

lên các thuộc tính TenNCC, Diachi và r2 sẽ là chiếu của r lên các thuộc tính TenNCC,

Hang, ĐG:

r1 = Ten, Diachi (r) & r2 = Ten, Hang, ĐG (r)

Bằng cách nào ta biết đƣợc r1 và r2 chứa thông tin giống nhƣ r? Một hƣớng trả

lời là kiểm tra xem r có thể đƣợc phục hồi từ r1 và r2 hay không. Ta khẳng định rằng

phƣơng pháp duy nhất để phục hồi r là tái tạo nối tự nhiên của r1 và r2. Nếu ta đặt:

s = r1 * r2

nếu r s thì từ r1 và r2 chúng ta không có cách nào biết đƣợc r hay s là quan hệ gốc của

lƣợc đồ NHACC.

2. Ví dụ 2:

Cho lƣợc đồ R = (A, B, C) và tập phụ thuộc hàm F = {A B}. Xét phân rả R

thành 2 lƣợc đồ con (A,B) và (B,C).

Cho quan hệ r = {a1b1c1, a2b1c2}là thể hiện của lƣợc đồ R. Khi đó:

AB(r) = {a1b1, a2b1}, BC(r) = {b1c1, b1c2}

Nhƣ vậy:

s = AB(r) * BC(r) = {a1b1c1, a1b1c2, a2b1c1, a2b1c2} r.

Vậy phép tách này không phục hồi đúng thông tin ban đầu.

3. Ví dụ 3:

Cho lƣợc đồ: LOPHOC(Lop, Monhoc, Giaovien) với tập phụ thuộc hàm:

Giaovien Monhoc

Lop, Monhoc Giaovien

Xép phép tách thành:

GV(Giaovien, Monhoc)

LOP(lop,Giaovien)

Phép tách nào bảo tồn thông tin ban đầu:

Giaovien, Mônhoc (LOPHOC) * Lop, GV (LOPHOC) = LOPHOC

Page 50: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 50

Tuy nhiên phụ thuộc hàm thứ 2 không còn tồn tại trong các lƣợc đồ con, và

nhƣ vậy nó cũng không đƣợc phục hồi trong phép nối tự nhiên trên.

Vấn đề đặt ra là chúng ta phải phân rã lƣợc đồ sao cho các nối tự nhiên của các

quan hệ phân rã tƣơng ứng phải thỏa mãn 2 yêu cầu sau:

(1): Phục hồi được thông tin của quan hệ ban đầu.

(2): Phục hồi được các phụ thuộc hàm của các quan hệ ban đầu.

Phép tách thoả mãn yêu cầu (1) gọi là phép tách bảo tồn thông tin, còn phép

tách thoả mãn yêu cầu (2) là phép tách bảo tồn phụ thuộc hàm. Chúng ta sẽ nghiên cứu

các phép tách này trong phần sau:

II. PHÉP TÁCH KẾT NỐI KHÔNG MẤT THÔNG TIN

1. Định nghĩa:

Nếu R là một sơ đồ quan hệ tách thành các sơ đồ R1, R2,…, Rk và F là tập phụ

thuộc hàm, ta nói phép tách có kết nối không mất thông tin nếu với mọi quan hệ r của R

thoả F:

r = R1(r) * R2(r) *…* Rk(r)

2. Bổ đề:

Cho R là một sơ đồ quan hệ, = {R1, R2,…, Rk} là một phép tách R, r là một

quan hệ trên R. Đặt:

m(r) = R1(r) * R2(r) *…* Rk(r)

Ta có:

(i): r m(r)

(ii): Nếu s = m(r) thì Ri(s) = ri

(iii): m(s) = m(r)

3. Kiểm tra kết nối không mất thông tin:

a. Giải thuật:

Input: Một sơ đồ quan hệ R = (A1,…,An), một tập phụ thuộc hàm F và một

phép tách

= (R1, R2,…, Rk)

Output: Một quyết định xem có là một phép tách với một kết nối không mất

thông tin.

Method:

- Ta xây dựng một bảng k dòng và n cột, cột j tƣơng ứng thuộc tính thứ j và

dòng i tƣơng ứng sơ đồ quan hệ Ri. Tại vị trí giao của dòng i và cột j ta đặt ký hiệu aj

nếu Aj có trong Ri, ký hiệu bij nếu ngƣợc lại.

- Lặp lại việc xét từng phụ thuộc hàm X Y trong F, cho đến khi không

còn thay đổi đƣợc bảng. Mỗi lần xét X Y ta tìm các dòng mang trị bằng nhau trên tập

thuộc tính X. Nếu tìm đƣợc hai dòng nhƣ vậy, làm cho các ký hiệu trên hai dòng đó

giống nhau tại các thuộc tính của Y (nếu một ký hiệu là aj ta cho ký hiệu thứ hai cũng là

aj; nếu chúng là bij và blj ta cho chúng cùng là bij hoặc cùng là blj.

- Nếu sau khi sửa bảng theo cách nhƣ trên, ta thấy có dòng nào đó có dạng

a1, a2,…, ak thì kết nối là không mất thông tin, ngƣợc lại là mất.

b.Ví dụ:

Ta hãy xét phép tách SAIP thành SA và SIP. Các phụ thuộc hàm gồm S A

và SI P, và bảng ban đầu là:

S A I P

SA a1 a2 b13 b14

SIP a1 b22 a3 a4

Xét S A, ta thấy hai dòng có giá trị giống nhau ở cột S, vì vậy giá trị ở cột A

cần thay đổi thành a2.

Page 51: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 51

S A I P

SA a1 a2 b13 b14

SIP a1 a2 a3 a4

Vì bảng có một dòng chứa toàn aj nên phép tách này là phép tách không mất

thông tin.

c. Định lý 1:

Thuật toán trên xác định đúng nếu phép tách là không mất mát thông tin.

d. Định lý 2:

* Phát biểu:

Nếu = (R1, R2) là một phép tách sơ đồ quan hệ R và F là tập phụ thuộc

hàm, thì có một phép tách không mất thông tin thoả F nếu và chỉ nếu:

(R1 R2) (R1 – R2)

hoặc

(R1 R2) (R2 – R1)

Chú ý: Các PTH này không cần thuộc F, chỉ cần thuộc F+.

* Áp dụng:

Trong khi giải thuật trên có thể áp dụng cho một phép tách thành một số bất

kỳ các sơ đồ quan hệ, định lý 2 cho một cách kiểm tra đơn giản hơn đối với phép tách R

thành hai sơ đồ quan hệ.

* Ví dụ:

Giả thiết R = ABC và F = {A B}.

Nhƣ vậy, phép tách R thành AB và AC là phép tách không mất thông tin vì

AB AC = A

AB – AC = B

và ta có: A B

III. PHÉP TÁCH BẢO TỒN PHỤ THUỘC HÀM

Cho lƣợc đồ quan hệ R với tập phụ thuộc hàm F và phép tách = {R1,…, Rk}.

Một tính chất quan trọng nữa của phép tách lƣợc đồ quan hệ là tập phụ thuộc hàm F

phải đƣợc suy ra từ các chiếu của F lên R1,…, Rk.

Ta định nghĩa chiếu của F lên tập thuộc tính Q, ký hiệu Q(F), nhƣ sau:

Q(F) = {X Y F+ | X Y Q}

1. Định nghĩa:

Ta nói phép tách = {R1,…, Rk}của lƣợc đồ R bảo tồn phụ thuộc hàm (đối với

tập phụ thuộc hàm F) nếu hợp các chiếu của F lên R1,…, Rk suy diễn logic tất cả phụ

thuộc hàm trong F.

F (R1(F) R2(F) … Rk(F))+

Lý do để phép tách phải bảo tồn phụ thuộc hàm là các phụ thuộc hàm có thể coi là

những ràng buộc toàn vẹn của lƣợc đồ R. Nếu các phụ thuộc hàm chiếu lên các lƣợc đồ

con không suy diễn F thì sự phân rã có thể vi phạm các phụ thuộc hàm trong F, thậm chí

ngay cả khi phân rã bảo tồn thông tin.

Ví dụ:

- Cho sơ đồ quan hệ R(C, S, Z) và tập phụ thuộc hàm F:

CS Z

Z C

(1): Phép tách R thành SZ và CZ là phép tách không mất thông tin vì:

(SZ CZ) (CZ – SZ) Z C

(2): Tuy nhiên, phép chiếu của F = {CS Z, Z C} trên SZ chỉ cho các

phụ thuộc hàm tầm thƣờng; Trong khi phép chiếu của F trên CZ cho phụ thuộc hàm Z

C và các PTH tầm thƣờng và chúng không suy diễn ra đƣợc CS Z. Do đó phép

tách này là không bảo tồn phụ thuộc hàm.

Page 52: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 52

- Chúng ta xét thể hiện cụ thể cho phép tách trên:

R1 S Z R2 C Z

12 LTT 02138 TP CT 02138

12 LTT 02139 TP CT 02139

S C S Z

TP CT 12 LTT 02138

TP CT 12 LTT 02139

Ta thấy, S là kết nối tự nhiên giữa R1 và R2. R1 thoả các PTH tầm thƣờng, R2

thoả các PTH tầm thƣờng và Z C, nhƣng bảng S vi phạm PTH CS Z.

2. Giải thuật:

Input: Lƣợc đồ quan hệ R = {A1, A2,…, An}, tập phụ thuộc hàm F và phép tách:

= {R1,…, Rk}

Output: Kết luận về tính bảo toàn phụ thuộc hàm của phân rã .

Method:

Ký hiệu

G = k

i=1 Ri(F)

Ta không tính G mà chỉ kiểm tra xem nó có phủ F hay không. Cho X Y F,

kiểm tra xem bao đóng của X theo G, ký hiệu XG+, có chứa Y hay không.

Thủ thuật tính XG+ mà không cần có G là xét tác dụng của quá trình tính bao

đóng của X đối với các chiếu của F lên Ri.

Xuất phát từ X, ta tính XG+ nhƣ sau:

(1): Đặt X0 = X, t = 1;

(2): Tính Xt trên cơ sở Xt-1:

(i): Đặt Xt = Xt-1

(ii):Với mỗi lƣợc đồ con Ri F, Ri Xt, ta thực hiện phép toán:

Xt = Xt (( Xt Ri)+ Ri)

Trong quá trình tính toán nếu Xt = R thì kết thúc, và kết luận XG+

=

R. Ngƣợc lại sang bƣớc (3).

(3): Nếu Xt = Xt-1 thì kết thúc, và kết luận XG+ = Xt.

Ngƣợc lại tăng t lên 1 đơn vị và quay về bƣớc (2).

Nếu Y là tập con của XG+ có đƣợc từ việc thực hiện các bƣớc trên, thì khi đó X

Y G+. Nếu mỗi X Y F đƣợc chứng minh thuộc G

+ bằng cách đó thì phép tách

bảo toàn phụ thuộc hàm, ngƣợc lại là không.

3. Ví dụ:

Xét lƣợc đồ R = (A,B,C,D) với phép tách {AB, BC, CD}

trong đó: AB = (A,B), BC = (B,C), CD = (C,D), và tập phụ thuộc hàm F:

A B

B C

C D

D A

Ta thấy trong F+ mỗi thuộc tính xác định tất cả các thuộc tính khác. Ta có cảm

giác rằng khi chiếu F lên AB, BC và CD thì ta bỏ mất phụ thuộc hàm D A, nhƣng

nhận định đó không đúng. Khi tính chiếu của F lên tập thuộc tính, ta thực sự chiếu F+

lên các lƣợc đồ quan hệ. Nhƣ vậy, khi chiếu F lên AB ta không những chỉ có phụ thuộc

hàm A B, mà còn nhận đƣợc phụ thuộc hàm B A. Tƣơng tự ta nhận đƣợc C B

BC(F) và D C CD(F), và chúng suy diễn logic ra D A.

Page 53: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 53

Nhƣ vậy, để kết luận phép tách bảo toàn phụ thuộc hàm, ta phải chỉ ra rằng D

A suy diễn từ tập

G = CD(F) CD(F) CD(F)

Áp dụng thuật toán, đặt X = D và tính XG+ theo giải thuật trên:

(1): Đặt X0 = X = {D}, t = 1

(2): Tính X1:

Đặt X1 = X0 = {D}

Xét lƣợc đồ con AB. Vì AB X1, ta thực hiện phép tính

X1 = {D} (({D} {A,B})+ {A,B}) = {D}

Xét lƣợc đồ con BC. Vì BC X1, ta thực hiện phép tính

X1 = {D} (({D} {B,C})+ {B,C}) = {D}

Xét lƣợc đồ con CD. Vì CD X1, ta thực hiện phép tính

X1 = {D} (({D} {C,D})+ {C,D}) =

= {D} ({A,B,C,D} {C,D}) = {C,D}

Đến đây ta có X1 = {C,D} X0 = {D}. Vậy ta tính tiếp X2.

(2): Tính X2:

Đặt X2 = X1 = {C,D}

Xét lƣợc đồ con AB. Vì AB X2, ta thực hiện phép tính

X1 = {C,D} (({C,D} {A,B})+ {A,B}) = {C,D}

Xét lƣợc đồ con BC. Vì BC X2, ta thực hiện phép tính

X1 = {C,D} (({C,D} {B,C})+ {B,C}) = {B,C,D}

Ta bỏ qua lƣợc đồ CD vì CD X2.

Đến đây ta có X2 = {B,C,D} X1 = {C,D}. Vậy ta tính tiếp X2:

(3): Tính X3:

Đặt X3 = X2 = {B,C,D}

Xét lƣợc đồ con AB. Vì AB X2, ta thực hiện phép tính

X1 = {B,C,D} (({B,C,D} {A,B})+ {A,B})

= {B,C,D} ({A,B,C,D} {A,B}) = {A,B,C,D}

Ta có X3 = R. Quá trình kết thúc và ta có:

XQ+ = (D)

+ = R

Từ đó suy ra D A G+. Các phụ thuộc hàm khác hiển nhiên là thuộc G

+ (thậm

chí chúng thuộc G). Ta kết luận phép tách bảo toàn phụ thuộc hàm F.

Page 54: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 54

CHƢƠNG VII:

CHUẨN HOÁ LƢỢC ĐỒ QUAN HỆ

I. CÁC DẠNG PHỤ THUỘC HÀM

1. Thuộc tính nguyên tố, không nguyên tố

(prime/nonprime attribute)

Cho sơ đồ quan hệ R(U), một thuộc tính A R đƣợc gọi là nguyên tố nếu A là

thành phần của một khoá trong R. Ngƣợc lại, A không là nguyên tố.

Ví dụ:

Trong sơ đồ quan hệ ABCD (khoá là AB, BC) với các phụ thuộc hàm:

AB C

B D

BC A

Ta thấy: A, B, C là thuộc tính nguyên tố; D là không nguyên tố.

2. Phụ thuộc từng phần

(partial dependency)

Phụ thuộc hàm X A là phụ thuộc từng phần nếu X là tập con thực sự của một

khoá của R.

3. Phụ thuộc đầy đủ/phụ thuộc sơ cấp

(complete dependency)

Phụ thuộc hàm X A là phụ thuộc đầy đủ (hay còn gọi là phụ thuộc sơ cấp/

nguyên tố) nếu không tồn tại tập con thực sự Y X nào để cho Y A xảy ra. Nhƣ vậy

phụ thuộc đầy đủ vào khoá ngƣợc lại với phụ thuộc từng phần.

4. Phụ thuộc truyền

X A là phụ thuộc hàm truyền nếu X không là tập con thực sự của một khoá

nào, A là thuộc tính không khoá, A X.

5. Phụ thuộc trực tiếp

X A là phụ thuộc trực tiếp nếu không tồn tại tập thuộc tính Y, với Y X, Y

A thỏa:

X Y & Y A

6. Phụ thuộc hàm tầm thƣờng

Phụ thuộc hàm X Y gọi là phụ thuộc hàm tầm thƣờng nếu Y X (hiển nhiên là

nếu Y X thì ta có X Y).

II. CÁC DẠNG CHUẨN

1. Dạng chuẩn thứ nhất (1NF)

a. Định nghĩa:

Một sơ đồ quan hệ R đƣợc xem là ở dạng chuẩn thứ nhất nếu mọi thuộc tính

của R đều khác trống, phụ thuộc hàm vào khoá và không đƣợc mang giá trị kép (tức

không thể chia đƣợc thành các thành phần nhỏ hơn và có ý nghĩa).

b. Ví dụ:

Cho sơ đồ quan hệ:

CUNG_UNG(MaNSX, MaH, SL, VonNSX, TP, Nuoc)

với các phụ thuộc hàm:

MaNSX, MaH SL (a)

MaNSX VonNSX (b)

MaNSX TP (c)

MaNSX Nuoc (d)

TP Nuoc (e)

Sơ đồ này thoả dạng chuẩn thứ nhất (1NF).

Page 55: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 55

2. Dạng chuẩn thứ hai (2NF)

a. Định nghĩa:

Một sơ đồ quan hệ R đƣợc xem là thoả dạng chuẩn 2 nếu nó ở dạng chuẩn 1 và

không có phụ thuộc hàm từng phần.

b. Ví dụ 1:

Sơ đồ quan hệ SAIP (khoá SI) với các phụ thuộc hàm: SI P và S A đã vi

phạm dạng chuẩn thứ 2. Do khoá là SI nên A là không nguyên tố.

c. Ví dụ 2:

Trong ví dụ trên, sơ đồ quan hệ CUNG_UNG không thỏa dạng chuẩn thứ 2 vì

các phụ thuộc hàm (b), (c) và (d) là các phụ thuộc hàm từng phần.

Ta có thể tách CUNG_UNG thành 2 sơ đồ quan hệ:

CUNG_UNG2(MaNSX, MaH, SL)

NSX(MaNSX, VonNSX, TP, Nuoc)

thì cả hai sơ đồ mới này đều thỏa 2NF.

3. Dạng chuẩn thứ ba (3NF)

a. Định nghĩa:

Một sơ đồ quan hệ R đƣợc xem là thỏa dạng chuẩn 3 nếu nó ở dạng chuẩn 2 và

không có phụ thuộc hàm truyền.

b. Ví dụ 1:

Sơ đồ quan hệ CSZ (khoá là CS và SZ) với các phụ thuộc hàm: CS Z và Z

C thỏa dạng chuẩn 3 vì mọi thuộc tính đều là nguyên tố.

c. Ví dụ 2:

Sơ đồ quan hệ NSX ở ví dụ trên không thỏa dạng chuẩn 3 vì có chứa phụ thuộc

hàm truyền:

TP Nuoc

Ta có thể tách NSX thành 2 sơ đồ quan hệ:

NSX(MaNSX, VonNSX, TP)

TP(TP, Nuoc)

thì 2 sơ đồ này thỏa 3NF.

4. Dạng chuẩn Boyce – Codd (BCNF)

a. Định nghĩa:

Một sơ đồ quan hệ R đƣợc gọi là thỏa dạng chuẩn Boyce – Codd nếu với mọi

phụ thuộc hàm không tầm thƣờng đều có vế trái là siêu khoá.

b. Ví dụ 1:

Sơ đồ quan hệ CSZ (khoá là CS và SZ) với các phụ thuộc hàm: CS Z và Z

C thỏa dạng chuẩn 3 nhƣng không thỏa Boyce – Codd vì phụ thuộc hàm Z C, Z

không là siêu khoá.

c. Ví dụ 2:

Xét lƣợc đồ:

LOPHOC(Lop, MonHoc, GiaoVien)

với 2 phụ thuộc hàm:

GiaoVien Monhoc

Lop, MonHoc GiaoVien

Lƣợc đồ có 2 khoá:

K1 = Lop, MonHoc và

K2 = Lop, GiaoVien

nên tất cả các thuộc tính đều là thuộc tính khoá lƣợc đồ ở dạng chuẩn 3. Tuy nhiên

lƣợc đồ không ở dạng chuẩn Boyce – Codd vì phụ thuộc hàm

GiaoVien MonHoc

không thỏa yêu cầu vế trái phải là siêu khoá.

Page 56: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 56

5. Dạng chuẩn thứ tƣ (4NF)

a. Định nghĩa:

Lƣợc đồ quan hệ R thỏa dạng chuẩn thứ tƣ nếu với mọi phụ thuộc đa trị X

Y bất kỳ, trong đó Y khác rỗng hoặc không là một tập con của X và X Y không

chứa hết mọi thuộc tính của R thì X phải là một siêu khóa của R.

b. Ví dụ:

Xét quan hệ: SKILL(ENO, PNO, PLACE)

ENO PNO PLACE

E1 P1 Toronto

E1 P1 New York

E1 P1 London

E1 P2 Toronto

E1 P2 New York

E1 P2 London

E2 P1 Toronto

E2 P1 New York

E2 P1 London

E2 P2 Toronto

E2 P2 New York

E2 P2 London

Quan hệ không có phụ thuộc hàm; tất cả các thuộc tính là thuộc tính khoá.

Quan hệ SKILL có hai phụ thuộc đa trị:

ENO PNO

ENO PLACE

Vì quan hệ không có phụ thuộc hàm nên nó ở dạng BCNF. Tuy nhiên nó không

ở dạng chuẩn 4 vì ENO không phải là khoá.

III. KẾT HỢP CHUẨN HOÁ VỚI CÁC PHÉP TÁCH SƠ ĐỒ QUAN HỆ

1. Dùng phép tách kết nối không mất thông để đƣa về dạng chuẩn BCNF

a. Giải thuật:

- Input: Sơ đồ quan hệ R và tập phụ thuộc hàm F.

- Output: Một phép tách của R với kết nối không mất thông tin, sao cho mọi sơ

đồ quan hệ trong phép tách sẽ ở dạng chuẩn Boyce – Codd và thỏa chiếu của F trên đó.

- Method:

Cấu trúc phép tách trên R theo phƣơng pháp lặp liên tiếp. Tại mỗi bƣớc

phép tách là bảo đảm không mất mát thông tin đối với F.

Khởi đầu: chỉ gồm R

Các bước kế tiếp: Nếu S là một lƣợc đồ thuộc , S chƣa ở BCNF, chọn X

A là phụ thuộc hàm thỏa trên S, trong đó X không chứa khoá của S, A X. Rõ ràng

cần phải có một số thuộc tính khác của S vừa không phải A, vừa không thuộc X hoặc

nếu không thì X phải chứa một khoá của S. Thay thế S trong bởi S1 và S2.

S1 = XA, S2 = S – A

(phép tách S thành S1 và S2 là không mất thông tin đối với tập phụ thuộc hàm trên S vì

rằng S1 S2 = X, X S1 – S2 = A)

Quá trình tiếp tục cho tới khi tất cả các lƣợc đồ đều ở BCNF. Chú ý

rằng tại mọi thời điểm luôn bảo đảm không mất thông tin, vì rằng ban đầu là R, mà

bƣớc thay đổi đều bảo toàn tính chất đó.

b. Ví dụ:

Cho lƣợc đồ R(CTHRSG), trong đó C: giáo trình, T: thầy giáo, H: giờ, R:

phòng học, S: sinh viên, G: lớp. Tập phụ thuộc hàm F:

Page 57: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 57

C T HR C

HT R CS G

HS R

Khoá của R là HS.

Tách lƣợc đồ R thành các lƣợc đồ BCNF:

- Xét CS G cho R. Vi phạm điều kiện BCNF vì CS không chứa khoá. Do

vậy, dùng thuật toán để tách R thành R1(CSG) và R2(CTHRS). Bƣớc tiếp cần tính F+ và

chiếu xuống R1 và R2, sau đó kiểm tra các lƣợc đồ đã ở BCNF chƣa. Có thể biểu diễn

quá trình tách qua sơ đồ quan hệ sau:

2. Dùng phép tách bảo tồn phụ thuộc hàm để đƣa về dạng chuẩn thứ 3

a. Giải thuật:

- Input: Lƣợc đồ quan hệ R, tập các phụ thuộc hàm F; không làm mất tính tổng

quát giả sử rằng nó là phủ tổi thiểu.

- Output: Một phép tách trên R có bảo toàn phụ thuộc hàm, sao cho mọi sơ

đồ quan hệ đều ở dạng chuẩn ba và thỏa chiếu F trên sơ đồ quan hệ đó.

- Method:

+ Nếu có một hoặc một số thuộc tính nào đó của R không có mặt trong tất

cả các phụ thuộc hàm của F thì về nguyên tắc bản thân chúng sẽ tạo thành một sơ đồ

quan hệ và ta sẽ xoá chúng ra khỏi R.

+ Nếu có một phụ thuộc hàm của F chứa hết tất cả các thuộc tính của R thì

kết quả cần tìm chính là R.

CTHRSG

Khoá = HS

C T, HR C

HT R, CS G

HS R

CSG

Khoá = CS

CS G

CTHRS

Khoá = HS

C T, HR C

HT R, HS R

CT

Khoá = C

C T

CHRS

Khoá = HS

HR C, HC R

HS R

HRC

Khoá = HR, HC

HR C, HC R

HRS

Khoá = HS

HS R

Page 58: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 58

+ Ngƣợc lại thì kết quả sẽ chứa sơ đồ quan hệ XA cho từng phụ thuộc hàm

X A trong F. Tuy nhiên, nếu X A1, X A2,…, X An trong F, ta có thể dùng sơ

đồ X A1A2...An thay vì n sơ đồ X Ai (1 ≤ i ≤ n). Thực tế cách thay thế này đƣợc

ƣa thích hơn.

b. Ví dụ:

Cho sơ đồ quan hệ:

HOC(Mon, GV, TG, Phong, SV, KQ)

và tập phụ thuộc hàm:

Mon GV Mon, SV KQ

TG, Phong Mon TG, SV Phong

TG, GV Phong

Theo giải thuật ta tách HOC thành các sơ đồ quan hệ:

H1(Mon, GV)

H2(TG, Phong, Mon)

H3(TG, GV, Phong)

H4(Mon, SV, KQ)

H5(TG, SV, Phong)

c. Định lý:

Giải thuật tạo ra một phép tách bảo toàn phụ thuộc hàm để đƣa về dạng chuẩn

thứ ba.

3. Dùng phép tách kết nối không mất thông tin và phép tách bảo tồn phụ thuộc

hàm để đƣa về dạng chuẩn thứ 3

a. Giải thuật:

- Input: Một phép tách trên R có bảo toàn phụ thuộc hàm sao cho mọi sơ đồ

quan hệ đều ở dạng chuẩn thứ ba và thỏa chiếu của F trên sơ đồ quan hệ đó.

- Output: Một phép tách trên R với kết nối không mất thông tin và bảo toàn

phụ thuộc hàm sao cho mọi quan hệ đều ở dạng chuẩn thứ ba và thỏa chiếu của F trên

sơ đồ quan hệ đó.

- Method: Nếu không có lƣợc đồ con chứa khoá của R và X là khoá nào đó

của R thì ta chỉ đơn giản là thêm vào một sơ đồ quan hệ chứa X: = {X}

b. Ví dụ:

Xét lại ví dụ trên, ta có kết quả:

H1(Mon, GV)

H2(TG, Phong, Mon)

H3(TG, GV, Phong)

H4(Mon, SV, KQ)

H5(TG, SV, Phong)

H6(TG, SV)

nhƣng ta thấy H3 đã chứa TG, SV nên kểt quả là:

H1(Mon, GV)

H2(TG, Phong, Mon)

H3(TG, GV, Phong)

H4(Mon, SV, KQ)

H5(TG, SV, Phong)

c. Định lý:

Gọi là phép tách đƣa R về dạng chuẩn thứ ba bảo toàn phụ thuộc hàm, và gọi

X là một khoá của R. Ta có = {X} là một phép tách R thành các sơ đồ quan hệ ở

dạng chuẩn thứ ba, phép tách này bảo toàn phụ thuộc hàm và có kết nối không mất

thông tin.

Page 59: C sở dữ liệu PHẦN A: KIẾN THỨC CƠ BẢNnc-net.vn/wp-content/uploads/2014/03/Cosodulieu.pdf · Cơ sở dữ liệu Trang: 3 c. Chi phí chuyển đổi hệ thống:

Cơ sở dữ liệu

Trang: 59

TÀI LIỆU THAM KHẢO

1. Bài giảng Cơ sở dữ liệu

Khoa Công nghệ thông tin, Trƣờng Đại học Cần Thơ - Phạm Thị Xuân Lộc.

2. Cơ sở dữ liệu

NXB Đại học quốc gia Hà Nội - Đỗ Trung Tuân.

3. Giáo trình Cơ sở dữ liệu

Đà Nẳng - PGS.TSKH. Trần Quốc Chiến.

4. Nhập môn các hệ cơ sở dữ liệu (tập 1&2)

NXB Thống kê, Hà Nội 1986 -

Ngƣời dịch: Hồ Thuần, Nguyễn Quang Vinh, Nguyễn Xuân Huy,

Hồ Thuần hiệu đính và giới thiệu.

5. Nhập môn Cơ sở dữ liệu quan hệ

NXB Khoa học và Kỹ thuật, 1995 – Lê Tiến Vƣơng.

6. Principles of Database and Knowledge – Base systems (Volume 1&2)

Computer Science Press – Jeffrey D. Ullman – Stanford University.