24/05/2018, 21:34

Thiết kế cơ sở dữ liệu vật lý

là quá trình chuyển các đặc tả dữ liệu lôgic thành các đặc tả kỹ thuật để lưu trữ dữ liệu. Gồm 2 nội dung sau: Lựa chọn công nghệ lưu trữ (Hệ điều hành, HQTCSDL, các công cụ truy nhập dữ liệu). Chuyển các quan hệ của mô hình logic thành các ...

là quá trình chuyển các đặc tả dữ liệu lôgic thành các đặc tả kỹ thuật để lưu trữ dữ liệu. Gồm 2 nội dung sau:

Lựa chọn công nghệ lưu trữ (Hệ điều hành, HQTCSDL, các công cụ truy nhập dữ liệu).

Chuyển các quan hệ của mô hình logic thành các thiết kế vật lý.

Trong chương này sẽ trình bày những phần sau

Thiết kế các trường, bản ghi vật lý

Thiết kế file vật lý

Quá trình thiết kế

Trong quá trình thiết kế hệ thống vật lý, vấn đề đặt ra hàng đầu là phải làm thế nào tối thiểu hóa không gian lưu trữ và thời gian người dùng tương tác với hệ thống.

Tuy nhiên, do dung lượng các thiết bị nhớ tăng nhanh, nên người ta tập trung nhiều vào việc xử lý các file và dữ liệu sao cho hiệu quả hơn đối với người sử dụng.

Các thông tin cần thiết để thiết kế file vật lý

Các quan hệ đã được chuẩn hóa, kể cả ước lượng về số lượng dữ liệu cần lưu trữ

Định nghĩa chi tiết các thuộc tính

Các mô tả cho biết ở đâu và khi nào dữ liệu được sử dụng (xem, thêm, sửa, xóa).

Các yêu cầu và mong đợi về sử dụng dữ liệu và tích hợp dữ liệu, bao gồm các yêu cầu về thời gian đáp ứng, các mức độ an toàn, ghi tạm, phục hồi….

Các mô tả về công nghệ được sử dụng để triển khai file và CSDL (thiết bị lưu trữ, hệ điều hành, HQTCSDL…)

Một số các quyết định cơ bản có ý nghĩa đối với sự tích hợp và hiệu năng của hệ thống ứng dụng cần thực hiện:

Chọn định dạng lưu trữ (kiểu dữ liệu) cho mỗi thuộc tính sao cho tối thiểu hóa dư thừa thông tin và tối đa sự tích hợp dữ liệu.

Nhóm gộp các thuộc tính từ mô hình dữ liệu lô gic vào bản ghi vật lý.

Sắp xếp các bản ghi có quan hệ với nhau vào bộ nhớ ngoài sao cho từng bản ghi hay nhóm các bản ghi lưu trữ, cập nhật và lấy ra nhanh chóng (gọi là tổ chức file)

Lựa chọn phương tiện và cấu trúc để lưu trữ dữ liệu đảm bảo truy nhập hiệu quả hơn.

Sản phẩm thiết kế

Sản phẩm thiết kế là một tập các đặc tả mà các nhà lập trình và các nhà phân tích dữ liệu sẽ sử dụng để xác định định dạng và cấu trúc các file trong bộ nhớ thứ cấp của máy tính (bộ nhớ ngoài).

Khi sử dụng các công cụ CASE, kho dữ liệu của CASE hay từ điển dữ liệu dự án là nơi lưu trữ tất cả các đặc tả nêu ra ở trên.

Sau đây là các phần tử tiêu biểu của thiết kế được lưu trữ trong kho dữ liệu của CASE khi thiết kế file và cơ sở dữ liệu vật lý

BẢNG MÔ TẢ CÁC TRƯỜNG Bảng mô tả các trường

BẢNG CÁC ĐẶC TẢ TIÊU BIỂU ĐỐI VỚI THIẾT KẾ BẢN GHI Bảng các đặc tả tiêu biểu đối với thiết kế bản ghi

BẢNG CÁC ĐẶC TẢ TIÊU BIỂU ĐỐI VỚI THIẾT KẾ FILE Bảng các đặc tả tiêu biểu đối với thiết kế FILE

