116
1 Chương 6: Chương 6: Thiết kế vật lý Thiết kế vật lý database database

Chương 6 : Thiết kế vật lý database

  • Upload
    odele

  • View
    64

  • Download
    2

Embed Size (px)

DESCRIPTION

Chương 6 : Thiết kế vật lý database. Nội dung. Quá trình thiết kế database vật lý Chọn định dạng lưu trữ cho các thuộc tính từ mô hình dữ liệu luận lý Mô tả ba kiểu tổ chức tập tin Chỉ mục : mục đích và các loại chỉ mục - PowerPoint PPT Presentation

Citation preview

Page 1: Chương 6 : Thiết kế vật lý  database

11

Chương 6:Chương 6:Thiết kế vật lý databaseThiết kế vật lý database

Page 2: Chương 6 : Thiết kế vật lý  database

22

Nội dungNội dung

Quá trình thiết kế database vật lýQuá trình thiết kế database vật lý Chọn định dạng lưu trữ cho các thuộc Chọn định dạng lưu trữ cho các thuộc

tính từ mô hình dữ liệu luận lýtính từ mô hình dữ liệu luận lý Mô tả ba kiểu tổ chức tập tin Mô tả ba kiểu tổ chức tập tin Chỉ mục: mục đích và các loại chỉ Chỉ mục: mục đích và các loại chỉ

mụcmục Chuyển đổi mô hình dữ liệu quan hệ Chuyển đổi mô hình dữ liệu quan hệ

thành cấu trúc database hiệu quả thành cấu trúc database hiệu quả

Page 3: Chương 6 : Thiết kế vật lý  database

33

6.1 Thiết kế database6.1 Thiết kế database

Yêu cầu:Yêu cầu:Thận trọng trong thiết kế vì những quyết Thận trọng trong thiết kế vì những quyết

định được làm trong giai đoạn này sẽ định được làm trong giai đoạn này sẽ ảnh hưởng đến khả năng truy xuất dữ ảnh hưởng đến khả năng truy xuất dữ liệu, thời gian đáp ứng, tính bảo mật, liệu, thời gian đáp ứng, tính bảo mật, tính thân thiện với người dùng, …tính thân thiện với người dùng, …

Phạm vi thiết kế:Phạm vi thiết kế:Chỉ thiết kế database tập trung Chỉ thiết kế database tập trung

(centralized DB), không phân tán(centralized DB), không phân tán

Page 4: Chương 6 : Thiết kế vật lý  database

44

Mục tiêu thiết kế databaseMục tiêu thiết kế database

Tập trung vào tính hiệu quả xử lý dữ Tập trung vào tính hiệu quả xử lý dữ liệu (data processing efficiency).liệu (data processing efficiency).

Chi phí máy tính ngày nay giảm đáng Chi phí máy tính ngày nay giảm đáng kể, việc thiết kế chỉ cần tập trung kể, việc thiết kế chỉ cần tập trung vào việc giảm nhỏ thời gian xử lývào việc giảm nhỏ thời gian xử lý làm thế nào xử lý database và các làm thế nào xử lý database và các file vật lý hiệu quả, không quan tâm file vật lý hiệu quả, không quan tâm nhiều đến không gian lưu trữnhiều đến không gian lưu trữ

Page 5: Chương 6 : Thiết kế vật lý  database

55

Chuẩn bị trước khi thiết kếChuẩn bị trước khi thiết kế

Cần thu thập thông tin liên quan đến hệ Cần thu thập thông tin liên quan đến hệ thống sẽ thiết kế:thống sẽ thiết kế:• Các quan hệ đã chuẩn hoá, kể cả việc ước Các quan hệ đã chuẩn hoá, kể cả việc ước

lượng khối lượng thông tinlượng khối lượng thông tin• Các định nghĩa về các thuộc tính Các định nghĩa về các thuộc tính • Các mô tả về nơi nào và khi nào dữ liệu được Các mô tả về nơi nào và khi nào dữ liệu được

dùng: thêm, truy xuất, xóa, cập nhậtdùng: thêm, truy xuất, xóa, cập nhật• Các mong muốn và yêu cầu về thời gian đáp Các mong muốn và yêu cầu về thời gian đáp

ứng, độ bảo mật dữ liệu, sao lưu phục hồi dữ ứng, độ bảo mật dữ liệu, sao lưu phục hồi dữ liệu, tính toàn vẹn dữ liệuliệu, tính toàn vẹn dữ liệu

• Mô tả về công nghệ, DBMS sẽ dùng để thực thi Mô tả về công nghệ, DBMS sẽ dùng để thực thi DBDB

Page 6: Chương 6 : Thiết kế vật lý  database

66

Quá trình thiết kế databaseQuá trình thiết kế database1.1. Chọn kiểu dữ liệu cho mỗi thuộc tính có mặt Chọn kiểu dữ liệu cho mỗi thuộc tính có mặt

trong mô hình dữ liệu luận lý: kiểu dữ liệu ít trong mô hình dữ liệu luận lý: kiểu dữ liệu ít tốn bộ nhớ mà vẫn bảo đảm tính toàn vẹn dữ tốn bộ nhớ mà vẫn bảo đảm tính toàn vẹn dữ liệuliệu

2.2. Nhóm các thuộc tính từ mô hình dữ liệu luận Nhóm các thuộc tính từ mô hình dữ liệu luận lý vào các bản ghi vật lý (physical record)lý vào các bản ghi vật lý (physical record)

3.3. Sắp xếp các bản ghi có cấu trúc tương tự vào Sắp xếp các bản ghi có cấu trúc tương tự vào bộ nhớ phụ (đĩa cứng) sao cho việc truy xuất bộ nhớ phụ (đĩa cứng) sao cho việc truy xuất các bản ghi này nhanh chóng.các bản ghi này nhanh chóng.

• Cần quan tâm đến việc bảo vệ và khôi phục dữ liệu Cần quan tâm đến việc bảo vệ và khôi phục dữ liệu khi có lỗikhi có lỗi

4.4. Chọn cấu trúc lưu trữ và kết nối các file để Chọn cấu trúc lưu trữ và kết nối các file để việc truy xuất dữ liệu hiệu quả hơn.việc truy xuất dữ liệu hiệu quả hơn.

5.5. Tối ưu hóa xử lý các câu truy vấn.Tối ưu hóa xử lý các câu truy vấn.

Page 7: Chương 6 : Thiết kế vật lý  database

77

Khối lượng dữ liệu &Khối lượng dữ liệu & tần suất sử dụng tần suất sử dụng (Data volume and usage frequency)(Data volume and usage frequency)

Đánh giá khối lượng dữ liệu và tần số Đánh giá khối lượng dữ liệu và tần số sử dụng dữ liệu là bước cuối của quá sử dụng dữ liệu là bước cuối của quá trình thiết kế CSDL luận lý hay là trình thiết kế CSDL luận lý hay là bước đầu tiên của quá trình thiết kế bước đầu tiên của quá trình thiết kế vật lý CSDLvật lý CSDL

Để thống kê, thêm các ghi chú Để thống kê, thêm các ghi chú (natation) vào sơ đồ ERR biểu diễn (natation) vào sơ đồ ERR biểu diễn các quan hệ đã chuẩn hóa cuối cùng các quan hệ đã chuẩn hóa cuối cùng

Page 8: Chương 6 : Thiết kế vật lý  database

88

PART 1000

SUPPLIER 50

MANUFACTUREDPART

400

PURCHASEDPART

700

O

QUOTATION 2500

200

40% 70%

140

60

(50)

40 80

70

40

Page 9: Chương 6 : Thiết kế vật lý  database

99

Khối lượng dữ liệu &Khối lượng dữ liệu & tần suất sử dụng tần suất sử dụng (Data volume and usage frequency)(Data volume and usage frequency)

Việc thống kê khối lượng và tần suất Việc thống kê khối lượng và tần suất được thực hiện trong giai đoạn phân được thực hiện trong giai đoạn phân tích hệ thống bởi phân tích viên hệ tích hệ thống bởi phân tích viên hệ thống ( system analyst)thống ( system analyst)

Việc thống kê không đòi hỏi chính Việc thống kê không đòi hỏi chính xác tuyệt đối mà chỉ dùng làm cơ sở xác tuyệt đối mà chỉ dùng làm cơ sở cho bước thiết kế tiếp theo. cho bước thiết kế tiếp theo.

Page 10: Chương 6 : Thiết kế vật lý  database

1010

6.2 Thiết kế các vùng tin6.2 Thiết kế các vùng tin(Field design)(Field design)

Field là đơn vị nhỏ nhất của dữ liệu mà Field là đơn vị nhỏ nhất của dữ liệu mà phần mềm hệ thống hay DBMS có thể phần mềm hệ thống hay DBMS có thể nhận biết được.nhận biết được.

Field tương ứng với 1 thuộc tính (attribute) Field tương ứng với 1 thuộc tính (attribute) trong mô hình dữ liệu luận lýtrong mô hình dữ liệu luận lý

Quyết định cần làm khi thiết kế là phải Quyết định cần làm khi thiết kế là phải chọn kiểu dữ liệu cho field, kiểm soát tính chọn kiểu dữ liệu cho field, kiểm soát tính toàn vẹn dữ liệu và DBMS sẽ quản lý các toàn vẹn dữ liệu và DBMS sẽ quản lý các giá trị bị thiếu cho field như thế nào??giá trị bị thiếu cho field như thế nào??

Page 11: Chương 6 : Thiết kế vật lý  database

1111

8.2.1 Chọn kiểu dữ liệu8.2.1 Chọn kiểu dữ liệu

1.1. Tối thiểu hoá không gian lưu trữTối thiểu hoá không gian lưu trữ

2.2. Diễn tả được tất cả các giá trị có Diễn tả được tất cả các giá trị có thể có của dữ liệuthể có của dữ liệu

3.3. Cải thiện được tính toàn vẹn dữ liệuCải thiện được tính toàn vẹn dữ liệu

4.4. Hỗ trợ được tất cả phép thay đổi dữ Hỗ trợ được tất cả phép thay đổi dữ liệuliệu

Page 12: Chương 6 : Thiết kế vật lý  database

1212

8.2.2 Kỹ thuật mã hoá và nén dữ liệu8.2.2 Kỹ thuật mã hoá và nén dữ liệu

Một số thuộc tính có tập giá trị thưa Một số thuộc tính có tập giá trị thưa hay có trị quá lớn chiếm nhiều không hay có trị quá lớn chiếm nhiều không gian lưu trữ. gian lưu trữ.

Một trường có số ít giá trị nên Một trường có số ít giá trị nên mãmã hoá hoá để chiếm ít không gian hơn.để chiếm ít không gian hơn.

Page 13: Chương 6 : Thiết kế vật lý  database

1313

Ví dụ: trường Finish của bảng Product chỉ có 1 ít Ví dụ: trường Finish của bảng Product chỉ có 1 ít giá trị là Birch, Maple và Oak. giá trị là Birch, Maple và Oak.

• Mã hoá bằng cách tạo 1 bảng tra cứu FINISH, sao cho Mã hoá bằng cách tạo 1 bảng tra cứu FINISH, sao cho

mỗi giá trị của trường Finish được thay thế bằng 1 mỗi giá trị của trường Finish được thay thế bằng 1

mã mã

