1. Trang chủ
  2. » Công Nghệ Thông Tin

Hệ quản trị cơ sở dữ liệu

472 162 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 472
Dung lượng 6,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong khigiảng viên có thể bỏ qua một số vấn đề này theo ý của họ ví dụ, đại số quan hệ, mộtvài phần về mô hình ER hoặc các truy vấn SQL, nhưng vấn đề này liên quan đến tất cảcác sinh vi

Trang 1

Hệ quản trị Cơ sở dữ liệu

Biên tập bởi:

Ths Phạm Hoàng Nhung

Trang 2

Hệ quản trị Cơ sở dữ liệu

Trang 3

MỤC LỤC

1 Lời nói đầu

2 Tổng quan về các hệ thống cơ sở dữ liệu

3 Giới thiệu thiết kế cơ sở dữ liệu

4 Mô hình quan hệ

5 Đại số quan hệ và các phép toán logic

6 Truy vấn, Ràng buộc, Trigger

7 Phát triển ứng dụng cơ sở dữ liệu

8 Các ứng dụng Internet

9 Tổng quan về lưu trữ và chỉ số

10 Tổng quan về đánh giá truy vấn

11 Tổng quan về quản lý giao dịch

12 Tinh chỉnh lược đồ và các dạng chuẩn hoá

13 Thiết kế cơ sở dữ liệu vật lý và những điều chỉnh thiết kế

Tham gia đóng góp

Trang 4

Lời nói đầu

Mở đầu

Các hệ thống cơ sở dữ liệu là công cụ không thể thiếu cho việc quản lý thông tin, và khóahọc về lý thuyết và thực hành trên các hệ thống cơ sở dữ liệu là một phần quan trọngcủa chương trình đào tạo ngành khoa học máy tính Quyển sách này trình bày những nộidung cơ bản của các hệ thống quản lý cơ sở dữ liệu hiện đại, cụ thể là các hệ cơ sở dữliệu quan hệ

Chúng tôi cố gắng trình bày vấn đề này một cách rõ ràng và đơn giản Cách tiếp cậnđịnh lượng được sử dụng cùng với nhiều những ví dụ chi tiết Có rất nhiều bài tập trongmỗi chương, nó giúp tăng cường khả năng của sinh viên để áp dụng những khái niệmvào giải quyết các vấn đề thực tế

Quyển sách có thể được sử dụng cùng với phần mềm hỗ trợ và các bài tập lập trình tronghai loại khác nhau của khóa học:

1 Tập trung vào ứng dụng: Khóa học này tập trung vào các nội dung cơ bản của các

hệ thống cơ sở dữ liệu, và nhấn mạnh vào việc chúng được sử dụng như thế nào trongcác ứng dụng hướng-dữ-liệu Hai chương mới về phát triển ứng dụng đã được thêm vàotrong phiên bản thứ ba, và toàn bộ quyển sách được tổ chức lại để hỗ trợ những khóahọc kiểu này Một ví dụ nghiên cứu và các tài nguyên hỗ trợ trực tuyến (ví dụ, mã lệnhcủa các truy vấn SQL và các ứng dụng Java, cơ sở dữ liệu trực tuyến và các giải pháp)giúp cho quyển sách này trở nên dễ dạy cho những khóa hướng ứng dụng

2 Tập trung vào hệ thống: Khóa học này giả thiết rằng sinh viên có kỹ năng lập trình

C và C++ tốt Trong trường hợp này một phần mềm Minibase phù hợp có thể được sửdụng như một dự án trong đó sinh viên được yêu cầu để thực hiện hàng loạt các vấn đềcủa RDBMS Một vài mô-đun trong phần mềm (ví dụ, heap files, quản lý vùng đệm,B+trees, các chỉ số băm, các phương pháp nối khác nhau) được trình bày chi tiết trongtài liệu để sinh viên có thể thực hiện chúng, với các giao diện lớp (C++)

Rất nhiều giáo viên dạy khóa học liên quan đến cả hai kiểu chương trình trên Việc cấutrúc lại trong phiên bản thứ ba cho phép thực hiện một khóa học lai như vậy Quyển sáchnày có đủ để hỗ trợ những khóa học nâng cao bao gồm hai-khóa-học liên tục

Tổ chức của phiên bản thứ ba

Quyển sách này được tổ chức thành sáu phần chính và hàng loạt các chủ đề nâng cao đã

Trang 5

dữ liệu, mô hình ER và mô hình quan hệ Chúng giải thích việc các cơ sở dữ liệu đượctạo ra và sử dụng như thế nào, và trình bày những vấn đề cơ bản của thiết kế cơ sở dữliệu và các truy vấn, bao gồm những vấn đề chuyên sâu về các truy vấn SQL Trong khigiảng viên có thể bỏ qua một số vấn đề này theo ý của họ (ví dụ, đại số quan hệ, mộtvài phần về mô hình ER hoặc các truy vấn SQL), nhưng vấn đề này liên quan đến tất cảcác sinh viên làm việc trên các hệ thống cơ sở dữ liệu, và chúng tôi đề nghị rằng nó nênđược trình bày chi tiết nhiều nhất có thể.

Mỗi phần trong năm phần chính còn lại có hoặc là ứng dụng hoặc là tập trung vào các

hệ thống cơ sở dữ liệu Trong ba phần về Các hệ thống, mỗi phần đều có một chươnggiới thiệu, được thiết kế để cung cấp những khái niệm cho chính phần đó, ví dụ, Chương

8 là tổng quan về lưu trữ và chỉ số hóa Các chương tổng quan này có thể được sử dụng

để cung cấp tổng quan về chủ đề này, hoặc như là chương đầu tiên trước khi đi vàonhững nội dung chi tiết hơn Vì thế, trong một khóa học hướng ứng dụng, Chương 8trình bày về các tổ chức file và chỉ số hóa, trong khi đó, khóa học hướng hệ thống sẽchọn từ Chương 9 đến Chương 11 Phần về thiết kế và tinh chỉnh cơ sở dữ liệu trình bày

về những vấn đề trong thiết kế và tinh chỉnh thực thi cho những truy vấn cần đảm bảo antoàn Những chủ đề ứng dụng nên được trình bày tốt nhất là sau khi cung cấp cho sinhviên những kiến thức về kiến trúc của hệ thống cơ sở dữ liệu, và vì thế các chương nàynên được trình bày lần lượt

(2) Phát triển ứng dụng Tập trung vào ứng dụng

(3) Lưu trữ và chỉ số hóa Tập trung vào hệ thống

(4) Đánh giá truy vấn Tập trung vào hệ thống

(5) Quản lý giao dịch Tập trung vào hệ thống

(6) Thiết kế cơ sở dữ liệu và tinh chỉnh Tập trung vào ứng dụng

(7) Các chủ đề bổ sung Cả hai

Đề nghị cho đề cương khóa học

Quyển sách này có thể được sử dụng trong hai kiểu của khóa học cơ sở dữ liệu nói trên.Khóa học hướng ứng dụng có thể sử dụng các chương Cơ bản, sau đó là các chươngPhát triển ứng dụng, sau đó là các chương Tổng quan về hệ thống, và tổng kết bằng phầnThiết kế và tinh chỉnh cơ sở dữ liệu Sự phụ thuộc giữa các chương được giữ ở mức thấpnhất, vì thế giảng viên có thể dễ dàng điều chỉnh bài giảng của mình Phần I về các vấn

đề Cơ bản nên được tìm hiểu đầu tiên Chỉ các chương còn lại trong Phần I tới Phần VI

là có sự phụ thuộc lẫn nhau được chỉ ra theo các mũi tên trong Hình 0.2 Các chươngtrong Phần I nên được nghiên cứu tuần tự Tuy nhiên, phần tìm hiểu về đại số quan hệ

Trang 6

và các phép toán logic có thể được để lại để tìm hiểu về các truy vấn SQL trước (mặc dùchúng ta biết rằng vấn đề này là quan trọng và lưu ý rằng nó nên được nghiên cứu trướckhi tìm hiểu về SQL.)

Khóa học hướng hệ thống sẽ tìm hiểu về các chương Cơ bản và một số phần trong cácchương về Ứng dụng và Hệ thống Một điểm quan trọng cho các khóa học hướng hệthống là lựa chọn đúng các dự án lập trình (ví dụ, việc sử dụng Minibase) làm cho ngườiđọc mong muốn sớm được nghiên cứu các chủ đề về hệ thống Sự phụ thuộc giữa cácchương được giới hạn một cách cẩn thận để cho phép các chương Hệ thống được tìmhiểu ngay sau Chương 1 và Chương 3 Các chương Cơ bản còn lại và các chương Ứngdụng có thể được tìm hiểu sau Quyển sách này cũng có thể được hỗ trợ cho đa-khóa-học Hiển nhiên, việc lựa chọn bài giảng Tập trung vào Ứng dụng hay Tập trung vào Hệthống dẫn đến việc bỏ đi những nội dung không thực sự cần thiết; những phần trình bàytrong quyển sách này hỗ trợ hỗn hợp cả hai dạng khóa học Các chủ đề bổ sung dải trênmột miền rộng lớn các vấn đề, và có thể được sử dụng cho các khóa học nâng cao

Các vấn đề bổ sung

Quyển sách có những hỗ trợ trực tuyến:

Trang 7

Tổ chức các chương và sự phụ thuộc lẫn nhau

Trang 8

Các chương trực tuyến: Để tạo không gian cho các vấn đề mới như phát triển ứng

dụng, truy cập thông tin, và XML, chúng tôi đưa một số chương lên tài liệu trực tuyến.Sinh viên có thể tải về miễn phí các chương này trên website của quyển sách, và các giảipháp cho các bài tập trong chương này được trình bày trong một quyển kèm theo

Các slide bài giảng: Các slide bài giảng của tất cả các chương được miễn phí trong

định dạng Postscript, và PDF Giảng viên khóa học cũng có thể có được các slide nàytrong định dạng Microsoft Powerpoint, và có thể sửa chúng để phù hợp với bài giảngcủa mình Giảng viên cũng có thể truy cập tới tất cả các hình sử dụng trong quyển sáchnày (trong định dạng xfig), và có thể sử dụng chúng để thay đổi các slide

Lời giải cho các bài tập trong các chương: Quyển sách có nhiều bài tập chuyên sâu.

Sinh viên có thể tìm thấy lời giải của các bài tập được đánh số lẻ và các slide bài giảngcủa mỗi chương có trên Website trong các định dạng Postscript và Adobe PDF Giảngviên có thể có được giải pháp cho tất cả các bài tập

Phần mềm: Song hành với quyển sách này là hai loại phần mềm Đầu tiên, chúng ta có

Minibase, một RDBMS nhỏ được sử dụng trong các khóa học hướng-hệ-thống Cùngvới Minibase là các bài tập ví dụ và lời giải, xem Phụ lục 30 Thứ hai, chúng tôi đưa ra

mã chương trình của tất cả các bài tập phát triển ứng dụng trên Java và SQL trong quyểnsách này, cùng với những script để tạo ra các cơ sở dữ liệu minh họa, và các script choviệc thiết đặt một số DBMSs thương mại Sinh viên có thể chỉ truy cập được các lời giảicủa các bài tập lẻ, nhưng giảng viên thì có thể truy cập lời giải của tất cả bài tập

Tài liệu cho giảng viên: Quyển sách có những tài nguyên trực tuyến trong đó có những

dẫn giải cho giảng viên về từng chương Nó cung cấp tổng quan về mỗi chương vàhướng dẫn giảng viên nên nhấn mạnh hoặc bỏ qua những nội dung nào Tài liệu nàycũng bàn về các tài nguyên được hỗ trợ trực tuyến của từng chương và hàng loạt những

đề xuất cho các bài tập và các dự án Cuối cùng, nó bao gồm các ví dụ về các bài kiểmtra cho các khóa học sử dụng quyển sách này làm giáo trình

Thông tin tham khảo

Trang chủ của cuốn sách này có URL là:

http://www.es.wisc.edu/~ dbbook

Nó bao gồm danh sách những thay đổi từ phiên bản 2 sang phiên bản 3, và những lỗi

và những hỗ trợ của quyển sách này cũng được cập nhật thường xuyên Giảng viên nên

vào website này định kỳ hoặc đăng ký để nhận được những thông tin này qua thư điệntử

Trang 9

và tôi cùng nhau thiết kế Minibase rất nhiều Bài giảng của tôi bị ảnh hưởng rất nhiều

từ các bài giảng của Mike và slides bài giảng của Yannis Loannidis Joe Hellerstein đã

sử dụng phiên bản beta của quyển sách này ở Berkeley và đã cung cấp cho tôi nhữngphản hồi vô giá, hỗ trợ các slides và những chú giải rất hài hước Việc viết các chương

về hệ cơ sở dữ liệu hướng đối tượng cùng với Joe có rất nhiều niềm vui C Mohan cungcấp những hỗ trợ vô giá, kiên nhẫn trả lời một số lượng lớn các câu hỏi về công nghệthực thi được sử dụng trong các hệ thống thương mại, cụ thể là việc chỉ số hóa, điềukhiển tương tranh, và các thuật toán liên quan đến phục hồi dữ liệu Moshe Zloof trảlời rất nhiều các câu hỏi về ngữ nghĩa QBE và các hệ thống thương mại dựa trên QBE.Ron Fagin, Krishna Kulkarni, Len Shapiro, Jim Melton, Dennis Shasha, và Dirk VanGucht phản biện quyển sách này và cung cấp những phản hồi rất chi tiết, giúp cải thiện

cả nội dung và phần trình bày Michael Goldweber ở Đại học Beloit, Matthew Haines

ở Wyoming, Michael Kifer ở SUNY StonyBrook, Jeff Naughton ở Wisconsin, PraveenSeshadri ở Cornell, và Stan Zdonik ở Brown cũng sử dụng phiên bản beta cho các bàigiảng về cơ sở dữ liệu của họ và cung cấp những phản hồi và những báo cáo chi tiết Cụthể, Michael Kifer chỉ ra một lỗi trong thuật toán (cũ) về tính tập bao phủ tối thiểu và đềxuất tìm hiểu một số đặc tính SQL trong Chương 2 để cải thiện khả năng module hóa.Tài liệu tham khảo của Gio Wiederhold trình bày dưới dịnh dạng Latex, và tài liệu thamkhảo trực tuyến của Michael Ley trên các cơ sở dữ liệu và lập trình logic đã có đónggóp lớn lao trong khi biên dịch tài liệu tham khảo cho các chương Shaun Flisakowski

