Đây là môn học Cơ Sở Dữ Liệu rất bổ ích cho các bạn trong khoa Công Nghệ Thông Tin. Tuy nhiên, môn này khá là chua cay lắm à nghe, nếu như bạn bỏ buổi học ngày nào môn này, là Tâm Gà xác định bạn sẽ quên ngay kiến thức đang có, vì mỗi ngày học là một hành trình dài để bạn nắm được các cấu trúc dữ liệu trong bộ cơ sở dữ liệu tổng quát nữa. Bạn nào sau này làm nghề kế toán, hay lập trình viên, hay lập trình ứng dụng, sẽ cần phải học kỹ môn này lắm đấy. Cố gắng giống Tâm Gà, đừng bao giờ bỏ một buổi học nào của môn học này hoặc tỏ ra vẻ lười biếng trong việc học, vì đây là kiến thức cũng như nền tảng để bạn học tiếp các học kỳ phía sau nữa đấy nhé. Môn này rất khó ...
I. Định nghĩa một Cơ Sở Dữ Liệu là gì ?
Cơ sở dữ liệu là một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bị lưu trữ thông tin thứ cấp (như băng từ, đĩa từ ...) để có thể thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích khác nhau. Trong định nghĩa này cần nhấn mạnh những khía cạnh của định nghĩa được lưu ý qua các từ gạch chân. Trước hết, Cơ Sở Dữ Liệu phải là một tập hợp các thông tin mang tính hệ thống chứ không phải là các thông tin rời rạc, không có mối quan hệ với nhau. Các thông tin này phải có cấu trúc và tập hợp các thông tin này phải có khả năng đáp ứng các nhu cầu khai thác của nhiều người sử dụng một cách đồng thời. Đó cũng chính là các đặc trưng của Cơ Sở Dữ Liệu.
Rõ ràng, ưu điểm nổi bật của Cơ Sở Dữ Liệu là: Giảm sự trùng lặp thông tin xuống mức thấp nhất và do đó bảo đảm được tính nhất quán và toàn vẹn dữ liệu. Đảm bảo dữ liệu có thể được truy xuất theo nhiều cách khác nhau. Khả năng chia sẻ thông tin cho nhiều người sử dụng và nhiều ứng dụng khác nhau. Tuy nhiên, để đạt được các ưu điểm trên, Cơ Sở Dữ Liệu đặt ra những vấn đề cần phải giải quyết. Đó là:
- Tính chủ quyền của dữ liệu. Do tính chia sẻ của Cơ Sở Dữ Liệu nên tính chủ quyền của dữ liệu có thể bị lu mờ và làm mờ nhạt tinh thần trách nhiệm, được thể hiện trên vấn đề an toàn dữ liệu, khả năng biểu diễn các mối liên hệ ngữ nghĩa của dữ liệu, và tính chính xác của dữ liệu. Điều này có nghĩa là người khai thác Cơ Sở Dữ Liệu phải có nghĩa vụ cập nhật các thông tin mới nhất của Cơ Sở Dữ Liệu.
- Tính bảo mật và quyền khai thác thông tin của người sử dụng. Do có nhiều người được phép khai thác Cơ Sở Dữ Liệu một cách đồng thời nên cần phải có một cơ chế bảo mật và phân quyền hạn khai thác Cơ Sở Dữ Liệu. Các hệ điều hành nhiều người sử dụng hay hệ điều hành mạng cục bộ (Novelll Netware, Windows For WorkGroup, WinNT, ...) đều có cung cấp cơ chế này.
- Tranh chấp dữ liệu. Nhiều người được phép truy nhập vào cùng một tài nguyên dữ liệu (Data Source) của Cơ Sở Dữ Liệu với những mục đích khác nhau: Xem, thêm, xóa hoặc sửa dữ liệu. Cần phải có một cơ chế ưu tiên truy nhập dữ liệu cũng như cơ chế giải quyết tình trạng khóa chết (DeadLock) trong quá trình khai thác cạnh tranh. Cơ chế ưu tiên có thể được thực hiện bằng việc cấp quyền (hay mức độ) ưu tiên cho từng người khai thác - người nào được cấp quyền hạn ưu tiên cao hơn thì được ưu tiên truy nhập dữ liệu trước; theo biến có hoặc loại truy nhập - quyền đọc được ưu tiên trước quyền ghi dữ liệu; dựa trên thời điểm truy nhập - ai có yêu cầu truy xuất trước thì có quyền truy nhập dữ liệu trước; hoặc theo cơ chế lập lịch truy xuất hay các cơ chế khóa ...
- Đảm bảo dữ liệu khi có sự cố. Việc quản lý dữ liệu tập trung có thể làm tăng khả năng mất mát hoặc sai lệch thông tin khi có sự cố như mất điện đột xuất, một phần đĩa lưu trữ Cơ Sở Dữ Liệu bị hư v.v... Một số hệ điều hành mạng có cung cấp dịch vụ sao lưu ảnh đĩa cứng (cơ chế sử dụng đĩa cứng dự phòng - RAID), tự động kiểm tra và khắc phục lỗi khi có sự cố, tuy nhiên, bên cạnh dịch vụ của hệ điều hành, để đảm bảo Cơ Sở Dữ Liệu luôn luôn ổn định, một Cơ Sở Dữ Liệu nhất thiết phải có một cơ chế khôi phục dữ liệu khi các sự cố bất ngờ xảy ra.
II. Các đối tượng sử dụng Cơ Sở Dữ Liệu
Những người sử dụng Cơ Sở Dữ Liệu không chuyên về lĩnh vực tin học và Cơ Sở Dữ Liệu, do đó Cơ Sở Dữ Liệu cần có các công cụ để cho những người sử dụng không chuyên có thể sử dụng để khai thác Cơ Sở Dữ Liệu khi cần thiết. Các chuyên viên tin học biết khai thác Cơ Sở Dữ Liệu. Những người này có thể xây dựng các ứng dụng khác nhau phục vụ cho các mục đích khác nhau trên Cơ Sở Dữ Liệu. Những người quản trị Cơ Sở Dữ Liệu, đó là những người hiểu biết về tin học, về các hệ quản trị Cơ Sở Dữ Liệu và hệ thống máy tính. Họ là người tổ chức Cơ Sở Dữ Liệu (khai báo cấu trúc Cơ Sở Dữ Liệu, ghi nhận các yêu cầu bảo mật cho các dữ liệu cần bảo vệ ...) do đó họ phải nắm rõ các vấn đề kỹ thuật về Cơ Sở Dữ Liệu để có thể phục hồi dữ liệu khi có sự cố. Họ là những người cấp quyền hạn khai thác Cơ Sở Dữ Liệu, do vậy họ có thể giải quyết được các vấn đề tranh chấp dữ liệu, nếu có. Thông tin được khai thác chỉ phục vụ cho mục đích hẹp nên khả năng đáp ứng nhanh chóng, kịp thời. Nhược điểm:
Do thông tin được tổ chức ở mỗi phòng ban mỗi khác, cũng như phần mềm công cụ để triển khai mỗi nơi cũng rất khác nhau nên sự phối hợp tổ chức và khai thác ở các phòng ban là khó khăn. Thông tin ở phòng ban này không sử dụng được cho phòng ban khác, tại đơn vị con với đơn vị cấp trên. Cùng một thông tin được nhập vào máy tại nhiều nơi khác nhau gây ra lãng phí công sức nhập tin và không gian lưu trữ trên các vật mang tin. Sự trùng lắp thông tin có thể dẫn đến tình trạng không nhất quán dữ liệu. Chẳng hạn, nhân viên Nguyễn Văn Quang được ghi đầy đủ ở phòng Tổ chức, nhưng tại phòng Kế toán chỉ ghi tắt là Nguyễn v Quang.
Thông tin được tổ chức ở nhiều nơi nên việc cập nhật cũng dễ làm mất tính nhất quán dữ liệu. Một cán bộ chủ chốt của công ty có thay đổi về hoàn cảnh gia đình (mới cưới vợ / lấy chồng, sinh thêm con ...) có thể được cập nhật ngay tại đơn vị nhưng sau một thời gian mới được cập nhật tại Tổng công ty. Do hệ thống được tổ chức thành các hệ thống file riêng lẻ nên thiếu sự chia sẻ thông tin giữa các nơi. Việc kết nối các hệ thống này hay việc nâng cấp ứng dụng sẽ là rất khó khăn. Qua phân tích trên chúng ta nhận thấy việc tổ chức dữ liệu theo hệ thống các tập tin có nhiều nhược điểm. Việc xây dựng một hệ thống tin đảm bảo được tính chất nhất quán dữ liệu, không trùng lặp thông tin mà vẫn đáp ứng được nhu cầu khai thác đồng thời của tất cả các phòng ban ở công ty và tổng công ty là thực sự cần thiết.
III. Hệ phần mềm quản trị Cơ Sở Dữ Liệu
Để giải quyết tốt tất cả các vấn đề đặt ra cho một Cơ Sở Dữ Liệu như đã nêu trên: tính chủ quyền, cơ chế bảo mật hay phân quyền hạn khai thác Cơ Sở Dữ Liệu, giải quyết tranh chấp trong quá trình truy nhập dữ liệu, và phục hồi dữ liệu khi có sự cố ... thì cần phải có một hệ thống các phần mềm chuyên dụng. Hệ thống các phần mềm đó được gọi là hệ quản trị Cơ Sở Dữ Liệu (tiếng Anh là DataBase Management System - DBMS). Đó là các công cụ hỗ trợ tích cực cho các nhà phân tích & thiết kế Cơ Sở Dữ Liệu và những người khai thác Cơ Sở Dữ Liệu. Cho đến nay có khá nhiều hệ quản trị Cơ Sở Dữ Liệu mạnh được đưa ra thị trường như: Visual FoxPro, MicroSoft Access, SQL-Server, DB2, Sybase, Paradox, Informix, Oracle... với các chất lượng khác nhau. Mỗi hệ quản trị Cơ Sở Dữ Liệu đều được cài đặt dựa trên một mô hình dữ liệu cụ thể. Hầu hết các hệ quản trị Cơ Sở Dữ Liệu hiện nay đều dựa trên mô hình quan hệ (Xem chương III). Dù dựa trên mô hình dữ liệu nào, một hệ quản trị Cơ Sở Dữ Liệu cũng phải có. Ngôn ngữ giao tiếp giữa người sử dụng (NSD) và Cơ Sở Dữ Liệu, bao gồm:
- Ngôn ngữ mô tả dữ liệu (Data Definition Language - DDL) để cho phép khai báo cấu trúc của Cơ Sở Dữ Liệu, khai báo các mối liên hệ của dữ liệu (Data RelationShip) và các quy tắc (Rules, Constraint) quản lý áp đặt lên các dữ liệu đó.
- Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML) cho phép người sử dụng có thể thên (Insert), xóa (Delete), sửa (Update) dữ liệu trong Cơ Sở Dữ Liệu.
- Ngôn ngữ truy vấn dữ liệu, hay ngôn ngữ hỏi đáp có cấu trúc (Structured Query Language - SQL) cho phép những người khai thác Cơ Sở Dữ Liệu (chuyên nghiệp hoặc không chuyên) sử dụng để truy vấn các thông tin cần thiết trong Cơ Sở Dữ Liệu.
- Ngôn ngữ quản lý dữ liệu (Data Control Language - DCL) cho phép những người quản trị hệ thống thay đổi cấu trúc của các bảng dữ liệu, khai báo bảo mật thông tin và cấp quyền hạn khai thác Cơ Sở Dữ Liệu cho người sử dụng.
- Từ điển dữ liệu (Data Dictionary) dùng để mô tả các ánh xạ liên kết, ghi nhận các thành phần cấu trúc của Cơ Sở Dữ Liệu, các chương trình ứng dụng, mật mã, quyền hạn sử dụng v.v....
Có biện pháp bảo mật tốt khi có yêu cầu bảo mật. Cơ chế giải quyết vấn đề tranh chấp dữ liệu. Mỗi hệ quản trị Cơ Sở Dữ Liệu cũng có thể cài đặt một cơ chế riêng để giải quyết các vấn đề này. Một số biện pháp sau đây được sử dụng: Cấp quyền ưu tiên cho từng người sử dụng (người quản trị Cơ Sở Dữ Liệu thực hiện). Đánh dấu yêu cầu truy xuất dữ liệu, phân chia thời gian, người nào có yêu cầu trước thì có quyền truy xuất dữ liệu trước.
Hệ quản trị Cơ Sở Dữ Liệu cũng phải có cơ chế sao lưu (Backup) và phục hồi (Restore) dữ liệu khi có sự cố xảy ra. Điều này có thể được thực hiện bằng cách: Định kỳ kiểm tra Cơ Sở Dữ Liệu, sau một thời gian nhất định hệ quản trị Cơ Sở Dữ Liệu sẽ tự động tạo ra một bản sao Cơ Sở Dữ Liệu. Cách này hơi tốn kém, nhất là đối với các Cơ Sở Dữ Liệu lớn. Tạo nhật ký (LOG) thao tác Cơ Sở Dữ Liệu. Mỗi thao tác trên Cơ Sở Dữ Liệu đều được hệ thống ghi lại, khi có sự cố xảy ra thì tự động lần ngược lại (RollBack) để phục hồi Cơ Sở Dữ Liệu. Hệ quản trị Cơ Sở Dữ Liệu phải cung cấp một giao diện (Interface) tốt, dễ sử dụng, dễ hiểu cho những người sử dụng không chuyên.
Ngoài ra, một hệ quản trị Cơ Sở Dữ Liệu phải đáp ứng được một yêu cầu rất quan trọng, đó là bảo đảm tính độc lập giữa dữ liệu và chương trình: Khi có sự thay đổi dữ liệu (như sửa đổi cấu lưu trữ các bảng dữ liệu, thêm các chỉ mục (Index) ...) thì các chương trình ứng dụng (Application) đang chạy trên Cơ Sở Dữ Liệu đó vẫn không cần phải được viết lại, hay cũng không làm ảnh hưởng đến những NSD khác.
*** Vài nét về quá trình phát triển các hệ quản trị Cơ Sở Dữ Liệu
Trải qua gần 40 năm nghiên cứu và cài đặt ứng dụng, các hệ quản trị Cơ Sở Dữ Liệu không ngừng được phát triển. Các hệ quản trị Cơ Sở Dữ Liệu đầu tiên ra đời vào đầu những năm 60 của thế kỷ 20 dựa trên mô hình dữ liệu phân cấp và mạng, trong số đó có hệ quản trị Cơ Sở Dữ Liệu có tên là IMS của hãng IBM dựa trên mô hình dữ liệu phân cấp. Năm 1976, hệ quản trị Cơ Sở Dữ Liệu đầu tiên dựa trên mô hình dữ liệu quan hệ của hãng IBM mang tên System-R ra đời. Từ năm 1980 hãng IBM cho ra đời hệ quản trị Cơ Sở Dữ Liệu trên các máy Main Frame mang tên DB2, tiếp theo là các hệ quản trị Cơ Sở Dữ Liệu Dbase, Sybase, Oracle, Informix, SQL-Server ... Từ những năm 1990 người ta bắt đầu cố gắng xây dựng các hệ quản trị Cơ Sở Dữ Liệu hướng đối tượng (Oriented Object DataBase Management System) như Orion, Illustra, Itasca, ... Tuy nhiên hầu hết các hệ này đều vẫn là quan hệ - hướng đối tượng, nghĩa là, xét về bản chất, chúng vẫn dựa trên nền tảng của mô hình quan hệ. Hệ quản trị Cơ Sở Dữ Liệu hướng đối tượng thuần nhất có thể là hệ ODMG ra đời vào năm 1996.
IV. Tại sao cần phải có một Cơ Sở Dữ Liệu ?
Trong những năm gần đây, thuật ngữ "CƠ SỞ DỮ LIỆU" (Tiếng Anh là DataBase, viết tắt tiếng Việt là CSDL) đã trở nên khá quen thuộc không chỉ riêng với những người làm Tin học mà còn đối với cả những người làm trong nhiều lĩnh vực khác như Thống kê, Kinh tế, Quản lý Doanh nghiệp v.v... Các ứng dụng của Tin học vào công tác quản lý ngày càng nhiều hơn và càng đa dạng hơn. Có thể nói hầu hết các lĩnh vực kinh tế, xã hội, giáo dục, y tế v.v... đều đã ứng dụng các thành tựu mới của Tin học vào phục vụ công tác chuyên môn của mình. Chính vì lẽ đó mà ngày càng nhiều người quan tâm đến lĩnh vực thiết kế và xây dựng các CSDL.
Mục đích của chương I chỉ đơn giản là cung cấp các khái niệm cơ bản về CSDL để các học viên có một cái nhìn ban đầu về một cơ sở dữ liệu và một hệ quản trị CSDL. Trước hết chúng ta sẽ tìm hiểu lý do tại sao cần phải có một CSDL. Hệ thống các tập tin cổ điển (File System) Cho đến nay vẫn còn một số đơn vị kinh tế, hành chính sự nghiệp v.v... sử dụng mô hình hệ thống các tập tin cổ điển: chúng được tổ chức riêng rẽ, phục vụ cho một mục đích của một đơn vị hay một đơn vị con trực thuộc cụ thể. Chẳng hạn, hãy xét ví dụ sau:
Ví dụ 1 : Tại một công ty người ta trang bị máy vi tính cho tất cả các phòng, ban nghiệp vụ. Bộ phận Văn phòng sử dụng máy tính để soạn thảo các văn bản báo cáo bằng MicroSoft Word do thủ trưởng yêu cầu về tình hình hoạt động của đơn vị trong đó có chỉ tiêu về tổng số công nhân viên chức chia theo trình độ chuyên môn được đào tạo. Phòng Kế toán sử dụng máy tính để tính lương và in danh sách lương của từng bộ phận trong đơn vị dựa trên danh sách cán bộ viên chức cùng hệ số lương và các hệ số phụ cấp của họ do phòng Tổ chức cung cấp. Thông tin mà phòng Kế toán quản lý và khai thác là: Họ và Tên, Hệ số lương, Hệ số phụ cấp, Phụ cấp khác của các công nhân viên chức (CNVC) xếp theo từng phòng ban và sử dụng công cụ văn phòng là MicroSoft Excel. Phòng Tổ chức quản lý thông tin lý lịch của CNVC chi tiết hơn gồm Họ CNVC, Tên CNVC (để riêng thành một cột "Tên" để tiện sắp xếp theo vần Alphabet), Bí danh, Giới tính, Ngày sinh, Ngày tuyển dụng, Hoàn cảng gia đình, Quá trình được đào tạo, Hệ số lương, Hệ số phụ cấp, Ngày xếp lương trên ... nhưng thiếu thông tin về Phục cấp khác của CNVC. Phần mềm được sử dụng để quản lý là FoxPro for Windows. Trong khi đó, tại Tổng công ty của họ, các phòng ban nghiệp vụ cũng được trang bị vi tính. Phòng Tổ chức cán bộ tại Tổng công ty sử dụng phần mềm MicroSoft Access để quản lý CNVC gồm các cán bộ chủ chốt từ trường phó phòng, quản đốc và phó quản đốc xí nghiệp trở lên của các công ty con trực thuộc. Thông tin quản lý tại đây cũng giống như thông tin quản lý tại phòng tổ chức của công ty con.
Ưu điểm: Việc xây dựng hệ thống các tập tin riêng tại từng đơn vị quản lý ít tốn thời gian bởi khối lượng thông tin cần quản lý và khai thác là nhỏ, không đòi hỏi đầu tư vật chất và chất xám nhiều, do đó triển khai ứng dụng nhanh.
Ví dụ 2 : Người ta muốn xây dựng một hệ quản trị CSDL để quản lý các nhân viên của một công ty. Môi trường (thế giới thực) của công ty ở đây gồm có các phòng ban (Department) - mỗi phòng ban có một tên gọi khác nhau, một địa chỉ trụ sở chính (Location), các số điện thoại (Telephone) để liên lạc, có một người làm trưởng phòng ban, hàng năm được cấp một khoản kinh phí để hoạt động (Expense Budget), và phải đạt một doanh thu (Revenue Budget). Để tránh viết tên phòng ban dài dễ dẫn đến viết sai, người ta thường đặt cho mỗi phòng ban một giá trị số (gọi là số hiệu phòng ban - Department Number) và sử dụng số hiệu này để xác định tên và các thông tin khác của nó. Công ty có một số công việc có thể sắp xếp cho các nhân viên trong công ty. Để thuận lợi cho việc theo dõi công việc cũng như trong công tác tuyển chọn nhân viên mới, người ta lập thành một bảng các công việc (JOBS) gồm các thông tin: tên tắt công việc (Job), tên công việc (Job Name), mức lương tối thiểu (Min Salary) và tối đa (Max Salary) của công việc này và cho biết công việc này cần có người lãnh đạo không. Một công việc có thể có nhiều người cùng làm. Mỗi phòng ban có thể có từ 1 đến nhiều nhân viên (Employee). Mỗi nhân viên có một tên gọi, một công việc làm (Job), một khoản tiền lương hàng tháng (Salary), số hiệu phòng ban mà anh ta đang công tác. Nếu muốn, người ta có thể theo dõi thêm các thông tin khác như ngày sinh (Birth Day), giới tính (Sex) v.v... Để tránh viết tên nhân viên dài dễ dẫn đến sai sót, mỗi nhân viên có thể được gán cho một con số duy nhất, gọi là mã số nhân viên (EmpNo). Nếu yêu cầu quản lý của công ty chỉ dừng ở việc theo dõi danh sách nhân viên trong từng phòng ban cùng các công việc của công ty thì cần 3 loại thông tin: Phòng ban (DEPARTMENT), Công việc (JOBS) và Nhân viên (EMPLOYEE) với các thông tin như trên là đủ. Có thể công ty có thêm yêu cầu quản lý cả quá trình tuyển dụng và nâng lương thì cần có thêm một (hoặc một số) loại thông tin về quá trình: Mã số nhân viên, lần thay đổi, thời gian bắt đầu và kết thúc sự thay đổi, mức lương, .v.v... Từ môi trường thế giới thực, xuất phát từ nhu cầu quản lý, việc xác định các loại thông tin cần lưu trữ và các mối quan hệ giữa các thông tin đó như thế nào ... đó chính là công việc ở mức quan niệm.
Ưu điểm : Đó là mức của người sử dụng và các chương trình ứng dụng. Làm việc tại mức này có các nhà chuyên môn, các kỹ sư tin học và những người sừ dụng không chuyên. Mỗi người sử dụng hay mỗi chương trình ứng dụng có thể được "nhìn" (View) CSDL theo một góc độ khác nhau. Có thể "nhìn" thấy toàn bộ hay chỉ một phần hoặc chỉ là các thông tin tổng hợp từ CSDL hiện có. Người sử dụng hay chương trình ứng dụng có thể hoàn toàn không được biết về cấu trúc tổ chức lưu trữ thông tin trong CSDL, thậm chí ngay cả tên gọi của các loại dữ liệu hay tên gọi của các thuộc tính. Họ chỉ có thể làm việc trên một phần CSDL theo cách "nhìn" do người quản trị hay chương trình ứng dụng quy định, gọi là khung nhìn (View).
Ví dụ 3 : Cũng ví dụ trên, Phòng Tổ chức nhân sự giờ đây còn quản lý thêm cả các thông tin chi tiết trong lý lịch của nhân viên trong công ty: quá trình đào tạo chuyên môn kỹ thuật - kinh tế - chính trị - quản lý Nhà nước, quá trình được khen thưởng, các lần bị kỷ luật, quá trình hoạt động Cách mạng bị địch bắt - bị tù đày, quá trình công tác, quá trình nâng lương, sơ lược tiểu sử cha mẹ - anh chị em ruột - vợ chồng - con v.v... Rõ ràng rằng, Phòng Kế toán có thể chỉ được nhìn thấy CSDL là danh sách nhân viên đang làm các công việc cụ thể trong từng Phòng ban với các mức lương thỏa thuận, mà không được thấy lý lịch của các nhân viên. Lãnh đạo công ty có thể chỉ cần "nhìn" thấy số lượng nhân viên, tổng số lương phải trả và ai là người lãnh đạo của từng Phòng ban. Trong khi đó ngay cả những người trong Phòng Tổ chức nhân sự cũng có thể có người được xem lý lịch của tất cả cán bộ, công nhân viên của công ty, nhưng cũng có thể có người chỉ được xem lý lịch của những cán bộ, công nhân viên với mức lương từ xx đồng trở xuống...
Ưu điểm : Như vậy, cấu trúc CSDL vật lý (mức trong) và mức quan niệm thì chỉ có một; nhưng tại mức ngoài, mức của các chương trình ứng dụng và người sử dụng trực tiếp CSDL, thì có thể có rất nhiều cấu trúc ngoài tương ứng.
V. Tính độc lập giữa dữ liệu và chương trình.
Lược đồ khái niệm là sự biểu diễn thế giới thực bằng một loại ngôn ngữ phù hợp của hệ quản trị CSDL. Sơ đồ tổng quát của một CSDL theo kiến trúc ANSI - PARC, chúng ta có thể thấy, từ chương trình ứng dụng và người khai thác trực tiếp CSDL thông qua một khung nhìn tới CSDL (View) tồn tại hai mức độc lập dữ liệu.
Thứ nhất, lược đồ vật lý có thể thay đổi do người quản trị CSDL mà hoàn toàn không làm thay đổi các lược đồ con. Người quản trị CSDL có thể tổ chức lại CSDL bằng cách thay đổi cách tổ chức, cấu trúc vật lý của dữ liệu trên các thiết bị nhớ thứ cấp để làm thay đổi hiệu quả tính toán của các chương trình ứng dụng, nhưng không đòi hỏi phải viết lại các chương trình ứng dụng. Điều này được gọi là tính độc lập vật lý của dữ liệu - hay tính độc lập của dữ liệu ở mức vật lý (Physical Independence). Tính độc lập dữ liệu mức vật lý được đảm bảo tới mức nào còn phụ thuộc vào chất lượng của hệ quản trị CSDL.
Thứ hai, giữa khung nhìn với lược đồ quan niệm cũng có thể tồn tại một loại độc lập về dữ liệu. Trong quá trình khai thác CSDL người ta có thể nhận thấy tính cần thiết phải sửa đổi lược đồ khái niệm như bổ sung thêm thông tin hoặc xóa bớt các thông tin của các thực thể đang tồn tại trong CSDL. Việc thay đổi lược đồ khái niệm không làm ảnh hưởng tới các lược đồ con, do đó không cần phải viết lại các chương trình ứng dụng. Tính chất độc lập này được gọi là tính độc lập của dữ liệu ở mức lôgic (Logical Independence).
Tính độc lập giữa dữ liệu với chương trình ứng dụng là mục tiêu chủ yếu của các hệ quản trị CSDL. C.J. Date [3] đã định nghĩa tính độc lập dữ liệu là "tính bất biến của các hệ ứng dụng đối với các thay đổi bên trong cấu trúc lưu trữ và chiến lược truy nhập CSDL".
VI. Những cách tiếp cận một Cơ Sở Dữ Liệu
Mô hình dữ liệu là sự trừu tượng hóa môi trường thực, nó là sự biểu diễn dữ liệu ở mức quan niệm. Mỗi loại mô hình dữ liêu đặc trưng cho một cách tiếp cận dữ liệu khác nhau của những nhà phân tích - thiết kế CSDL, mỗi loại đều có các ưu điểm và mặt hạn chế của nó nhưng vẫn có những mô hình dữ liệu nổi trội và được nhiều người quan tâm nghiên cứu. Cho đến nay đang tồn tại 5 loại mô hình dữ liệu, đó là: mô hình dữ liệu mạng, mô hình dữ liệu phân cấp, mô hình dữ liệu quan hệ, mô hình dữ liệu thực thể - kết hợp và mô hình dữ liệu hướng đối tượng. Chương này sẽ lần lượt giới thiệu các loại mô hình dữ liệu nêu trên.
01. Mô hình dữ liệu quan hệ.
Mô hình dữ liệu quan hệ (Relational Data Model) - còn được gọi tắt là mô hình quan hệ (Relational Model) do E.F.Codd [2] đề xuất năm 1970. Nền tảng cơ bản của nó là khái niệm lý thuyết tập hợp trên các quan hệ, tức là tập của các bộ giá trị (Value Tuples). Trong mô hình dữ liệu này những khái niệm sẽ được sử dụng bao gồm thuộc tính (Attribute), quan hệ (Relation), lược đồ quan hệ (Relation Schema), bộ (Tuple), khóa (Key). Mô hình dữ liệu quan hệ là mô hình được nghiên cứu nhiều nhất, và cho thấy rằng nó có cơ sở lý thuyết vững chắc nhất. Mô hình dữ liệu này cùng với mô hình dữ liệu thực thể kết hợp đang được sử dụng rộng rãi trong việc phân tích và thiết kế CSDL hiện nay. Chúng ta sẽ nghiên cứu chi tiết mô hình dữ liệu này ở các chương sau.
02. Mô hình dữ liệu thực thể - kết hợp.
Mô hình dữ liệu thực thể - kết hợp (Entity - RelationShip Model) do P.P.Chen đề xuất vào năm 1976. Các khái niệm chủ yếu được sử dụng trong lý thuyết của mô hình này là:
- Loại thực thể (Entity Type): Là một loại đối tượng cần quản lý trong CSDL, chẳng hạn, KHOA, LỚP-HỌC, MÔN-HỌC, GIẢNG-VIÊN, HỌC-VIÊN, tức là, cũng tương tự như khái niệm về loại mẫu tin trong mô hình mạng và mô hình phân cấp. Thực thể (Entity): Là một thể hiện hoặc một đối tượng của một loại thực thể. Khái niệm này tương tự như khái niệm mẫu tin trong mô hình dữ liệu mạng và mô hình dữ liệu phân cấp.
- Thuộc tính của loại thực thể (Entity Attribute): Là các đặc tính riêng biệt cơ bản của loại thực thể, tương tự khái niệm thuộc tính (Attribute) trong mô hình dữ liệu quan hệ sẽ trình bày trong Chương III. Ví dụ, loại thực thể KHOA có các thuộc tính Mã-Khoa, TênKhoa. Loại thực thể LỚP-HỌC có một số thuộc tính Mã-Lớp, Tên-Lớp, Niên-Khóa, Số-Học-Viên. Loại thực thể MÔN-HỌC có một số thuộc tính Mã-Môn, Tên-Môn, Số-Đv-Học-Trình. Loại thực thể HỌC-VIÊN có một số thuộc tính Mã-Học-Viên, Tên-HọcViên,Ngày-Sinh, Quê-Quán. Loại thực thể GIẢNG-VIÊN có một số thuộc tính Mã-Giảng-Viên, Tên-Giảng-Viên, Cấp-Học-Vị, Chuyên-Ngành. v.v...
- Khóa của loại thực thể (Entity Key): Đó là các thuộc tính nhận diện của loại thực thể. Căn cứ vào các giá trị của các thuộc tính nhận diện này người ta có thể xác định một thực thể duy nhất của một loại thực thể. Ví dụ, khóa của loại thực thể LỚP-HỌC có thể là Mã-Lớp; khóa của loại thực thể HỌC-VIÊN có thể là Mã-Học-Viên; khóa của loại thực thể MÔN-HỌC có thể là Mã-Môn-Học ... Khái niệm này cũng tương tực như khái niệm khóa (Key) trong mô hình dữ liệu quan hệ sẽ trình bày trong Chương III. Loại mối kết hợp (Entity Relationship): Tương tự như loại mối liên hệ trong mô hình dữ liệu mạng. Trong đồ thị biểu diễn của mô hình này người ta cũng sử dụng hình elíp để thể hiện một mối kết hợp giữa các thực thể. Giữa 2 loại thực thể có thể tồn tại nhiều hơn một mối kết hợp.
- Số ngôi của mối kết hợp (RelationShip Degree): Là tổng số loại thực thể tham gia vào mối kết hợp. Ví dụ, giữa loại thực thể SINH-VIÊN và KHOA tồn tại mối kết hợp "trực thuộc" - đó là mối kết hợp 2 ngôi. KẾT-QUẢ-THI (hoặc KIỂM-TRA) của sinh viên là mối kết hợp giữa 3 thực thể SINH-VIÊN, MÔN-THI và ĐIỂM-THI - đó là mối kết hợp 3 ngôi.
- Thuộc tính của mối kết hợp (RelationShip Attribute): Mối kết hợp có thể có các thuộc tính của riêng nó. Thông thường mối kết hợp có các thuộc tính là khóa của các loại thực thể tham gia vào mối kết hợp, ngoài ra còn có thêm những thuộc tính bổ sung khác. Ví dụ, trong mối kết hợp 3 ngôi kể trên, thuộc tính của mối kết hợp này có thể bao gồm Mã-Học-Viên, Mã-Môn-Học, Điểm-Thi; và có thể có thêm các thuộc tính bổ sung khác như Lần-Thi-Thứ, Ngày-Thi, Ghi-Chú v.v...
- Bản số của mỗi nhánh của mối kết hợp (RelationShip Cardinal): Mỗi nhánh (hay mỗi chiều) của mối kết hợp là mối kết hợp nối một loại thực thể với một mối kết hợp. Trong nhánh này cần xác định số lượng tối thiểu và số lượng tối đa các thực thể của nhánh đó sẽ tham gia vào một thực thể của mối kết hợp. Hai đại lượng này - đặt trong cặp dấu ngoặc tròn - được gọi là bản số của mối kết hợp. Ví dụ, trong mối kết hợp 3 ngôi nêu trên, tại nhánh nối loại thực thể HỌC-VIÊN với mối kết hợp KẾT-QUẢ-THI là (1,n), bởi vì sẽ có ít nhất một học viên tham gia kỳ thi và nhiều nhất là tất cả số học viên học môn đó cùng dự thi.
Vào khoảng năm 1980, mô hình dữ liệu thực thể-kết hợp đã được mở rộng thêm một số khái niệm mới như "loại thực thể chuyên biệt hóa" (Specialized Entity) và "mối kết hợp đệ quy" (Recursive RelationShip). Mô hình này cùng với mô hình dữ liệu quan hệ và mô hình hướng đối tượng được sử dụng khá phổ biến trong việc thiết kế các CSDL hiện nay, bởi sự kết hợp này làm cho mô hình dữ liệu thể hiện được nhiều ngữ nghĩa của những loại dữ liệu trong CSDL hơn.
03. Mô hình dữ liệu hướng đối tượng.
Mô hình dữ liệu hướng đối tượng (Object Oriented Data Model) ra đời từ cuối những năm 80 và đầu những năm 90. Đây là loại mô hình tiên tiến nhất hiện nay dựa trên cách tiếp cận hướng đối tượng đã quen thuộc trong các phương pháp lập trình hướng đối tượng, nó sử dụng các khái niệm như lớp (class), sự kế thừa (inheritance), kế thừa bội (tức là kết thừa từ nhiều lớp cơ sở multi-inheritance). Đặc trưng cơ bản của cách tiếp cận này là tính đóng gói (encapsulation), tính đa hình (polymorphism) và tính tái sử dụng (Reusability).
Lớp là một kiểu dữ liệu có cấu trúc bao gồm các thành phần dữ liệu và các phương thức xử lý thao tác trên cấu trúc dữ liệu đó. Nó là một kiểu (hay cấu trúc) dữ liệu được trừu tượng hóa, bởi vì các tác động (còn gọi là các phương thức - method) là để phục vụ hoặc thao tác trên kiểu dữ liệu này. Dữ liệu và phương thức hòa quyện vào nhau thành một thể thống nhất: dữ liệu cần có những cách thức xử lý thỏa đáng, và phương thức xử lý được đưa vào trong kiểu dữ liệu đó là để phục vụ cho các đối tượng có cấu trúc như thế. Người ta gọi sự thống nhất đó là sự đóng gói.
Ví dụ, trong việc định nghĩa phép cộng (+) hai số phức c1 và c2 để cho một số phức kết quả là: COMPLEX (c1.Real+c2.Real, c1.Image+c2.Image) để người ta có thể sử dụng phép cộng (+) một cách tự nhiên như việc gán kết quả đó cho biến phức c = c1 + c2, hoàn toàn tự nhiên và trong sáng hơn rất nhiều so với việc phải viết một thủ tục Add_COMPLEX (COMPLEX &c1, COMPLEX &c2, COMPLEX &c) để cộng hai số phức và kết quả được gán vào tham đối thứ 3 của hàm thông qua tham chiếu địa chỉ của biến c theo cách lập trình hướng thủ tục trước đó. Và, hiển nhiên rằng, cách thức cộng như trên là chỉ được áp dụng cho các đối tượng số phức. Tương tự, cũng có thể định nghĩa phép toán cộng (+) trong lớp ma trận (MATRIX) để cộng hai ma trận có cùng bậc. Khi đó giả sử A và B là hai ma trận m * n; Phép gán tổng hai ma trận A và B cho biến ma trận C có thể được viết: C = A + B
Rõ ràng là tự nhiên và dễ hiểu hơn đối với các ứng dụng lớp ma trận so với việc gọi thủ tục Add_MATRIX (MATRIX &A, MATRIX &B, MATRIX &C, int m, int n) ... Phương pháp tiếp cận hướng đối tượng trong mô hình dữ liệu mặc dù còn mới mẻ nhưng hiện nay đang được nhiều người quan tâm nghiên cứu phát triển và áp dụng. Các hệ quản trị CSDL hướng đối tượng hiện nay vẫn chưa nhiều, một số còn chưa thuần nhất (nghĩa là việc lập trình là hướng đối tượng nhưng CSDL vẫn chủ yếu dựa trên mô hình quan hệ.