giảm không gian lưu trữ cho trường Finishgiảm không gian lưu trữ cho trường Finish

Thêm không gian phụ cho bảng FINISH Thêm không gian phụ cho bảng FINISH

Không có lợi khi Finish ít dùng hay số sản phẩm quá Không có lợi khi Finish ít dùng hay số sản phẩm quá

lớnlớn

Bảng mã FINISH không xuất hiện trong mô hình nhận Bảng mã FINISH không xuất hiện trong mô hình nhận

thức, là 1 thiết kế vật lý để cải thiện việc xử lý dữ thức, là 1 thiết kế vật lý để cải thiện việc xử lý dữ

liệuliệu

Page 14: Chương 6 : Thiết kế vật lý  database

1414

Kỹ thuật mã hoá và nén dữ liệuKỹ thuật mã hoá và nén dữ liệu

Product Product NoNo

DescriptionDescription

B100B100

B120B120

M128M128

T100T100

……

ChairChair

DeskDesk

TableTable

BookcaseBookcase

CC

AA

CC

BB

CodeCode ValueValue

AA

BB

CC

BirchBirch

MapleMaple

OakOak

Bảng Product

Bảng tra cứu FINISH

Page 15: Chương 6 : Thiết kế vật lý  database

1515

Kỹ thuật mã hoá và nén dữ liệuKỹ thuật mã hoá và nén dữ liệu

Kỹ thuật nén tin Kỹ thuật nén tin ( data compression ( data compression technique) tìm các mẫu (pattern) và mã hoá technique) tìm các mẫu (pattern) và mã hoá các mẫu xuất hiện thường xuyên với số bit ít các mẫu xuất hiện thường xuyên với số bit ít hơnhơn

Kỹ thuật mã hoá Kỹ thuật mã hoá ( encryption technique): ( encryption technique): dùng để chuyển 1 trường sang dạng bảo mậtdùng để chuyển 1 trường sang dạng bảo mật

Kỹ thuật nén tin hay mã hoá Kỹ thuật nén tin hay mã hoá được dùng với được dùng với 1 số DBMSs. Để người dùng đọc được giá trị 1 số DBMSs. Để người dùng đọc được giá trị thực sự của các trường, phần mềm cần phải thực sự của các trường, phần mềm cần phải biết quá trình dịch ngược lạibiết quá trình dịch ngược lại

Page 16: Chương 6 : Thiết kế vật lý  database

1616

6.2.3 Kiểm soát tính toàn vẹn dữ liệu6.2.3 Kiểm soát tính toàn vẹn dữ liệu Việc kiểm tra tính toàn vẹn dữ liệu được Việc kiểm tra tính toàn vẹn dữ liệu được

xây dựng thành cấu trúc vật lý của các xây dựng thành cấu trúc vật lý của các trường và được DBMS quản lý tự động.trường và được DBMS quản lý tự động.• Kiểu dữ liệu là 1 dạng của tính toàn vẹn dữ Kiểu dữ liệu là 1 dạng của tính toàn vẹn dữ

liệu??liệu?? Các kiểm tra toàn vẹn dữ liệu khác mà Các kiểm tra toàn vẹn dữ liệu khác mà

DBMS có thể hỗ trợ:DBMS có thể hỗ trợ:• Default valueDefault value• Range controlRange control• Null value controlNull value control• Referential integrityReferential integrity

Page 17: Chương 6 : Thiết kế vật lý  database

1717

Giá trị mặc địnhGiá trị mặc định(Default value)(Default value)

Là giá trị mà 1 trường luôn thừa nhận Là giá trị mà 1 trường luôn thừa nhận ngoại trừ người dùng đưa vào 1 giá ngoại trừ người dùng đưa vào 1 giá trị tường minh khác để thay thế. trị tường minh khác để thay thế. • Giảm thời gian nhập liệuGiảm thời gian nhập liệu• Giảm những sai sót khi nhập liệuGiảm những sai sót khi nhập liệu

Page 18: Chương 6 : Thiết kế vật lý  database

1818

Kiểm soát miền giá trịKiểm soát miền giá trị(Range control)(Range control)

Giới hạn 1 tập các giá trị cho phép Giới hạn 1 tập các giá trị cho phép mà 1 trường có thể nhận được. mà 1 trường có thể nhận được.

Miền giá trị có thể là 1 cận dưới và Miền giá trị có thể là 1 cận dưới và cận trên dạng số hay là 1 tập các giá cận trên dạng số hay là 1 tập các giá trị cụ thểtrị cụ thể• Sự cố năm 2000Sự cố năm 2000

Nên để DBMS thực hiện việc kiểm Nên để DBMS thực hiện việc kiểm soát miền giá trị thay cho chương soát miền giá trị thay cho chương trìnhtrình

Page 19: Chương 6 : Thiết kế vật lý  database

1919

Kiểm tra giá trị rỗngKiểm tra giá trị rỗng(Null value control)(Null value control)

Một khoá chính thường bị cấm không Một khoá chính thường bị cấm không được có giá trị nullđược có giá trị null

Các trường khác cũng có thể cần Các trường khác cũng có thể cần kiểm tra giá trị null tuỳ theo yêu cầu kiểm tra giá trị null tuỳ theo yêu cầu của tổ chức.của tổ chức.• VD: Một trường đại học có thể cấm VD: Một trường đại học có thể cấm

không chấp nhận bất kỳ course nào không chấp nhận bất kỳ course nào thiếu tiêu đềthiếu tiêu đề

Page 20: Chương 6 : Thiết kế vật lý  database

2020

Bảo toàn tham chiếuBảo toàn tham chiếu(Referential integrity)(Referential integrity)

Là 1 dạng của kiểm tra miền trong Là 1 dạng của kiểm tra miền trong đó giá trị của 1 trường có thể tồn tại đó giá trị của 1 trường có thể tồn tại như giá trị trường của 1 hàng nào đó như giá trị trường của 1 hàng nào đó trong cùng bảng hay của 1 bảng trong cùng bảng hay của 1 bảng khác. khác.

Page 21: Chương 6 : Thiết kế vật lý  database

2121

6.2.4 Xử lý dữ liệu bị thiếu6.2.4 Xử lý dữ liệu bị thiếu(missing data)(missing data)

Dữ liệu bị thiếu khi không có dữ lịêu để Dữ liệu bị thiếu khi không có dữ lịêu để

nhập vào 1 trường và trường cho phép có nhập vào 1 trường và trường cho phép có

giá trị nullgiá trị null

Để tránh giá trị bị thiếu:Để tránh giá trị bị thiếu:

• Dùng giá trị defaultDùng giá trị default

• Không cho phép giá trị bị thiếu khi nhập liệuKhông cho phép giá trị bị thiếu khi nhập liệu

• Thay trị bị thiếu bằng 1 giá trị phỏng đoánThay trị bị thiếu bằng 1 giá trị phỏng đoán

Page 22: Chương 6 : Thiết kế vật lý  database

2222

6.2.4 Xử lý dữ liệu bị thiếu6.2.4 Xử lý dữ liệu bị thiếu(missing data)(missing data)

• Theo dõi những giá trị bị thiếu, tổng kết thành báo Theo dõi những giá trị bị thiếu, tổng kết thành báo

cáo để buộc người dùng có liên quan đến phải nhanh cáo để buộc người dùng có liên quan đến phải nhanh

chóng giải quyết các giá trị chưa biết.chóng giải quyết các giá trị chưa biết.

• Dùng phương pháp thử để xác định trị bị thiếu có ảnh Dùng phương pháp thử để xác định trị bị thiếu có ảnh

hưởng đến kết quả tính toán hay không?hưởng đến kết quả tính toán hay không?

Page 23: Chương 6 : Thiết kế vật lý  database

2323

6.3 Thiết kế các bản ghi vật lý6.3 Thiết kế các bản ghi vật lý

Bản ghi vật lý Bản ghi vật lý ( physical record): là 1 nhóm các ( physical record): là 1 nhóm các

trường được lưu trữ trong những vị trí bộ nhớ trường được lưu trữ trong những vị trí bộ nhớ

cạnh nhau và được truy xuất như 1 đơn vị. cạnh nhau và được truy xuất như 1 đơn vị.

Bản ghi luận lý Bản ghi luận lý (logical record) nhóm các thuộc (logical record) nhóm các thuộc

tính vào cùng một quan hệ căn cứ vào việc các tính vào cùng một quan hệ căn cứ vào việc các

thuộc tính ấy phụ thuộc hàm vào cùng 1 khóa thuộc tính ấy phụ thuộc hàm vào cùng 1 khóa

chính.chính.

Page 24: Chương 6 : Thiết kế vật lý  database

2424

6.3 Thiết kế các bản ghi vật lý6.3 Thiết kế các bản ghi vật lý

Thiết kế bản ghi vật lý liên quan đến việc Thiết kế bản ghi vật lý liên quan đến việc

chọn sắp xếp các trường vào vị trí kề cận chọn sắp xếp các trường vào vị trí kề cận

nhau sao cho đảm bảo 2 mục tiêu:nhau sao cho đảm bảo 2 mục tiêu:

• Sử dụng hiệu quả không gian lưu trữSử dụng hiệu quả không gian lưu trữ

• Tốc độ truy xuất dữ liệuTốc độ truy xuất dữ liệu

Page 25: Chương 6 : Thiết kế vật lý  database

2525

Sử dụng hiệu quả bộ nhớ phụSử dụng hiệu quả bộ nhớ phụ

Hai yếu tố ảnh hưởng:Hai yếu tố ảnh hưởng:

• Kích thước của bản ghi vật lýKích thước của bản ghi vật lý

• Cấu trúc của bộ nhớ phụCấu trúc của bộ nhớ phụ

Hệ điều hành thường đọc/ghi dữ liệu từ đĩa cứng Hệ điều hành thường đọc/ghi dữ liệu từ đĩa cứng

theo từng page, không theo bản ghi vật lýtheo từng page, không theo bản ghi vật lý

Page: là lượng dữ liệu được đọc/ghi vào bộ nhớ Page: là lượng dữ liệu được đọc/ghi vào bộ nhớ

trong 1 thao tác xuất/nhập của bộ nhớ phụ.trong 1 thao tác xuất/nhập của bộ nhớ phụ.

Page 26: Chương 6 : Thiết kế vật lý  database

2626

Sử dụng hiệu quả bộ nhớ phụSử dụng hiệu quả bộ nhớ phụ

Kích thước trang do người thiết kế HĐH quyết Kích thước trang do người thiết kế HĐH quyết

định.định.

Nếu chiều dài trang không chia hết cho kích cỡ Nếu chiều dài trang không chia hết cho kích cỡ

của 1 bản ghicủa 1 bản ghi

Sẽ có khoảng trống không dùng cuối mỗi trangSẽ có khoảng trống không dùng cuối mỗi trang

Blocking factor: số bản ghi vật lý trên 1 trangBlocking factor: số bản ghi vật lý trên 1 trang

Page 27: Chương 6 : Thiết kế vật lý  database

2727

6.3.1 Trường có chiều dài cố định6.3.1 Trường có chiều dài cố định

Nếu các trường có chiều dài cố định, các trường Nếu các trường có chiều dài cố định, các trường sẽ đặt liền kề nhau, việc quản lý bộ nhớ sẽ dễ sẽ đặt liền kề nhau, việc quản lý bộ nhớ sẽ dễ dàng hơndàng hơn