và Uri Shaft đã giúp đỡ tôi liên tục khi đối mặt cùng Latex

Tôi cũng gửi lời cảm ơn đặc biệt của mình tới rất, rất nhiều sinh viên đã xây dựng nênphần mềm Minibase Emmanuel Ackaouy, Jim Pruyne, Lee Schumacher, và MichaelLee đã làm việc cùng tôi khi tôi phát triển phiên bản đầu tiên của Minibase (nhiều phần

đã bị bỏ qua, nhưng nó ảnh hưởng rất nhiều tới phiên bản sau) Emmanuel Ackaouy vàBryan So là người đồng hướng dẫn của tôi khi tôi dạy khóa học CS564 sử dụng phiênbản này và họ đã nỗ lực để tinh chỉnh nó Paul Aoki đã làm việc hết sức mình với mộtphiên bản Minibase và đưa ra nhiều lời nhận xét đáng giá Sinh viên của lớp CS764(khóa học cơ sở dữ liệu cho sinh viên đã tốt nghiệp) đã phát triển phiên bản hiện tại củaMinibase rất nhiều trong một dự án của lớp dưới sự hướng dẫn của tôi và Mike Carey.Amit Shukla và Michael Lee là những giảng viên đi kèm với tôi khi tôi dạy khóa họcCS564 sử dụng phiên bản này của Minibase và phát triển phần mềm xa hơn

Trang 10

Một số sinh viên đã làm việc cùng tôi trên các dự án độc lập trong một thời gian dài

để phát triển các thành phần khác nhau của Minibase Nó bao gồm các gói phần mềm

mô phỏng phục vụ quản lý bộ đệm và B+trees (Huseyin Bektas, Harry Stavropoulos,

và Weiqing Huang); một bộ tối ưu hóa truy vấn và người mô phỏng là Stephen Harris,Michael Lee, và Donko Donjerkovic; một công cụ lược đồ ER dựa trên lược đồOpossum (Eben Haber); và một công cụ dựa trên GUI trong việc chuẩn hóa (AndrewProck và Andy Therber) Ngoài ra, Bill Kimmel đã làm việc để tích hợp và cố định phần

mã nguồn (quản lý bộ đệm, quản lý lưu trữ, các phương pháp truy cập và files, các phéptoán quan hệ, và bộ lập kế hoạch truy vấn) được đưa ra trong dự án của lớp CS764.Ranjani Ramamurty đã mở rộng đáng kể công việc của Bill trong việc làm rõ và tích hợphàng loạt các modun Luke Blanshard, Uri Shaft, và Shaun Flisakowski đã cùng nhaulàm việc để phát triển những bài kiểm tra thích hợp và những bài tập dựa trên phần mềmMinibase Krishna Kunchithapadam đã kiểm tra bộ tối ưu hóa và phần đã phát triển củaMinibase GUI

Rõ ràng, phần mềm Minibase sẽ không tồn tại nếu không có sự góp mặt của rất nhiềungười có tài Phần mềm này miễn phí cho các người dùng trong lĩnh vực này, tôi hyvọng nhiều giảng viên sẽ có thể dạy khóa học về cơ sở dữ liệu hướng-hệ-thống cùng với

sự kết hợp giữa thực tiễn và kinh nghiệm để hoàn thành các tài liệu cho bài giảng

Tôi cũng muốn cảm ơn rất nhiều sinh viên đã giúp tôi xây dựng và kiểm tra các đáp

án của các bài tập và cung cấp những phản hồi hữu ích cho các phiên bản nháp củaquyển sách này Theo thứ tự là: X Bao, S Biao, M Chakrabarti, C Chan, W Chen,

N Cheung, D Colwell, C Fritz, V Ganti, J Gehrke, G Glass, V Gopalakrishnan,

M Higgins, T Jasmin, M Krishnaprasad, Y Lin, C Liu, M Lusignan, H Modi, S.Narayanan, D Randolph, A Ranganathan, J Reminga, A Therber, M Thomas, Q.Wang, R Wang, Z Wang, và J Yuan Arcady Grenader, James Harrington, và MartinReames ở Wisconsin và Nina Tang ở Berkeley đã cung cấp những phản hồi đặc biệt chitiết

Charlie Fischer, Avi Silberschatz, và Jeff Ullman cho tôi những lời khuyên đáng giátrong khi làm việc với nhà xuất bản Người biên tập của tôi ở McGraw-Hill, Betsy Jones

và Eric Munson, đã đọc rất kỹ và chỉ dẫn cho quyển sách này trong những giai đoạn banđầu của nó

Cuối cùng, quyển sách này là một tên trộm thời gian, và trong nhiều trường hợp, nó gây