BẢNG CÁC ĐẶC TẢ TIÊU BIỂU ĐỐI VỚI THIẾT KẾ CSDL Bảng các đặc tả tiêu biểu đối với thiết kế CSDL

Một thuộc tính trong mô hình dữ liệu logic được biểu diễn bằng một số trường (fields).

HoTenSV được biểu diễn thành 2 trường HodemSV và TenSV

Yêu cầu thiết kế trường

Mỗi HQTCSDL sử dụng những kiểu dữ liệu nhất định để lưu trữ dữ liệu.

Trong yêu cầu thiết kế trường, quan trọng nhất là phải chọn kiểu dữ liệu phù hợp, ta thường quan tâm đến các mục tiêu sau khi chọn kiểu dữ liệu:

Tiết kiệm không gian lưu trữ

Biểu diễn được mọi giá trị có thể thuộc miền giá trị

Cải thiện tính toàn vẹn (tổ chức việc nhập dữ liệu, kiểm tra dữ liệu đầu vào)

Hỗ trợ thao tác dữ liệu (Ví dụ: thao tác với dữ liệu số nhanh hơn với ký tự)

Chọn kiểu và cách biểu diễn dữ liệu

Kiểu dữ liệu

Các kiểu dữ liệu mà HQTCSDL SQL hỗ trợ và ý nghĩa của nó Bảng Các kiểu dữ liệu mà HQTCSDL SQL hỗ trợ và ý nghĩa của nó

Các trường tính toán

Khi giá trị của một trường là giá trị nhận được từ các giá trị của trường khác thì trường đó gọi là trường tính toán.

Có các loại tính toán sau:

+ Tính toán số học: Lương= Hệ số lương * 210.

+ Tính toán lôgic: Tiền trợ cấp = 50.000 đ nếu cán bộ là nữ.

0 nếu cán bộ là nam.

+ Tính toán hỗn hợp:

Tiền điện= S ố điện * 500đ nếu số điện < 100.

Số điện *500 + (Số điện -100)* 750 nếu số điện >100.

Các kỹ thuật mã hóa dữ liệu và nén dữ liệu

Một số phương pháp mã hóa dùng để biểu diễn dữ liệu trong các trường lưu trữ:

Mã hóa phân cấp: để mô tả các dữ liệu phân cấp người ta dùng nhiều nhóm, mỗi nhóm đại diện cho cấp và các nhóm được sắp xếp lần lượt từ trái sang phải.

Hệ thống phân loại sách trong thư viện

Bảng Ví dụ về Hệ thống phân loại sách trong thư viện

Mã liên tiếp: Mã này được tạo ra theo quy tắc một dãy liên tục, như 1, 2, 3 … A, B, C…. Mã loại này dùng cho những dữ liệu là danh sách như danh sách sinh viên. Nó đơn giản, dễ tự động hóa, không nhầm lẫn. Tuy nhiên nó không gợi nhớ về đối tượng được mã hóa và không cho phép chèn thêm vào giữa.

Mã gợi nhớ: Căn cứ vào đối tượng được mã hóa để cấu tạo mã. Ví dụ: VND (Đồng Việt Nam), TL001 (Thủy lợi 001)…Loại này giúp ta nhận ra đối tượng được mã hóa, có thể nới rộng hoặc thu hẹp số lượng mã. Tuy nhiên khó tổng hợp và phân tích.

Mã thành phần ngữ nghĩa: Theo phương pháp này, mã được chia làm nhiều thành phần, mỗi phần mô tả một đặc trưng nhất định của đối tượng như phân loại, địa danh… Những phần này có thể sử dụng các nhóm ký tự khác nhau. Mã loại này rất thông dụng và được sử dụng nhiều trong công nghiệp cũng như giao tiếp quốc tế.

Địa chỉ miền trên internet có dạng:

<Tên tổ chức>.<Loại tổ chức>.<Tên nước>

hwru.edu.vn: Đại học Thủy Lợi, Tổ chức giáo dục, Tên nước

Mã loại này cồng kềnh, và cần chọn các thành phần sao cho ổn định, nếu không việc sử dụng mã sẽ gặp nhiều khó khăn.

Kiểm tra tính toàn vẹn của dữ liệu

Để đảm bảo tính đúng đắn của dữ liệu người ta đặt các ràng buộc trên các dữ liệu đó.