Để tìm vị trí của trường thứ m trong bản ghi thứ Để tìm vị trí của trường thứ m trong bản ghi thứ n của tập tin CSDLn của tập tin CSDL

Địa chỉ bắt đầu của fileĐịa chỉ bắt đầu của file++ (n-1) chiều dài bản ghi(n-1) chiều dài bản ghi++ sum(lengthi) sum(lengthi)

i=1 đến m-1i=1 đến m-1= Địa chỉ bắt đầu của trường thứ m= Địa chỉ bắt đầu của trường thứ m

Lengthi : chiều dài của trường thứ iLengthi : chiều dài của trường thứ i

Page 28: Chương 6 : Thiết kế vật lý  database

2828

6.3.2Trường có chiều dài thay đổi6.3.2Trường có chiều dài thay đổi

Vị trí của 1 trường thuộc 1 bản ghi nào đó Vị trí của 1 trường thuộc 1 bản ghi nào đó thường không theo quy luật. thường không theo quy luật.

Cách chung để quản lý các trường độ dài Cách chung để quản lý các trường độ dài thay đổi là chia quan hệ thành 1 bản ghi thay đổi là chia quan hệ thành 1 bản ghi vật lý chứa toàn bộ các trường có chiều vật lý chứa toàn bộ các trường có chiều dài cố định và 1 hay nhiều bản ghi vật lý dài cố định và 1 hay nhiều bản ghi vật lý chứa các trường có chiều dài thay đổichứa các trường có chiều dài thay đổi

Page 29: Chương 6 : Thiết kế vật lý  database

6.4 THIẾT KẾ TỆP TIN VẬT LÝ6.4 THIẾT KẾ TỆP TIN VẬT LÝ

Tệp tin vật lý Tệp tin vật lý (physical file) là một thành (physical file) là một thành phần của bộ nhớ phụ (bộ nhớ ngoài) được phần của bộ nhớ phụ (bộ nhớ ngoài) được cấp phát để lưu trữ các bản ghi vật lý.cấp phát để lưu trữ các bản ghi vật lý.

Có 2 dạng: Có 2 dạng:

- Lưu trưc tuần tự ( sequential storage)- Lưu trưc tuần tự ( sequential storage)

- Con trỏ (pointer)- Con trỏ (pointer)

2929

Page 30: Chương 6 : Thiết kế vật lý  database

6.4.1 Các phương pháp truy xuất 6.4.1 Các phương pháp truy xuất (access method)(access method)

Phương pháp truy xuất tương đối (relative Phương pháp truy xuất tương đối (relative access): truy xuất dựa vào khoảng cách access): truy xuất dựa vào khoảng cách (offset) giữa dữ liệu đó và dữ liệu vừa truy (offset) giữa dữ liệu đó và dữ liệu vừa truy xuất trong bộ nhớ ngoài.xuất trong bộ nhớ ngoài.

Phương pháp truy xuất tuần tự là trường Phương pháp truy xuất tuần tự là trường hợp đặc biệt của phương pháp truy xuất hợp đặc biệt của phương pháp truy xuất tương đối.tương đối.

3030

Page 31: Chương 6 : Thiết kế vật lý  database

6.4.1 Các phương pháp truy xuất 6.4.1 Các phương pháp truy xuất (access method)(access method)

Phương pháp truy xuất trực tiếp(direct Phương pháp truy xuất trực tiếp(direct access): dùng một cách tính để tính ra địa access): dùng một cách tính để tính ra địa chỉ của bản ghi cần truy xuất.chỉ của bản ghi cần truy xuất.

3131

Page 32: Chương 6 : Thiết kế vật lý  database

6.4.2 Các kiểu tổ chức tệp tin6.4.2 Các kiểu tổ chức tệp tin

Một kiểu tổ chức tệp tin (file organization) Một kiểu tổ chức tệp tin (file organization) là một kỹ thuật sắp xếp về mặt vật lý các là một kỹ thuật sắp xếp về mặt vật lý các bản ghi của một tệp tin trên bộ nhớ bản ghi của một tệp tin trên bộ nhớ ngoài.ngoài.

Đối với các HQTCSDL hiện đại ta không Đối với các HQTCSDL hiện đại ta không phải thiết kế tổ chức tệp tin, mà chỉ lựa phải thiết kế tổ chức tệp tin, mà chỉ lựa một kiểu tổ chức và những thông số của một kiểu tổ chức và những thông số của cách tổ chức này đối với một tệp tin vật lýcách tổ chức này đối với một tệp tin vật lý

3232

Page 33: Chương 6 : Thiết kế vật lý  database

6.4.2 Các kiểu tổ chức tệp tin6.4.2 Các kiểu tổ chức tệp tin

Các yếu tố liên quan đến việc lựa chọn:Các yếu tố liên quan đến việc lựa chọn:

1.1. Truy xuất dữ liệu nhanhTruy xuất dữ liệu nhanh

2.2. Xử lý việc nhập dữ liệu và các giao tác với Xử lý việc nhập dữ liệu và các giao tác với hiệu năng cao.hiệu năng cao.

3.3. Sử dựng chỗ bộ nhớ hữu hiệuSử dựng chỗ bộ nhớ hữu hiệu

4.4. Bảo vệ để không bị hỏng hóc hay mất dữ liệuBảo vệ để không bị hỏng hóc hay mất dữ liệu

5.5. Tối thiểu hóa việc tái tổ chức tệp tinTối thiểu hóa việc tái tổ chức tệp tin

3333

Page 34: Chương 6 : Thiết kế vật lý  database

6.4.2 Các kiểu tổ chức tệp tin6.4.2 Các kiểu tổ chức tệp tin

Các yếu tố liên quan đến việc lựa chọn:Các yếu tố liên quan đến việc lựa chọn:

6. Thích ứng với yêu cầu phát triển mở rộng6. Thích ứng với yêu cầu phát triển mở rộng

7. Tránh khỏi những sự truy xuất dữ liệu 7. Tránh khỏi những sự truy xuất dữ liệu không có thẩm quyền.không có thẩm quyền.

3434

Page 35: Chương 6 : Thiết kế vật lý  database

a.a. Tổ chức tệp tin tuần tựTổ chức tệp tin tuần tự(sequential file organization)(sequential file organization)

Các bản ghi được lưu trữ một cách tuần Các bản ghi được lưu trữ một cách tuần tự theo giá trị khóa chính.tự theo giá trị khóa chính.

Tìm kiếm: duyệt từ điểm khở đầu cho Tìm kiếm: duyệt từ điểm khở đầu cho đến khi tìm thấyđến khi tìm thấy

3535

Page 36: Chương 6 : Thiết kế vật lý  database

b. Tổ chức tệp tin với chỉ mục (indexed file b. Tổ chức tệp tin với chỉ mục (indexed file organization)organization)

Các bản ghi được lưu trữ một cách tuần tự Các bản ghi được lưu trữ một cách tuần tự hay không tuần tự và một chỉ mục (Index) hay không tuần tự và một chỉ mục (Index) được tạo ra cho phép PM ứng dụng có thể được tạo ra cho phép PM ứng dụng có thể định trị được các bản ghi riêng lẻ.định trị được các bản ghi riêng lẻ.

Chỉ mục là một bảng được dùng để định trị Chỉ mục là một bảng được dùng để định trị các hàng trong một tệp tin mà thỏa một đk các hàng trong một tệp tin mà thỏa một đk nào đónào đó

Mỗi phần tử trong chỉ mục sẽ liên kết một Mỗi phần tử trong chỉ mục sẽ liên kết một khóa với một hay nhiều bản ghikhóa với một hay nhiều bản ghi

3636

Page 37: Chương 6 : Thiết kế vật lý  database

3737

Chỉ mục - IndixesChỉ mục - Indixes

Mục đích: cải thiện việc truy tìm dữ Mục đích: cải thiện việc truy tìm dữ liệu.liệu.

Ý tưởng: tương tự như index của Ý tưởng: tương tự như index của sách.sách.

Cho phép tìm nhanh 1 hàng mà Cho phép tìm nhanh 1 hàng mà không phải duyệt tuần tự từng hàng không phải duyệt tuần tự từng hàng của bảng dữ liệu của bảng dữ liệu giảm thời gian giảm thời gian thực thi truy vấn.thực thi truy vấn.

Page 38: Chương 6 : Thiết kế vật lý  database

3838

Chỉ mục - IndexChỉ mục - Index

Index chứa 1 tập hợp các index entry Index chứa 1 tập hợp các index entry + cơ chế dò tìm entry dựa vào giá trị + cơ chế dò tìm entry dựa vào giá trị dò tìm (search key)dò tìm (search key)

Các cơ chế dò tìm:Các cơ chế dò tìm:• Các index entry được xếp theo search Các index entry được xếp theo search

key như ISAM hay B+ treekey như ISAM hay B+ tree• Hash indexHash index

Page 39: Chương 6 : Thiết kế vật lý  database

3939

Chỉ mục - IndexChỉ mục - Index

Cơ chế xếp theo search key: có 2 Cơ chế xếp theo search key: có 2 dạngdạng• Các index entries được tích hợp Các index entries được tích hợp

(intergrated) vào cùng file dữ liệu(intergrated) vào cùng file dữ liệu• Index entries được lưu trữ vào 1 file Index entries được lưu trữ vào 1 file

khác. khác.

Page 40: Chương 6 : Thiết kế vật lý  database

4040

Chỉ mụcChỉ mục

Đa số các DBMS đều tạo chỉ mục tự Đa số các DBMS đều tạo chỉ mục tự động cho các trường primary key động cho các trường primary key bảng chỉ mục được tích hợp vào bảng bảng chỉ mục được tích hợp vào bảng dữ liệu. Các chỉ mục trên các trường dữ liệu. Các chỉ mục trên các trường khác được lưu vào bảng chỉ mục.khác được lưu vào bảng chỉ mục.

Page 41: Chương 6 : Thiết kế vật lý  database

4141

Bất lợi của indexBất lợi của index

Chiếm không gian đĩaChiếm không gian đĩa Nếu index lớn thì các trang index cần Nếu index lớn thì các trang index cần

được đọc vào bộ nhớ được đọc vào bộ nhớ gây ra chi phí gây ra chi phí cho thao tác vào racho thao tác vào ra

Index cần được bảo trì (maintenance) Index cần được bảo trì (maintenance) các chỉ mục phải được sửa đổi cùng các chỉ mục phải được sửa đổi cùng với sự thay đổi của dữ liệuvới sự thay đổi của dữ liệu

Page 42: Chương 6 : Thiết kế vật lý  database

4242

Page 43: Chương 6 : Thiết kế vật lý  database

4343

Phân loại chỉ mụcPhân loại chỉ mục

Chỉ mục Chỉ mục clusteredclustered còn được gọi là chỉ còn được gọi là chỉ mục sơ cấp ( primary index) hay mục sơ cấp ( primary index) hay main indexmain index

Unclustered indexUnclustered index thường được gọi là thường được gọi là secondary indexsecondary index

Thường thì với mỗi bảng chỉ có 1 Thường thì với mỗi bảng chỉ có 1 clustered index clustered index và có thể có nhiều và có thể có nhiều unclustered indexunclustered index