ra những khó khăn cho gia đình tôi còn nhiều hơn đối với tôi Con trai của tôi đã nóithẳng thắn như vậy Từ khi năm tuổi, Ketan đã nói: “Bố, đừng làm việc với quyển sáchngớ ngẩn này Bố không có bất kỳ thời gian nào dành cho con.” Đứa con hai tuổi, Viveknói: “Bố làm việc với sách? Không không không hãy chơi bóng với con!” Tất cả sự bấtbình đã được vợ của tôi giải quyết, Apu đã giữ không khí vui vẻ cho cả gia đình mặc dùrất nhiều buổi tối và ngày cuối tuần tôi dành cho quyển sách này (Không kể đến những

Trang 11

Trên tất cả, tôi cảm ơn tình yêu của cha tôi và mẹ tôi, cùng với tình yêu của họ dành chotôi Anh trai của tôi đã gọi điện để kéo tôi ra khỏi phòng làm việc, nhưng thay vì cảm ơnanh ấy, tôi đã tức giận Tôi muốn cảm ơn gia đình của tôi đã ủng hộ những gì tôi làm.(Ở đây! Tôi đã tìm ra được lý do để cảm ơn Kartik.)

Lời cảm ơn cho phiên bản thứ hai

Emily Gray và Betsy Jones ở McGraw-Hill đã đọc rất cẩn thân và cung cấp nhữnglời khuyên và sự hỗ trợ khi chúng tôi chuẩn bị thực hiện phiên bản hai Những ngườiphản biện sau này cung cấp cho chúng tôi nhiều phản hồi có giá trị cả về nội dung vàcách tổ chức: Liming Cai ở Ohio University, Costas Tsatsoulis ở University of Kansas,Kwok-Bun Yue ở University of Houston, Clear Lake, William Grosky ở Wayne StateUniversity, Sang H Son ở University of Virginia, James M Slack ở Minnesota StateUniversity, Mankato, Herman Balsters ở University of Twente, Netherlands,Karen C.Davis ở University of Cincinnati, Joachim Hammer ở University of Florida, Fred Petry

at Tulane University, Gregory Speegle ở Baylor University, Salih Yurttas ở Texas A&MUniversity, và David Chao ở San Francisco State University

Một số người thông báo về các lỗi xảy ra trong phiên bản đầu tiên Cụ thể, chúngtôi gửi lời cảm ơn tới những người sau: Joseph Albert ở Portland State University,Han-yin Chen ở University of Wisconsin, Lois Delcambre ở Oregon Graduate Institute,Maggie Eich ở Southern Methodist LIniversity, Raj Gopalan ở Curtin University ofTechnology, Davood Rafiei ở University of Toronto, Michael Schrefl ở University ofSouth Australia, Alex Thomasian ở University of Connecticut, và Scott Vandenberg ởSiena College

Chúng tôi đặc biệt cảm ơn những người đã trả lời chi tiết những câu hỏi về cách thứccác hệ thống thương mại hỗ trợ các đặc tính khác nhau trong DBMS: Ở IBM: MikeCarey, Bruce Lindsay, C Mohan, và James Teng; ở Informix: M Muralikrishna vàMichael Ubell: ở Microsoft: David Campbell, Goetz Graefe, và Peter Spiro; ở Oracle:Hakan Jacobsson, Jonathan D Klein, Muralidhar Krishnaprasad, và M Ziauddin; và

ở Sybase, Marc Chanliau, Lucien Dimino, Sangeeta Doraiswamy, Hanuma Kodavalla,Roger MacNicol, và Tirumanjanam Rengarajan

Lời cảm ơn cho phiên bản thứ ba

Chúng tôi cảm ơn Raghav Kaushik về những đóng góp của anh ấy đối với phần XML,

và Alex Thomasian với những đóng góp trong phần điều khiển tương tranh Chúng tôiđặc biệt cảm ơn Jim Melton đã gửi cho chúng tôi cuốn sách chưa xuất bản của anh ấy

về những phần mở rộng hướng đối tượng trong chuẩn SQL: 1999, và chỉ ra một vài lỗitrong bản nháp phiên bản thứ ba này Marti Hearst ở Berkeley đã hào phóng cho phépchúng tôi sử dụng một số slide của anh ấy trong phần Truy cập thông tin, Alon Levy và

Trang 12

Dan Suciu đã cho chúng tôi sử dụng một số slid của họ về XML, Mike Carey giúp đỡ

sử dụng các dịch vụ Web

Emily Lupash ở McGraw-Hill đã hỗ trợ và khuyến khích chúng tôi liên tục Cô ấy làngười phản biện đến từ Ming Wang ở Embry-Riddle Aeronautical University, ChengHsu at RPI, Paul Bergstein ở Univ of Massachusetts, Archana Sathaye ở SJSU, BharatBhargava ở Purdue, John Fendrich ở Bradley, Ahmet Ugur ở Central Michigan, RichardOsborne ở Univ of Colorado, Akira Kawaguchi ở CCNY, Mark Last ở Ben Gurion,Vassilis Tsotras ở Univ of California, và Ronald Eaglin ở Univ of Central Florida.Chúng tôi gửi lời cảm ơn chân thành tới những người phản biện, họ đã giúp chúng tôi

có những cải tiến lớn trong nội dung và thiết kế

Trang 13

Tổng quan về các hệ thống cơ sở dữ liệu

Một lượng lớn thông tin hữu ích đối với chúng ta tồn tại ở dạng văn bản, và giá trị của

dữ liệu chính là tài sản quan trọng Tuy nhiên, khả năng quản lý một lượng lớn thôngtin, nhanh chóng truy cập đến những thông tin cần thiết còn quan trọng hơn nữa Điều

đó có nghĩa là có thông tin là chưa đủ, chúng ta còn phải biết cách sử dụng nó sao chothật hiệu quả Từ thực tế đó dẫn chúng ta đến một suy nghĩ là: cần phải có một hệ thốngquản lý dữ liệu thật mạnh mẽ và hiệu quả Để quản lý một lượng lớn dữ liệu phức tạp,người sử dụng phải có những công cụ - hỗ trợ tính năng đơn giản trong thao tác nhưnglại hiệu quả trong trích lọc thông tin

Cơ sở dữ liệu là tập hợp dữ liệu biểu diễn các hoạt động của một hoặc một số tổ chức cóliên quan đến nhau Ví dụ, cơ sở dữ liệu của một trường đại học có thể chứa thông tinvề:

Hệ quản trị cơ sở dữ liệu, còn gọi là DBMS là phần mềm được thiết kế để lưu trữ

và quản lý một lượng lớn dữ liệu Sử dụng DBMS là hướng tới một cách tiếp cận mới,không phải lưu trữ dữ liệu ở các tệp tin độc lập và viết từng ứng dụng cụ thể để quản lýchúng Sự hữu ích của cơ sở dữ liệu sẽ được chúng ta đề cập chi tiết trong phần 4

Note: Lĩnh vực của hệ quản trị cơ sở dữ liệu là một thế giới thu nhỏ của khoa học máytính Những vấn đề đặt ra và công nghệ sử dụng liên quan đến một chuỗi những ngànhkhoa học như xử lý ngôn ngữ, ngôn ngữ lập trình, biên dịch, hệ điều hành, điều khiểntương tranh, cấu trúc dữ liệu, thuật toán, hệ thống phân tán và song song, giao diện ngườimáy, hệ chuyên gia và trí tuệ nhân tạo, công nghệ thống kê Chúng ta sẽ không thể đivào tất cả các lĩnh vực nói trên trong cuốn sách này, nhưng nên chắc chắn rằng đây lànhững môn học cần thiết và đầy hứng thú

Quản lý dữ liệu

Mục đích của cuốn sách này là trình bày chi tiết về hệ quản trị cơ sở dữ liệu, nhấn mạnh

về cách thức tổ chức thông tin trong DBMS, lưu trữ và truy cập dữ liệu hiệu quả, bao

gồm, cách thiết kế một cơ sở dữ liệu và sử dụng DBMS hiệu quả Quyết định sử dụng

DBMS nào cho một ứng dụng cụ thể phụ thuộc vào khả năng của DBMS, cân nhắc xem

nó có hỗ trợ ứng dụng này hiệu quả không Vì thế, để sử dụng tốt một DBMS nào đó,

thì chúng ta cần phải hiểu được DBMS đó làm việc như thế nào.

Có rất nhiều loại của hệ quản trị cơ sở dữ liệu, nhưng cuốn sách này tập trung vào hệ thống cơ sở dữ liệu quan hệ (RDBMSs), ngày nay hầu hết các DBMS hỗ trợ hệ thống

này Những câu hỏi sau được giải đáp trong cuốn sách này:

Trang 14

1 Thiết kế cơ sở dữ liệu và phát triển ứng dụng: Cách thức người sử dụng có

thể biểu diễn các hoạt động của thế giới thực (ví dụ, hoạt động của một trườngđại học) bằng những dữ liệu được lưu trữ trong DBMS? Những dữ liệu nàophải được xem xét và tổ chức lưu trữ như thế nào? Như thế nào để phát triểnứng dụng trên DBMS (Chương 2, 3, 6, 7, 19, 20 và 21)

2 Phân tích dữ liệu: Người sử dụng đưa ra yêu cầu với hệ thống như thế nào

thông qua các truy vấn trên dữ liệu đang được lưu trữ trong DBMS? (Chương

4, và 5)

Một chương trực tuyến về Query-by-Example (QBA) cũng có thể phù hợp

3 Điều khiển tương tranh và đảm bảo an toàn: Cách thức DBMS cho phép rất

nhiều người cùng truy cập tới một dữ liệu đồng thời và làm thế nào để bảo vệ

an toàn dữ liệu thậm chí khi hệ thống có sự cố (Chương 16, 17 và 18)

4 Hiệu suất: Làm cách nào DBMS có thể lưu trữ được tập dữ liệu lớn và đáp

ứng được yêu cầu về hiệu quả của dữ liệu (Chương 8, 9, 10, 11, 12, 13, và 14)

Những chương cuối trình bày về những chủ để mở rộng như hệ quản trị cơ sở dữ liệuphân tán và song song, kho dữ liệu và những truy vấn phức tạp cho việc hỗ trợ ra quyếtđịnh, khai phá dữ liệu, truy vấn thông tin và cơ sở dữ liệu, XML, cơ sở dữ liệu hướngđối tượng, quản lý dữ liệu không gian và DBMS hướng chức năng

Trong chương này, chúng ta giới thiệu về những vấn đề liệt kê ở trên Trong phần 2,chúng ta sẽ bắt đầu tìm hiểu tóm tắt về lịch sử và vai trò của hệ quản trị cơ sở dữ liệutrong những hệ thống thông tin hiện đại Sau đó, chúng ta chỉ ra lợi ích của việc lưu trữ

dữ liệu bằng DBMS thay vì lưu trữ bằng hệ thống file trong phần 3, và bàn về nhữnglợi ích của việc sử dụng DBMS để quản lý dữ liệu trong phần 4 Trong phần 5, chúng

ta sẽ xem xét dữ liệu được lưu trữ như thế nào trong DBMS Người sử dụng có lẽ nghĩrằng thông tin được lưu trữ dưới dạng các khái niệm mức cao như là các thực thể (đốitượng) trong một tổ chức và các mối liên kết giữa các đối tượng này Ngược lại, DBMSlưu trữ dữ liệu cụ thể ở dạng các bits Sự khác nhau giữa suy nghĩ của người sử dụng

với thực tế lưu trữ dữ liệu trong DBMS được giải quyết bằng cầu nối là một số các mức trừu tượng được DBMS hỗ trợ Bằng trực giác, người sử dụng có thể biểu diễn dữ liệu

ở mức cao và sau đó làm rõ ràng những biểu diễn này bằng cách thêm vào một số thôngtin và miêu tả cần thiết

Trong phần 6, chúng ta đề cập đến việc như thế nào người sử dụng có thể truy cập đếnnhững dữ liệu được lưu trữ trong DBMS và những yêu cầu về công nghệ để làm chocác truy vấn trở nên hiệu quả Phần 7 cung cấp tổng quan về cách thức DBMS hỗ trợnhững truy cập tương tranh và bảo vệ an toàn dữ liệu ngay cả khi hệ thống gặp sự cố.Sau đó, chúng ta biểu diễn sơ bộ kiến trúc bên trong của DBMS trong phần 8 và một sốđối tượng làm việc trên DBMS trong phần 9

Trang 15

Lịch sử phát triển

Từ những ngày đầu tiên có máy tính, lưu trữ và các thao tác dữ liệu đã trở thành nhữngmối quan tâm chính DBMS đầu tiên đã được Charles Bachman thiết kế vào những

năm 60 và gọi là Lưu trữ dữ liệu tích hợp Nó được xây dựng dựa trên mô hình mạng.

Bachman đã nhận được giải thưởng ACM's Turing (được đánh giá là giải Nobel trongngành khoa học máy tính) vào năm 1973 trong lĩnh vực cơ sở dữ liệu

Cuối những năm 60, IBM đã phát triển Hệ thống quản lý dữ liệu và được sử dụng đến

ngày nay trong nhiều ứng dụng chính IMS được xây dựng dựa trên mô hình gọi là mô hình phân cấp Hệ thống SABRE phục vụ cho hệ thống đặt vé máy bay được Hàng

không Mỹ và IBM phối hợp thực hiện và hệ thống này cho phép một số người có thểcùng truy cập vào một dữ liệu thông qua mạng máy tính Điều thú vị là ngày nay là hệthống SABRE vẫn được sử dụng trong các dịch vụ du lịch dựa trên nền Web như làTravelocity

Trong năm 1970, Edgar Codd, thuộc phòng nghiên cứu ở IBM's San Jose đã đưa ra một

mô hình biểu diễn dữ liệu mới gọi là mô hình dữ liệu quan hệ Phát minh này đã mở ra

một thời kỳ phát triển mới cho hệ thống cơ sở dữ liệu, những DBMS xây dựng dựa trên

mô hình này phát triển rất mạnh mẽ Codd đã đạt được giải Turing về nghiên cứu này.Những lợi ích của nghiên cứu này được nhận thức rộng rãi và sử dụng DBMSs cho quản

lý dữ liệu trở thành chuẩn mực

Trong những năm 80, mô hình quan hệ phát triển mạnh mẽ và hệ thống cơ sở dữ liệutiếp tục được ứng dụng rộng rãi Ngôn ngữ truy vấn dữ liệu (SQL) dùng cho cơ sở dữliệu quan hệ được dự án IBM's System R phát triển và ngày nay đã trở thành ngôn ngữtruy vấn dữ liệu chuẩn SQL được chuẩn hóa vào cuối những năm 80 và SQL-92 đượcphát triển bởi American National Standards Institute (ANSI) và International StandardsOrganization (ISO) đã thành ngôn ngữ chuẩn hiện nay Ngoài ra, người sử dụng có thể

viết các giao dịch thực hiện trên cơ sở dữ liệu James Gray đã đạt được giải thưởng

Turing năm 1999 về sự đóng góp của ông trong lĩnh vực quản lý giao dịch trên DBMS

Cuối những năm 80 và những năm 90, đã có rất nhiều tiến bộ trong nhiều lĩnh vực hệthống cơ sở dữ liệu Nhiều nghiên cứu đã đem đến sức mạnh cho ngôn ngữ truy vấn vàcác mô hình dữ liệu trở nên phong phú hơn, đã có những hỗ trợ đáng kể cho những phântích dữ liệu phức tạp Một số những hãng như IBM’s, DB2, Oracle, Informix

Gần đây Informix đã sáp nhập vào IBM

UDS đã mở rộng hệ thống của họ để có thể lưu trữ được những dữ liệu phức tạp hơnnhư hình ảnh, dữ liệu dạng văn bản và có thể thực hiện được nhiều loại truy vấn phức

tạp hơn Những hệ thống chuyên dụng đã được tạo ra để có thể làm kho dữ liệu, hợp

nhất giữa một số cơ sở dữ liệu khác nhau và tạo ra những phân tích dữ liệu đặc biệt

Trang 16

Điều đặc biệt là sự nổi lên của một số gói ứng dụng như Enterprise resource planning(ERP) và Management resource planning (MRP), đã có tác dụng đáng kể trong việcnâng cao khả năng của lớp trên cùng của DBMS - chính là lớp hướng ứng dụng(application-oriented) Những gói ứng dụng được sử dụng rộng rãi đến từ các hãngBaan, Oracle, PeopleSoft, SAP, và Siebel Những gói này cung cấp một số các chứcnăng như: quản lý các đánh giá, lập kế hoạch, phân tích tài chính…Dữ liệu được lưu trữtrong cơ sở dữ liệu quan hệ và lớp ứng dụng có thể được xây dựng để hỗ trợ từng yêucầu khác nhau của các công ty.

Một lợi ích lớn lao nữa chính là DBMSs đã ra nhập hệ thống Internet Trong khi thế hệđầu tiên của các Websites chỉ có thể lưu trữ dữ liệu dưới dạng hệ thống file, thì việc sửdụng cơ sở dữ liệu để lưu trữ dữ liệu và sau đó truy cập đến dữ liệu thông qua các trìnhduyệt Web đã trở nên vô cùng phổ biến Các truy vấn được đưa vào thông qua các trìnhduyệt Web và sau đó kết quả được định dạng và trả về sử dụng ngôn ngữ đánh dấu nhưHTML để dễ dàng hiển thị lên các trình duyệt Tất cả các nhà phát triển cơ sở dữ liệuthêm các tính năng khác vào hệ quản trị cơ sở dữ liệu để nó có thể ứng dụng hiệu quảtrên Internet

Hệ quản trị cơ sở dữ liệu tiếp tục thể hiện vai trò của mình khi ngày càng nhiều giaodịch được thực hiện trực tuyến và những truy cập được thực hiện thông qua mạng máytính Ngày nay, các tiện ích của cơ sở dữ liệu đa phương tiện, thư viện số, các kho dữliệu khoa học, thương mại điện tử … đã làm thay đổi cuộc sống của con người

So sánh giữa lưu trữ bằng hệ thống file cổ điển với DBMS

Để hiểu được sự cần thiết của DBMS, chúng ta cùng nhau xem xét ví dụ sau: Một công

ty có một tập hợp dữ liệu lớn (khoảng 500GB

Một kilobyte (KB) bằng 1024 bytes, một megabyte (MB) bằng 1024 KBs, một

gigabyte (GB) bằng 1024 MBs, một terabyte (TB) bằng 1024 GBs, và một petabyte(PB) bằng 1024 terabytes

) để lưu thông tin về nhân viên, các phòng, sản phẩm, doanh số bán hàng v.v…Những

dữ liệu này có thể được một số nhân viên truy cập vào đồng thời Những yêu cầu (câuhỏi) về dữ liệu phải được đáp ứng nhanh chóng, những thay đổi trên dữ liệu được thựchiện bằng những người dùng khác nhau phải được cập nhật một cách nhất quán, vàphải có giới hạn truy cập đến các phần dữ liệu khác nhau đối với từng đối tượng ngườidùng khác nhau

Chúng ta có thể giải quyết các vấn đề về quản lý dữ liệu bằng việc lưu trữ dữ liệu trên

hệ thống file riêng rẽ Tuy nhiên, cách tiếp cận này gặp một số khó khăn, bao gồm:

Trang 17

• Có lẽ chúng ta không có bộ nhớ trong nào đủ 500GB để lưu trữ tất cả dữ liệu.

Vì thế, chúng ta phải lưu trữ dữ liệu này thông qua các thiết bị lưu trữ như đĩa,băng từ và sau đó chuyển từng phần vào bộ nhớ trong để xử lý khi cần thiết

• Thậm chí, nếu chúng ta có một bộ nhớ trong có dung lượng 500GB trên hệthống máy tính 32-bits, chúng ta cũng không thể tham chiếu trực tiếp đến nhiềuhơn 4GB dữ liệu! Chúng ta phải lập trình một vài phương pháp để có thể định

vị được tất cả dữ liệu

• Chúng ta phải viết các chương trình đặc biệt để trả lời từng câu hỏi của người

sử dụng đối với dữ liệu Những chương trình này rất phức tạp vì không giantìm kiếm quá lớn

• Chúng ta phải bảo đảm sự đúng đắn của dữ liệu đối với những thay đổi khôngnhất quán của nhiều người sử dụng đồng thời tác động lên dữ liệu Nếu nhữngchương trình được viết cho phép truy cập đồng thời thì nó thực sự rất phức tạp

• Chúng ta phải đảm bảo rằng dữ liệu được lưu trữ phải có tính chất nhất quánnếu như hệ thống gặp trục trặc trong khi đang thực hiện một phiên giao dịch có

sự thay đổi dữ liệu

• Hệ điều hành chỉ cung cấp duy nhất một mật khẩu cho máy tính để đảm bảo antoàn Điều này không đủ khả năng để cung cấp quyền cho các đối tượng ngườidùng khác nhau để họ chỉ được phép thực hiện trên các vùng dữ liệu nào đó của

cơ sở dữ liệu

DBMS là tập hợp các phần mềm được thiết kế để có thể thực hiện các công việc nói trênmột cách dễ dàng Bằng việc lưu trữ dữ liệu trên DBMS thay vì việc lưu trữ vào các fileriêng rẽ, chúng ta có thể sử dụng các chức năng của DBMS để quản lý dữ liệu dễ dàng.Với dung lượng dữ liệu khổng lồ và số lượng rất lớn những người sử dụng đồng thời,những tính năng mà DBMS hỗ trợ đã trở nên vô cùng quan trọng và không thể thiếu

Những lợi ích của DBMS

Sử dụng DBMS để quản lý dữ liệu có rất nhiều lợi ích:

• Độc lập dữ liệu: Những chương trình ứng dụng nên được độc lập tối đa có thể

đối với việc biểu diễn và lưu trữ dữ liệu DBMS có thể cung cấp các khungnhìn trừu tượng trên dữ liệu cách ly với lưu trữ vật lý của dữ liệu

• Truy cập dữ liệu hiệu quả: Hàng loạt những tính năng của DBMS có thể giúp

lưu trữ và truy cập cơ sở dữ liệu hiệu quả Những tính năng này đặc biệt quantrọng nếu dữ liệu được lưu trữ trên các thiết bị lưu trữ ngoài

• Toàn vẹn và an toàn dữ liệu: Nếu dữ liệu luôn luôn được truy cập thông qua

DBMS, thì DBMS có thể thiết đặt các ràng buộc toàn vẹn trên dữ liệu Ví dụ,trước khi thêm thông tin về lương của một nhân viên, DBMS có thể kiểm tra sốlương đó không vượt quá số tiền hiện có của phòng Hoặc, DBMS có thể thiếtđặt các quyền truy cập để giới hạn các đối tượng người dùng khác nhau đối vớicác phần bên trong cơ sở dữ liệu

Trang 18

• Quản trị dữ liệu: Khi một vài người dùng chia sẻ dữ liệu, người quản trị hệ

thống có thể đưa ra những đề xuất mang lại hiệu quả đáng kể Những chuyêngia có kinh nghiệm hiểu rõ dữ liệu đang được quản lý như thế nào và nhữngnhóm người sử dụng nào có thể sử dụng từng phần trong cơ sở dữ liệu, từ đó họ

có thể đưa ra được cách thức tổ chức dữ liệu để giảm được tối đa dư thừa vàtruy cập trở nên hiệu quả

• Truy cập đồng thời và khôi phục dữ liệu: DBMS lập lịch cho việc truy cập

đồng thời đến dữ liệu để người sử dụng có cảm giác rằng chỉ có một ngườiđang sử dụng dữ liệu trong một khoảng thời gian Thêm vào đó, DBMS bảo vệngười sử dụng tránh những ảnh hưởng khi hệ thống gặp sự cố

• Giảm thời gian phát triển ứng dụng: DBMS hỗ trợ rất nhiều các tính năng

quan trọng được sử dụng trong rất nhiều các ứng dụng truy cập tới dữ liệu đượclưu trữ trong DBMS Thông qua lược đồ mức cao (high-level interface), nhữngứng dụng được phát triển nhanh chóng và dễ dàng hơn vì rất nhiều những côngviệc đã được DBMS hỗ trợ thay vì bạn phải xây dựng trong chương trình ứngdụng

Với những lợi ích nêu trên thì có lý do nào để chúng ta không sử dụng DBMS? DBMS

là sự kết hợp của những gói phần mềm phức tạp, được tối ưu cho những kiểu công việc

có sự kế thừa, chồng lên nhau, và nó không thích hợp với những ứng dụng quá hẹp Ví

dụ những ứng dụng có ít ràng buộc hoặc chỉ có một vài các phép toán phải thực hiện Lý

do khác để không sử dụng DBMS là với những ứng dụng không cần có ngôn ngữ truyvấn hỗ trợ Trong trường hợp này, lưu trữ dữ liệu một cách trừu tượng hóa như trongDBMS là không phù hợp và nó không tận dụng được những tính năng của DBMS như:thực hiện truy vấn phức tạp, bảo mật, điều khiển tương tranh, tự động khôi phục khi có

sự cố

Biểu diễn và lưu trữ dữ liệu trong DBMS

Người sử dụng của DBMS chỉ tập trung vào biểu diễn thế giới thực và các ràng buộctrong đó Ví dụ, có các đối tượng Sinh viên, Khoa, và các Khóa học khi cần mô tả vềtrường đại học, và dữ liệu trong cơ sở dữ liệu về trường đại học này được biểu diễn dướidạng thực thể và các mối quan hệ giữa các thực thể

Mô hình dữ liệu là tập hợp những cấu trúc biểu diễn dữ liệu ở mức cao, nó đã ẩn đi

phần chi tiết dữ liệu được lưu trữ ở mức thấp như thế nào DBMS cho phép người sửdụng được định nghĩa dữ liệu lưu trữ trong các phần của mô hình dữ liệu Hầu hết các

DBMS hiện nay dựa trên mô hình dữ liệu quan hệ- mô hình được tập trung trình bày

trong cuốn sách này

Mô hình dữ liệu của DBMS ẩn đi rất nhiều các chi tiết về cách thức lưu trữ bên trong

của hệ thống để nó trở nên dễ dàng hơn đối với người sử dụng Mô hình dữ liệu mức

Trang 19

ngữ nghĩa là mô hình dữ liệu mức cao, trừu tượng, dễ dàng để người sử dụng tiếp cận

và biểu diễn dữ liệu của ứng dụng

Note: Ví dụ một thiết kế không tốt: Lược đồ quan hệ của thực thể Students sau đây

chứng tỏ một thiết kế không tốt; bạn không nên tạo ra trường age, vì giá trị của trường này thay đổi theo thời gian Tốt hơn, thay vì trường age sẽ là trường DOB (Date of

Birth); bởi vì trường luôn có giá trị cố định và trường age cũng có thể suy ra từ trường

này Trong những ví dụ của cuốn sách này, ta vẫn sử dụng trường age để chúng ta dễ đọc.

Mô hình dữ liệu mức ngữ nghĩa được sử dụng rộng rãi nhất ngày nay là mô hình quan

hệ -thực thể (còn gọi là mô hình ER), cho phép ta biểu diễn thế giới thực dưới dạng cácthực thể và mối liên kết giữa các thực thể đó Chúng ta sẽ nghiên cứu sâu hơn về môhình này trong chương 2

Mô hình quan hệ

Trong phần này chúng ta sẽ tìm hiểu tóm tắt về mô hình quan hệ Cấu trúc để biểu diễn

dữ liệu trong mô hình này ở dạng quan hệ, có thể hiểu là tập hợp của các bản ghi

Biểu diễn cấu trúc trong mô hình dữ liệu được gọi là lược đồ Trong mô hình quan hệ,lược đồ của một quan hệ được xác định bằng tên của lược đồ và tên của các trường - còngọi là các cột hoặc các thuộc tính Ví dụ, thông tin về sinh viên trong cơ sở dữ liệu củatrường đại học có thể được lưu trữ trong quan hệ, được biểu diễn ở dạng lược đồ nhưsau:

Students(sid: string, name: string, login: string, age:integer, gpa: real)

Lược đồ trên chỉ ra rằng mỗi một bản ghi trong quan hệ Students có năm trường, cùngvới tên của trường và kiểu dữ liệu của trường đó

Một thể hiện dữ liệu của quan hệ Students được chỉ ra trong Hình 1

Một thể hiện của quan hệ Students

Trang 20

Mỗi một dòng trong quan hệ Students là một bản ghi, biểu diễn chi tiết về một sinh viên

cụ thể Biểu diễn này không phải là toàn bộ thông tin về một đối tượng nào đó- ví dụ,thông tin về chiều cao của sinh viên không được chỉ ra vì nó không quan trọng trong cơ

sở dữ liệu của một trường đại học Mỗi lược đồ chỉ ra cấu trúc của quan hệ, vì thế nó cóthể được xem như một khuôn dạng để biểu diễn quan hệ

Chúng ta có thể xác định các ràng buộc toàn vẹn trên thông tin về các sinh viên, đó

là những điều kiện mà các bản ghi trong quan hệ phải tuân theo Ví dụ, chúng ta có thể

xác định mỗi sinh viên phải có một sid duy nhất Quan sát thấy rằng, chúng ta không thể

biểu diễn những ràng buộc này thông qua lược đồ Students Vì thế, chúng ta phải chỉ racác ràng buộc trên từng trường dữ liệu khi biểu diễn dữ liệu thông qua DBMS Việc chỉ

ra các ràng buộc về toàn vẹn dữ liệu rất quan trọng trong khi xây dựng mô hình dữ liệu.Những mô hình dữ liệu khác:

Ngoài mô hình dữ liệu quan hệ (mô hình được sử dụng trong rất nhiều hệ thống (baogồm IBM's DB2, Informix, Oracle, Sybase, Microsoft's Access, FoxBase, Paradox,Tandem, và Teradata), những mô hình dữ liệu quan trọng khác như mô hình phân cấp(ví dụ, mô hình sử dụng trong IBM's IMS DBMS), mô hình mạng (ví dụ, mô hình sửdụng trong IDS và IDMS), mô hình hướng đối tượng (ví dụ, mô hình sử dụng trongObjectstore và Versant), và mô hình quan hệ - hướng đối tượng (ví dụ, mô hình sửdụng trong các sản phẩm của DBMS từ các hãng IBM, Informix, ObjectStore, Oracle,Versant, và một số hãng khác) Mặc dù có một số hệ thống cơ sở dữ liệu vẫn đang sửdụng mô hình dữ liệu mạng và phân cấp, một số hệ thống khác sử dụng mô hình hướngđối tượng và mô hình quan hệ hướng đối tượng, nhưng mô hình phổ biến nhất hiện nayvẫn là mô hình quan hệ

Trong cuốn sách này, chúng ta tập trung tìm hiểu về mô hình quan hệ bởi vì nó đượcứng dụng rộng rãi Thực tế, mô hình quan hệ - hướng đối tượng, cũng bắt đầu trở nênphổ biến vì nó kết hợp đặc trưng giữa mô hình quan hệ và mô hình hướng đối tượng,nắm chắc về mô hình quan hệ là thực sự cần thiết để bạn có thể tìm hiểu tiếp về mô hìnhhướng đối tượng (Chúng ta sẽ bàn đến mô hình hướng đối tượng và mô hình quan hệ -hướng đối tượng ở Chương 23.)

Các mức trừu tượng trong DBMS

Dữ liệu trong DBMS được biểu diễn ở ba mức trừu tượng, minh họa trong hình 5 Ba

mức trừu tượng này được biểu diễn trong các lược đồ: lược đồ khái niệm, lược đồ vật lý

và lược đồ ngoài.

Ngôn ngữ định nghĩa dữ liệu (DDL) được sử dụng để định nghĩa lược đồ ngoài và

lược đồ khái niệm Chúng ta sẽ bàn tới ngôn ngữ DDL trong chương 3, phần trình bày

Trang 21

các nhà sản xuất DBMS hiện nay đều hỗ trợ những lệnh SQL để biểu diễn những khíacạnh của lược đồ vật lý, nhưng những lệnh này không nằm trong ngôn ngữ SQL chuẩn.

Thông tin về lược đồ khái niệm, lược đồ trong, lược đồ vật lý được lưu trữ trong Danh mục hệ thống (Phần 12.1) Chúng ta sẽ bàn về ba mức trừu tượng trong phần này.

Các mức trừu tượng trong DBMS

Lược đồ khái niệm - Conceptual Schema

Lược đồ khái niệm (còn được gọi là Lược đồ logic) biểu diễn cấu trúc và các ràng buộc

trong toàn bộ cơ sở dữ liệu phục vụ cho việc giao tiếp với người dùng Lược đồ kháiniệm ẩn đi cách thức tổ chức vật lý của dữ liệu, chỉ tập trung vào việc biểu diễn các thựcthể, các kiểu dữ liệu, mối quan hệ giữa các thực thể, các thao tác của người sử dụng vàcác ràng buộc giữa các dữ liệu

Trong hệ quản trị cơ sở dữ liệu quan hệ, lược đồ khái niệm chỉ ra tất cả các quan hệđược lưu trữ trong cơ sở dữ liệu Trong cơ sở dữ liệu về trường đại học, các quan hệ cóthể chứa đựng thông tin về các đối tượng như sinh viên, khoa, các khóa học và các mốiquan hệ giữa các đối tượng này Tất cả các sinh viên được biểu diễn trong các bản ghicủa quan hệ sinh viên và chúng ta dễ dàng nhìn thấy chúng Chúng ta thường biểu diễnquan hệ thông qua lược đồ khái niệm như sau:

Students(sid: string, name: string, login: string, age:integer, gpa: real) Faculty(fid: string, fname: string,sal: real) Courses(cid: string, cname: string, credits:integer) Rooms(rno: integer, address: string, capacity:integer) Enrolled(sid: string, cid: string, grade: string)Teaches(fid: string, cid: string) Meets_In(cid: string,rno: integer, time: string)

Trang 22

Lựa chọn các quan hệ, và các trường trong các quan hệ đó không phải dễ dàng và thống

nhất Quá trình lựa chọn này được gọi là thiết kế cơ sở dữ liệu khái niệm Chúng ta sẽ

bàn đến nội dung này trong Chương 2 và 19

Lược đồ vật lý - Physical Schema

Lược đồ vật lý chỉ ra cách lưu trữ dữ liệu chi tiết Về cơ bản, lược đồ vật lý chỉ ra cách

thức dữ liệu được lưu trữ trong các thiết bị lưu trữ thứ cấp như đĩa và băng từ

Chúng ta phải quyết định những cách thức tổ chức tệp tin nào được sử dụng để lưu trữ

các quan hệ và tạo ra những cấu trúc dữ liệu bổ trợ gọi là các chỉ số để tăng tốc độ của

các phép toán truy cập dữ liệu Ví dụ về lược đồ vật lý của cơ sở dữ liệu University nhưsau:

• Lưu trữ tất cả các quan hệ bằng những tệp tin không được sắp xếp của các bản

ghi (Một tệp tin trong DBMS là tập hợp những bản ghi hoặc tập hợp các trang,tốt hơn là một xâu của các ký tự như trong hệ điều hành.)

• Tạo các chỉ số trên cột đầu tiên của các quan hệ Students, Faculty, và Courses,

cột Sal của Faculty, và cột Capacity của quan hệ Rooms.

Những quyết định về lược đồ vật lý dựa trên những hiểu biết về cách thức dữ liệu được

truy cập thế nào Quá trình đi đến một lược đồ vật lý tốt được gọi là thiết kế cơ sở dữ liệu vật lý Chúng ta sẽ bàn đến nội dung này trong Chương 16.

Lược đồ ngoài - External Schema

Lược đồ ngoài cũng là một trong những thành phần trong mô hình dữ liệu của DBMS,

cho phép truy cập tới dữ liệu ở các mức khác nhau mà người sử dụng được phép Mỗi

cơ sở dữ liệu có chính xác một lược đồ vật lý và một lược đồ khái niệm vì nó chỉ lưu trữmột tập hợp các quan hệ, nhưng nó lại có thể có nhiều lược đồ mức ngoài để thích hợpcho nhiều đối tượng người sử dụng khác nhau Một lược đồ ngoài có thể có nhiều khungnhìn và các quan hệ có từ lược đồ khái niệm Một khung nhìn có thể được hiểu là mộtquan hệ, nhưng những bản ghi của khung nhìn không được lưu trữ trong DBMS Khungnhìn được người sử dụng định nghĩa và kết quả của nó được lấy ra từ các quan hệ trong

cơ sở dữ liệu (kết quả của khung nhìn có thể là dữ liệu của một hoặc nhiều quan hệ).Chúng ta sẽ bàn kỹ về khung nhìn trong Chương 3 và 25

Thiết kế lược đồ ngoài dựa trên những yêu cầu của người dùng cuối Ví dụ, chúng tamuốn cho sinh viên xem thông tin về các khóa học, gồm có mã số của khóa học, tênkhoa dạy khóa học đó, và số lượng những đăng ký tham gia khóa học, chúng ta sẽ địnhnghĩa một khung nhìn như sau:

Trang 23

Courseinfo(cid: string, fname: string, enrollment:

integer)

Người dùng coi những khung nhìn giống như những quan hệ và yêu cầu xem những bảnghi trong khung nhìn Mặc dù, những bản ghi trong khung nhìn không được lưu trữ rõràng, chúng chỉ được tính toán khi cần thiết Chúng ta không chỉ ra Courseinfo tronglược đồ khái niệm vì nó có thể được tính ra từ những quan hệ trong lược đồ khái niệm,

và việc lưu trữ nó sẽ làm dư thừa thông tin Dư thừa thông tin thì sẽ có khả năng sẽdẫn tới dữ liệu không nhất quán Ví dụ, một bộ dữ liệu có thể được thêm vào quan hệEnrolled, chỉ ra rằng một sinh viên đã tham gia vào một vài khóa học nào đó, trong khigiá trị trường Enrollment của lược đồ Courseinfo không tăng lên tương ứng

Độc lập dữ liệu

Một lợi ích rất quan trọng được sử dụng trong DBMS là khả năng độc lập dữ liệu Đó

là, những chương trình ứng dụng được cách ly với những thay đổi về cấu trúc và cáchlưu trữ dữ liệu Độc lập dữ liệu đạt được thông qua việc sử dụng ba mức trừu tượng dữliệu; cụ thể, lược đồ khái niệm và lược đồ ngoài cung cấp lợi ích này

Những quan hệ trong lược đồ ngoài được sinh ra dựa trên những quan hệ tương ứngtrong lược đồ khái niệm

Trong thực tế, chúng có thể được tính trước và lưu trữ để tăng tốc độ truy vấn trênkhung nhìn, nhưng những khung nhìn này phải được cập nhật ngay khi các quan hệphía dưới được cập nhật

Nếu dữ liệu bên dưới được tổ chức lại thì lược đồ khái niệm sẽ phải thay đổi, và chỉcác định nghĩa của các quan hệ khung nhìn có thể phải thay đổi tương ứng Ví dụ, giả

sử rằng quan hệ Faculty trong cơ sở dữ liệu University được thay thế bằng hai quan hệsau:

Faculty_public(fid: string, fname: string, office:

integer) Faculty_public(fid: string, sal: real)

Bằng trực giác, một vài thông tin bí mật về khoa đã được lưu trong một quan hệ riêng

và trường office đã được thêm vào Khung nhìn Courseinfo có thể được định nghĩa lại

dựa trên hai quan hệ Faculty_public và Faculty_private, những quan hệ cùng nhau chứathông tin về Faculty, vì thế những người sử dụng truy vấn thông tin trong Courseinfo sẽthu được kết quả không thay đổi với trước

Như vậy, người sử dụng có thể được bảo vệ từ những thay đổi trong cấu trúc logic của

dữ liệu, hoặc những thay đổi trong việc lựa chọn những quan hệ nào được lưu trữ Tính

chất này được gọi là độc lập dữ liệu logic.

Trang 24

Quay trở lại, lược đồ khái niệm bảo vệ người dùng từ những thay đổi trong lưu trữ vật

lý của dữ liệu Đặc trưng này được đề cập như là độc lập dữ liệu vật lý Lược đồ khái

niệm ẩn đi những chi tiết như dữ liệu được lưu trữ thực sự như thế nào trên đĩa, cấu trúctệp tin, các lựa chọn chỉ số Vì thế, chúng ta có thể thay đổi việc lưu trữ chi tiết của dữliệu mà không cần thay đổi chương trình ứng dụng (Tất nhiên, việc thực hiện thì vẫn cóthể ảnh hưởng từ những thay đổi này)

Truy vấn trong DBMS

Người sử dụng thường có nhiều những yêu cầu khác nhau về dữ liệu đối với cơ sở dữliệu Ngược lại với những hệ thống thông tin cũ, hệ cơ sở dữ liệu quan hệ cho phép dễdàng truy cập đến thông tin trong cơ sở dữ liệu, tính năng này khiến cho hệ thống trởnên thân thiện với người sử dụng hơn Xem xét ví dụ cơ sở dữ liệu về một trường đạihọc trong phần 5.2, sau đây là một số các yêu cầu đối với cơ sở dữ liệu mà người sửdụng thường đặt ra

1 Tên của sinh viên có mã là 123456?

2 Lương trung bình của các giáo viên dạy cho khóa học CS546?

3 Bao nhiêu sinh viên đã đăng ký khóa học CS564?

4 Tỷ lệ sinh viên tham gia khóa học CS564 có một điểm từ B trở lên?

5 Có sinh viên nào có điểm trung bình chung nhỏ hơn 3 tham gia khóa học

CS564?

Những yêu cầu trên cần phải truy xuất thông tin từ DBMS và được gọi là các truy vấn DBMS cung cấp một ngôn ngữ đặc biệt là ngôn ngữ truy vấn Tính năng nổi trội của

mô hình quan hệ là nó hỗ trợ rất mạnh mẽ ngôn ngữ truy vấn Phép toán quan hệ là

ngôn ngữ truy vấn chuẩn dựa trên các phép toán logic, và truy vấn viết bằng ngôn ngữ

này rất trực quan và rõ ràng Đại số quan hệ là ngôn ngữ truy vấn chuẩn khác dựa trên tập hợp các phép toán trên quan hệ.

DBMS rất quan tâm đến việc đánh giá hiệu quả của các truy vấn Chúng ta sẽ bàn đếntối ưu hóa truy vấn và đánh giá trong chương 12, 14 và 15 Tất nhiên, hiệu quả của việcđánh giá truy vấn nhằm mục đích xác định cách thức lưu trữ vật lý của dữ liệu như thếnào Việc đánh chỉ số có thể được sử dụng để làm tăng tốc độ của câu lệnh truy vấn.Chúng ta sẽ bàn đến cách lưu trữ dữ liệu và đánh chỉ số trong chương 8, 9, 10 và 11

DBMS cho phép người sử dụng tạo, sửa, và truy vấn dữ liệu thông qua ngôn ngữ thực thi dữ liệu (DML) Vì thế, ngôn ngữ truy vấn-cung cấp các câu lệnh thêm, xóa và sửa

dữ liệu-chỉ là một phần của DML Chúng ta sẽ bàn đến các tính năng của DML trongchương 5 DML và DDL có thể được nhúng trong các ngôn ngữ lập trình như C hoặcCOBOL

Trang 25

Quản lý giao dịch

Xem xét cơ sở dữ liệu lưu trữ thông tin về đặt chỗ vé máy bay Trong nhiều trường hợp,tại cùng một thời điểm, có nhiều đại lý cùng truy cập tới hệ thống để đặt chỗ trên máybay Ví dụ, như họ cùng muốn đặt một chỗ nào đó trên cùng một chuyến bay Lúc đó,

hệ thống phải đảm bảo được thứ tự thực hiện các yêu cầu để tránh xung đột

Một ví dụ khác về nhiều người dùng đồng thời sử dụng hệ thống là cơ sở dữ liệu củangân hàng Trong khi một chương trình ứng dụng đang tính toán tổng số khoản tiền gửicủa một tài khoản, thì một ứng dụng khác lại đang thực hiện chuyển tiền vào tài khoảnnày Nếu hai giao dịch này diễn ra đồng thời thì kết quả của hai giao dịch trên khôngđồng nhất Vì thế, những giao dịch dị thường như thế không được phép xảy ra

Thêm vào đó, DBMS phải bảo vệ người dùng tránh những ảnh hưởng khi hệ thống xảy

ra sự cố, đảm bảo rằng tất cả dữ liệu và các trạng thái của ứng dụng phải được khôi phụcnhất quán khi hệ thống khởi động lại Ví dụ, nếu đại lý bán vé máy bay yêu cầu đượcđặt chỗ và DBMS phản hồi lại là đã chấp nhận thì yêu cầu đó chắc chắn phải được thựchiện dù hệ thống có gặp sự cố Và, nếu như DBMS chưa phản hồi lại yêu cầu của đại

lý bán vé, thì những thay đổi thành phần đã thực hiện trước khi hệ thống gặp sự cố phảiđược khôi phục lại, tức là hệ thống phải khôi phục lại như chưa từng có yêu cầu thựchiện giao dịch đó để đảm bảo tính đúng đắn của dữ liệu

Giao dịch là bất kỳ một thực hiện nào của người dùng trong DBMS (Thực hiện cùng

một chương trình nhiều lần sẽ đưa ra nhiều giao dịch) Đây là một đơn vị cơ sở (basicunit) của thay đổi được thực hiện trong DBMS: Những giao dịch chưa hoàn thành (mộtphần của giao dịch) sẽ không được phép, có nghĩa là một giao dịch thành công nếu tất cảcác lệnh trong giao dịch đó được thực hiện thành công và ngược lại, giao dịch sẽ thất bạinếu một trong số những lệnh trong giao dịch đó thất bại Chúng tôi sẽ trình bày tóm tắtnhư thế nào để đảm bảo được những tính chất này, phần chi tiết sẽ được bàn đến trongnhững chương sau

Thực hiện đồng thời của các giao dịch

Một công việc quan trọng của DBMS là lập lịch trình cho những truy cập đồng thời tới

dữ liệu để người dùng được đảm bảo an toàn, mặc dù thực tế rằng nhiều người khác cóthể đang cùng truy cập tới dữ liệu đó Sự quan trọng của việc này không thể được xemnhẹ vì cơ sở dữ liệu được chia sẻ cho một số lượng lớn người sử dụng, họ gửi yêu cầutới DBMS một cách độc lập DBMS cho phép người sử dụng nghĩ về những chươngtrình của họ như thể nó đang được thực hiện độc lập, chương trình này sau chương trìnhkia theo thứ tự được DBMS sắp xếp Ví dụ, có một chương trình chuyển tiền vào mộttài khoản diễn ra đồng thời với một chương trình ghi nợ của chính tài khoản này, cả haichương trình có thể được DBMS thực hiện, và thứ tự của chúng sẽ phải được đảm bảo

để không xảy ra sai sót dữ liệu

Trang 26

Giao thức khóa là tập các quy tắc theo sau mỗi giao dịch để đảm bảo rằng trong khi

một giao dịch đang thực hiện, những thao tác của một số giao dịch khác có thể được xenvào, nhưng kết quả cuối cùng vẫn phải tương đương với việc các giao dịch này đượcthực hiện theo một thứ tự Khóa là một cơ chế được sử dụng để điều khiển việc truy cập

tới các đối tượng cơ sở dữ liệu Hai loại của khóa được DBMS hỗ trợ: khóa chia sẻ trên một đối tượng cho phép hai giao dịch tại cùng một thời điểm, nhưng khóa độc quyền

trên một đối tượng sẽ đảm bảo rằng không có bất kỳ một giao dịch nào khác được nắmkhóa trên đối tượng này

Giả sử rằng có giao thức khóa: Tất cả các giao dịch bắt đầu bằng việc nắm giữ khóa chia sẻ trên mỗi đối tượng dữ liệu nếu nó thực hiện thao tác đọc, và nắm giữa khóa độc quyền khi nó cần sửa dữ liệu và sau đó giải phóng tất cả các khóa khi nó hoàn thành tất

cả các công việc Xem xét hai giao dịch T1 và T2, T1 muốn sửa một đối tượng dữ liệu

và T2 muốn đọc trên chính đối tượng dữ liệu này Như vậy, nếu T1 có khóa độc quyền

sẽ được thực hiện trước, T2 không thể được thực hiện cho đến khi T1 giải phóng khóa.Với thứ tự này, tất cả các yêu cầu của T1 sẽ phải được hoàn thành trước khi T2 bắt đầu.Chúng ta sẽ đề cập chi tiết đến khóa trong chương 16 và 17

Những giao dịch không hoàn thành và sự cố hệ thống

Giao dịch có thể bị ngắt trước khi hoàn thành do xảy ra sự cố DBMS phải đảm bảo rằngnhững thay đổi đã hoàn thành từ khi bắt đầu giao dịch đến khi bị ngắt phải được loại bỏ

ra khỏi cơ sở dữ liệu Ví dụ, nếu DBMS đang thực hiện chuyển tiền từ tài khoản A sangtài khoản B, và hệ thống gặp sự cố khi tài khoản A đã bị trừ tiền, tài khoản B chưa kịpcộng tiền Lúc này, giao dịch bị ngắt phải thực hiện khôi phục lại tình trạng như trướckhi nó thực hiện Để làm được điều này, DBMS duy trì một lịch sử (log) đối với tất cảcác hoạt động ghi lên cơ sở dữ liệu Đặc tính chủ yếu của log là tất cả các hoạt động ghiphải được lưu lại trên log (nằm trên đĩa) trước khi nó thực hiện trên cơ sở dữ liệu Vìnếu không làm như vậy, DBMS sẽ không thể khôi phục lại những thay đổi đã thực hiện

Đặc tính này được gọi là Write-Ahead Log hoặc WAL Để đảm bảo được đặc tính này,

DBMS phải có khả năng cưỡng chế một trang nào đó của bộ nhớ phải ghi lên đĩa

Log cũng được sử dụng để chắc chắn rằng những thay đổi được thực hiện bằng các giaodịch thành công sẽ không bị mất do hệ thống gặp sự cố, được giải thích rõ hơn trongchương 18 Việc mang đến cho cơ sở dữ liệu trạng thái ổn định sau khi sự cố xảy ra cóthể mất nhiều thời gian, vì DBMS phải chắc chắn rằng những ảnh hưởng của tất cả cácgiao dịch đã thành công phải được lưu trữ lại và tất cả các giao dịch chưa hoàn thànhphải được khôi phục lại trạng thái như trước khi nó bắt đầu Có thể giảm thời gian khôiphục lại bằng cách xác nhận định kỳ một số thông tin trên đĩa, thao tác thực hiện định

kỳ này được gọi là checkpoint.

Trang 27

Các điểm cần lưu ý

Cuối cùng, có ba điểm cần ghi nhớ đối với một DBMS hỗ trợ điều khiển tương tranh vàkhôi phục hệ thống:

1 Giao dịch đọc một đối tượng nào đó của cơ sở dữ liệu theo chế độ khóa chia sẻ

và ghi theo chế độ khóa độc quyền Đặt khóa trên đối tượng giúp giới hạnnhững khả năng của nó với những giao dịch khác, ảnh hưởng đến việc thựchiện

2 Để duy trì hiệu quả của log, DBMS phải được lựa chọn hiệu quả tập các trangtrong bộ nhớ chính trên đĩa Hệ điều hành hỗ trợ chức năng này không phải lúcnào cũng đáp ứng được

3 Checkpoint định kỳ có thể giảm thời gian khôi phục hệ thống khi có sự cố Tấtnhiên, điều này phải được cân đối để tránh ảnh hưởng của checkpoint quá nhiềulàm giảm tốc độ thực hiện các yêu cầu bình thường

Kiến trúc của một DBMS

Hình 3 chỉ ra kiến trúc của một DBMS tiêu biểu dựa trên mô hình dữ liệu quan hệ

DBMS nhận những câu lệnh SQL từ các giao diện người dùng, lập kế hoạch thực hiệntruy vấn, thực hiện những truy vấn này trên cơ sở dữ liệu và trả lại kết quả (Câu lệnhSQL có thể được nhúng trong các ngôn ngữ lập trình, ví dụ, Java hoặc COBOL Chúng

ta bỏ qua những vấn đề này để tập trung vào các chức năng chính của DBMS)

Khi người sử dụng yêu cầu một truy vấn, cú pháp truy vấn được xem xét trong bộ tối

ưu hóa truy vấn, bộ tối ưu hóa này sẽ dựa vào những dữ liệu đang được lưu trữ và cách thức lưu trữ chúng để lên kế hoạch thực hiện truy vấn sao cho hiệu quả Kế hoạch thực

hiện truy vấn là một tập các bước thực hiện được biểu diễn thành các phép toán quan hệdưới dạng hình cây Chúng ta sẽ bàn tới tối ưu hóa truy vấn trong chương 12 và chương

15 Thực hiện của các phép toán khác được trình bày trong chương 12 và 14

Phần mã chương trình thực thi các phép toán quan hệ được đặt phía trên của lớp files and access methods Lớp này bao gồm hàng loạt các phần mềm hỗ trợ khái niệm của

tệp tin, trong DBMS là tập hợp các trang hoặc các bản ghi Lớp này hỗ trợ các file vun đống, còn gọi là file chứa các trang không được sắp thứ tự, và các chỉ số Thêm vào đó,

để nắm được vị trí của các trang trong tệp tin, lớp này lưu trữ những thông tin bên trongmột trang Vấn đề lưu trữ mức trang và file được đề cập trong Chương 9 Cấu trúc củafile và các chỉ số được đề cập trong Chương 8

Phần mã chương trình của lớp filesandaccessmethods được đặt phía trên của buffer

manager, bộ phận này có nhiệm vụ mang những trang từ đĩa tới bộ nhớ chính khi cần

Trang 28

thiết để phản hồi các yêu cầu từ người dùng Buffer management được bàn đến trongChương 9.

Kiến trúc của một DBMS

Lớp thấp nhất của phần mềm DBMS giúp quản lý các vùng trống trên đĩa, nơi lưu trữ

dữ liệu, là disk space manager Lớp này được trình bày trong chương 9.

DBMS hỗ trợ truy cập tương tranh và khôi phục sự cố bằng việc lập lịch trình cẩn thậncho những yêu cầu của người dùng và duy trì lịch sử của tất cả các thay đổi trên cơ sở

dữ liệu Các thành phần hỗ trợ điều khiển tương tranh và khôi phục sự cố nằm trong

transaction managercủa DBMS, quản lý giao dịch đảm bảo rằng các giao dịch yêu cầu

Trang 29

sở dữ liệu; và recovery manager duy trì lịch sử và khôi phục hệ thống trở về trạng thái nhất quán sau sự cố Các lớp disk space manager, buffer manager, và file and access method phải chịu ảnh hưởng của các thành phần này Chúng ta sẽ bàn chi tiết đến điều

khiển đồng thời và khôi phục sự cố trong Chương 16

Những người làm việc với cơ sở dữ liệu

Có rất nhiều người tham gia tạo và sử dụng cơ sở dữ liệu Hiển nhiên, có những nhà sáng chế - người xây dựng phần mềm DBMS, và người dùng cuối – người mong muốn

được lưu trữ và sử dụng dữ liệu trong DBMS Người xây dựng phầm mềm DBMS làmviệc cho những nhà phát triển hệ thống như IBM hoặc Oracle Người dùng cuối là nhữngngười đến từ các lĩnh vực khác nhau Dữ liệu tăng trưởng rất nhanh và phức tạp, và nóđược coi là tài sản của cơ quan, việc lưu trữ nó trong DBMS đang được chấp nhận rộngrãi Nhiều người dùng cuối đơn giản chỉ sử dụng các ứng dụng được viết bởi nhữngngười lập trình ứng dụng và họ không cần có nhiều hiểu biết về phầm mềm DBMS Tấtnhiên, những người dùng có trình độ cao hơn yêu cầu có thể tự viết được các lệnh truyvấn của họ

Ngoài hai đối tượng người dùng là người dùng cuối và người xây dựng các phần mềm

DBMS còn có hai đối tượng nữa, đó là: người lập trình ứng dụng và người quản trị cơ

sở dữ liệu.

Người lập trình ứng dụng cơ sở dữ liệu phát triển những gói phần mềm hỗ trợ ngườidùng cuối truy cập cơ sở dữ liệu, người dùng cuối thường không phải là những chuyêngia về máy tính Người lập trình ứng dụng sử dụng các ngôn ngữ lập trình và các công

cụ phần mềm do các nhà sáng chế DBMS cung cấp (Các công cụ như viết báo cáo, bảngtính, thống kê, …) Các chương trình ứng dụng nên truy cập dữ liệu thông qua lược đồngoài Có thể viết những ứng dụng truy cập dữ liệu ở mức thấp, nhưng những ứng dụngnhư vậy phải có sự dàn xếp với khả năng độc lập dữ liệu

Một cơ sở dữ liệu cá nhân được duy trì bằng một người làm chủ nó và sử dụng nó Tuynhiên, những cơ sở dữ liệu của một tổ chức hoặc được sử dụng rộng rãi sẽ đủ quan trọng

và phức tạp để cần có một chuyên gia quản lý nó, người này gọi là người quản trị cơ

sở dữ liệu (DBA) DBA có rất nhiều nhiệm vụ:

• Thiết kế các lược đồ vật lý và lược đồ khái niệm: DBA phải hiểu những kiểu

dữ liệu nào có thể được lưu trữ trong DBMS và nó được sử dụng như thế nào.Dựa vào những hiểu biết này, DBA phải thiết kế các lược đồ khái niệm (quyếtđịnh lưu trữ những quan hệ nào) và lược đồ vật lý (các quan hệ này được lưutrữ như thế nào) DBA có lẽ cũng có thể thiết kế những phần khác nhau củalược đồ ngoài bằng cách tạo ra các khung nhìn bổ sung

• Bảo mật và Xác thực: DBA phải chịu trách nhiệm đảm bảo rằng những truy

cập dữ liệu không hợp lệ sẽ không được phép Nói chung, không phải tất cả

Trang 30

người dùng đều có thể truy cập vào tất cả dữ liệu Trong DBMS quan hệ, ngườidùng có thể được cấp quyền truy cập tới các quan hệ và các khung nhìn hiện

có Ví dụ, bạn có thể cho phép sinh viên đăng ký các khóa học và giáo viên dạykhóa học đó, nhưng bạn không nên cho sinh viên xem lương và thứ hạng củacác giáo viên DBA có thể thực hiện những chính sách này bằng cách chỉ cấpcho sinh viên quyền truy cập tới khung nhìn Courseinfo

• Sự sẵn sàng của dữ liệu và khôi phục sau sự cố: DBA phải thực hiện các

bước để đảm bảo rằng nếu hệ thống gặp sự cố, người dùng có thể được tiếp tụctruy cập nhiều nhất có thể những dữ liệu không bị hỏng DBA cũng phải làmviệc để khôi phục dữ liệu về trạng thái nhất quán DBMS cung cấp phần mềm

hỗ trợ những tính năng này, nhưng DBA phải có nhiệm vụ thực thi những thủtục sao lưu dữ liệu định kỳ và duy trì logs của hệ thống để có thể khôi phục dữliệu sau sự cố

• Tinh chỉnh cơ sở dữ liệu: Yêu cầu của người dùng thay đổi theo thời gian.

DBA phải có trách nhiệm sửa đổi cơ sở dữ liệu, cụ thể là các lược đồ vật lý vàlược đồ khái niệm để đảm bảo thực hiện tương xứng với những thay đổi củayêu cầu

Các câu hỏi ôn tập

Câu trả lời của các câu hỏi có thể được tìm thấy trong các phần sau:

• Lợi ích chính của việc sử dụng DBMS để quản lý dữ liệu trong những ứng

dụng có phạm vi sử dụng rộng lớn? (Phần 1, 4)

• Khi nào bạn thực hiện lưu trữ dữ liệu bằng DBMS thay vì sử dụng hệ thống tệp

tin do hệ điều hành cung cấp? (Phần 3)

• Mô hình dữ liệu là gì? Mô hình dữ liệu quan hệ là gì? Độc lập dữ liệu là gì và

DBMS hỗ trợ nó như thế nào? (Phần 5)

• Giải thích lợi ích của việc sử dụng ngôn ngữ truy vấn thay vì các chương trình

của người dùng để truy cập đến dữ liệu? (Phần 6)

• Giao dịch là gì? Những đảm bảo gì mà DBMS phải làm để thực hiện các giao

dịch? (Phần 7)

• Khóa trong DBMS là gì và vì sao khóa được sử dụng? Write-ahead logging là

gì và vì sao nó được sử dụng? Checkpointing là gì và vì sao nó được sử dụng?(Phần 8)

• Trình bày các chức năng của người quản trị cơ sở dữ liệu, các lập trình ứngdụng và người sử dụng cuối của cơ sở dữ liệu Ai là người cần phải biết tất cả

về các thành phần của hệ thống cơ sở dữ liệu? (Phần 9)

Bài tập

Vì sao bạn lựa chọn hệ thống cơ sở dữ liệu thay vì việc lưu trữ dữ liệu đơn giản trong hệ

Trang 31

Một cơ sở dữ liệu là một tập hợp dữ liệu hợp nhất, nó thường rất lớn nên phải lưu trữtrong các thiết bị lưu trữ thứ cấp như đĩa hoặc băng từ Dữ liệu này có thể được lưutrữ như một tập hợp các file, hoặc lưu trữ trong một DBMS Những lợi ích khi sử dụngDBMS bao gồm:

• Sự độc lập dữ liệu và truy cập hiệu quả Các chương trình ứng dụng cơ sở dữ

liệu độc lập với những chi tiết của biểu diễn và lưu trữ dữ liệu Lược đồ ngoài

và lược đồ khái niệm cung cấp sự độc lập với những quyết định về các lưu trữvật lý và thiết kế logic Thêm nữa, DBMS cung cấp cách thức lưu trữ và các cơchế truy cập rất hiệu quả, bao gồm việc hỗ trợ các file có kích thước rất hơn,các cấu trúc chỉ mục và tối ưu hóa truy vấn

• Giảm thời gian phát triển ứng dụng Vì DBMS cung cấp các chức quan trọng

cho các ứng dụng, như điều khiển tương tranh và khôi phục sự cố, các khả năngtruy vấn mức cao, vv…, người lập trình chỉ phải viết những đoạn mã chươngtrình đặc biệt cho từng ứng dụng Thậm chí điều này cũng được hỗ trợ bởi cáccông cụ phát triển ứng dụng phù hợp do các nhà sáng chế ra DBMS cung cấp

• Toàn vẹn dữ liệu và bảo mật Cơ chế khung nhìn và các khả năng xác thực

của DBMS cung cấp một cơ chế điều khiển truy cập mạnh mẽ Thêm nữa,những cập nhật gây ra sự không nhất quán của dữ liệu có thể được phát hiện và

từ chối bởi DBMS nếu người dùng chỉ rõ các ràng buộc toàn vẹn tương ứng.

• Quản trị dữ liệu Bằng việc cung cấp một bộ khung giúp hỗ trợ một tập hợp

dữ liệu lớn và nhiều người sử dụng, DBMS hỗ trợ việc duy trì và các công việcquản trị dữ liệu Một DBA tốt có thể là bức bình phong ngăn chặn những truycập trái phép, và định kỳ sao lưu dữ liệu vv…

• Điều khiển tương tranh và khôi phục sự cố DBMS hỗ trợ khai niệm giao

dịch Người dùng có thể viết các giao dịch như thể các chương trình của họđang được chạy độc lập trên cơ sở dữ liệu DBMS thực thi các thao tác của cácgiao dịch một cách xen kẽ để nâng cao khả năng của hệ thống, nhưng các lịchtrình của chúng lại được đảm bảo rằng các thao tác xung đột không được phépdiễn ra đồng thời Thêm nữa, DBMS duy trì một log để ghi lại những thay đổiđối với dữ liệu, và nếu hệ thống gặp sự cố, nó có thể khôi phục lại cơ sở dữ liệu

để nó trở về trạng thái nhất quán Tức là, các thao tác của các giao dịch chưahoàn thành được làm lại để trạng thái cơ sở dữ liệu chỉ tương ứng với các giaodịch đã thành công Vì thế, nếu mỗi giao dịch thành công khi thực hiện độc lậpđưa cơ sở dữ liệu về trạng thái nhất quán thì trạng thái cơ sở dữ liệu sau khikhôi phục sự cố cũng trở về trạng thái nhất quán

• Nếu những lợi ích trên không quan trọng với ứng dụng của bạn, thì việc sửdụng một tập các file là giải phát tốt hơn vì việc duy trì và thực hiện trên

DBMS phải trả giá thành cao hơn

Độc lập dữ liệu logic là gì và vì sao nó quan trọng?

Dành cho bạn đọc

Trang 32

Giải thích sự khác nhau giữa độc lập dữ liệu logic và độc lập dữ liệu vật lý?

Độc lập dữ liệu logic có nghĩa là người dùng được bảo vệ từ những thay đổi trong cấutrúc logic của dữ liệu, trong khi độc lập dữ liệu vật lý cách ly người dùng với nhữngthay đổi trong lưu trữ vật lý của dữ liệu Chúng ta xem một ví dụ của độc lập dữ liệulogic trong câu trả lời của Bài 1.2 Xem xét quan hệ Students từ ví dụ này (và bây giờgiả sử rằng nó không được thay thế bằng hai quan hệ nhỏ hơn) Chúng ta có thể lựa chọn

để lưu trữ các bản ghi của quan hệ Students trong một heap file, cùng với một chỉ mụcphân cụm trên trường sname Ngoài ra, chúng ta có thể lựa chịn để lưu trữ nó cùng vớimột chỉ mục trên trường gpa, hoặc tạo ra các chỉ mục rên cả hai trường này, hoặc lưu trữ

nó như một file được sắp xếp bằng gpa Những cách lưu trữ này người dùng không nhìnthấy được, họ chỉ nhìn thấy quan hệ đơn giản là một tập các bản ghi Điều này chính là

sự độc lập dữ liệu vật lý

Giải thích sự khác nhau giữa lược đồ ngoài, lược đồ trong, lược đồ khái niệm Nhữnglược đồ khác nhau này liên quan đến khái niệm độc lập dữ liệu logic và độc lập dữ liệuvật lý như thế nào?

Dành cho bạn đọc

Trách nhiệm của DBA là gì? Nếu giả sử rằng DBA không quan tâm đến các truy vấn,DBA vẫn cần hiểu về tối ưu hóa truy vấn? Vì sao?

DBA có nhiệm vụ sau:

• Thiết kế các lược đồ logic và vật lý, cũng như là những khung nhìn chủ yếu củalược đồ ngoài

• Bảo mật và xác thực

• Sự sẵn sàng của dữ liệu và khôi phục sau sự cố

• Tinh chỉnh cơ sở dữ liệu: DBAM có nhiệm vụ phát triển cơ sở dữ liệu, cụ thể là

phát triển các lược đồ vật lý và lược đồ ngoài để đảm bảo thực hiện được

những yêu cầu thay đổi theo thời gian của người dùng

DBA cần hiểu về tối ưu hóa truy vấn ngay cả khi người này không quan tâm đến việcchạy những truy vấn nào vì anh ta có một số nhiệm vụ (thiết kế và điều chỉnh cơ sở dữliệu) liên quan đến tối ưu hóa truy vấn Nếu DBA không hiểu về những truy vấn được

sử dụng rộng rãi cần những gì cho thực thi, và DBMS sẽ tối ưu và thực hiện những truyvấn này như thế nào, anh ta sẽ không thể có những quyết định tốt khi thiết kế và điềuchỉnh cơ sở dữ liệu

Scrooge McNugget muốn lưu trữ thông tin (names, addresses, descriptions) về chi trả

cá nhân của ông Không ngạc nhiên, ông muốn mua một hệ thống cơ sở dữ liệu Để tiếtkiệm tiền, ông muốn mua một hệ thống với những chức năng cần thiết tối thiểu, và ông

Trang 33

nhiên, ông không lên kế hoạch để chia sẻ ứng dụng cho bất kỳ ai Chỉ ra những đặc tínhcủa DBMS mà ông Scrooge cần, trong từng trường hợp, chỉ ra vì sao đặc trưng này cầnhoặc không cần phải mua.

• Khả năng bảo đảm an toàn

• Khả năng điều khiển truy cập đồng thời

• Khả năng khôi phục sau sự cố

• Cơ chế khung nhìn

• Ngôn ngữ truy vấn

Dành cho bạn đọc

Những thành phần nào sau đây có vai trò quan trọng tới biểu diễn thông tin về thế giới

thực trong cơ sở dữ liệu? Giải thích tóm tắt

1 Ngôn ngữ định nghĩa dữ liệu

2 Ngôn ngữ thực thi dữ liệu

3 Quản lý bộ đệm

4 Mô hình dữ liệu

Hãy cùng chúng tôi bàn về những lựa chọn này

• Ngôn ngữ định nghĩa dữ liệu quan trọng trong biểu diễn thông tin vì nó được sửdụng để biểu diễn các lược đồ logic và lược đồ ngoài

• Ngôn ngữ thực thi dữ liệu được sử dụng để truy cập và cập nhật dữ liệu; nókhông quan trọng trong biểu diễn dữ liệu (Tất nhiên, ngôn ngữ thực thi dữ liệuphải hiểu được dữ liệu đang được biểu diễn như thế nào, và phản chiếu điềunày trong các cấu trúc mà nó hỗ trợ)

• Quản lý bộ đệm không thực sự quan trọng trong biểu diễn vì nó mang nhữngtrang trên đĩa vào bộ nhớ chính, độc lập với việc dữ liệu được biểu diễn như thếnào

• Mô hình dữ liệu là nền tảng để biểu diễn thông tin Mô hình dữ liệu xác địnhcác chơ chế biểu diễn dữ liệu nào đang được DBMS hỗ trợ Ngôn ngữ địnhnghĩa dữ liệu chỉ chỉ ta tập các cấu trúc ngôn ngữ dùng để biểu diễn dữ liệu củamột ứng dụng cụ thể

Trình bày kiến trúc của một DBMS Nếu hệ điều hành của bạn được nâng cấp để hỗtrợ một số chức năng mới trên các tệp tin của hệ điều hành, những tầng nào của DBMSchúng ta cần viết lại để tận dụng được các ưu điểm của chức năng mới này?

Dành cho bạn đọc

Trả lời các câu hỏi sau:

Trang 34

4 Giải thích về giao thức khóa hai pha nghiêm ngặt.

5 Đặc tính WAL là gì, và vì sao nó quan trọng?

Hãy cùng chúng tôi trả lời từng câu hỏi:

• Một giao dịch là một tập các thực thi được gộp lại thành một khối của mộtchương trình ứng dụng

• Một DBMS thường được chia sẽ cho rất nhiều người dùng Các giao dịch từnhững người dùng này có thể được thực thi xen kẽ để cải thiện thời gian thựchiện các truy vấn của người dùng Bằng cách này, người dùng không phải đợinhững giao dịch của người dùng khác hoàn thành rồi mới đến giao dịch củamình được bắt đầu Không thực hiện xen kẽ, nếu người dùng A thực hiện mộtgiao dịch nào đó mất 10s, và người dùng B bắt đầu thực hiện giao dịch củamình, người dùng B sẽ phải đợi 10s để giao dịch của người dùng A hoàn thành

• DBMS phải đảm bảo rằng giao dịch được thực thi toàn bộ và độc lập với cácgiao dịch khác Một tính chất quan trọng của giao dịch trong DBMS là tínhnguyên tử, và tính cô lập Các giao dịch hoặc là thành công hoặc là thất bạihoàn toàn Điều này đảm bảo tính nhất quán của cơ sở dữ liệu

• Khóa hai-pha nghiêm ngặt sử dụng các khóa chia sẻ và khóa độc quyền để bảo

vệ dữ liệu Một giao dịch phải nắm giữ tất cả các khóa cần thiết trước khi thựcthi và không giải phóng bất cứ khóa nào trước khi giao dịch kết thúc hoàn toàn

• Đặc tính WAL ảnh hưởng đến chiến lược logging trong DBMS WAL là viếttắt của Write- Ahead Log, có nghĩa là mỗi một thao tác viết lên cơ sở dữ liệuđều phải được ghi vào log (trên đĩa) trước khi nó thực sự xảy ra trong cơ sở dữliệu Điều này bảo vệ được cơ sở dữ liệu nếu có sự cố xảy ra trong quá trìnhgiao dịch đang thực hiện Bằng việc ghi lại những thay đổi vào trong log trướckhi những thay đổi này thực sự diễn ra, cơ sở dữ liệu biết được phải làm lạinhững thao tác nào để khôi phục sự cố Ngược lại, nếu việc ghi vào log diễn rasau thì cơ sở dữ liệu sẽ không thể phát hiện được có những thay đổi nào đã xảy

ra trong quá trình khôi phục sự cố

Bài tập lớn

Sử dụng trình duyệt Web để tìm kiếm tài liệu dạng HTML về Minibase Cố gắng để cóđược kiến trúc tổng quan về nó

Dành cho bạn đọc

Trang 35

TÀI LIỆU THAM KHẢO

Quá trình phát triển của DBMS được trình bày trong [289] Sử dụng các mô hình dữ liệu

để biểu diễn thế giới thực được trình bày trong [423], và [425] chứa nguyên tắc phânloại các mô hình dữ liệu Ba mức trừu tượng được giới thiệu trong [186, 712] Mô hình

dữ liệu mạng được trình bày trong [186], và [775] trình bày một số hệ thống thương mạiđược xây dựng dựa trên mô hình này

Những tài liệu khác về DBMS bao gồm [204, 245, 305, 339, 475, 574, 689, 747, 762].[204] cung cấp những thảo luận chi tiết về mô hình quan hệ và có những tài liệu thamkhảo đáng chú ý khác [574] trình bày triển vọng của cách tiếp cận hướng đối tượng vàtham khảo tới một số hệ thống thương mại [245] và [689] trình bày về các khái niệm hệthống cơ sở dữ liệu, bao gồm những thảo luận về các mô hình dữ liệu mạng và phân cấp.[339] trình bày nhấn mạnh sự kết nối giữa ngôn ngữ truy vấn cơ sở dữ liệu và ngôn ngữlập trình [762] tập trung vào các mô hình dữ liệu [747] cung cấp những trình bày chitiết nhất về các bài toán lý thuyết Những tài liệu tập trung vào các khía cạnh lý thuyếtbao gồm [3, 45, 501]

Trang 36

Giới thiệu thiết kế cơ sở dữ liệu

Mô hình ER cho phép chúng ta biểu diễn dữ liệu trong thế giới thực bằng các đối tượng

và mối quan hệ giữa chúng, và nó được sử dụng rộng rãi như là bước đầu tiên trong thiết

kế cơ sở dữ liệu Trong chương này, chúng tôi giới thiệu mô hình ER và bàn luận tại saochúng được sử dụng rộng rãi

Chúng tôi bắt đầu phần tổng quan về thiết kế cơ sở dữ liệu trong phần 1 để làm rõ mụctiêu bàn luận của chúng tôi về mô hình ER Trong sơ đồ lớn của quá trình thiết kế tổng

quan, mô hình ER được sử dụng trong giai đoạn gọi là thiết kế cơ sở dữ liệu mức khái niệm Sau đó, phần 2, 3 và 4 sẽ giới thiệu về mô hình ER Phần 5 sẽ bàn đến những vấn

đề thiết kế cơ sở dữ liệu trong mô hình ER Chúng tôi bàn tóm tắt về thiết kế cơ sở dữliệu mức khái niệm cho các ứng dụng lớn trong phần 6 Phần 7 biểu diễn tổng quan vềUML, phương pháp mô hình hóa và thiết kế tổng quát hơn mô hình ER

Phần 8 giới thiệu một bài toán thực tế sẽ được nghiên cứu như một ví dụ xuyên suốtcuốn sách này Đây là ví dụ về thiết kế cơ sở dữ liệu cho một cửa hàng Internet Chúngtôi minh họa hai bước đầu tiên (bao gồm phân tích và thiết kế khái niệm) trong phần 8.Những chương cuối cùng sẽ mở rộng ví dụ này để trình bày những bước còn lại trongquá trình thiết kế

Chúng ta ghi nhớ rằng có rất nhiều mô hình ER hiện nay đang được sử dụng, và

không có chuẩn nào thắng thế Những trình bày trong chương này là những miêu tả về

mô hình ER phổ biến, bao gồm tập hợp những đặc tính phổ dụng nhất

Thiết kế cơ sở dữ liệu và lược đồ ER

Quá trình thiết kế cơ sở dữ liệu có thể được chia thành sáu bước Mô hình ER liên quanchặt chẽ tới ba bước đầu tiên

1 Phân tích yêu cầu: Bước đầu tiên trong thiết kế ứng dụng cơ sở dữ liệu là phải

hiểu được những dữ liệu nào cần lưu trữ trong cơ sở dữ liệu, những ứng dụngnào phải được xây dựng đầu tiên và những thao tác nào được sử dụng Nói cáchkhác, chúng ta phải chỉ ra những gì người sử dụng muốn đối với cơ sở dữ liệu.Quá trình này chúng ta cần phải bàn luận với nhóm người dùng, nghiên cứuthực trạng và ghi nhận những mong muốn của người sử dụng, phân tích nhữngvăn bản có thể và những ứng dụng đang tồn tại của hệ thống để có thể xây dựngứng dụng thay thế tốt hơn Một số phương pháp luận đã được đề xuất để tổchức và biểu diễn những thông tin tập hợp được, và một vài công cụ tự động đãđược phát triển để hỗ trợ quá trình này

Trang 37

Các công cụ thiết kế cơ sở dữ liệu: Công cụ thiết kế được các nhà phát triển

RDBMS cung cấp Ví dụ, chi tiết về công cụ thiết kế và phân tích của Sysbaseđược chỉ ra trong liên kết sau:

http://www.sybase.com/products/application tools

Chi tiết về những công cụ của Oracle được chỉ ra trong liên kết sau:

http://www.oracle.com/tools

2 Thiết kế cơ sở dữ liệu mức khái niệm: Những thông tin thu thập được trong

bước phân tích yêu cầu được sử dụng để xây dựng phần biểu diễn dữ liệu trong

cơ sở dữ liệu ở mức cao dựa vào những ràng buộc chúng ta đã biết về dữ liệu.Bước này được thực hiện sử dụng mô hình ER, hoặc mô hình dữ liệu mức caotương đương, và nó sẽ được bàn tới trong chương này Mô hình ER là một

trong một số những mô hình mức cao, còn gọi là mô hình ngữ nghĩa Mục

đích của bước này là tạo ra cái nhìn đơn giản về dữ liệu để người sử dụng vàngười thiết kế dễ dàng hiểu được Điều này giúp cho tất cả các đối tượng liênquan dễ dàng hiểu nhau trong quá trình thiết kế, kể cả những người không cóhiểu biết nền tảng về công nghệ thông tin Ở thời điểm này, người thiết kế phải

có đủ thông tin để có thể xây dựng mô hình dữ liệu dựa vào hệ thống cơ sở dữliệu thương mại (thực tế, đó là mô hình quan hệ)

3 Thiết kế cơ sở dữ liệu logic: Chúng ta phải lựa chọn DBMS để thực hiện

những thiết kế cơ sở dữ liệu của chúng ta, và chuyển thiết kế cơ sở dữ liệu kháiniệm vào lược đồ cơ sở dữ liệu tương ứng trong mô hình dữ liệu của DBMS.Chúng tôi sẽ chỉ đề cập đến các DBMS quan hệ, và vì thế, công việc trongbước thiết kế cơ sở dữ liệu logic là chuyển từ lược đồ ER sang lược đồ cơ sở dữliệu quan hệ Chúng tôi sẽ bàn chi tiết trong chương 3, kết quả thu được cuối

cùng là lược đồ khái niệm, đôi khi gọi là lược đồ logic trong mô hình dữ liệu

quan hệ

Phía sau của thiết kế ER

Lược đồ ER chỉ là biểu diễn tương đối của dữ liệu, được xây dựng dựa trên đánh giá chủquan trong quá trình thu thập dữ liệu ở bước phân tích yêu cầu Nhiều phân tích cẩn thậnhơn được xem xét trong lược đồ logic ở cuối bước 3 Khi chúng ta có lược đồ logic tốt,chúng ta phải xem xét điều kiện thực hiện và thiết kế lược đồ vật lý Cuối cùng, chúng

ta phải cụ thể hóa những vấn đề về bảo mật và đảm bảo rằng những người sử dụng cóthể truy cập thấy thông tin mà họ cần Ba bước thiết kế cơ sở dữ liệu còn lại được trìnhbày tóm tắt trong phần sau:

1 Tinh chỉnh lược đồ: Bước thứ 4 của thiết kế là phân tích tập hợp các quan hệ

trong lược đồ cơ sở dữ liệu quan hệ để xác định các vấn đề cần thiết và xem xét

Trang 38

lại nó Ngược lại với bước phân tích yêu cầu và thiết kế khái niệm, nơi tậptrung chủ yếu vào các đối tượng, thì bước này chúng ta phải thực hiện việc tinhchỉnh lược đồ bằng những hướng dẫn nặng về lý thuyết hơn Chúng ta sẽ bànđến các dạng chuẩn của quan hệ và tìm hiểu sâu sắc hơn trong chương 19.

2 Thiết kế cơ sở dữ liệu vật lý: Trong bước này chúng ta phải xem xét khối

lượng công việc mà cơ sở dữ liệu của chúng ta phải hỗ trợ và xem xét lại thiết

kế cơ sở dữ liệu để đảm bảo rằng nó thỏa mãn các điều kiện thực thi Bước này

có thể bao gồm việc xây dựng các chỉ số trên một số bảng và phân cụm một sốbảng, hoặc có thể bao gồm việc thiết kế lại đáng kể các phần trong lược đồ cơ

sở dữ liệu đạt được từ các bước thiết kế trước Chúng tôi sẽ trình bày về thiết

kế cơ sở dữ liệu vật lý và điều chỉnh cơ sở dữ liệu trong chương 20

3 Thiết kế ứng dụng và bảo mật: Bất kỳ dự án phần mềm nào phát triển trên

DBMS cũng phải xem xét những khía cạnh của ứng dụng phía trước, và dựatrên cơ sở dữ liệu đã tồn tại trước đó Phương pháp thiết kế như UML (phần 7)

cố gắng để cụ thể hóa vòng tròn thiết kế và phát triển phần mềm khép kín Tómlại, chúng ta phải xác định các thực thể (ví dụ: người dùng, nhóm người dùng,phòng/ban) và các quá trình cần thực hiện trong ứng dụng Chúng ta phải biểudiễn các vai trò của mỗi thực thể trong tất cả các quá trình xử lý Với mỗi vaitrò (role), chúng ta phải xác định các phần của cơ sở dữ liệu được phép hoặckhông được truy cập, và chúng ta phải đảm bảo rằng chúng chỉ được truy cậpvào các phần cần thiết DBMS cung cấp một vài cơ chế để hỗ trợ bước này, vàchương 21 sẽ trình bày về vấn đề này

Trong giai đoạn thực hiện này, chúng ta phải sử dụng ngôn ngữ lập trình để viết chươngtrình cho mỗi phần việc trong ứng dụng (ví dụ: Java), sử dụng DBMS để truy cập dữliệu Chương 6 và 7 sẽ trình bày phần phát triển ứng dụng

Tóm lại, việc chia thành 6 bước nên được xem như việc phân lớp quá trình thiết kế Quátrình này có thể diễn ra tuần tự hoặc vòng tròn, lặp đi lặp lại

Thực thể, thuộc tính và kiểu thực thể

Thực thể là tập đối tượng trong thế giới thực giúp ta phân biệt với các đối tượng khác.

Ví dụ: đồ chơi (của Green Dragonzord), văn phòng, người quản lý của văn phòng, địachỉ nhà của người quản lý của văn phòng Người ta thường xác định một tập các thực thể

tương đương nhau Tập hợp này được gọi là kiểu thực thể Ghi nhớ rằng tập các thực

thể không cần được tách rời nhau; tập hợp những nhân viên làm việc trong văn phòng

và tập hợp những nhân viên trong phòng thiết bị có thể đều nằm trong tập hợp các nhân

viên của công ty Chúng ta có thể định nghĩa kiểu thực thể này là Employees chứa toàn

bộ nhân viên trong cả hai phòng

Một thực thể được biểu diễn bằng một tập các thuộc tính Tất cả các thực thể trong cùng

Trang 39

phản ánh mức chi tiết về dữ liệu mà chúng ta mong muốn được biểu diễn trong thực thể.

Ví dụ, kiểu thực thể Employees có thể có các thuộc tính: Tên (Name), Số bảo hiểm xã hội (social security number -ssn) Trong trường hợp này, cơ sở dữ liệu lưu trữ thông tin

về tên, số bảo hiểm xã hội của các nhân viên Tuy nhiên, chúng ta sẽ không lưu trữ đượcđịa chỉ của nhân viên (hoặc giới tính, tuổi)

Với mỗi thuộc tính trong kiểu thực thể, chúng ta phải xác định miền giá trị của nó Ví

dụ, miền giá trị của thuộc tính Name trong kiểu thực thể Employees có thể có kiểu dữ

liệu là xâu ký tự, chiều dài tối đa 20 ký tự

Để tránh nhầm lẫn, chúng ta giả sử rằng tên các thuộc tính của cùng kiểu thực thểkhông trùng nhau

Một ví dụ khác, nếu trong công ty có sự xếp hạng nhân viên từ 1 đến 10 thì cơ sở dữ

liệu phải có một thuộc tính để lưu thông tin này, có thể là thuộc tính rating và miền giá

trị của nó sẽ là 1 đến 10 Thêm vào đó, với mỗi kiểu thực thể, chúng ta cần lựa chọn

thuộc tính khóa cho nó Khóa là tập tối thiểu các thuộc tính trong kiểu thực thể có khả

năng xác định duy nhất một thực thể (Hay nói cách khác, khóa phải có khả năng phân

biệt được thực thể này với thực thể khác) Có thể có nhiều hơn một khóa dự tuyển; chúng ta sẽ lựa chọn một trong số các khóa dự tuyển để làm khóa chính Từ bây giờ

chúng ta sẽ giả sử rằng, mỗi kiểu thực thể chứa ít nhất một tập các thuộc tính để xácđịnh duy nhất một thực thể trong kiểu thực thể đó; gọi là tập thuộc tính khóa Chúng ta

sẽ xem xét vấn đề này trong phần 4.3

Kiểu thực thể Employees có các thuộc tính ssn, name, và rất nhiều các thuộc tính khác

được chỉ ra trong hình 1 Một kiểu thực thể được biểu diễn bằng một hình chữ nhật, mộtthuộc tính được biểu diễn bằng một hình bầu dục Thuộc tính có gạch chân ở dưới là

thuộc tính khóa Trong hình 1, thuộc tính khóa là ssn.

Liên kết và kiểu liên kết

Liên kết là mối quan hệ giữa hai hoặc nhiều thực thể Ví dụ, chúng ta có thể có liên kết

Attishoo làm việc trong văn phòng dược Với nhiều thực thể cùng kiểu, chúng ta có tập

các liên kết tương đương nhau tạo thành kiểu liên kết Một kiểu liên kết có thể được

xem như một tập của n- tupes:

{ (e1, ,e n)∣ e1∈ E1, ,e n ∈ E n}

Trang 40

Tập thực thể Employees

Mỗi n-tupe biểu thị một mối liên kết bao gồm n thực thể từ e1 tới en, trong đó thực thể

ei thuộc tập thực thể Ei Trong Hình 2 chúng ta chỉ ra kiểu liên kết Works_In, trong đó mỗi liên kết chỉ ra một department mà một nhân viên làm việc.

Kiểu quan hệ Work_In

Một liên kết có thể có các thuộc tính mô tả Thuộc tính mô tả được sử dụng để ghi lại

những thông tin về mối liên kết, những thông tin này không nên để ở những thực thểthành phần tham gia trong mối liên kết Ví dụ, chúng ta muốn ghi lại thời gian bắt đầulàm việc của Attishoo ở văn phòng dược từ tháng 1 năm 1991 Thông tin này được minh

họa trong hình 2 bằng việc thêm vào một thuộc tính since trong mối liên kết Works_In.

Trong kiểu liên kết Works_In, ví dụ, mỗi liên kết Works_In phải được xác định duy nhất

bằng việc kết hợp ssn của thực thể Employee với did của thực thể Department Vì thế, với mỗi cặp employee-department, chúng ta không thể có nhiều hơn một giá trị since.

Một minh họa của một kiểu liên kết là một tập các liên kết Một minh họa có thể được

xem như một 'snapshot' của một kiểu liên kết ở một thời điểm nào đó Một minh họacủa kiểu liên kết Works_In được chỉ ra trong hình 3 Mỗi thực thể Employee được đại

diện bằng thuộc tính ssn của nó, và mỗi thực thể Department được đại diện bằng thuộc tính did Giá trị của thuộc tính since được chỉ ra bên trong mỗi liên kết Những chú

thích 'many-to-many' (nhiều-nhiều) và 'total participation' (lực lượng tham gia toàn bộ)

Ngày đăng: 28/11/2014, 17:14

HÌNH ẢNH LIÊN QUAN

Hình 7 chỉ ra kết quả của truy vấn này, nó bỏ đi các trường không được chỉ ra trong truy vấn - Hệ quản trị cơ sở dữ liệu
Hình 7 chỉ ra kết quả của truy vấn này, nó bỏ đi các trường không được chỉ ra trong truy vấn (Trang 85)
Bảng tương ứng với kiểu liên kết Manages có các thuộc tính ssn, did, since. Tuy nhiên, - Hệ quản trị cơ sở dữ liệu
Bảng t ương ứng với kiểu liên kết Manages có các thuộc tính ssn, did, since. Tuy nhiên, (Trang 89)
Hình 6. Minh hoạ R3 của Reserves - Hệ quản trị cơ sở dữ liệu
Hình 6. Minh hoạ R3 của Reserves (Trang 166)
Hình 2 cũng chỉ ra chỉ mục với khoá tìm kiếm sal chứa cặp (sal, rid) là các cổng vào dữ liệu - Hệ quản trị cơ sở dữ liệu
Hình 2 cũng chỉ ra chỉ mục với khoá tìm kiếm sal chứa cặp (sal, rid) là các cổng vào dữ liệu (Trang 287)
Hình 3 chỉ ra các bản ghi nhân viên như Hình 2, nhưng lần này nó được tổ chức trong một chỉ mục cấu trúc cây với khoá tìm kiếm là age - Hệ quản trị cơ sở dữ liệu
Hình 3 chỉ ra các bản ghi nhân viên như Hình 2, nhưng lần này nó được tổ chức trong một chỉ mục cấu trúc cây với khoá tìm kiếm là age (Trang 288)
Hình 3 minh hoạ ý nghĩa của phụ thuộc hàm AB → C bằng việc chỉ ra một trường hợp thoả mãn phụ thuộc hàm này - Hệ quản trị cơ sở dữ liệu
Hình 3 minh hoạ ý nghĩa của phụ thuộc hàm AB → C bằng việc chỉ ra một trường hợp thoả mãn phụ thuộc hàm này (Trang 381)
Hình 14 minh hoạ định nghĩa này. Nếu chúng ta có hai bộ giá trị đầu tiên và nói rằng có MVD X→→Y trên quan hệ này, chúng ta có thể suy diễn rằng minh hoạ quan hệ này cũng phải chứa bộ thứ ba - Hệ quản trị cơ sở dữ liệu
Hình 14 minh hoạ định nghĩa này. Nếu chúng ta có hai bộ giá trị đầu tiên và nói rằng có MVD X→→Y trên quan hệ này, chúng ta có thể suy diễn rằng minh hoạ quan hệ này cũng phải chứa bộ thứ ba (Trang 403)
Hình 15 chỉ ra ba bộ giá trị trong minh hoạ ABCD thoả mãn MVD B→→C. Từ định nghĩa về MVD, nếu có hai bộ t1 và t2, thì bộ t3 cũng nằm trong minh hoạ này - Hệ quản trị cơ sở dữ liệu
Hình 15 chỉ ra ba bộ giá trị trong minh hoạ ABCD thoả mãn MVD B→→C. Từ định nghĩa về MVD, nếu có hai bộ t1 và t2, thì bộ t3 cũng nằm trong minh hoạ này (Trang 405)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w