Thường dùng các phương pháp sau để kiểm tra tính toàn vẹn

Giá trị ngầm định (default value): Là giá trị được gán sẵn cho một trường nào đó khi bản ghi mới được nhập vào.

Trong hóa đơn bán hàng, trường ngày bán được mặc định là ngày hiện tại.

Kiểm tra khuôn dạng (picture control): Là mẫu định dạng bao gồm độ rộng, các giá trị có thể trong từng vị trị.

TLA006, $999,999.99.

Kiểm tra giới hạn (range control): Các trường có thể đưa ra các giới hạn đối với các giá trị của nó.

Điểm mộn học được giới hạn là các số và được giới hạn từ 0..10.

Tính toàn vẹn tham chiếu (reference integrity): là giá trị của thuộc tính đã cho có thể bị hạn chế bởi giá trị của những thuộc tính khác.

Trong mối quan hệ 1_N, nếu giá trị của bảng bên 1 chưa có thì sẽ không được có bên N.

Kiểm tra giá trị rỗng (Null value control): Nếu đặt một thuộc tính nào đó là khác rỗng thì bắt buộc ta phải thêm giá trị cho trường đó.

Quản lý dữ liệu mất: Trong khi vận hành, nếu vì một lý do nào đó mà dữ liệu có thể bị mất. Khi thiết kế file vật lý, các nhà thiết kế phải chỉ ra cách thức mà hệ thống quản lý dữ liệu bị mất. Balad và Hofer đã đưa ra một số phương pháp sau đây dùng để quản lý dữ liệu của 1 trường bị mất:

Cho quy trình để ước lượng giá trị bị mất.

Theo dõi dữ liệu bị mất để báo cáo và sử dụng một phần tử hệ thống giúp con người mau chóng thay thế giá trị bị mất này.

Thực hiện một số kiểm tra để có thể bỏ qua dữ liệu bị mất hay phải phục hồi nó nếu nó thực sự ảnh hưởng đến kết quả của hệ thống.

Một bản ghi vật lý là một nhóm các trường được lưu trữ ở các vị trí liền kề nhau và được gọi ra cùng nhau như một đơn vị thống nhất.

Thiết kế bản ghi vật lý là chọn một nhóm các trường của nó sẽ lưu trữ ở những vị trí liền kề nhau nhằm 2 mục tiêu: sử dụng hiệu quả không gian lưu trữ và tăng tốc độ truy nhập. Hệ điều hành đọc hay ghi dữ liệu vào bộ nhớ thứ cấp theo một đơn vị gọi là trang. Một trang này có dung lượng cụ thể phụ thuộc vào hệ điều hành và máy tính cụ thể.

Vấn đề đặt ra ở đây là phải thiết kế các bản ghi thế nào để tận dụng được dung lượng chứa của trang. Nếu dung lượng của trang tận dụng được càng nhiều thì số lần đọc càng ít và tốc độ truy cập càng nhanh.

Để làm được điều này người ta thường phi chuẩn hóa một số quan hệ nhận được.

Phi chuẩn

Việc phi chuẩn hóa các quan hệ đã chuẩn hóa trong nhiều trường hợp là cần thiết để tận dụng dung lượng trang của máy.

BENHNHAN(MaBN, TenBN, Diachi_BN, Ngay_nhap, Giuong_phong, Khoa, Tinh_trang, Ngayra, ThanhToan)

Ta có thể phân chia nó thành 2 quan hệ mới để có độ dài gần với dung lượng trang

BENHNH1(MaBN, TenBN, Diachi_BN, Khoa)

BENHNH2(MaBN, Ngay_nhap, Giuong_phong, Tinh_trang, Ngayra, ThanhToan)

Có một số dạng phi chuẩn hóa, nhưng không có một quy tắc chặt chẽ nào. Rodger đã thảo luận đến một số trường hợp chung có thể xét phi chuẩn:

Hai thực thể có quan hệ một – một.

Có 2 quan hệ có mối liên kết 1_1 như sau

SINHVIEN(MaSV, TenSV, MaThe)

THEDOC(MaThe, DiaChi, NgayCap, MaSV)

Phi chuẩn hóa ta có quan hệ sau

SINHVIEN(MaSV, TenSV, MaThe, DiaChi, NgayCap)