Page 44: Chương 6 : Thiết kế vật lý  database

4444

Phân loại chỉ mụcPhân loại chỉ mục

Trong Trong chỉ mục clusteredchỉ mục clustered, thứ tự vật lý của , thứ tự vật lý của các index entry tương ứng với thứ tự vật lý các index entry tương ứng với thứ tự vật lý của các bản ghi dữ liệucủa các bản ghi dữ liệu

Ví dụ: quan hệ PROFESSOR có thể được Ví dụ: quan hệ PROFESSOR có thể được xếp thứ tự theo thuộc tính Department xếp thứ tự theo thuộc tính Department (không phải là khóa chính), khi đó index (không phải là khóa chính), khi đó index trên thuộc tính này sẽ là trên thuộc tính này sẽ là index clustered index clustered trong khi đó index trên khóa chính ID sẽ là trong khi đó index trên khóa chính ID sẽ là index unclusteredindex unclustered

Page 45: Chương 6 : Thiết kế vật lý  database

4545

Data File

Index File

Mechanism for Locating Index Entries

Index Entries

Clustered index

Page 46: Chương 6 : Thiết kế vật lý  database

4646

Data File

Index File

Mechanism for Locating Index Entries

Index Entries

Unclustered index

Page 47: Chương 6 : Thiết kế vật lý  database

4747

Chỉ mục thưa và dàyChỉ mục thưa và dàySparse versus dense indexSparse versus dense index

Chỉ mục dày Chỉ mục dày là chỉ mục mà các phần là chỉ mục mà các phần tử của nó tương ứng 1-1 với các bản tử của nó tương ứng 1-1 với các bản ghi trong file dữ liệughi trong file dữ liệu

Chỉ mục thưa Chỉ mục thưa trên 1 file đã sắp xếp là trên 1 file đã sắp xếp là chỉ mục mà trong đó chỉ có 1 phần tử chỉ mục mà trong đó chỉ có 1 phần tử trong chỉ mục duy nhất cho mỗi trong chỉ mục duy nhất cho mỗi trang dữ liệu và ngược lại. trang dữ liệu và ngược lại.

Page 48: Chương 6 : Thiết kế vật lý  database

4848

009406321009406321 Jacob TaylorJacob Taylor MGTMGT

101202303101202303 John SmythJohn Smyth CSCS

121232343121232343 David JonesDavid Jones EEEE

131141151131141151 Anita CohenAnita Cohen CSCS

234567891234567891 Mary BrownMary Brown ECOECO

333444555333444555 Ying ChenYing Chen CHECHE

444555666444555666 Sanjay SenSanjay Sen ENGENG

555666777555666777 Mary DoeMary Doe CSCS

666777888666777888 Mary BrownMary Brown PHYPHY

900012045900012045 Ann WhiteAnn White MATMAT

009406321009406321

234567891234567891

666777888666777888

Mary BrownMary Brown

Mary BrownMary Brown

Ying ChenYing Chen

Anita CohenAnita Cohen

Mary DoeMary Doe

David JonesDavid Jones

Sanjay SenSanjay Sen

John SmythJohn Smyth

Jacob TaylorJacob Taylor

Ann WhiteAnn White

Chỉ mục thưaSearch key:ID

File dữ liệu được xếp theo ID4 record/page Chỉ mục dày

Search key:Name

Page 49: Chương 6 : Thiết kế vật lý  database

4949

Chỉ mục thưaChỉ mục thưa

File dữ liệu được xếp theo cùng khóa với File dữ liệu được xếp theo cùng khóa với index, khi đó thứ tự của file dữ liệu cho index, khi đó thứ tự của file dữ liệu cho phép ta tìm được các bản ghi không có phép ta tìm được các bản ghi không có tham chiếu tương ứng trong chỉ mục. tham chiếu tương ứng trong chỉ mục.

Chỉ mục thưa phải là clusteredChỉ mục thưa phải là clustered Search key nên là candidate key của file Search key nên là candidate key của file

dữ liệu, nếu không thì sẽ có nhiều bản ghi dữ liệu, nếu không thì sẽ có nhiều bản ghi có cùng search key và nếu các bản ghi này có cùng search key và nếu các bản ghi này nằm trên các trang khác nhau, thì các bản nằm trên các trang khác nhau, thì các bản ghi trong trang đầu thường bị bỏ sót.ghi trong trang đầu thường bị bỏ sót.

Page 50: Chương 6 : Thiết kế vật lý  database

5050

1717

2020

4040

12…12…

17…17…

19..19..

20..20..

20..20..

20..20..

33…33…

34..34..

37..37..

40…40…

Index file

Data file

Cột này không phảilà candidate key

Page 51: Chương 6 : Thiết kế vật lý  database

5151

Chỉ mục dàyChỉ mục dày

Các chỉ mục unclustered thường là Các chỉ mục unclustered thường là chỉ mục dàychỉ mục dày

Ứng với mỗi bản ghi đều có 1 index Ứng với mỗi bản ghi đều có 1 index entry, nên search key không cần là entry, nên search key không cần là candidate keycandidate key

Có thể nhiều index entry có cùng giá Có thể nhiều index entry có cùng giá trị search keytrị search key

Page 52: Chương 6 : Thiết kế vật lý  database

5252

6.5 Sử dụng và cách chọn chỉ mục6.5 Sử dụng và cách chọn chỉ mục

- Tạo một chỉ mục khóa chínhTạo một chỉ mục khóa chính- Tạo một chỉ mục thứ cấpTạo một chỉ mục thứ cấp- Khi nào nên dùng chỉ mục:Khi nào nên dùng chỉ mục:

+ CSDL cần nhiều thao tác truy + CSDL cần nhiều thao tác truy xuất thì nên tạo nhiều chỉ mụcxuất thì nên tạo nhiều chỉ mục

+ CSDL cần nhiều thao tác cập + CSDL cần nhiều thao tác cập nhật thì hạn chế chỉ mụcnhật thì hạn chế chỉ mục

Page 53: Chương 6 : Thiết kế vật lý  database

5353

Lựa chọn chỉ mụcLựa chọn chỉ mục

1.1. Chỉ mục rất có ích đối với những bảng lớnChỉ mục rất có ích đối với những bảng lớn2.2. Đặc tả chỉ mục là UNIQUE đối với chỉ mục Đặc tả chỉ mục là UNIQUE đối với chỉ mục

là khóa chínhlà khóa chính3.3. Chỉ mục có ích cho những cột xuất phát Chỉ mục có ích cho những cột xuất phát

trong mệnh đề WHEREtrong mệnh đề WHERE

Page 54: Chương 6 : Thiết kế vật lý  database

5454

77 1919 4242 7777 8989

77 1111 1212 1515

1919 2828 3333 3434

4242 4444 5353 7575

7777 7878 8080 8484

8989 9292 9494 ……

Chỉ mục hai mức

Chỉ mục thưa chứa các separator index

Chỉ mục chính

Page 55: Chương 6 : Thiết kế vật lý  database

5555

Chỉ mục hai mứcChỉ mục hai mức(Two-level index)(Two-level index)

Tính chi phí dò tìm của chỉ mục 2 mứcTính chi phí dò tìm của chỉ mục 2 mức• Giả sử mỗi trang index chứa 100 entryGiả sử mỗi trang index chứa 100 entry• Các chỉ mục mức lá chiếm Q trangCác chỉ mục mức lá chiếm Q trang

Các chỉ mục cấp 2 sẽ chiếm Q/100 trangCác chỉ mục cấp 2 sẽ chiếm Q/100 trang

Chi phí tối đa để truy xuất đến 1 entry của Chi phí tối đa để truy xuất đến 1 entry của mức lá sẽ là mức lá sẽ là

loglog22(Q/100)+1(Q/100)+1

Chi phí này giảm đáng kể khi Q lớnChi phí này giảm đáng kể khi Q lớn

Nên dùng Nên dùng chỉ mục nhiều mức (multilevel chỉ mục nhiều mức (multilevel index)index)

Page 56: Chương 6 : Thiết kế vật lý  database

5656

Một số thuật ngữMột số thuật ngữ

Leaf entry: để chỉ các entry chỉ mục ở mức Leaf entry: để chỉ các entry chỉ mục ở mức thấp nhất trong câythấp nhất trong cây

Separator entry: để chỉ các entry nằm ở Separator entry: để chỉ các entry nằm ở các mức phía trêncác mức phía trên

Index level: dùng để chỉ đến 1 mức bất kỳ Index level: dùng để chỉ đến 1 mức bất kỳ trong cây chỉ mụctrong cây chỉ mục

Fan-out: để chỉ số separator trong 1 trang. Fan-out: để chỉ số separator trong 1 trang. Fan-out xác định được số mức trong 1 cây: Fan-out xác định được số mức trong 1 cây: nó càng nhỏ thì số mức của cây càng lớn. nó càng nhỏ thì số mức của cây càng lớn. Số mức thì bằng với số thao tác I/O cần để Số mức thì bằng với số thao tác I/O cần để đọc đến entry của mức lá. đọc đến entry của mức lá.

Page 57: Chương 6 : Thiết kế vật lý  database

5757

Một số thuật ngữMột số thuật ngữ

Nếu fan-out là Nếu fan-out là thì số thao tác I/O thì số thao tác I/O cần để khôi phục lá chỉ mục là cần để khôi phục lá chỉ mục là loglogQ +1 ( Q là số trang lá)Q +1 ( Q là số trang lá)

Ví dụ: có 10000 trang mức lá và fan-Ví dụ: có 10000 trang mức lá và fan-out là 100out là 100 cần 3 thao tác I/O để cần 3 thao tác I/O để tiến đến nút látiến đến nút lá

Page 58: Chương 6 : Thiết kế vật lý  database

5858

ISAMISAM(Index-sequential access method)(Index-sequential access method)

ISAM index là chỉ mục nhiều mức và ISAM index là chỉ mục nhiều mức và là loại clustered index. là loại clustered index.

Các bản ghi dữ liệu được chứa trong Các bản ghi dữ liệu được chứa trong các lácác lá

ISAM là cấu trúc lưu trữ cho file dữ ISAM là cấu trúc lưu trữ cho file dữ liệuliệu

Page 59: Chương 6 : Thiết kế vật lý  database

5959

p0 p1 pk1 k

Index Entry

Một trang ở cấp separator trong chỉ mục ISAM

k2 p2

Page 60: Chương 6 : Thiết kế vật lý  database

6060

Đặc tính của ISAMĐặc tính của ISAM

Con trỏ phụ PCon trỏ phụ P00 dùng để trỏ tới cây con trái dùng để trỏ tới cây con trái nhất và không cần có giá trị knhất và không cần có giá trị k00 tương ứng tương ứng

File ISAM được xây dựng bằng cách phân File ISAM được xây dựng bằng cách phân phối 1 cách tuần tự không gian đĩa cho các phối 1 cách tuần tự không gian đĩa cho các trang chỉ mục lá trước. Sau đó mới xây trang chỉ mục lá trước. Sau đó mới xây dựng các mức separator từ đáy lên. Gốc sẽ dựng các mức separator từ đáy lên. Gốc sẽ nằm ở đỉnh cao nhất. nằm ở đỉnh cao nhất.

