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
11
Chương 6:Chương 6:Thiết kế vật lý databaseThiế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ả
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
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ữ
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
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.
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
88
PART 1000
SUPPLIER 50
MANUFACTUREDPART
400
PURCHASEDPART
700
O
QUOTATION 2500
200
40% 70%
140
60
(50)
40 80
70
40
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.
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??
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
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.
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
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
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
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
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
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
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 đề
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.
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
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?
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.
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
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ụ.
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
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
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
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
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
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
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
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
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
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
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
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.
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
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.
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.
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
4242
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
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
4545
Data File
Index File
Mechanism for Locating Index Entries
Index Entries
Clustered index
4646
Data File
Index File
Mechanism for Locating Index Entries
Index Entries
Unclustered index
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.
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
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.
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
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
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
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
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
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)
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á.
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á
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
5959
p0 p1 pk1 k
Index Entry
Một trang ở cấp separator trong chỉ mục ISAM
k2 p2
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á.
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.
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
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
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
6565
judy rick
mike pete tombob jane
tom
rickpetejudyjaneal
mikebob
solphilkarenjoeabe
p1
eddie
p1p0 p2
nan
p0
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
6767
bob jane
joeabeal
edie
ivan
bob
Overflow chainOverflow chain
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
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). ).
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
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.
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).
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á
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.
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.
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.
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
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
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
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.
8181
Cấu trúc chỉ mục hashCấu trúc chỉ mục hash
h
Overflow Chain
Bucket
Hash computation
v
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
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
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ớ.
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.
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
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.
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)
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.
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
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
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
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ị.
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
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
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
9797
h2
MarybillMarybill
JohnvinceJohnvince
PetejanePetejane
karenkaren
v
DirectoryB0
B1
B2
B3
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.
9999
h3
MarybillMarybill
JohnsolJohnsol
PetejanePetejane
vincevince
v
B0
B1
B2
B333
Current_hash
karenkaren
B5
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’
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
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]
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.
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.
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.
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
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ệ
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
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
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
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
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
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
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
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
116116
Item_IdItem_Id DescriptionDescription Where_StoreWhere_Store Container_TypeContainer_Type
ITEM
Quan hệ đã khử chuẩn hóa