intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng phần 1: Các khái niệm về cơ sở dữ liệu

Chia sẻ: Codon_08 Codon_08 | Ngày: | Loại File: PDF | Số trang:56

122
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Xin giới thiệu tới các bạn học sinh, sinh viên "Bài giảng phần 1: Các khái niệm về cơ sở dữ liệu". Tài liệu tập trung trình bày các vấn đề cơ bản về cơ sở dữ liệu; tìm hiểu các thành phần của cơ sở dữ liệu quan hệ. Mời các bạn cùng tìm hiểu và tham khảo nội dung thông tin tài liệu.

Chủ đề:
Lưu

Nội dung Text: Bài giảng phần 1: Các khái niệm về cơ sở dữ liệu

  1. Phần I Các khái niệm về cơ sở dữ liệu
  2. Chương Căn bản về 1 cơ sở dữ liệu 3
  3. 4 Nhập môn Cơ sở dữ liệu Các khái niệm và kỹ năng chính ●● Các thuộc tính của cơ sở dữ liệu ●● Các mô hình cơ sở dữ liệu thông dụng ●● Tóm lược lịch sử cơ sở dữ liệu ●● Tại sao phải tập trung vào mô hình quan hệ? C hương này giới thiệu các khái niệm căn bản và những định nghĩa liên quan đến cơ sở dữ liệu, bao gồm các thuộc tính của cơ sở dữ liệu nói chung, các mô hình cơ sở dữ liệu thông dụng, tóm lược lịch sử cơ sở dữ liệu, nguyên nhân tại sao phải tập trung vào mô hình cơ sở dữ liệu quan hệ. Các thuộc tính của cơ sở dữ liệu Cơ sở dữ liệu (database) là tập hợp các thành phần dữ liệu có liên quan lẫn nhau, được quản lý dưới dạng một đơn vị duy nhất. Định nghĩa trên tương đối rộng, bởi có sự khác biệt đáng kể giữa các cơ sở dữ liệu của các nhà sản xuất phần mềm cung cấp các hệ thống cơ sở dữ liệu. Chẳng hạn, Microsoft Access đặt toàn bộ cơ sở dữ liệu trong một file dữ liệu, do đó, một cơ sở dữ liệu Access có thể được định nghĩa như một file chứa các thành phần dữ liệu. Công ty Oracle định nghĩa cơ sở dữ liệu của họ như tập các file vật lý được quản lý bởi một thể hiện của phần mềm cơ sở dữ liệu của Oracle. Thể hiện (instance) là một phiên bản của phần mềm cơ sở dữ liệu đang chạy trong bộ nhớ. Microsoft SQL Server và Sybase Adaptive Server Enterprise (ASE) định nghĩa một cơ sở dữ liệu là tập hợp các thành phần dữ liệu có cùng chủ sở hữu, và nhiều cơ sở dữ liệu được quản trị bởi một thể hiện của một phần mềm quản trị cơ sở dữ liệu. Định nghĩa này có thể gây hiểu lầm đôi chút nếu bạn làm việc với nhiều sản phẩm khác nhau, vì theo định nghĩa của Microsoft SQL Server và Sybase ASE, một cơ sở dữ liệu lại chính là một schema (lược đồ) như định nghĩa của công ty Oracle. Đối tượng cơ sở dữ liệu (database object) là một cấu trúc dữ liệu được đặt tên và lưu trữ trong cơ sở dữ liệu. Các kiểu đối tượng cơ sở dữ liệu cụ thể được hỗ trợ trong một cơ sở dữ liệu thường khác nhau giữa các nhà cung cấp và giữa các mô hình cơ sở dữ liệu. Mô hình cơ sở dữ liệu (database model) là cách cơ sở dữ liệu tổ chức dữ liệu của nó để mô phỏng thế giới thực. Những mô hình cơ sở dữ liệu phổ biến nhất được trình bày trong mục “Các mô hình cơ sở dữ liệu thông dụng” ở cuối chương này. File là tập hợp các bản ghi có liên quan được lưu trữ như một đơn vị bởi hệ điều hành. Thật không may, định nghĩa của file và cơ sở dữ liệu khá giống nhau, vậy làm sao để phân biệt chúng? Một số nhà cung cấp hệ điều hành Unix gọi các file mật khẩu của họ là các “cơ sở dữ liệu”, song những chuyên gia về cơ sở dữ liệu đã nhanh chóng chỉ ra rằng, thực tế chúng không thực sự là
  4. Chương 1: Căn bản về cơ sở dữ liệu 5 các cơ sở dữ liệu. Rõ ràng, chúng ta cần xem xét tỉ mỉ những định nghĩa này. Để hiểu rõ các định nghĩa, chúng ta cần tìm hiểu về các đặc trưng và thuộc tính riêng có trong cơ sở dữ liệu mà không thể tìm thấy trong những file thông thường. Những đặc trưng và thuộc tính này bao gồm: ●● Quản lý bởi một hệ quản trị cơ sở dữ liệu (DBMS). ●● Các lớp trừu tượng hóa dữ liệu. ●● Độc lập dữ liệu vật lý. ●● Độc lập dữ liệu lôgíc. Những đặc trưng này sẽ được thảo luận trong các phần dưới đây. Hệ quản trị cơ sở dữ liệu Hệ quản trị cơ sở dữ liệu (database management system - DBMS) là một phần mềm được cung ứng bởi nhà cung cấp cơ sở dữ liệu. Các sản phẩm phần mềm như Microsoft Access, Oracle, Microsoft SQL Server, Sybase ASE, DB2, Ingres và MySQL đều là các hệ quản trị cơ sở dữ liệu. Bạn có thể thấy hơi khó hiểu là tại sao lại dùng chữ cái viết tắt DBMS mà không phải DMS. Hãy nhớ, ban đầu, thuật ngữ cơ sở dữ liệu (database) được viết bằng hai từ và dần dần được quy ước trở thành một từ đơn. DBMS cung cấp tất cả các dịch vụ cơ bản cần thiết để tổ chức và duy trì cơ sở dữ liệu, bao gồm: ●● Di chuyển dữ liệu từ cơ sở dữ liệu ra các file dữ liệu vật lý và từ các file dữ liệu vật lý vào cơ sở dữ liệu khi cần thiết. ●● Quản lý việc truy cập dữ liệu đồng thời bởi nhiều người dùng, bao gồm việc ngăn các cập nhật tại cùng một thời điểm xung đột lẫn nhau. ●● Quản lý các giao dịch (transaction) để những thay đổi tới cơ sở dữ liệu của giao dịch phải được thực hiện một cách trọn vẹn như một đơn vị công việc duy nhất hoặc không thực hiện gì cả. Nói cách khác, nếu giao dịch thành công, tất cả các thay đổi cơ sở dữ liệu được giao dịch tạo ra sẽ được lưu vào cơ sở dữ liệu; ngược lại, nếu giao dịch thất bại, sẽ không có bất cứ thay đổi nào được lưu vào cơ sở dữ liệu. ●● Hỗ trợ ngôn ngữ truy vấn (query language) - một hệ thống lệnh do người dùng cơ sở dữ liệu sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu. ●● Cho phép sao lưu dự phòng cơ sở dữ liệu và phục hồi sau sự cố. ●● Cung cấp cơ chế bảo mật để ngăn các truy cập và chỉnh sửa dữ liệu không được cấp phép.
  5. 6 Nhập môn Cơ sở dữ liệu Hỏi chuyên gia Câu hỏi: Tôi nghe nói có thuật ngữ “ngân hàng dữ liệu”. Điểm khác nhau giữa ngân hàng dữ liệu và cơ sở dữ liệu là gì? Trả lời: Ngân hàng dữ liệu và cơ sở dữ liệu là một. Ngân hàng dữ liệu (data bank) là thuật ngữ cũ, được các nhà khoa học phát triển hệ thống cơ sở dữ liệu ban đầu sử dụng. Thực tế, thuật ngữ ngân hàng dữ liệu vẫn đang được sử dụng trong một số ngôn ngữ của loài người, chẳng hạn trong tiếng Bồ Đào Nha, cụm từ banco de dados có nghĩa là ngân hàng dữ liệu. Các lớp trừu tượng hóa dữ liệu Một đặc trưng của cơ sở dữ liệu là khả năng cung cấp cho nhiều người dùng những cách quan sát khác nhau đối với cùng một dữ liệu được lưu trữ trong CSDL, phù hợp với nhu cầu riêng của họ. Những cách quan sát dữ liệu đó được gọi là các view người dùng (user view). Trong trường hợp này, người dùng có thể là một người, hoặc ứng dụng truy cập vào cơ sở dữ liệu với mục đích lưu trữ và/hoặc lấy dữ liệu. Ứng dụng (application) là tập các chương trình máy tính được thiết kế để giải quyết một vấn đề nghiệp vụ cụ thể, chẳng hạn như hệ thống nhập đơn đặt hàng, hệ thống xử lý sổ lương, hay hệ thống kế toán. Khi sử dụng ứng dụng bảng tính điện tử như Microsoft Excel, tất cả người dùng cần chia sẻ một view dữ liệu chung, và view đó phải khớp với cách dữ liệu được lưu trữ trong file dữ liệu. Nếu một người dùng ẩn vài cột trong một trang tính, sắp xếp lại thứ tự các dòng và lưu trang tính lại, thì khi mở trang tính, người dùng tiếp theo sẽ nhìn thấy dữ liệu đúng như những gì mà người dùng trước đã lưu. Một giải pháp khác là mỗi người dùng sẽ lưu bản sao của họ trong một file vật lý riêng, nhưng khi một người dùng tiến hành chỉnh sửa, những người dùng khác sẽ không nhận được các cập nhật mới này. Với cùng một dữ liệu cơ sở, các hệ thống cơ sở dữ liệu cung cấp cho người dùng các view để quan sát dữ liệu ở các góc độ khác nhau. Các view này có thể được điều chỉnh để phù hợp với nhu cầu của mỗi người dùng, bất kể chúng đều bắt nguồn từ cùng một bản sao của dữ liệu được lưu trữ. Vì các view không lưu trữ dữ liệu thực, nên chúng tự động phản ánh bất kỳ thay đổi nào đến các đối tượng cơ sở dữ liệu nằm bên dưới. Quá trình này được thực hiện thông qua các lớp trừu tượng (layer of abstraction), được mô phỏng ở Hình 1-1. Kiến trúc trong Hình 1-1 được ANSI/SPARC (Viện Tiêu chuẩn Quốc gia Hoa Kỳ/Ủy ban Quy hoạch và xét duyệt các tiêu chuẩn) phát triển lần đầu vào những năm 1970. Nó nhanh chóng trở thành nền tảng cho các nỗ lực phát triển và nghiên cứu cơ sở dữ liệu. Hầu hết DBMS hiện đại đều tuân theo kiến trúc này, bao gồm ba lớp chính: Lớp vật lý, lớp lôgíc và lớp ngoài. Kiến trúc ban đầu còn bao gồm lớp khái niệm đã bị loại bỏ do không có nhà cung cấp cơ sở dữ liệu hiện đại nào sử dụng lớp này.
  6. Chương 1: Căn bản về cơ sở dữ liệu 7 Lớp ngoài View 1 View 2 View 3 Độc lập dữ liệu lôgíc Schema nội Lớp lôgíc (Schema lôgíc) Độc lập dữ liệu vật lý File cơ sở File cơ sở File cơ sở File cơ sở File cơ sở Lớp vật lý dữ liệu dữ liệu dữ liệu dữ liệu dữ liệu Hình 1-1 Các lớp cơ sở dữ liệu trừu tượng. Lớp vật lý Lớp vật lý (physical layer) bao gồm các file dữ liệu chứa toàn bộ dữ liệu của cơ sở dữ liệu. Gần như tất cả hệ quản trị cơ sở dữ liệu hiện đại đều cho phép lưu trữ cơ sở dữ liệu trong nhiều file dữ liệu và mỗi file dữ liệu có thể trải trên nhiều ổ cứng vật lý. Với cách sắp xếp như vậy, các ổ cứng có thể làm việc song song để đạt được hiệu suất tối đa. Một ngoại lệ đáng chú ý trong những hệ quản trị cơ sở dữ liệu được nêu ra ở các ví dụ của cuốn sách là Microsoft Access. Microsoft Access lưu toàn bộ cơ sở dữ liệu trong một file vật lý duy nhất. Cách sắp xếp này đơn giản hóa việc sử dụng cơ sở dữ liệu trên hệ thống máy tính cá nhân một người dùng, nhưng lại làm hạn chế khả năng đáp ứng của DBMS trong việc phục vụ cùng một lúc nhiều người dùng cơ sở dữ liệu. Vì vậy, đây không phải là giải pháp phù hợp đối với hệ thống của các doanh nghiệp lớn. Thực tế, Microsoft Access không được thiết kế để trở thành một DBMS mức doanh nghiệp mạnh mẽ. Chúng ta đề cập tới Microsoft Access trong nội dung của cuốn sách không phải vì sản phẩm này cạnh tranh với Oracle hay SQL Server, mà bởi Microsoft Access là ví dụ hay về một DBMS cá nhân với giao diện người dùng cho phép nghiên cứu các khái niệm cơ sở dữ liệu trở nên dễ dàng, thú vị hơn. Người dùng cơ sở dữ liệu không nhất thiết phải hiểu rõ cách dữ liệu được lưu trữ thực tế như thế nào trong file dữ liệu, hay thậm chí các file dữ liệu nào chứa những thành phần dữ liệu liên quan. Trong hầu hết mọi tổ chức, chuyên gia kỹ thuật được coi là quản trị viên cơ sở dữ liệu (database administrator - DBA) có trách nhiệm cài đặt, cấu hình phần mềm cơ sở dữ liệu cũng
  7. 8 Nhập môn Cơ sở dữ liệu như file dữ liệu, giúp người dùng có thể dễ dàng tiếp cận cơ sở dữ liệu. Cùng với hệ điều hành của máy tính, DBMS quản lý file dữ liệu một cách tự động, bao gồm các hoạt động mở, đóng, đọc và ghi file. Khi sử dụng cơ sở dữ liệu, người dùng không nhất thiết phải thao tác trực tiếp với các file dữ liệu vật lý. Trong khi đó, khi làm việc với các phần mềm bảng tính và xử lý văn bản, người dùng cần lưu các tài liệu một cách rõ ràng, xác định cụ thể tên file và vị trí lưu trữ. Nhiều DBMS chạy trên máy tính cá nhân là trường hợp ngoại lệ, vì người dùng được yêu cầu phải tìm và mở một file vật lý trong quá trình truy cập vào cơ sở dữ liệu. Ngược lại, đối với những DBMS mức doanh nghiệp (như Oracle, Sybase ASE, Microsoft SQL Server và MySQL), các file vật lý được quản lý một cách tự động, do đó, khi sử dụng cơ sở dữ liệu, người dùng không bao giờ cần biết tới chúng. Lớp lôgíc Lớp lôgíc (logical layer) hay mô hình lôgíc (logical model) là lớp đầu tiên trong hai lớp trừu tượng của cơ sở dữ liệu: Lớp vật lý tồn tại thực sự trong các file của hệ điều hành, trong khi lớp lôgíc chỉ tồn tại như cấu trúc dữ liệu trừu tượng được tạo thành từ lớp vật lý khi cần thiết. DBMS biến đổi dữ liệu trong các file dữ liệu thành một cấu trúc chung. Đôi khi, lớp này được gọi là schema, thuật ngữ chỉ một tập hợp bao gồm toàn bộ các thành phần dữ liệu được lưu trữ trong một cơ sở dữ liệu cụ thể, hoặc thuộc về một người dùng cơ sở dữ liệu nào đó. Tùy thuộc vào DBMS cụ thể, lớp này có thể chứa tập hợp các bảng hai chiều, một cấu trúc phân cấp tương tự như sơ đồ tổ chức của một công ty hay vài cấu trúc khác. Trong mục “Các mô hình cơ sở dữ liệu thông dụng” ở phần sau của chương sẽ mô tả chi tiết hơn về các cấu trúc này. Lớp bên ngoài Lớp ngoài (external layer) hay mô hình bên ngoài (external model) là lớp trừu tượng thứ hai trong cơ sở dữ liệu. Lớp này bao gồm các view người dùng được trình bày ở phần trên, được gọi chung là subschema (schema con). Ở lớp này, người dùng cơ sở dữ liệu (các chương trình ứng dụng cũng như người dùng thực sự) truy cập vào cơ sở dữ liệu sẽ kết nối và gửi các truy vấn tới chúng. Lý tưởng nhất là chỉ có DBA mới có thể làm việc với các lớp vật lý và lôgíc. DBMS kiểm soát việc chuyển đổi các thành phần được chọn từ một hoặc nhiều cấu trúc dữ liệu ở lớp lôgíc thành từng view người dùng. View người dùng ở lớp này có thể được định nghĩa trước, đồng thời được lưu trữ trong cơ sở dữ liệu để tái sử dụng, hoặc có thể là thành phần tạm thời được DBMS tạo ra, nhằm lưu kết quả của một truy vấn ad-hoc tới cơ sở dữ liệu đến khi người dùng không sử dụng nữa. Truy vấn ad-hoc (hay còn gọi là truy vấn tức thời, truy vấn phi chuẩn tắc), là truy vấn không được lập kế hoạch cẩn thận và không được tái sử dụng. View sẽ được trình bày chi tiết hơn ở Chương 2. Độc lập dữ liệu vật lý Khả năng thay đổi cấu trúc file vật lý của cơ sở dữ liệu mà không làm gián đoạn người dùng và các quá trình đang diễn ra được gọi là độc lập dữ liệu vật lý (physical data independence). Như đã thấy ở Hình 1-1, ranh giới phân cách giữa lớp vật lý với lớp lôgíc tạo ra sự độc lập dữ liệu vật lý trong một DBMS. Bạn nên hiểu, độc lập dữ liệu vật lý không phải là thuộc tính “có hay không”, mà là đặc tính cho thấy DBMS này có thể có ít tính độc lập dữ liệu hơn so với DBMS khác. Thước
  8. Chương 1: Căn bản về cơ sở dữ liệu 9 đo cho tính độc lập dữ liệu vật lý, đôi khi còn được gọi là mức độ độc lập dữ liệu vật lý, là có thể tạo ra bao nhiêu thay đổi trong hệ thống file mà không gây ảnh hưởng tới lớp lôgíc. Khi các hệ thống chưa cung cấp khả năng độc lập dữ liệu, thậm chí một thay đổi nhỏ tới cách lưu trữ dữ liệu cũng yêu cầu bộ phận lập trình phải thay đổi mọi chương trình máy tính sử dụng dữ liệu, một công việc tốn kém và ngốn nhiều thời gian. Tất cả hệ thống máy tính hiện đại đều có một số mức độ độc lập dữ liệu vật lý. Chẳng hạn, nếu được sao chép từ ổ cứng tới ổ đĩa mềm hay ổ lưu trữ USB, bảng tính trên máy tính cá nhân vẫn tiếp tục làm việc chính xác. Sự khác nhau đáng kể giữa hiệu năng (tốc độ) của các thiết bị này không quan trọng, vấn đề nằm ở chỗ, các thiết bị này có cấu trúc vật lý hoàn toàn khác nhau, hệ điều hành trên máy tính cá nhân sẽ tự động kiểm soát những khác biệt đó, đồng thời chuyển dữ liệu trong file cho ứng dụng (trong ví dụ này là chương trình bảng tính, chẳng hạn như Microsoft Excel), và cuối cùng trình bày với người dùng theo cùng một cách thức. Tuy nhiên, đối với hầu hết các hệ thống cá nhân, người dùng phải ghi nhớ vị trí đã lưu file để có thể dễ dàng tìm thấy khi cần. DBMS mở rộng mạnh mẽ về tính độc lập dữ liệu vật lý được hệ thống máy tính cung cấp. DBMS cho phép người dùng cơ sở dữ liệu truy cập tới các đối tượng (object) cơ sở dữ liệu (chẳng hạn, các bảng trong một DBMS quan hệ) mà không cần tham chiếu tới các file dữ liệu vật lý. Catalog trong DBMS lưu trữ định nghĩa đối tượng và theo dõi nơi lưu trữ vật lý của các đối tượng. Sau đây là một số ví dụ về những thay đổi vật lý thể được thực hiện theo kiểu độc lập dữ liệu: ●● Di chuyển một file cơ sở dữ liệu từ thiết bị này sang thiết bị khác hay từ thư mục này sang thư mục khác. ●● Tách hay gộp các file dữ liệu của cơ sở dữ liệu. ●● Đổi tên file dữ liệu của cơ sở dữ liệu. ●● Di chuyển một đối tượng cơ sở dữ liệu từ file dữ liệu này sang file dữ liệu khác. ●● Thêm một đối tượng hay một file dữ liệu mới vào cơ sở dữ liệu. Lưu ý, chúng ta không đề cập tới việc xóa bất cứ thứ gì ở đây. Rõ ràng, nếu bạn xóa một đối tượng cơ sở dữ liệu sẽ khiến việc sử dụng đối tượng đó thất bại. Tuy nhiên, mọi thứ khác sẽ không bị ảnh hưởng, ngoại trừ tính sẵn sàng của cơ sở dữ liệu hay dịch vụ bị ảnh hưởng vì một số DBMS sẽ yêu cầu cơ sở dữ liệu hay dịch vụ DBMS ngừng lại trong lúc thực hiện một thay đổi lớp vật lý nào đó. Độc lập dữ liệu lôgíc Khả năng tạo ra các thay đổi tới lớp lôgíc mà không làm gián đoạn người dùng hiện tại và các quá trình đang diễn ra được gọi là độc lập dữ liệu lôgíc (logical data independence). Hình 1-1 cho thấy ranh giới giữa lớp lôgíc và lớp ngoài tạo ra tính độc lập dữ liệu lôgíc. Tương tự như độc lập dữ liệu vật lý, độc lập dữ liệu lôgíc cũng có các mức độ khác nhau. Điều quan trọng bạn nên hiểu là hầu hết thay đổi lôgíc cũng liên quan đến thay đổi vật lý. Chẳng hạn, bạn không thể thêm mới đối tượng cơ sở dữ liệu (ví dụ, một bảng trong một DBMS quan hệ) mà không lưu trữ vật lý dữ liệu ở vị trí nào đó; do vậy, sẽ có một thay đổi tương ứng được tạo ra ở lớp vật lý. Ngoài ra, việc xóa các đối tượng trong lớp lôgíc sẽ khiến mọi thứ đang sử dụng những đối tượng đó thất bại, nhưng không gây ảnh hưởng nào khác.
  9. 10 Nhập môn Cơ sở dữ liệu Sau đây là một số ví dụ về thay đổi an toàn ở lớp lôgíc nhờ tính độc lập dữ liệu lôgíc: ●● Thêm một đối tượng cơ sở dữ liệu mới. ●● Thêm các thành phần dữ liệu vào một đối tượng có sẵn. ●● Khi cần thực hiện một thay đổi ở lớp lôgíc (chẳng hạn như kết hợp hay tách những đối tượng có sẵn), trong trường hợp này có thể tạo view ở mô hình ngoài để thay thế (các xử lý thông qua view thay thế cũng cho kết quả giống như xử lý trực tiếp với đối tượng ban đầu ở lớp lôgíc). Các mô hình cơ sở dữ liệu thông dụng Một mô hình cơ sở dữ liệu cơ bản là kiến trúc DBMS sử dụng để lưu các đối tượng trong cơ sở dữ liệu và liên kết chúng với nhau. Các mô hình cơ sở dữ liệu thông dụng nhất sau đây được trình bày lần lượt theo thứ tự phát triển. Phần tiếp theo sẽ trình bày tóm lược lịch sử của cơ sở dữ liệu để giúp sắp xếp mọi thứ theo trật tự thời gian. File phẳng File phẳng (flat file) là file hệ điều hành “thông thường”, tại đó, các bản ghi nằm trong file không chứa thông tin về cấu trúc file hay bất kỳ mối quan hệ nào giữa các bản ghi để cung cấp cho ứng dụng sử dụng file. Các ứng dụng sử dụng file hay người xem nội dung file cần nắm rõ thông tin về cấu trúc hay ý nghĩa của dữ liệu trong file. Về cơ bản, file phẳng không phải là các cơ sở dữ liệu vì chúng không đáp ứng được các tiêu chí đã đề ra ở phần trước. Tuy nhiên, có hai điều quan trọng bạn cần hiểu rõ ở đây. Trước hết, file phẳng thường được dùng để lưu trữ thông tin cơ sở dữ liệu. Trong trường hợp này, hệ điều hành vẫn không hiểu được nội dung và cấu trúc của các file, nhưng DBMS chứa siêu dữ liệu (metadata) cho phép chuyển giữa file phẳng trong lớp vật lý và các cấu trúc cơ sở dữ liệu nằm trong lớp lôgíc. Theo nghĩa đen, siêu dữ liệu có nghĩa là “dữ liệu về dữ liệu”, là thuật ngữ được sử dụng khi đề cập tới những thông tin mà cơ sở dữ liệu lưu trữ trong catalog để mô tả dữ liệu được lưu trong cơ sở dữ liệu và mối quan hệ giữa các dữ liệu. Chẳng hạn, siêu dữ liệu về một khách hàng có thể bao gồm tất cả các thành phần dữ liệu được thu thập về khách hàng (như tên, địa chỉ và trạng thái tài khoản) cùng với độ dài, giá trị dữ liệu tối thiểu, tối đa và mô tả ngắn gọn về từng thành phần dữ liệu. Thứ hai, các file phẳng tồn tại trước khi có cơ sở dữ liệu, và các hệ thống cơ sở dữ liệu sơ khai đã được phát triển từ hệ thống file phẳng. Trên Hình 1-2 là một hệ thống file phẳng mẫu, một phần nhỏ dữ liệu của công ty giả tưởng tên là Northwind Traders, nhà cung cấp các mặt hàng thực phẩm đa quốc gia (và là một cơ sở dữ liệu mẫu của Microsoft). Nhớ rằng, các tiêu đề cột (Customer ID, Company Name…) được đưa vào chỉ với mục đích minh họa - chỉ có các bản ghi dữ liệu được lưu trữ trong những file thực sự. Dữ liệu khách hàng được lưu trữ trong file Customer, ở đó, mỗi bản ghi đại diện cho một khách hàng của Northwind. Mỗi khách hàng của Northwind có một bản ghi trong file Employee, và mỗi sản phẩm được Northwind bán ra có một bản ghi trong file Product. Dữ liệu về đơn đặt hàng (đơn đặt hàng của khách hàng với Northwind) được lưu trữ trong hai file phẳng khác. File Order chứa một bản ghi của mỗi đơn đặt hàng từ khách hàng, lưu dữ liệu về đơn đặt hàng, như ID của khách hàng và tên của nhân viên đã nhận đơn đặt hàng từ khách. File Order Detail chứa các dòng chi tiết
  10. Chương 1: Căn bản về cơ sở dữ liệu 11 của đơn đặt hàng, mỗi bản ghi cho một dòng chi tiết (một đơn đặt hàng có thể chứa nhiều dòng chi tiết, mỗi dòng chi tiết là một sản phẩm được đặt hàng). Mỗi dòng chi tiết gồm các dữ liệu như đơn giá và số lượng. Chương trình ứng dụng (application program) là một đơn vị lôgíc chương trình máy tính, thực hiện một chức năng nào đó trong hệ thống ứng dụng. Northwind Traders có một chương trình ứng dụng in ra danh sách tất cả các đơn đặt hàng. Ứng dụng phải kết nối các dữ liệu giữa năm file bằng cách đọc một đơn đặt hàng và thực hiện những bước sau: 1. Sử dụng ID của khách hàng (Customer ID) để tìm tên của họ trong file Customer. 2. Sử dụng ID của nhân viên (Employee ID) để tìm tên của nhân viên liên quan trong file Employee. 3. Sử dụng ID của đơn đặt hàng (Order ID) để tìm các dòng chi tiết tương ứng trong file Order Detail. 4. Đối với mỗi dòng chi tiết, sử dụng ID của sản phẩm (Product ID) để tìm tên sản phẩm tương ứng trong file Product. Việc này có vẻ khá phức tạp khi chúng ta đang cố gắng in ra một danh sách đơn giản tất cả các đơn đặt hàng. Dù vậy, đây vẫn là thiết kế dữ liệu tốt nhất có thể cho một hệ thống file phẳng. Giải pháp thiết kế khác là kết hợp tất cả các thông tin vào một file dữ liệu đơn với toàn bộ thông tin về khách hàng, nhân viên và đơn đặt hàng vào một bản ghi duy nhất đối với mỗi đơn đặt hàng. Mặc dù quá trình này giúp đơn giản hóa việc nhận dữ liệu ở mức tối đa, nhưng bạn thấy, File Customer Customer ID Company Name Contact First Name Contact Last Name Job Title City State 6 Company F Francisco Pérez-Olaeta Purchasing Manager Milwaukee WI 26 Company Z Run Liu Accounting Assistant Miami FL File Employee Employee ID First Name Last Name Title 2 Andrew Cencini Vice President, Sales 5 Steven Thrope Sales Manager 9 Anne Hellung-Larsen Sales Representative File Product Product ID Product Code Product Name Category Quantity Per Unit List Price 5 NWTO-5 Northwind Traders Olive Oil Oil 36 boxes $21.35 7 NWTDFN-7 Northwind Traders Dried Pears Dried Fruit & Nuts 12 - 1 lb pkgs $30.00 40 NWTCM-40 Northwind Traders Crab Meat Canned Meat 24 - 4 oz tins $18.40 41 NWTSO-41 Northwind Traders Clam Chowder Soups 12 - 12 oz cans $9.65 48 NWTCA-48 Northwind Traders Chocolate Candy 10 pkgs $12.75 51 NWTDFN-51 Northwind Traders Dried Apples Dried Fruit & Nuts 50 - 300 g pkgs $53.00
  11. 12 Nhập môn Cơ sở dữ liệu File Order Order ID Customer ID Employee ID Order Date Shipped Date Shipping Fee 51 26 9 4/5/2006 4/5/2006 $60.00 56 6 2 4/3/2006 4/3/2006 $0.00 79 6 2 6/23/2006 6/23/2006 $0.00 File Order Detail Order ID Product ID Unit Price Quantity 51 5 $21.35 15 51 41 $9.65 21 51 40 $18.40 2 56 48 $12.75 20 79 7 $30.00 14 79 51 $53.00 8 Hình 1-2 Hệ thống đặt hàng trên file phẳng. toàn bộ dữ liệu khách hàng lúc này đã bị lặp lại trên mỗi dòng chi tiết của đơn đặt hàng. Có lẽ bạn sẽ không thể thêm khách hàng mới cho đến khi khách hàng đó có một đơn đặt hàng. Và nếu có ai đó xóa toàn bộ đơn đặt hàng của khách, bạn sẽ mất toàn bộ thông tin về họ. Tuy nhiên, điều tồi tệ nhất ở đây là khi thông tin của khách hàng bị thay đổi, bạn sẽ phải tìm kiếm và cập nhật mọi bản ghi chứa dữ liệu về khách hàng bị lặp lại. Bạn sẽ tìm hiểu vấn đề này kỹ hơn ở Chương 7 khi chúng ta nghiên cứu về thiết kế cơ sở dữ liệu lôgíc. Một cách tiếp cận khác thường được sử dụng trong hệ thống file phẳng là kết hợp tất cả các file liên quan mật thiết với nhau, như file Order và file Order Detail, thành một file mà trong đó, các dòng chi tiết của đơn đặt hàng sẽ được đặt kế tiếp với bản ghi tiêu đề tương ứng với đơn hàng và một thành phần dữ liệu Record Type giúp ứng dụng phân biệt giữa hai kiểu bản ghi. Ở cách tiếp cận này, ID của đơn đặt hàng bị loại bỏ khỏi bản ghi Order Detail, bởi ứng dụng biết bản ghi Order Detail thuộc về đơn đặt hàng nào nhờ vị trí của nó trong file (nằm sau bản ghi Order). Mặc dù cách tiếp cận này khiến các dữ liệu đơn đặt hàng được kết nối một cách dễ dàng, song nó cũng phức tạp khi kết hợp các loại bản ghi khác nhau vào cùng một file, khiến việc phát triển trở nên mất thời gian và phức tạp hơn. Tựu trung lại, vấn đề tồi tệ nhất với cách tiếp cận file phẳng là định nghĩa nội dung của mỗi file, và lôgíc cần thiết để kết nối dữ liệu từ nhiều file phẳng phải nằm trong mỗi chương trình ứng dụng yêu cầu các file này, vì thế làm gia tăng chi phí và sự phức tạp của chương trình ứng dụng. Vấn đề trên chính là động lực giúp các nhà khoa học máy tính tìm kiếm một cách thức tổ chức dữ liệu tốt hơn.
  12. Chương 1: Căn bản về cơ sở dữ liệu 13 Mô hình phân cấp Các cơ sở dữ liệu sơ khai đều tuân theo mô hình phân cấp (hierarchical model), được cải tiến từ hệ thống file thành cơ sở dữ liệu, với các bản ghi được sắp xếp theo một cấu trúc phân cấp gần giống như sơ đồ tổ chức. Mỗi file trong hệ thống file phẳng trở thành một kiểu bản ghi (record type), hoặc nút (node) theo thuật ngữ phân cấp. Tuy nhiên, thuật ngữ bản ghi (record) được sử dụng ở đây nhằm mục đích đơn giản hóa. Những bản ghi được kết nối bằng các con trỏ (pointer) chứa địa chỉ của bản ghi liên quan. Các con trỏ thông báo cho hệ thống máy tính bản ghi nằm ở đâu về mặt vật lý, giống như địa chỉ đường phố hướng dẫn bạn cách đi tới một tòa nhà trong một thành phố, một URL đưa bạn tới một trang web nào đó trên Internet, hay tọa độ GPS thông báo vị trí địa lý hiện tại của bạn. Mỗi con trỏ tạo ra một mối quan hệ cha - con (parent-child relationship), hay còn gọi là quan hệ một - nhiều (one-to-many relationship), trong đó, một cha có thể có nhiều con; tuy nhiên, mỗi con lại chỉ có thể có một cha. Mối quan hệ này tương tự như mối quan hệ trong tổ chức kinh doanh truyền thống, ở đó, mỗi quản lý có thể có nhiều nhân viên báo cáo trực tiếp; tuy nhiên, mỗi nhân viên lại chỉ có một quản lý duy nhất. Vấn đề rõ ràng đối với mô hình phân cấp trên là, một vài dữ liệu không phù hợp với quy tắc của cấu trúc phân cấp này, chẳng hạn một đơn đặt hàng, có thể có một cha là khách hàng và một cha khác là nhân viên lập đơn đặt hàng. (Các mối quan hệ dữ liệu được trình bày chi tiết hơn ở Chương 2). Cơ sở dữ liệu phân cấp nổi tiếng nhất là Information Management System (IMS) của IBM. Hình 1-3 trình bày cấu trúc phân cấp trong mô hình phân cấp của cơ sở dữ liệu Northwind Traders. Bạn sẽ nhận ra các kiểu bản ghi Customer, Employee, Product, Order và Order Detail như được giới thiệu ở phần trước. So sánh cấu trúc phân cấp với hệ thống file phẳng trong Hình 1-2, chú ý, các bản ghi Employee và Product ở cấu trúc phân cấp có nét đứt ở giữa, vì chúng Hình 1-3 Cấu trúc mô hình phân cấp của Northwind. không thể được nối với những bản ghi thuộc kiểu còn lại thông qua con trỏ. Hình trên minh họa hạn chế lớn nhất của mô hình phân cấp, khiến mô hình này bị ngưng sử dụng: Không bản ghi nào có thể có nhiều hơn một cha. Do đó, ta không thể kết nối bản ghi Employee với bản ghi Order, vì các bản ghi Order đã có một bản ghi Customer là cha. Tương tự, bản ghi Product cũng không thể được kết nối với bản ghi Order Detail, vì các bản ghi Order Detail đã có một bản ghi Order là
  13. 14 Nhập môn Cơ sở dữ liệu cha. Các kỹ thuật viên cơ sở dữ liệu đã phải giải quyết hạn chế này bằng cách kết nối những bản ghi cha “bổ sung” từ chương trình ứng dụng, tương tự như trong hệ thống file phẳng, hoặc lặp lại tất cả các bản ghi dưới mỗi cha, một cách làm rất lãng phí tài nguyên đĩa cứng lẽ ra đáng được coi trọng, chưa kể còn gây nhiều khó khăn cho việc đồng bộ hóa những dữ liệu không cần thiết. Không có cách nào trong hai cách trên là giải pháp chấp nhận được, vì thế IBM đã điều chỉnh IMS để cho phép một bản ghi có thể có nhiều cha. Kết quả, một mô hình dữ liệu mới được tạo ra mang tên mô hình phân cấp mở rộng (extended hierarchical), có đặc điểm chức năng gần giống với mô hình cơ sở dữ liệu mạng sẽ được trình bày ở phần tiếp theo. Hình 1-4 trình bày nội dung một số bản ghi được lựa chọn trong thiết kế mô hình phân cấp của Northwind. Để đơn giản hóa, chúng ta đã loại bỏ một số thành phần dữ liệu, nhưng nếu muốn xem lại nội dung của mỗi bản ghi một cách rõ ràng, hãy xem lại Hình 1-2. Bản ghi của khách hàng 6 (Customer: 6) có một con trỏ trỏ tới đơn đặt hàng đầu tiên (ID 56), và đơn đặt hàng này lại có một con trỏ trỏ tới đơn đặt hàng tiếp theo (ID 79). Bạn có thể nhận ra, đơn đặt hàng 79 là đơn đặt hàng cuối cùng của khách, vì nó không có con trỏ nào trỏ tới đơn đặt hàng tiếp theo. Quan sát lớp tiếp theo trong phân cấp, đơn đặt hàng 79 có một con trỏ trỏ tới bản ghi Order Detail (của Product 7), và bản ghi này lại có một con trỏ trỏ tới bản ghi thông tin chi tiết tiếp theo (của Product 51). Order Detail: Customer: 6 Order: 5 6 Product 4 8 Order Detail: Order Detail: Order: 7 9 Product 7 Product 5 1 Hình 1-4 Nội dung bản ghi trong mô hình phân cấp của Northwind. Như bạn thấy, mỗi lớp trong phân cấp có một chuỗi nhiều con trỏ kết nối các bản ghi theo thứ tự hợp lý. Một khác biệt quan trọng nữa giữa hệ thống file phẳng và mô hình phân cấp là: khóa (định danh) của bản ghi cha bị loại khỏi bản ghi con trong mô hình phân cấp, bởi các con trỏ kiểm soát mối quan hệ giữa các bản ghi. Do đó, ID của khách hàng và ID của nhân viên bị loại khỏi bản ghi Order, và ID của sản phẩm bị loại khỏi bản ghi Order Detail. Giữ lại các thông tin trên không phải là ý kiến hay, vì việc này có thể khiến các thông tin trái ngược, chẳng hạn như một đơn đặt hàng, được một khách hàng trỏ tới trong khi chứa ID của một khách hàng khác. Mô hình mạng Mô hình cơ sở dữ liệu mạng (network database model) được phát triển vào cùng thời điểm với mô hình cơ sở dữ liệu phân cấp. Một ủy ban gồm các đại diện của những công ty trong ngành đã được thành lập để cùng xây dựng một phải pháp hiệu quả hơn. Kẻ hoài nghi cho rằng, con lạc đà mà
  14. Chương 1: Căn bản về cơ sở dữ liệu 15 ủy ban thiết kế ra là một con ngựa, và điều đó có lẽ đúng trong trường hợp này. Cơ sở dữ liệu nổi tiếng nhất dựa trên mô hình mạng là Integrated Database Management System (IDMS), ban đầu được phát triển bởi Cullinane (sau đổi tên là Cullinet). Sản phẩm đã được cải tiến để trở thành một cơ sở dữ liệu quan hệ và được đặt tên là IDMS/R, cuối cùng được bán cho Computer Associates. Cũng như mô hình phân cấp, kiểu bản ghi (hay đơn giản là bản ghi) đại diện cho các file riêng trong hệ thống file phẳng, và những bản ghi đó được kết nối với nhau thông qua mối quan hệ một - nhiều, còn được gọi là quan hệ sở hữu - thành viên (owner-member) hay các tập hợp (set) trong thuật ngữ mô hình mạng. Chúng ta sử dụng lại thuật ngữ cha (parent) và con (child) cho dễ hiểu. Ở mô hình phân cấp, các con trỏ địa chỉ vật lý sẽ được sử dụng để kết nối những bản ghi liên quan, và bất kỳ ID của bản ghi cha nào cũng sẽ bị loại bỏ khỏi bản ghi con để tránh xảy ra sự thiếu nhất quán. Ngược lại với mô hình phân cấp, các mối quan hệ được đặt tên, từ đó, lập trình viên có thể hướng dẫn DBMS sử dụng một mối quan hệ nào đó để chuyển từ bản ghi này sang bản ghi khác trong cơ sở dữ liệu, cho phép một kiểu bản ghi có thể trở thành con trong nhiều mối quan hệ khác nhau. Hình 1-5 Cấu trúc mô hình mạng của Northwind. Mô hình mạng mang lại sự linh hoạt cao hơn, nhưng - thường với các hệ thống máy tính - nó lại thiếu sự đơn giản. Cấu trúc mô hình mạng của Northwind, như trong Hình 1-5, đều có toàn bộ bản ghi tương đương với cấu trúc mô hình phân cấp ở Hình 1-3. Để thuận tiện, quy ước mũi tên sẽ trỏ từ cha sang con. Chú ý, lúc này, các bản ghi Customer và Employee đã có các đường nét liền trong sơ đồ cấu trúc, vì chúng có thể được cài đặt một cách trực tiếp ngay trong cơ sở dữ liệu. Ở ví dụ các nội dung trong mô hình mạng tại Hình 1-6, mỗi mối quan hệ cha - con được mô tả bằng các loại đường khác nhau, với ý nghĩa mỗi quan hệ có một tên gọi khác nhau. Sự khác biệt này rất quan trọng, vì nó chỉ ra mặt hạn chế lớn nhất của mô hình mạng - tính phức tạp. Thay vì chỉ sử dụng một con đường để xử lý các bản ghi, ở đây, ta phải dùng rất nhiều đường. Chẳng hạn, bắt đầu với bản ghi của Employee 2 (Phó Giám đốc kinh doanh Andrew Cencini) và dùng nó để tìm đơn đặt hàng đầu tiên (ID 56). Bạn sẽ đi theo chuỗi đơn đặt hàng thuộc về Customer 6 (Công ty F). Mặc dù thực tế, bạn đang ở vị trí đơn đặt hàng đầu tiên của khách hàng đó, song bạn không có cách nào để nhận biết được. Để tìm kiếm toàn bộ những đơn đặt hàng khác của khách hàng này, bạn phải tìm cách đi từ điểm hiện tại tới điểm cuối của chuỗi, sau đó trở lại điểm xuất phát
  15. 16 Nhập môn Cơ sở dữ liệu và tiếp tục đi tiếp đến khi bạn quay lại đơn đặt hàng mà bạn bắt đầu. Để quá trình này có thể diễn ra, toàn bộ chuỗi con trỏ nằm trong cơ sở dữ liệu mô hình mạng phải là vòng tròn. Do đó, bạn có thể di chuyển con trỏ từ đơn đặt hàng 56 tới đơn hàng tiếp theo (ID 79), sau đó tới bản ghi khách hàng (ID 6), và cuối cùng quay lại đơn hàng 56. Hãy hình dung, chuỗi các con trỏ vòng quanh này có thể dễ dàng tạo ra một vòng lặp vô tận (infinite loop - một quá trình không bao giờ kết thúc), khiến người dùng cơ sở dữ liệu không thể theo dõi được mình đang ở đâu trong cơ sở dữ liệu, và làm thế nào để tới được đó. Cấu trúc của World Wide Web có thể coi là gần tương đương với một cơ sở dữ liệu mạng, vì mỗi trang web chứa các liên kết tới những trang web liên quan khác, và các tham chiếu vòng quanh tồn tại rất phổ biến. Hình 1-6 Bản ghi trong mô hình mạng của Northwind. Quá trình di chuyển trong một cơ sở dữ liệu mạng được gọi là “di chuyển trong một tập hợp” (walking the set), bởi vì nó bao gồm việc chọn những con đường đi qua cấu trúc cơ sở dữ liệu, giống như chọn đường đi trong rừng, khi có nhiều con đường cùng đi tới đích để chọn. Không có một bản đồ chứa đầy đủ thông tin sẽ rất dễ bị lạc, hay tồi tệ hơn là tìm đến ngõ cụt, và bạn sẽ không thể tìm thấy bản ghi đích mong muốn nếu như không quay lại con đường đã đi. Sự phức tạp của mô hình cùng với chi phí của đội ngũ chuyên gia kỹ thuật cần thiết để duy trì là những nguyên nhân chính dẫn đến việc ngừng sử dụng mô hình này. Mô hình quan hệ Ngoài tính phức tạp, các mô hình cơ sở dữ liệu phân cấp và mạng còn có một điểm chung nữa - đó là thiếu sự mềm dẻo. Bạn phải đi theo những con đường được định trước để xử lý dữ liệu một cách hiệu quả. Các lệnh truy vấn ad-hoc, chẳng hạn như tìm kiếm tất cả những đơn đặt hàng có thời gian
  16. Chương 1: Căn bản về cơ sở dữ liệu 17 đưa hàng trong một tháng nào đó, phải quét toàn bộ cơ sở dữ liệu để phục vụ cho việc tìm kiếm. Các nhà khoa học máy tính vẫn đang tiếp tục tìm kiếm một cách thức giải quyết vấn đề hiệu quả hơn. Chỉ có một số sự kiện diễn ra trong lịch sử phát triển máy tính thực sự mang tính cách mạng, và công trình nghiên cứu của E.F. (Ted) Codd làm tiền đề cho sự phát triển mô hình quan hệ là một trong số đó. Mô hình quan hệ (relational model) dựa trên ý tưởng mọi con đường được định trước thông qua một cấu trúc dữ liệu là giải pháp quá chặt chẽ, đặc biệt khi nhu cầu hỗ trợ các truy vấn ad-hoc ngày càng tăng lên. Người dùng cơ sở dữ liệu không thể nghĩ đầy đủ về mọi khả năng sử dụng dữ liệu trước khi tạo ra cơ sở dữ liệu, do đó, các đường đi qua dữ liệu được xác định trước tạo ra những “nhà tù dữ liệu”. Khi cần, mô hình quan hệ cho phép người dùng liên kết các bản ghi thay vì định nghĩa rõ từ đầu, khi những bản ghi này được lưu trữ lần đầu trong cơ sở dữ liệu. Ngoài ra, mô hình quan hệ được xây dựng sao cho các truy vấn làm việc với tập dữ liệu (ví dụ, tìm tất cả khách hàng có số dư nợ chưa thanh toán), chứ không phải làm việc với một bản ghi riêng lẻ, như mô hình mạng và mô hình phân cấp vẫn làm. Mô hình quan hệ biểu diễn dữ liệu dưới dạng các bảng hai chiều, giống như các trang tính. Tuy nhiên, không giống như trang tính, dữ liệu trong mô hình quan hệ không nhất thiết phải lưu trữ dưới dạng bảng và mô hình này cho phép kết hợp (kết nối (join) - theo thuật ngữ quan hệ) các bảng thành những view, cũng được biểu diễn dưới dạng bảng hai chiều. Tóm lại, mô hình quan hệ tuân theo mô hình ANSI/SPARC, do đó mang tính độc lập dữ liệu vật lý và độc lập dữ liệu lôgíc. Thay vì liên kết các bản ghi có quan hệ bằng con trỏ địa chỉ vật lý, giống như mô hình mạng hay mô hình phân cấp thường làm, mô hình quan hệ lưu trữ thành phần dữ liệu chung tại mỗi bảng, giống như trong các hệ thống file phẳng. Hình 1-7 biểu diễn thiết kế mô hình quan hệ cho Northwind. Hãy xem lại Hình 1-2, chúng ta thấy rằng, mỗi file trong hệ thống file phẳng được ánh xạ thành một bảng trong mô hình quan hệ. Như bạn sẽ được tìm hiểu trong Chương 6, không phải lúc nào phép ánh xạ một - một giữa file phẳng với bảng quan hệ cũng đúng, tuy nhiên đây là trường hợp phổ biến. Trong Hình 1-7, đường nối giữa mỗi bảng biểu diễn các quan hệ một - nhiều, đầu mút kết thúc bằng một đường thẳng biểu thị cho bên “một”, đầu mút kết thúc bằng ba đoạn thẳng (giống hình vương miện) biểu thị cho bên “nhiều” của quan hệ. Ví dụ, “một” khách hàng (Customer) liên kết tới “nhiều” đơn hàng (Order) và “một” đơn hàng liên kết với “nhiều” mục chi tiết đơn hàng (Order Detail), bạn có thể kiểm tra điều này bằng cách xem xét những đường nối các bảng trong hình. Kỹ thuật tạo lược đồ trong Hình 1-7 được gọi là lược đồ quan hệ thực thể (entity-relationship diagram - ERD), sẽ được đề cập chi tiết hơn ở Chương 7. Ở Hình 1-8, ba trong số năm bảng được biểu diễn có cùng dữ liệu mẫu trong các cột được chọn. Đặc biệt, để ý thấy, cột Customer ID được lưu trong cả bảng Customer và bảng Order. Khi ID của khách hàng trên một dòng trong bảng Order trùng khớp với ID của khách hàng trong bảng
  17. 18 Nhập môn Cơ sở dữ liệu Hình 1-7 Cấu trúc mô hình quan hệ của Northwind. Bảng Customer Customer ID Company Name Contact First Name Contact Last Name Job Title City State 6 Company F Francisco Pérez-Olaeta Purchasing Manager Milwaukee WI 26 Company Z Run Liu Accounting Assistant Miami FL Bảng Order Order ID Customer ID Employee ID Order Date Shipped Date Shipping Fee 51 26 9 4/5/2006 4/5/2006 $60.00 56 6 2 4/3/2006 4/3/2006 $ 0.00 79 6 2 6/23/2006 6/23/2006 $ 0.00 Bảng Employee Employee ID First Name Last Name Title 2 Andrew Cencini Vice President, Sales 5 Steven Thrope Sales Manager 9 Anne Hellung-Larsen Sales Representative Hình 1-8 Các nội dung của bảng quan hệ Northwind. Customer, đơn hàng đó thuộc về khách hàng tương ứng. Tương tự, cột Employee ID được lưu trữ trong cả hai bảng Employee và Order biểu thị cho nhân viên tiếp nhận đơn hàng. Tính đơn giản, dễ hiểu là những yếu tố chính khiến mô hình quan hệ trở nên phổ biến và được chấp nhận rộng rãi. Mô hình quan hệ là nội dung chính của cuốn sách này vì nó rất phổ biến trong các hệ thống công nghệ thông tin hiện thời cũng như trong nhiều năm tới.
  18. Chương 1: Căn bản về cơ sở dữ liệu 19 Mô hình hướng đối tượng Mô hình hướng đối tượng (object-oriented - OO) bắt đầu từ những năm 1970, nhưng chưa được sử dụng theo mục đích thương mại cho tới những năm 1990. Mô hình hướng đối tượng bất ngờ trở nên phổ biến như vậy xuất phát từ thực tế lúc bấy giờ, hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) không thể xử lý được các loại dữ liệu phức tạp như hình ảnh, bản vẽ, file video, âm thanh. Sự bùng nổ của Internet và World Wide Web đã tạo ra nhu cầu cấp thiết phải cung cấp các kiểu dữ liệu phức tạp. Đối tượng (object) là nhóm lôgíc tập hợp những dữ liệu liên quan và lôgíc chương trình biểu diễn cho các sự vật trong thế giới thực, như khách hàng, nhân viên, đơn hàng hay sản phẩm. Các thành phần dữ liệu đơn lẻ, như ID, tên khách hàng, được gọi là biến (variable) trong mô hình OO và được lưu trữ bên trong mỗi đối tượng. Bạn có thể hiểu biến chính là biến thể hiện (instance variable) hay thuộc tính (property), nhưng chúng ta chỉ sử dụng thuật ngữ biến để đảm bảo sự nhất quán. Theo thuật ngữ của mô hình hướng đối tượng, phương thức (method) là một bộ phận của lôgíc chương trình ứng dụng, xử lý trên một đối tượng cụ thể, cung cấp một chức năng xác định, như kiểm tra giới hạn dư nợ của khách hàng hay cập nhật địa chỉ của khách hàng. Trong số các điểm khác biệt giữa mô hình OO với những mô hình đã trình bày, khác biệt quan trọng nhất là các biến chỉ có thể được truy cập thông qua các phương thức. Tính chất này được gọi là đóng gói (encapsulation). Định nghĩa đối tượng được dùng ở đây chỉ áp dụng cho mô hình OO. Thuật ngữ đối tượng cơ sở dữ liệu (database object) sử dụng trong các phần trước chỉ mọi phần tử được đặt tên, đồng thời lưu trong cơ sở dữ liệu không hướng đối tượng (ví dụ như bảng, chỉ mục hoặc view). OO cũng có những khái niệm giống cơ sở dữ liệu quan hệ, do đó, các thuật ngữ có thể giống nhau nhưng có thể không chính xác về mặt nghĩa. Hình 1-9 biểu diễn đối tượng Customer như một ví dụ về việc cài đặt các đối trượng trong OO. Vòng tròn phương thức bao quanh vòng tròn chứa các biến ở trung tâm biểu diễn cho tính Đối Customer tượng Customer Object Thêm khách hàng Phương thức Biến Liệt kê khách hàng Cập nhật thông tin liên hệ Kiểm tra hạn Cập nhật địa chỉ mức tín dụng Thay đổi Cập nhật trạng thái thông tin liên hệ In nhãn thư Hình 1-9 Cấu trúc đối tượng.
  19. 20 Nhập môn Cơ sở dữ liệu đóng gói. Thực tế, bạn có thể hình dung một đối tượng giống như một nguyên tử, trong đó trường điện tử là các phương thức và hạt nhân là các biến. Mỗi khách hàng Northwind có bản sao cấu trúc đối tượng riêng, được gọi là một thể hiện đối tượng (object instance), giống như mỗi khách hàng có một bản sao của cấu trúc bản ghi khách hàng trong hệ thống file phẳng. Thoạt nhìn, mô hình OO có vẻ không hiệu quả vì hình như mỗi thể hiện đòi hỏi các phương thức và định nghĩa các biến phải được lưu trữ dư thừa. Tuy nhiên, không phải lúc nào cũng như vậy. Các đối tượng được tổ chức theo mô hình phân cấp lớp (class hierarchy) sao cho những phương thức chung và định nghĩa biến chỉ được định nghĩa một lần duy nhất, sau đó được kế thừa (inherited) bởi các thành viên trong cùng lớp đó. Biến cũng thuộc về lớp, do đó có thể dễ dàng tích hợp thêm các kiểu dữ liệu mới bằng cách định nghĩa một lớp mới cho những kiểu dữ liệu đó. Mô hình OO cũng hỗ trợ các đối tượng phức hợp (complex object), chứa một hoặc nhiều đối tượng khác. Thông thường, các đối tượng phức hợp được cài đặt bằng cách sử dụng tham chiếu (reference) đối tượng, hay nói cách khác một đối tượng có thể chứa định danh của một hoặc nhiều đối tượng khác. Ví dụ, đối tượng Customer có thể chứa danh sách các đối tượng Order mà khách hàng đó đã đặt hàng, và mỗi đối tượng Order có thể chứa định danh của khách hàng tương ứng. Định danh duy nhất của một đối tượng được gọi là định danh đối tượng (Object Identifier - OID), giá trị này tự động được gán khi mỗi đối tượng được tạo ra và là hằng số (tức là, giá trị này không bao giờ thay đổi). Sự kết hợp của các đối tượng phức hợp và cấu trúc lớp phân cấp giúp cơ sở dữ liệu hướng đối tượng trở nên phù hợp trong việc quản lý dữ liệu không phải là dữ liệu vô hướng như các bản vẽ và lược đồ. Khái niệm hướng đối tượng có rất nhiều ưu điểm, được ứng dụng trong hầu hết các hệ thống máy tính hiện đại. Ví dụ, Microsoft Windows Registry (thư mục chứa các thiết lập và tùy chọn cho hệ điều hành Windows) có cấu trúc phân cấp, và hầu hết ứng dụng thiết kế với sự trợ giúp của máy tính (computer-aided design - CAD) đều sử dụng cơ sở dữ liệu hướng đối tượng để lưu dữ liệu. Mô hình quan hệ đối tượng Mặc dù mô hình hướng đối tượng (OO) có nhiều ưu điểm quan trọng trong việc đóng gói dữ liệu nhằm giảm thiểu tối đa ảnh hưởng của việc thay đổi hệ thống, song do không có khả năng truy vấn ad-hoc, nên mô hình này chỉ phù hợp với một phân đoạn thị trường riêng cần xử lý những dữ liệu phức tạp nhưng không cần tới khả năng truy vấn ad-hoc. Tuy nhiên, một số nhà cung cấp cơ sở dữ liệu quan hệ đã chỉ ra các ưu điểm quan trọng của mô hình OO, đặc biệt là khả năng ánh xạ những kiểu dữ liệu phức tạp, cũng như thêm khả năng giống-như-đối tượng vào các sản phẩm hệ quản trị cơ sở dữ liệu với hy vọng tận dụng được những ưu điểm tốt nhất của cả hai mô hình. Mặc dù những người theo chủ nghĩa hướng đối tượng thuần túy không tán thành, nhưng cách tiếp cận này đã được áp dụng khá rộng rãi, trong khi đó các cơ sở dữ liệu hướng đối tượng thuần túy chỉ được sử dụng trong phân đoạn thị trường riêng. Tên ban đầu của kiểu cơ sở dữ liệu này là cơ sở dữ liệu vạn năng (universal database), và dù những nhà tiếp thị kinh doanh rất thích dùng thuật ngữ này, nhưng giới kỹ thuật lại không bao giờ sử dụng tới, do đó, tên thường dùng cho mô hình này trở thành quan hệ đối tượng (object-relational - OR). Qua lịch sử phát triển, Oracle, DB2, Informix có thể được coi là những hệ quản trị cơ sở dữ liệu OR với nhiều cấp độ khác nhau. Để hiểu mô hình OR một cách đầy đủ, bạn cần có kiến thức sâu hơn về mô hình quan hệ và mô hình OO. Tuy nhiên, hãy nhớ rằng, hệ quản trị cơ sở dữ liệu OR kết hợp các tính năng được
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2