Tất cả các giá trị search key có mặt ở các Tất cả các giá trị search key có mặt ở các mức separator thì cũng có mặt cả trong mức separator thì cũng có mặt cả trong mức lá.mức lá.

Page 61: Chương 6 : Thiết kế vật lý  database

6161

Đặc tính của ISAMĐặc tính của ISAM Các mức separator thường không Các mức separator thường không

thay đổi sau khi chúng đã được tạo.thay đổi sau khi chúng đã được tạo. Các trang mức lá có thể thay đổi Các trang mức lá có thể thay đổi

nhưng các trang này sẽ không mở nhưng các trang này sẽ không mở rộng thêm hay bị thu hồi lại, do đó vị rộng thêm hay bị thu hồi lại, do đó vị trí của các trang lá trong file cũng cố trí của các trang lá trong file cũng cố định. định.

Phát sinh nhiều vấn đề khi xóa hay Phát sinh nhiều vấn đề khi xóa hay thêm hàng vào bảng.thêm hàng vào bảng.

Page 62: Chương 6 : Thiết kế vật lý  database

6262

Một trang ở cấp separator của ISAM Mỗi cấp separator đều là chỉ mục thưa Mỗi cấp separator đều là chỉ mục thưa

dùng để chỉ đến cấp chỉ mục kế tiếp dùng để chỉ đến cấp chỉ mục kế tiếp Mỗi separator entry đều chứa 1 giá trị dò Mỗi separator entry đều chứa 1 giá trị dò

tìm ( search key) tìm ( search key) kiki và con trỏ và con trỏ pipi trỏ đến trỏ đến trang kế tiếp trong file chỉ mục. Trang kế trang kế tiếp trong file chỉ mục. Trang kế tiếp này có thể là cấp separator kế tiếp tiếp này có thể là cấp separator kế tiếp thấp hơn hay có thể là trang chứa các lá thấp hơn hay có thể là trang chứa các lá chỉ mục.chỉ mục.

Các cấp separator trong cùng 1 trang sẽ Các cấp separator trong cùng 1 trang sẽ được xếp theo thứ tự và 1 trang có thể được xếp theo thứ tự và 1 trang có thể chứa tối đa chứa tối đa cấp separator cấp separator

Page 63: Chương 6 : Thiết kế vật lý  database

6363

Chỉ mục ISAMChỉ mục ISAM

Mỗi giá trị search key sẽ chia tập các Mỗi giá trị search key sẽ chia tập các giá trị search key thành 2 cây con giá trị search key thành 2 cây con được trỏ đến bởi 2 con trỏ liền kề pđược trỏ đến bởi 2 con trỏ liền kề p i-1i-1 và pvà pii. .

Nếu giá trị search key k được tìm Nếu giá trị search key k được tìm thấy trong cây con được trỏ tới bởi thấy trong cây con được trỏ tới bởi ppi-ki-k thì k <k thì k <kii; nếu được tìm thấy trong ; nếu được tìm thấy trong cây con được trỏ tới bởi pi thì k cây con được trỏ tới bởi pi thì k kkii

Page 64: Chương 6 : Thiết kế vật lý  database

6464

Đặc tính của ISAMĐặc tính của ISAM

Nội dung các nút lá có thể thay đổi Nội dung các nút lá có thể thay đổi

Một số vấn đề khi xóa/ thêm 1 nút láMột số vấn đề khi xóa/ thêm 1 nút lá Ví dụ: Xét chỉ mục ISAM gồm 2 mức Ví dụ: Xét chỉ mục ISAM gồm 2 mức

separator và 1 mức lá. Giá trị search separator và 1 mức lá. Giá trị search key là tên sinh viên key là tên sinh viên

Page 65: Chương 6 : Thiết kế vật lý  database

6565

judy rick

mike pete tombob jane

tom

rickpetejudyjaneal

mikebob

solphilkarenjoeabe

p1

eddie

p1p0 p2

nan

p0

Page 66: Chương 6 : Thiết kế vật lý  database

6666

Ví dụVí dụ

Khi xóa bản ghi của Jane, thì trong Khi xóa bản ghi của Jane, thì trong mức separator chỉ mục Jane trở nên mức separator chỉ mục Jane trở nên xa lạ nhưng chỉ mục ISAM vẫn làm xa lạ nhưng chỉ mục ISAM vẫn làm việc được.việc được.

Khi thêm bản ghi mới có tên Khi thêm bản ghi mới có tên ivan,trang lá thích hợp bị đầyivan,trang lá thích hợp bị đầy cần cần 1 1 trang overflowtrang overflow, nó không thể là , nó không thể là mức mới mà cũng không thể trang mức mới mà cũng không thể trang mức lá mới đượcmức lá mới được

Page 67: Chương 6 : Thiết kế vật lý  database

6767

bob jane

joeabeal

edie

ivan

bob

Overflow chainOverflow chain

Page 68: Chương 6 : Thiết kế vật lý  database

6868

Đặc tính của ISAMĐặc tính của ISAM Nếu bảng mà việc thêm mới thường hay Nếu bảng mà việc thêm mới thường hay

xảy ra thì chuỗi các trang overflow có thể xảy ra thì chuỗi các trang overflow có thể rất dài và việc dò tìm sẽ kém hiệu quảrất dài và việc dò tìm sẽ kém hiệu quả

Các entry trên chuỗi các trang overflow Các entry trên chuỗi các trang overflow không thể xếp thứ tự được và các trang không thể xếp thứ tự được và các trang overflow không thể được xếp gần các overflow không thể được xếp gần các trang khác. trang khác.

Cách khắc phục: chỉ mục có thể được xây Cách khắc phục: chỉ mục có thể được xây dựng lại một cách định kỳ để loại trừ các dựng lại một cách định kỳ để loại trừ các trang overflow, nhưng chi phí này quá đắt. trang overflow, nhưng chi phí này quá đắt.

Chỉ mục ISAM chỉ hiệu quả cho các bảng Chỉ mục ISAM chỉ hiệu quả cho các bảng tương đối tĩnh (static), không nên dùng tương đối tĩnh (static), không nên dùng cho các bảng động hay thay đổi bản ghicho các bảng động hay thay đổi bản ghi

Page 69: Chương 6 : Thiết kế vật lý  database

6969

Các loại dò tìmCác loại dò tìm

Dò tìm bằng (Dò tìm bằng (equality searchequality search): dò tìm ): dò tìm entry chỉ mục có giá trị bằng với giá trị dò entry chỉ mục có giá trị bằng với giá trị dò tìm.tìm.

Key search có thể chứa nhiều thuộc tính.Key search có thể chứa nhiều thuộc tính.• Hỗ trợ việc dò tìm chi tiết hơn (finer Hỗ trợ việc dò tìm chi tiết hơn (finer

granularity). Ví dụ: chỉ mục NAMEDEPT xếp thứ granularity). Ví dụ: chỉ mục NAMEDEPT xếp thứ tự theo Name và DeptId. Chỉ mục cho phép tự theo Name và DeptId. Chỉ mục cho phép khôi phục nhanh thông tin về người có tên là khôi phục nhanh thông tin về người có tên là Name ( có thể có nhiều người trùng tên) của 1 Name ( có thể có nhiều người trùng tên) của 1 phòng cụ thể nào đóphòng cụ thể nào đó

• Hỗ trợ dò tìm miền (Hỗ trợ dò tìm miền (range searchrange search). ).

Page 70: Chương 6 : Thiết kế vật lý  database

7070

009406321009406321 Jacob TaylorJacob Taylor MGTMGT

101202303101202303 John SmythJohn Smyth CSCS

121232343121232343 David JonesDavid Jones EEEE

131141151131141151 Anita CohenAnita Cohen CSCS

234567891234567891 Mary BrownMary Brown ECOECO

333444555333444555 Ying ChenYing Chen CHECHE

444555666444555666 Sanjay SenSanjay Sen ENGENG

555666777555666777 Mary DoeMary Doe CSCS

666777888666777888 Mary BrownMary Brown PHYPHY

900012045900012045 Ann WhiteAnn White MATMAT

Mary Brown, ECOMary Brown, ECO

Mary Brown, PHYMary Brown, PHY

Ying Chen, CHEYing Chen, CHE

Anita Cohen, CSAnita Cohen, CS

Mary Doe, CSMary Doe, CS

David Jones, EEDavid Jones, EE

Sanjay Sen, ENGSanjay Sen, ENG

John Smyth, CSJohn Smyth, CS

Jacob Taylor, MGTJacob Taylor, MGT

Ann White, MATAnn White, MAT

NAMEDEPT

PROFESSOR

Page 71: Chương 6 : Thiết kế vật lý  database

7171

Range searchRange search

Ví dụ:Ví dụ:• Từ việc tìm ra tất cả những ai có tên Từ việc tìm ra tất cả những ai có tên

Mary Brown của phòng ECO (bằng cách Mary Brown của phòng ECO (bằng cách dò bằng), ta có thể khôi phục tất cả dò bằng), ta có thể khôi phục tất cả những ai có tên Mary Brown trong các những ai có tên Mary Brown trong các phòng khác.phòng khác.

• Tìm tất cả giáo sư có tên xếp theo Tìm tất cả giáo sư có tên xếp theo alphabet từ Mary Brown đến David Jones alphabet từ Mary Brown đến David Jones của mọi phòng ban. của mọi phòng ban.

Page 72: Chương 6 : Thiết kế vật lý  database

7272

B+ TreesB+ Trees B+ Trees là cấu trúc index thông dụng B+ Trees là cấu trúc index thông dụng

nhất.nhất. B+ Trees cũng là chỉ mục nhiều mức và hỗ B+ Trees cũng là chỉ mục nhiều mức và hỗ

trợ việc dò tìm khóa các dạng miền,một trợ việc dò tìm khóa các dạng miền,một phần khóa hay cả khóa.phần khóa hay cả khóa.

Có 2 dạng B+ Trees:Có 2 dạng B+ Trees:• Các lá chỉ mục có thể chứa các record dữ liệu Các lá chỉ mục có thể chứa các record dữ liệu

B+ Trees sẽ hoạt động không chỉ như 1 B+ Trees sẽ hoạt động không chỉ như 1 index mà còn như 1 cấu trúc lưu trữ của file dữ index mà còn như 1 cấu trúc lưu trữ của file dữ liệu liệu B+ Trees là chỉ mục chính (main index) B+ Trees là chỉ mục chính (main index)

• Cây được lưu trữ trong file chỉ mục mà các lá Cây được lưu trữ trong file chỉ mục mà các lá của nó chỉ đến các record của file dữ liệu của nó chỉ đến các record của file dữ liệu có có thể là chỉ mục chính (main index) hoặc thứ cấp thể là chỉ mục chính (main index) hoặc thứ cấp (secondary index). (secondary index).

Page 73: Chương 6 : Thiết kế vật lý  database

7373

Cấu trúc của B+ treeCấu trúc của B+ tree

….

Chỉ mục thưaớ mức i

Mức lá

Page 74: Chương 6 : Thiết kế vật lý  database

7474

Cấu trúc của B+ treeCấu trúc của B+ tree

Con trỏ liền kề (sibling pointer) liên Con trỏ liền kề (sibling pointer) liên kết các trang của mức lá thành một kết các trang của mức lá thành một danh sách liên kết chứa các giá trị danh sách liên kết chứa các giá trị search key của các bản ghi trong search key của các bản ghi trong bảng theo thứ tự được sắp. bảng theo thứ tự được sắp.