Và trong trường hợp này MaThe, DiaChi, NgayCap có thể bỏ trống đối với những SV không có thẻ.

Hai thực thể có mối quan hệ M_N trong đó liên kết có thuộc tính riêng.

Sau khi chuẩn hóa, ta nhận được 3 quan hệ sau

SINHVIÊN(Ma_SV, Ten_SV, DiaChi)

SÁCH(Ma_Sach, Ten_Sach)

MƯỢN(Ma_SV, Ma_Sach, Ngay_muon)

Phi chuẩn hóa ta được

SINHVIÊN(Ma_SV, Ten_SV, DiaChi)

MƯỢN(Ma_SV, Ma_Sach, TenSach, NgayMuon)

Dữ liệu tham chiếu: Trong quan hệ 1_N nếu bảng ở bên 1 không tham gia vào một quan hệ nào khác thì ta có thể hợp nhất 2 thực thể này thành 1. Quan hệ có mối liên kết 1-1

KHO (Ma_Kho, Ten_Kho, Loai_Kho)

HANG(Ma_Hang, Ten_Hang)

Phi chuẩn hóa ta được

HANG(Ma_Hang, Ten_Hang, Ma_Kho, Ten_Kho, Loai_Kho)

Quản lý trường có độ dài cố định

Việc thiết kế bản ghi sẽ rất dễ dàng nếu trường có độ dài cố định (vì tính ngay được độ dài bản ghi).

Trong trường hợp này việc xác định vị trí của một trường chỉ bằng phép toán: Vị trí con trỏ hiện thời + (độ dài bản ghi * số bản ghi)

Quản lý trường có độ dài biến đổi

Một trường có độ dài thay đổi như trường Memo thì định vị trí của một trường hay một bản ghi cụ thể không đơn giản.

Một cách chung để quản lý trường có độ dài thay đổi là đưa các bản ghi có độ dài cố định vào một bản ghi vật lý có độ dài cố định và đưa những bản ghi vật lý có độ dài thay đổi vào một bản ghi vật lý có độ dài thay đổi. Đó chính là kỹ thuật thiết kế bản ghi vật lý tự động được sử dụng trong hầu hết các hệ quản trị CSDL cho máy tính nhỏ.

File vật lý là một phần nhỏ của bộ nhớ thứ cấp (đĩa cứng, băng từ…) lưu các bản ghi vật lý một cách độc lập. Việc lưu trữ các bản ghi vật lý ở vị trí nào đối với người dùng không quan trọng nhưng lại được các nhà thiết kế đặc biệt quan tâm.

Các loại file

Một hệ thống thông tin có thể cần đến 6 loại file sau

File dữ liệu (Data file- master file): là file chứa dữ liệu liên quan với mô hình dữ liệu vật lý và lôgic. File này luôn tồn tại, nhưng nội dung thay đổi.

File lấy từ bảng (look up table file): La danh sách các dữ liệu tham chiếu lấy từ một hay một số file khác theo một yêu cầu nào đó.

File giao dịch (Transaction file): là file dữ liệu tạm thời phục vụ các hoạt động hàng ngày của một tổ chức. File này thường được thiết kế để phục vụ các yêu cầu xử lý nhanh.

File làm việc (Work file): Là file tạm thời dùng để lưu kết quả trung gian, file này sẽ tự động xóa đi mỗi khi không cần thiết.

File bảo vệ (Protection file): là file được thiết kế để khắc phục những sai sót trong quá trình hệ thống hoạt động. Các file này cho hình ảnh của file dữ liệu trước và sau những hoạt động nhất định (cập nhật, sửa đổi, xử lý…) của hệ thống.

File lịch sử (History file): File này ghi lại quá trình hoạt động của hệ thống, cũng có thể là các dữ liệu cũ hiện không cần sử dụng.

Việc tổ chức các loại file khác nhau không chỉ liên quan đến việc tổ chức lưu trữ và khai thác dữ liệu, mà còn liên quan đến các hoạt động xử lý dữ liệu trong quá trình hoạt động của hệ thống. Về nguyên tắc, việc sử dụng càng ít file càng tốt. Tuy nhiên, việc đưa vào các file là cần thiết cho việc đảm bảo an toàn dữ liệu (file bảo vệ, file lịch sử), tăng tốc độ truy cập hay xử lý (file giao dịch, file lấy từ bảng, file làm việc) ….