Trái với ISAM, B+ tree tự thay đổi Trái với ISAM, B+ tree tự thay đổi động. Khi các bản ghi được thêm hay động. Khi các bản ghi được thêm hay xóa, các trang lá và chỉ mục sẽ sửa xóa, các trang lá và chỉ mục sẽ sửa đổi, thêm hay xóa và vì vậy các trang đổi, thêm hay xóa và vì vậy các trang lá không tuần tự trong file. lá không tuần tự trong file.

Page 75: Chương 6 : Thiết kế vật lý  database

7575

Dò tìm miền ( Range search)Dò tìm miền ( Range search)

Danh sách liên kết cho phép B+ tree Danh sách liên kết cho phép B+ tree dò tìm theo miền (range search). dò tìm theo miền (range search). • Ngay khi chỉ mục lá ở 1 đầu của miền dò Ngay khi chỉ mục lá ở 1 đầu của miền dò

tìm đã được định vị bằng cách tìm so tìm đã được định vị bằng cách tìm so sánh bằng ( equality search)sánh bằng ( equality search)

• Các entry lá khác chứa giá trị search key Các entry lá khác chứa giá trị search key trong miền có thể được định vị bằng trong miền có thể được định vị bằng cách duyệt qua danh sách kể từ chỉ mục cách duyệt qua danh sách kể từ chỉ mục lá được tìm thấy bởi so sánh bằng. lá được tìm thấy bởi so sánh bằng.

Page 76: Chương 6 : Thiết kế vật lý  database

7676

So sánh ISAM và B+ treeSo sánh ISAM và B+ tree Con trỏ sibling không cần thiết trong chỉ Con trỏ sibling không cần thiết trong chỉ

mục ISAM vì các trang lá của chỉ mục được mục ISAM vì các trang lá của chỉ mục được lưu trữ trong file theo thứ tự được sắp khi lưu trữ trong file theo thứ tự được sắp khi file được tạo, index là tĩnh (static) và thứ file được tạo, index là tĩnh (static) và thứ tự được duy trì.tự được duy trì.

Range search được thực hiện bằng cách Range search được thực hiện bằng cách quét file một cách vật lý.quét file một cách vật lý.

ISAM không hỗ trợ tìm theo miềnISAM không hỗ trợ tìm theo miền Các entry chỉ mục được chèn mới sẽ không Các entry chỉ mục được chèn mới sẽ không

được lưu trữ theo thứ tự đã được sắp được lưu trữ theo thứ tự đã được sắp nhưng có thể lưu trong các overflow chain. nhưng có thể lưu trong các overflow chain.

Page 77: Chương 6 : Thiết kế vật lý  database

7777

So sánh ISAM và B+ treeSo sánh ISAM và B+ tree B+ tree là cây cân bằng (balance tree): bất chấp B+ tree là cây cân bằng (balance tree): bất chấp

việc thêm mới hay xóa các bản ghi, bất kỳ đường việc thêm mới hay xóa các bản ghi, bất kỳ đường dẫn nào từ gốc đến các lá chỉ mục đều có cùng dẫn nào từ gốc đến các lá chỉ mục đều có cùng chiều dài. Vì vậy chi phí I/O để khôi phục chiều dài. Vì vậy chi phí I/O để khôi phục (retrieve) một entry mức lá là như nhau cho mọi (retrieve) một entry mức lá là như nhau cho mọi lá chỉ mục. lá chỉ mục.

Nếu Nếu là fan-out, nếu giải thuật chèn/ xóa các là fan-out, nếu giải thuật chèn/ xóa các entry bảo đảm được là số separator tối thiểu entry bảo đảm được là số separator tối thiểu trong 1 trang là trong 1 trang là /2 thì chi phí dò tìm tối đa sẽ là /2 thì chi phí dò tìm tối đa sẽ là log log /2/2 Q với Q là số trang mức lá Q với Q là số trang mức lá

Với ISAM, thì chiều dài của chain các overflow Với ISAM, thì chiều dài của chain các overflow không xác định được nên chi phí khôi phục lá ở không xác định được nên chi phí khôi phục lá ở cuối chain cũng không xác định đượccuối chain cũng không xác định được

Page 78: Chương 6 : Thiết kế vật lý  database

7878

So sánh ISAM và B+ treeSo sánh ISAM và B+ tree

Ưu điểm của B+ tree là thay vì tạo Ưu điểm của B+ tree là thay vì tạo chuỗi các overflow khi thêm bản ghi chuỗi các overflow khi thêm bản ghi mới thì cấu trúc của nó được sửa đổi mới thì cấu trúc của nó được sửa đổi sao cho cây vẫn cân bằng. Các entry sao cho cây vẫn cân bằng. Các entry có thể được thêm hay xóa khỏi các có thể được thêm hay xóa khỏi các trang và số separator trong 1 trang trang và số separator trong 1 trang luôn nằm trong khoảng từ luôn nằm trong khoảng từ /2 đến /2 đến

Page 79: Chương 6 : Thiết kế vật lý  database

7979

Chỉ mục hash - Hash indexChỉ mục hash - Hash index

Hashing là 1 giải thuật dò tìm quan Hashing là 1 giải thuật dò tìm quan trọng trong nhiều ứng dụng máy tính.trọng trong nhiều ứng dụng máy tính.

Có 2 loại hashing:Có 2 loại hashing:• Static hashing: kích thước của bảng Static hashing: kích thước của bảng

hash không thay đổi, thường được dùng hash không thay đổi, thường được dùng cho các quan hệ ít thay đổicho các quan hệ ít thay đổi

• Dynamic hashing: kích thước của bảng Dynamic hashing: kích thước của bảng hash có thể mở rộng ra hay thu nhỏ lại, hash có thể mở rộng ra hay thu nhỏ lại, thích hợp cho các quan hệ thường xuyên thích hợp cho các quan hệ thường xuyên phải thêm mới hay xóa bớt bản ghiphải thêm mới hay xóa bớt bản ghi

Page 80: Chương 6 : Thiết kế vật lý  database

8080

Static hashingStatic hashing

Chỉ mục hash sẽ đưa các entry chỉ Chỉ mục hash sẽ đưa các entry chỉ mục tương ứng với các bản ghi dữ mục tương ứng với các bản ghi dữ liệu vào 1 tập con riêng biệt gọi là liệu vào 1 tập con riêng biệt gọi là bucketbucket dựa vào hàm hash h. dựa vào hàm hash h.

Một entry chỉ mục mới sẽ được đưa Một entry chỉ mục mới sẽ được đưa vào 1 bucket thích hợp dựa vào kết vào 1 bucket thích hợp dựa vào kết quả tính hàm h thông qua giá trị quả tính hàm h thông qua giá trị search key v search key v h(v) là địa chỉ của h(v) là địa chỉ của bucket. bucket.

Page 81: Chương 6 : Thiết kế vật lý  database

8181

Cấu trúc chỉ mục hashCấu trúc chỉ mục hash

h

Overflow Chain

Bucket

Hash computation

v

Page 82: Chương 6 : Thiết kế vật lý  database

8282

Nguyên lý dò tìmNguyên lý dò tìm Đầu tiên phép dò tìm bằng với giá trị Đầu tiên phép dò tìm bằng với giá trị

search key v được thực hiện thông qua search key v được thực hiện thông qua hàm h(v), khôi phục bucket chứa trang hàm h(v), khôi phục bucket chứa trang tham chiếu.tham chiếu.

Kế đến duyệt (scan) nội dung của trang để Kế đến duyệt (scan) nội dung của trang để xác định entry chứa v. xác định entry chứa v.

Vì không thể có 1 bucket nào khác chứa Vì không thể có 1 bucket nào khác chứa entry với giá trị khóa v, do đó nếu không entry với giá trị khóa v, do đó nếu không tìm thấy entry trong bucket thì có nghĩa là tìm thấy entry trong bucket thì có nghĩa là giá trị đó không có trong file.giá trị đó không có trong file.

Không cần phải duy trì 1 cấu trúc cây, Không cần phải duy trì 1 cấu trúc cây, entry chỉ mục có thể được khôi phục chỉ entry chỉ mục có thể được khôi phục chỉ bởi 1 thao tác I/Obởi 1 thao tác I/O

Page 83: Chương 6 : Thiết kế vật lý  database

8383

So sánh chỉ mục cây và chỉ mục hashSo sánh chỉ mục cây và chỉ mục hash

Chỉ mục hash được thiết kế đúng có Chỉ mục hash được thiết kế đúng có thể thực hiện phép dò bằng hiệu quả thể thực hiện phép dò bằng hiệu quả hơn chỉ mục cây. Vì với chỉ mục cây, hơn chỉ mục cây. Vì với chỉ mục cây, nhiều trang chỉ mục cần phải được nhiều trang chỉ mục cần phải được khôi phục trước khi tiến tới mức lá.khôi phục trước khi tiến tới mức lá.

Nhưng nếu dò tìm bằng được thực Nhưng nếu dò tìm bằng được thực hiện liên tiếp thì chỉ mục cây hiệu hiện liên tiếp thì chỉ mục cây hiệu quả hơnquả hơn

Page 84: Chương 6 : Thiết kế vật lý  database

8484

Ví dụVí dụ

Cần khôi phục các bản ghi với giá trị Cần khôi phục các bản ghi với giá trị search key k0< k1< …< kl mà sự tuần tự search key k0< k1< …< kl mà sự tuần tự của các search key này cũng biểu diễn thứ của các search key này cũng biểu diễn thứ tự các bản ghi cần được khôi phục. tự các bản ghi cần được khôi phục. • Vì các lá chỉ mục của cây được sắp xếp theo Vì các lá chỉ mục của cây được sắp xếp theo

khóa nên khả năng tận dụng bộ nhớ khi khôi khóa nên khả năng tận dụng bộ nhớ khi khôi phục các lá chỉ mục là rất lớn. phục các lá chỉ mục là rất lớn.

• Với chỉ mục hash, mỗi giá trị search key được Với chỉ mục hash, mỗi giá trị search key được hash vào 1 bucket khác nhau nên việc khôi hash vào 1 bucket khác nhau nên việc khôi phục các entry chỉ mục một cách liên tục sẽ phục các entry chỉ mục một cách liên tục sẽ không thể tận dụng được bộ nhớ.không thể tận dụng được bộ nhớ.

Page 85: Chương 6 : Thiết kế vật lý  database

8585

Chỉ mục hashChỉ mục hash

Dù chỉ mục hash có nhiều thuận lợi Dù chỉ mục hash có nhiều thuận lợi trong việc dò tìm bằng nhưng không trong việc dò tìm bằng nhưng không thể dò tìm theo miền hay dò tìm 1 thể dò tìm theo miền hay dò tìm 1 phần khóa. phần khóa.

Page 86: Chương 6 : Thiết kế vật lý  database

8686

Hàm hash tĩnhHàm hash tĩnh

H(v) = (a*v +b) mod MH(v) = (a*v +b) mod M a,b là các hằng sốa,b là các hằng số V: giá trị search keyV: giá trị search key M: số bucket thường là 1 số nguyên M: số bucket thường là 1 số nguyên

tố lớn hay lũy thừa của 2tố lớn hay lũy thừa của 2 Vì M cố định nên hàm hash là staticVì M cố định nên hàm hash là static

Page 87: Chương 6 : Thiết kế vật lý  database

8787

Đặc tính của hashing tĩnhĐặc tính của hashing tĩnh

Tính hiệu quả của hashing tĩnh phụ thuộc Tính hiệu quả của hashing tĩnh phụ thuộc vào việc tất cả các entry trong mỗi bucket vào việc tất cả các entry trong mỗi bucket có nằm trong cùng 1 trang hay không?có nằm trong cùng 1 trang hay không?

Số entry trong 1 bucket thì tỷ lệ nghịch với Số entry trong 1 bucket thì tỷ lệ nghịch với M: nếu số bucket ít hơn thì số entry trong M: nếu số bucket ít hơn thì số entry trong mỗi bucket sẽ nhiều hơnmỗi bucket sẽ nhiều hơn có thể các có thể các entry không nằm hết trong 1 trang, sẽ entry không nằm hết trong 1 trang, sẽ phải có thêm các trang overflowphải có thêm các trang overflow

Việc chọn giá trị cho M là quan trọng. Việc chọn giá trị cho M là quan trọng.

Page 88: Chương 6 : Thiết kế vật lý  database

8888

Đặc tính của hashing tĩnhĐặc tính của hashing tĩnh

Nếu Nếu là fan-out, L là tổng số entry là fan-out, L là tổng số entry chỉ mục thì nếu chọn M = L/ chỉ mục thì nếu chọn M = L/ sẽ làm sẽ làm cho các bucket bị overflow 1 trang.cho các bucket bị overflow 1 trang.

Nếu dùng filffactor <1 thì sẽ làm Nếu dùng filffactor <1 thì sẽ làm tăng số bucket. Số entry trong mỗi tăng số bucket. Số entry trong mỗi bucket sẽ là bucket sẽ là * fillfactor và M = L/( * fillfactor và M = L/( * fillfactor)* fillfactor)

Page 89: Chương 6 : Thiết kế vật lý  database

8989

Đặc tính của hashing tĩnhĐặc tính của hashing tĩnh

Việc dùng fillfactor chỉ làm giảm Việc dùng fillfactor chỉ làm giảm nhưng không giải quyết được vấn nhưng không giải quyết được vấn đền overflow nhất là khi bảng tăng đền overflow nhất là khi bảng tăng nhanh mà không dự đoán trước được. nhanh mà không dự đoán trước được.

Page 90: Chương 6 : Thiết kế vật lý  database

9090

Dynamic Hashing algorithmDynamic Hashing algorithm

Mục tiêu của hashing động là thay Mục tiêu của hashing động là thay đổi động số bucket để giảm hay loại đổi động số bucket để giảm hay loại trừ các chuỗi overflow khi các hàng trừ các chuỗi overflow khi các hàng dữ liệu được thêm hay xóa. dữ liệu được thêm hay xóa.

Hai loại giải thuật hashing động:Hai loại giải thuật hashing động:• Extendable hashingExtendable hashing• Linear hashingLinear hashing

Page 91: Chương 6 : Thiết kế vật lý  database

9191

Hashing tĩnh sử dụng hàm hashing Hashing tĩnh sử dụng hàm hashing tĩnh để phân hoạch tập các giá trị tĩnh để phân hoạch tập các giá trị search key thành các tập con Si,1≤ I search key thành các tập con Si,1≤ I ≤ M và map mỗi tập con này vào 1 ≤ M và map mỗi tập con này vào 1 bucket. bucket.

Mỗi phần tử v của Si sẽ xác định Mỗi phần tử v của Si sẽ xác định được Bi nhờ vào giá trị h(v)được Bi nhờ vào giá trị h(v)

Dynamic Hashing algorithmDynamic Hashing algorithm

Page 92: Chương 6 : Thiết kế vật lý  database

9292

Dynamic Hashing algorithmDynamic Hashing algorithm Sơ đồ hashing động cho phép Si đuợc Sơ đồ hashing động cho phép Si đuợc

phân hoạch ở thời gian chạy thành các tập phân hoạch ở thời gian chạy thành các tập con riêng biệt Si’ và Si” và Bi thành các Bi’ con riêng biệt Si’ và Si” và Bi thành các Bi’ và Bi”sao cho các phần tử của Si’ ánh xạ và Bi”sao cho các phần tử của Si’ ánh xạ vào các phần tử của Bi’ và các phần tử của vào các phần tử của Bi’ và các phần tử của Bi”Bi”

Bằng cách giảm số giá trị được ánh xạ vào Bằng cách giảm số giá trị được ánh xạ vào bucket , việc phân chia này có lợi thế là bucket , việc phân chia này có lợi thế là thay 1 bucket bị overflow thành 2 bucket thay 1 bucket bị overflow thành 2 bucket không bị đầy. không bị đầy.

Việc thay đổi ánh xạ này ngụ ý là thay đổi Việc thay đổi ánh xạ này ngụ ý là thay đổi hàm hashhàm hash

Page 93: Chương 6 : Thiết kế vật lý  database

9393

Extendable hashingExtendable hashing

Giải thuật này sử dụng sự tuần tự của các Giải thuật này sử dụng sự tuần tự của các hàm hhàm h22, h, h33,…, h,…, hbb dựa vào hàm hash đơn h, dựa vào hàm hash đơn h, hàm này sẽ hash các giá trị search key vào hàm này sẽ hash các giá trị search key vào số nguyên n bit. Đối với mỗi giá trị k, 0 số nguyên n bit. Đối với mỗi giá trị k, 0 ≤k≤b, h≤k≤b, hkk(v) là 1 số nguyên được tạo thành (v) là 1 số nguyên được tạo thành bởi k bit cuối của giá trị h(v): bởi k bit cuối của giá trị h(v):

hhkk(v) = h(v) mod 2(v) = h(v) mod 2kk

Miền của mỗi hk sẽ gấp đôi miền của hàm Miền của mỗi hk sẽ gấp đôi miền của hàm đứng trước nó hđứng trước nó hk-1.k-1. Tại bất kỳ thời điểm nào, Tại bất kỳ thời điểm nào, một hàm đặc biệt trong chuỗi hmột hàm đặc biệt trong chuỗi hkk sẽ được sẽ được dùng để dò tìm giá trị. dùng để dò tìm giá trị.

Page 94: Chương 6 : Thiết kế vật lý  database

9494

Extendable hashingExtendable hashing Hashing động sẽ dùng giai đoạn thứ hai Hashing động sẽ dùng giai đoạn thứ hai

của ánh xạ để xác định bucket nào có liên của ánh xạ để xác định bucket nào có liên quan đến giá trị search key v. quan đến giá trị search key v.

Ánh xạ này sử dụng mức gián tiếp được Ánh xạ này sử dụng mức gián tiếp được thực thi thông qua thư mục (directory). Giá thực thi thông qua thư mục (directory). Giá trị được tạo ra bởi htrị được tạo ra bởi hkk(v) sẽ dùng như chỉ (v) sẽ dùng như chỉ mục trong thư mục, và con trỏ trong thư mục trong thư mục, và con trỏ trong thư mục sẽ tham chiếu đến bucket có liên mục sẽ tham chiếu đến bucket có liên quan với v. quan với v.

Các entry phân biệt trong thư mục có thể Các entry phân biệt trong thư mục có thể tham chiếu đến cùng 1 bucket, vì vậy v1 tham chiếu đến cùng 1 bucket, vì vậy v1 và v2 có thể được ánh xạ vào cùng bucket và v2 có thể được ánh xạ vào cùng bucket cho dù hcho dù hkk(v1) và h(v1) và hkk(v2) là khác nhau(v2) là khác nhau

Page 95: Chương 6 : Thiết kế vật lý  database

9595

Ví dụVí dụ

Giả sử miền của h là tập các số Giả sử miền của h là tập các số nguyên giữa 0 và 2nguyên giữa 0 và 21010 – 1. Giả sử một – 1. Giả sử một trang bucket có thể chứa 2 entry chỉ trang bucket có thể chứa 2 entry chỉ mục và tại thời điểm đang xét, hmục và tại thời điểm đang xét, h22 đang được dùng để hash các giá trị đang được dùng để hash các giá trị search key. V ì k=2 nên directory có search key. V ì k=2 nên directory có 22kk = 4 entry = 4 entry

Page 96: Chương 6 : Thiết kế vật lý  database

9696

Ví dụVí dụ Giả sử giá trị của hàm h như sau:Giả sử giá trị của hàm h như sau:

vv h(v)h(v)petepete 10011110101001111010marymary 01000000000100000000janejane 11000111101100011110billbill 01000000000100000000johnjohn 00011010000110100101vincevince 11011101110111010101karenkaren 00001101110000110111

H hash pete thành 1001111010 và vì h2 chỉ dùng 2 H hash pete thành 1001111010 và vì h2 chỉ dùng 2 bit cuối 10, ứng với entry chỉ mục thứ 3 của bit cuối 10, ứng với entry chỉ mục thứ 3 của directory, pete sẽ được chứa trong Bucket B2directory, pete sẽ được chứa trong Bucket B2

Page 97: Chương 6 : Thiết kế vật lý  database

9797

h2

MarybillMarybill

JohnvinceJohnvince

PetejanePetejane

karenkaren

v

DirectoryB0

B1

B2

B3

Page 98: Chương 6 : Thiết kế vật lý  database

9898

Ví dụVí dụ Nếu thêm bản ghi mới sol mà h(sol) = Nếu thêm bản ghi mới sol mà h(sol) =

00010100000101000101. h2 sẽ ánh xạ john, vince à . h2 sẽ ánh xạ john, vince à sol vào cùng bucket B1, gây ra tràn. sol vào cùng bucket B1, gây ra tràn.

Thay vì tạo chuỗi các overflow, extendable Thay vì tạo chuỗi các overflow, extendable hashing phân chia B1, tạo thêm bucket hashing phân chia B1, tạo thêm bucket mới là B5.mới là B5.

Để phân bố 5 bucket thì cần dùng hàm Để phân bố 5 bucket thì cần dùng hàm hash mà miền của nó chứa nhiều hơn 4 giá hash mà miền của nó chứa nhiều hơn 4 giá trị, vì vậy h3 sẽ được thay thế cho h2.trị, vì vậy h3 sẽ được thay thế cho h2.

Vì h3(john) = 001, h3(vince)=101, khác Vì h3(john) = 001, h3(vince)=101, khác nhau ở bit trái nhất, h3 sẽ ánh xạ john và nhau ở bit trái nhất, h3 sẽ ánh xạ john và vince vào 2 bucket khác nhau. vince vào 2 bucket khác nhau.

Page 99: Chương 6 : Thiết kế vật lý  database

9999

h3

MarybillMarybill

JohnsolJohnsol

PetejanePetejane

vincevince

v

B0

B1

B2

B333

Current_hash

karenkaren

B5

Page 100: Chương 6 : Thiết kế vật lý  database

100100

Giải thuật phân chia bucket Giải thuật phân chia bucket

1.1. Một bucket mới B1 được tạo và nội Một bucket mới B1 được tạo và nội dung của bucket bị tràn sẽ chia dung của bucket bị tràn sẽ chia thành B và B’ bằng hàm hash kế thành B và B’ bằng hàm hash kế tiếp theo thứ tựtiếp theo thứ tự