Các phương pháp truy cập

Mỗi hệ điều hành trợ giúp một số kỹ thuật khác nhau để tìm kiếm và lấy thông tin ra gọi là các phương pháp truy cập.

Về cơ bản, có 2 loại phương pháp truy cập

Phương pháp truy cập trực tiếp, sử dụng tính toán để xác định địa chỉ chính xác của một bản ghi và truy nhập trực tiếp đến bản ghi đó.

Phương pháp gián tiếp, hỗ trợ việc tìm kiếm bản ghi thứ n xuất phát từ một vị trí hiện thời của con trỏ hay điểm bắt đầu của 1 file.

Mặc dù có tồn tại 2 phương pháp như vậy, nhưng ít khi chúng ta sử dụng trực tiếp mà thường thông qua các công cụ có sẵn mà phần mềm hệ thống trợ giúp.

Tổ chức file

Cách tổ chức file là kỹ thuật sắp xếp các bản ghi vật lý của một file trên một thiết bị nhớ thứ cấp. Tổ chức một file cụ thể cần tính toán đến các yếu tố sau

Lấy dữ liệu nhanh.

Thông lượng các giao dịch xử lý lớn

Sử dụng hiệu quả không gian nhớ.

Tránh được sai sót khi mất dữ liệu

Tối ưu hóa nhu cầu tổ chức file.

Đáp ứng được nhu cầu khi tăng dữ liệu

Trước khi nghiên cứu thiết kế tổ chức các CSDL cần xem xét sơ qua cách tổ chức của dữ liệu trong bộ nhớ ngoài.

Mô hình tổ chức bộ nhớ ngoài.

Bộ nhớ ngoài (hay còn gọi là bộ nhớ thứ cấp) là các thiết bị lưu trữ như đĩa từ, băng từ…

Đĩa từ được phân thành các khối vật lý (tổ chức đống) có kích cỡ như nhau: khoảng 512 bytes đến 4K (4*1024=4096 bytes) và được đánh địa chỉ khối. Địa chỉ này gọi là địa chỉ tuyệt đối trên đĩa.

Mỗi tệp dữ liệu trên đĩa từ chiếm 1 hoặc nhiều khối, mỗi khối chứa 1 hoặc nhiều bản ghi. Việc thao tác với tệp thông qua tên tệp thực chất là thông qua địa chỉ tuyệt đối của các khối.

Mỗi bản ghi đều có địa chỉ và thường được xem là địa chỉ tuyệt đối của byte đầu tiên của bản ghi hoặc là địa chỉ của khối chứa bản ghi đó.

Các phép toán đặc trưng trên tệp dữ liệu là

Thêm một bản ghi.

Xóa một bản ghi

Sửa một bản ghi

Tìm một bản ghi theo điều kiện

Tổ chức file tuần tự (Sequential file )

Trong tổ chức file tuần tự, các bản ghi được sắp xếp tuần tự.

Giả sử: Hiện tại tệp cơ 8 bản ghi. 1 khối chứa 3 bản ghi. Con trỏ tệp trỏ đến bản ghi đầu tiên.

Một khối chúa 3 bản ghi

Tìm đến bản ghi đó

  • Xóa
  • Xóa logic: chỉ đánh dấu xóa
  • Xóa vật lý: Xóa hẳn bản ghi đó

Tìm kiếm bản ghi (có giá trị khóa =k): Tìm lần lượt từ trên xuống dưới cho đến khi gặp khóa k.

Sửa đổi giá trị thuộc tính

  • Tìm đến thuộc tính cần sửa
  • Ghi đè giá trị mới lên giá trị cũ

Tổ chức file băm (Hashed File)

  • Khái niệm hàm băm: Mỗi bản ghi đều có 1 khóa là giá trị số (giả sử là k)
  • Hàm băm H(k)=b. Trong đó, b là số cụm (hàm băm sẽ tác động lên giá trị khóa và trả lại 1 số nguyên là số cụm)

Như vậy, tư tưởng của hàm băm là phân chia tập hợp các bản ghi của tệp dữ liệu thành các cụm (Buckets). Mỗi cụm bao gồm một hoặc nhiều khối, mỗi khối chứa một số lượng cố định các bản ghi.