2.2. Một directory mới được tạo ra bằng Một directory mới được tạo ra bằng cách nối bản sao của thư mục cũ cách nối bản sao của thư mục cũ vào chính nóvào chính nó

3.3. Con trỏ đến B trong bản sao được Con trỏ đến B trong bản sao được thay thế bằng con trỏ đến B’thay thế bằng con trỏ đến B’

Page 101: Chương 6 : Thiết kế vật lý  database

101101

Hoàn chỉnh giải thuật phân chia bucketHoàn chỉnh giải thuật phân chia bucket Nên lưu trữ chỉ mục của hàm hash hiện Nên lưu trữ chỉ mục của hàm hash hiện

hành thông qua biến current_hash. Số hành thông qua biến current_hash. Số entry của directory sẽ là 2entry của directory sẽ là 2current_hashcurrent_hash . .

Nếu thêm bản ghi judy và h(judy) = Nếu thêm bản ghi judy và h(judy) = 1110000110 1110000110 judy sẽ được ánh xạ vào judy sẽ được ánh xạ vào B2, sẽ làm cho bucket bị tràn và cần phân B2, sẽ làm cho bucket bị tràn và cần phân chia. Nhưng không cần phải chuyển sang chia. Nhưng không cần phải chuyển sang hàm kế tiếp h4 vì h3 phân biệt được judy hàm kế tiếp h4 vì h3 phân biệt được judy và jane (110) với pete (010), nên chỉ cần và jane (110) với pete (010), nên chỉ cần tạo 1 bucket mới cho judy và jane và cập tạo 1 bucket mới cho judy và jane và cập nhật con trỏ thích hợp trong thư mụcnhật con trỏ thích hợp trong thư mục

Page 102: Chương 6 : Thiết kế vật lý  database

102102

h3

MarybillMarybill

JohnsolJohnsol

PetePete

vincevince

v

B0

B1

B2

B3

33

Current_hash

karenkaren

B5

JudyjaneJudyjane B6

2

3

3

2

3

3Bucket_level[6]

Page 103: Chương 6 : Thiết kế vật lý  database

103103

Hoàn chỉnh giải thuật phân chia bucketHoàn chỉnh giải thuật phân chia bucket

Nên lưu trữ số lần phân chia của mỗi Nên lưu trữ số lần phân chia của mỗi bucket thông qua biến mảng bucket thông qua biến mảng bucket_level[i]. Lúc đầu bucket_level[i]. Lúc đầu bucket_level[0]=0 và khi Bi nào được bucket_level[0]=0 và khi Bi nào được phân chia thì bucket_level[i] +1 được phân chia thì bucket_level[i] +1 được xem là mức của bucket cho cả Bi và xem là mức của bucket cho cả Bi và B vừa được tạo ra. B vừa được tạo ra.

Page 104: Chương 6 : Thiết kế vật lý  database

104104

Linear hashingLinear hashing

Khuyết điểm của extendable hashing có Khuyết điểm của extendable hashing có liên quan đến directory.liên quan đến directory.

Directory là cần thiết khi 1 bucket được Directory là cần thiết khi 1 bucket được phân chia, có thể cần chuyển hàm hash phân chia, có thể cần chuyển hàm hash lên miền lớn hơnlên miền lớn hơnCác search key được Các search key được hash vào những bucket khác nhau sẽ được hash vào những bucket khác nhau sẽ được hash đến các giá trị khác. hash đến các giá trị khác.

Vì miền của hVì miền của hk+1k+1 chứa gấp hai lần số phần chứa gấp hai lần số phần tử của miền htử của miền hkk, vì vậy h, vì vậy hii(v) và h(v) và hi+1i+1(v) có thể (v) có thể không giống nhau. không giống nhau.

Page 105: Chương 6 : Thiết kế vật lý  database

105105

Linear hashingLinear hashing

Một cách khác cũng sử dụng cùng 1 chuỗi Một cách khác cũng sử dụng cùng 1 chuỗi các hàm hash hcác hàm hash h00, h, h11, h, h22,…, h,…, hbb, nhưng h, nhưng hii và và hhi+1i+1 được sử dụng cùng lúc: được sử dụng cùng lúc:

• HHii dành cho các giá trị thuộc vào bucket không dành cho các giá trị thuộc vào bucket không

bị phân chiabị phân chia

• HHi+1i+1 dành cho các giá trị thuộc vào bucket bị dành cho các giá trị thuộc vào bucket bị

phân chia phân chia

Ưu điểm: cung cấp cùng 1 ánh xạ trước Ưu điểm: cung cấp cùng 1 ánh xạ trước và sau khi phân chia cho các search key và sau khi phân chia cho các search key mà không liên quan gì đến sự phân chia. mà không liên quan gì đến sự phân chia.

Page 106: Chương 6 : Thiết kế vật lý  database

106106

Linear hashingLinear hashing

Việc phân chia bucket được thực hiện Việc phân chia bucket được thực hiện qua nhiều giai đoạn: qua nhiều giai đoạn: • Các bucket tồn tại từ giai đoạn dầu Các bucket tồn tại từ giai đoạn dầu

Page 107: Chương 6 : Thiết kế vật lý  database

107107

DenormalizationDenormalization Mục tiêu thiết kế CSDL:Mục tiêu thiết kế CSDL:

• Hiệu quả trong việc sử dụng không gian đĩaHiệu quả trong việc sử dụng không gian đĩa• Hiệu quả trong việc truy xuất dữ liệuHiệu quả trong việc truy xuất dữ liệu

Denormalization là quá trình biến đổi các Denormalization là quá trình biến đổi các quan hệ đã chuẩn hóa thành các bảng có quan hệ đã chuẩn hóa thành các bảng có các bản ghi vật lý không chuẩn hóa.các bản ghi vật lý không chuẩn hóa.

Mục tiêu của denormalization là tối ưu hóa Mục tiêu của denormalization là tối ưu hóa việc xử lý dữ liệuviệc xử lý dữ liệu

Denormalization hoặc kết hợp hoặc phân Denormalization hoặc kết hợp hoặc phân chia các quan hệchia các quan hệ

Page 108: Chương 6 : Thiết kế vật lý  database

108108

DenormalizationDenormalization

Trường hợp 2 thực thể quan hệ 1-1:Trường hợp 2 thực thể quan hệ 1-1:

Ngay cả khi 1 trong 2 thực thể là tùy Ngay cả khi 1 trong 2 thực thể là tùy chọn (optional), nếu các thực thể chọn (optional), nếu các thực thể luôn tồn tại cùng nhau thì nên kết luôn tồn tại cùng nhau thì nên kết hợp chúng lại thành 1 định nghĩa bản hợp chúng lại thành 1 định nghĩa bản ghighi

Ví dụ: một sinh viên có thể nộp hoặc Ví dụ: một sinh viên có thể nộp hoặc không nộp đơn xin học bổngkhông nộp đơn xin học bổng

Page 109: Chương 6 : Thiết kế vật lý  database

109109

Student_IDStudent_ID Campus_AddressCampus_Address

Application_IDApplication_ID Application_DateApplication_Date QualificationsQualifications Student_IDStudent_ID

Student_IDStudent_ID Campus_AddressCampus_Address Application_DateApplication_Date QualificationsQualifications

Quan hệ đã chuẩn hóa

Quan hệ đã khử chuẩn hóa

Application_Date và Qualifications có thể có giá trị null

Page 110: Chương 6 : Thiết kế vật lý  database

110110

DenormalizationDenormalization

Trường hợp thực thể kết hợp có Trường hợp thực thể kết hợp có thuộc tính không khóa:thuộc tính không khóa:

Nên kết hợp 3 quan hệ từ 2 thực thể cơ Nên kết hợp 3 quan hệ từ 2 thực thể cơ bản lúc đầu lạibản lúc đầu lại

Mục đích: để tránh việc phải dùng Mục đích: để tránh việc phải dùng thao tác kết nối (join) giữa các quan thao tác kết nối (join) giữa các quan hệ này khi việc truy xuất dữ liệu này hệ này khi việc truy xuất dữ liệu này được dùng thường xuyên được dùng thường xuyên

Page 111: Chương 6 : Thiết kế vật lý  database

111111

VENDOR ITEMPRICE QUOTE

Price

VENDOR ITEMPRICE QUOTE

Contact_NameDescription

Vendor_ID

Address

Item_Id

Vendor_IdVendor_Id AddressAddress Contact_NameContact_Name

Item_IdItem_Id DescriptionDescription

Vendor_IdVendor_Id Item_IdItem_Id PricePrice

VENDOR

PRICE QUOTE

ITEM

Quan hệ đã chuẩn hóa

Page 112: Chương 6 : Thiết kế vật lý  database

112112

Vendor_IdVendor_Id AddressAddress Contact_NameContact_Name

Vendor_IdVendor_Id Item_IdItem_Id DescriptionDescription PricePrice

VENDOR

PRICE QUOTE

Quan hệ đã khử chuẩn hóa

Page 113: Chương 6 : Thiết kế vật lý  database

113113

DenormalizationDenormalization Trường hợp dữ liệu tham chiếu:Trường hợp dữ liệu tham chiếu:Dữ liệu tham chiếu nằm trên thực thể phía 1 Dữ liệu tham chiếu nằm trên thực thể phía 1

của mối kết nối 1-M và thực thể phía 1 của mối kết nối 1-M và thực thể phía 1 không quan hệ thêm với thực thể nào không quan hệ thêm với thực thể nào khác.khác.

Nên trộn hai thực thể này vào trong 1 bảng Nên trộn hai thực thể này vào trong 1 bảng khi số thực thể điển hình của thực thể phía khi số thực thể điển hình của thực thể phía M ứng với mỗi thực thể phía 1 tương đối ít.M ứng với mỗi thực thể phía 1 tương đối ít.

Ví dụ: nhiều mặt hàng (item) có cùng 1 Ví dụ: nhiều mặt hàng (item) có cùng 1 phiếu lưu khophiếu lưu kho

Page 114: Chương 6 : Thiết kế vật lý  database

114114

VENDOR ITEMPRICE QUOTE

Where_Store

STORAGEINSTRUCTIONS

ITEMControl_for

Description

Item_ID

Container_Type

Item_Id

Instr_IdInstr_Id Where_StoreWhere_Store Container_TypeContainer_Type

Item_IdItem_Id DescriptionDescription Instr_IdInstr_Id

STORAGE

ITEM

Quan hệ đã chuẩn hóa

Page 115: Chương 6 : Thiết kế vật lý  database

115115

DenormalizationDenormalization

Trường hợp tạo nhiều bảng hơn bằng Trường hợp tạo nhiều bảng hơn bằng cách phân chia 1 quan hệ thành cách phân chia 1 quan hệ thành nhiều bảngnhiều bảng

Phân chia (partition) quan hệ có 2 Phân chia (partition) quan hệ có 2 dạng:dạng:• Chiều ngangChiều ngang• Chiều dọcChiều dọc

Page 116: Chương 6 : Thiết kế vật lý  database

116116

Item_IdItem_Id DescriptionDescription Where_StoreWhere_Store Container_TypeContainer_Type

ITEM

Quan hệ đã khử chuẩn hóa