Mỗi cụm ứng với một địa chỉ băm được đánh số từ 0..b-1. Ở mỗi đầu của khối đều chứa con trỏ trỏ đến khối tiếp theo trong cụm, khối cuối cùng trong cụm chứa con trỏ rỗng.

Có một bảng chỉ dẫn cụm (bucket directory): chứa k con trỏ, mỗi con trỏ chứa địa chỉ khối đầu tiên của từng cụm.

Tổ chức file băm

Thêm bản ghi mới (với giá trị khóa k)

Tính H(k): Nếu H(k)=b thì bổ sung vào nhóm b (Lần theo con trỏ, thêm vào như tổ chức tuần tự).

Tìm kiếm bản ghi (với giá trị khóa k)

Tính H(k): Nếu H(k)=b thì b chính là nhóm chứa bản ghi có khóa là k. Sau đó tìm kiếm tuần tự trên nhóm đó.

Xóa bản ghi (với giá trị khóa k)

  • Tìm đến bản ghi có khóa k bằng cách tính H(k): Nếu H(k)= b thì tìm bản ghi đó trong nhóm b.
  • Xóa logic hoặc xóa vật lý.
  • Nếu bản ghi là duy nhất trong khối thì khi xóa bản ghi sẽ đồng thời giải phóng khối khỏi cụm chứa khối.

Sửa đổi thuộc tính

  • Sửa đổi thuộc tính không phải là khóa: Ghi đè giá trị mới lên giá trị cũ.
  • Sửa đổi thuộc tính khóa: Xóa bản ghi cũ, thêm bản ghi mới vào.
  • Tính H(k’).
    • Nếu h(k) =h(k’) à Ghi đè lên
    • Nếu h(k) <> h(k’) à Xóa bản ghi cũ, thêm bản ghi mới vào.

Tổ chức file chỉ số

Một kiểu tổ chức tệp dữ liệu truy nhập khóa rất thường dùng trong CSDL là tệp chỉ số. Tổ chức file chỉ số

Trong đó

K1: Giá trị khóa của bản ghi đầu tiên của khối thứ nhất.

Tệp chỉ dẫn có 2 trường: khóa và con trỏ

Tệp chính có n khối, trong khối chứa các bản ghi.

Minh họa tệp chỉ số

Thêm bản ghi (có giá trị khóa k)

  • Tìm vị trí khối cần thêm (H(k)=b).
  • Nếu khối đó còn chỗ trống thì thêm bản ghi vào theo đúng thứ tự sắp xếp và chú ý thay đổi khóa trong bảng chỉ dẫn khối nếu có sự thay đổi.

Xóa bản ghi (có giá trị khóa k)

  • Quá trình giống như thêm một bản ghi. Tuy nhiên, nếu khi xóa tạo ra khối rỗng, khi đó có thể xóa bỏ toàn bộ khối.
  • Tìm kiếm bản ghi (có giá trị khóa k): Có thể tìm kiếm tuần tự hoặc nhị phân.

Sửa đổi thuộc tính

  • Thuộc tính khóa: Xóa cũ, thêm mới.
  • Thuộc tính không khóa: Ghi đè lên thuộc tính cũ.

Bảng so sánh các cách tổ chức file khác nhau

Bảng so sánh các cách tổ chức file khác nhau

Ví dụ về thiết kế file

Xét Ví dụ sau: Có 2 chứng từ Đơn đặt hàng

Phiếu giao hàng

Sau quá trình thiết kế logic ta được các quan hệ sau

KHACH(Ma_Khach, Ten_kh, DiaChi_kh)

HANG(Ma_hang, Ten_hang, Mota_hang, Donvi)

DONHANG(So_Don, Ma_Khach, NgayDon)

PHIEUGIAO(So_Phieu, Ma_Khach , Noi_Giao, Ngay_Giao)

DONGDON(So_Don, Ma_Hang, So_luongD)

DONGPHIEUGIAO(So_Phieu, MaHang, So_luonggi, DonGia)

Khi tiến hành thiết kế vật lý, ta được các file sau

  • KHACH
Khách
  • HANG
Hàng
  • DONHANG

Đơn hàng

  • DONGDON
Đóng đơn
  • PHIEUGIAO
Phiếu giao
  • DONGPHIEU
Đóng phiếu
0