Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 56 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
56
Dung lượng
2,03 MB
Nội dung
Phần I Các khái niệm sở liệu Chương Căn sở liệu Nhập môn Cơ sở liệu Các khái niệm kỹ ●● Các thuộc tính sở liệu ●● Các mơ hình sở liệu thơng dụng ●● Tóm lược lịch sử sở liệu ●● Tại phải tập trung vào mô hình quan hệ? C hương giới thiệu khái niệm định nghĩa liên quan đến sở liệu, bao gồm thuộc tính sở liệu nói chung, mơ hình sở liệu thơng dụng, tóm lược lịch sử sở liệu, nguyên nhân phải tập trung vào mơ hình sở liệu quan hệ Các thuộc tính sở liệu Cơ sở liệu (database) tập hợp thành phần liệu có liên quan lẫn nhau, quản lý dạng đơn vị Định nghĩa tương đối rộng, có khác biệt đáng kể sở liệu nhà sản xuất phần mềm cung cấp hệ thống sở liệu Chẳng hạn, Microsoft Access đặt toàn sở liệu file liệu, đó, sở liệu Access định nghĩa file chứa thành phần liệu Công ty Oracle định nghĩa sở liệu họ tập file vật lý quản lý thể phần mềm sở liệu Oracle Thể (instance) phiên phần mềm sở liệu chạy nhớ Microsoft SQL Server Sybase Adaptive Server Enterprise (ASE) định nghĩa sở liệu tập hợp thành phần liệu có chủ sở hữu, nhiều sở liệu quản trị thể phần mềm quản trị sở liệu Định nghĩa gây hiểu lầm đôi chút bạn làm việc với nhiều sản phẩm khác nhau, theo định nghĩa Microsoft SQL Server Sybase ASE, sở liệu lại schema (lược đồ) định nghĩa công ty Oracle Đối tượng sở liệu (database object) cấu trúc liệu đặt tên lưu trữ sở liệu Các kiểu đối tượng sở liệu cụ thể hỗ trợ sở liệu thường khác nhà cung cấp mơ hình sở liệu Mơ hình sở liệu (database model) cách sở liệu tổ chức liệu để mơ giới thực Những mơ hình sở liệu phổ biến trình bày mục “Các mơ hình sở liệu thông dụng” cuối chương File tập hợp ghi có liên quan lưu trữ đơn vị hệ điều hành Thật không may, định nghĩa file sở liệu giống nhau, để phân biệt chúng? Một số nhà cung cấp hệ điều hành Unix gọi file mật họ “cơ sở liệu”, song chuyên gia sở liệu nhanh chóng rằng, thực tế chúng không thực Chương 1: Căn sở liệu sở liệu Rõ ràng, cần xem xét tỉ mỉ định nghĩa Để hiểu rõ định nghĩa, cần tìm hiểu đặc trưng thuộc tính riêng có sở liệu mà khơng thể tìm thấy file thông thường Những đặc trưng thuộc tính bao gồm: ●● Quản lý hệ quản trị sở liệu (DBMS) ●● Các lớp trừu tượng hóa liệu ●● Độc lập liệu vật lý ●● Độc lập liệu lơgíc Những đặc trưng thảo luận phần Hệ quản trị sở liệu Hệ quản trị sở liệu (database management system - DBMS) phần mềm cung ứng nhà cung cấp sở liệu Các sản phẩm phần mềm Microsoft Access, Oracle, Microsoft SQL Server, Sybase ASE, DB2, Ingres MySQL hệ quản trị sở liệu Bạn thấy khó hiểu lại dùng chữ viết tắt DBMS mà DMS Hãy nhớ, ban đầu, thuật ngữ sở liệu (database) viết hai từ quy ước trở thành từ đơn DBMS cung cấp tất dịch vụ cần thiết để tổ chức trì sở liệu, bao gồm: ●● Di chuyển liệu từ sở liệu file liệu vật lý từ file liệu vật lý vào sở liệu cần thiết ●● Quản lý việc truy cập liệu đồng thời nhiều người dùng, bao gồm việc ngăn cập nhật thời điểm xung đột lẫn ●● Quản lý giao dịch (transaction) để thay đổi tới sở liệu giao dịch phải thực cách trọn vẹn đơn vị cơng việc khơng thực Nói cách khác, giao dịch thành cơng, tất thay đổi sở liệu giao dịch tạo lưu vào sở liệu; ngược lại, giao dịch thất bại, khơng có thay đổi lưu vào sở liệu ●● Hỗ trợ ngôn ngữ truy vấn (query language) - hệ thống lệnh người dùng sở liệu sử dụng để truy xuất liệu từ sở liệu ●● Cho phép lưu dự phòng sở liệu phục hồi sau cố ●● Cung cấp chế bảo mật để ngăn truy cập chỉnh sửa liệu không cấp phép Nhập môn Cơ sở liệu Hỏi chun gia Câu hỏi: Tơi nghe nói có thuật ngữ “ngân hàng liệu” Điểm khác ngân hàng liệu sở liệu gì? Trả lời: Ngân hàng liệu sở liệu Ngân hàng liệu (data bank) thuật ngữ cũ, nhà khoa học phát triển hệ thống sở liệu ban đầu sử dụng Thực tế, thuật ngữ ngân hàng liệu sử dụng số ngôn ngữ loài người, chẳng hạn tiếng Bồ Đào Nha, cụm từ banco de dados có nghĩa ngân hàng liệu Các lớp trừu tượng hóa liệu Một đặc trưng sở liệu khả cung cấp cho nhiều người dùng cách quan sát khác liệu lưu trữ CSDL, phù hợp với nhu cầu riêng họ Những cách quan sát liệu gọi view người dùng (user view) Trong trường hợp này, người dùng người, ứng dụng truy cập vào sở liệu với mục đích lưu trữ và/hoặc lấy liệu Ứng dụng (application) tập chương trình máy tính thiết kế để giải vấn đề nghiệp vụ cụ thể, chẳng hạn 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ử Microsoft Excel, tất người dùng cần chia sẻ view liệu chung, view phải khớp với cách liệu lưu trữ file liệu Nếu người dùng ẩn vài cột trang tính, xếp lại thứ tự dòng lưu trang tính lại, mở trang tính, người dùng nhìn thấy liệu mà người dùng trước lưu Một giải pháp khác người dùng lưu họ file vật lý riêng, người dùng tiến hành chỉnh sửa, người dùng khác không nhận cập nhật Với liệu sở, hệ thống sở liệu cung cấp cho người dùng view để quan sát liệu góc độ khác Các view điều chỉnh để phù hợp với nhu cầu người dùng, chúng bắt nguồn từ liệu lưu trữ Vì view khơng lưu trữ liệu thực, nên chúng tự động phản ánh thay đổi đến đối tượng sở liệu nằm bên Quá trình thực thông qua lớp trừu tượng (layer of abstraction), mơ Hình 1-1 Kiến trúc Hình 1-1 ANSI/SPARC (Viện Tiêu chuẩn Quốc gia Hoa Kỳ/Ủy ban Quy hoạch xét duyệt tiêu chuẩn) phát triển lần đầu vào năm 1970 Nó nhanh chóng trở thành tảng cho nỗ lực phát triển nghiên cứu sở liệu Hầu hết DBMS đại 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 lớp ngồi Kiến trúc ban đầu bao gồm lớp khái niệm bị loại bỏ khơng có nhà cung cấp sở liệu đại sử dụng lớp Chương 1: Căn sở liệu Lớp View View View Độc lập liệu lơgíc Schema nội (Schema lơgíc) Lớp lơgíc File sở liệu File sở liệu File sở liệu File sở liệu Lớp vật lý File sở liệu Độc lập liệu vật lý Hình 1-1 Các lớp sở liệu trừu tượng Lớp vật lý Lớp vật lý (physical layer) bao gồm file liệu chứa toàn liệu sở liệu Gần tất hệ quản trị sở liệu đại cho phép lưu trữ sở liệu nhiều file liệu file liệu trải nhiều ổ cứng vật lý Với cách xếp vậy, ổ cứng làm việc song song để đạt hiệu suất tối đa Một ngoại lệ đáng ý hệ quản trị sở liệu nêu ví dụ sách Microsoft Access Microsoft Access lưu toàn sở liệu file vật lý Cách xếp đơn giản hóa việc sử dụng sở liệu hệ thống máy tính cá nhân người dùng, lại làm hạn chế khả đáp ứng DBMS việc phục vụ lúc nhiều người dùng sở liệu Vì vậy, khơng phải giải pháp phù hợp hệ thống doanh nghiệp lớn Thực tế, Microsoft Access không thiết kế để trở thành DBMS mức doanh nghiệp mạnh mẽ Chúng ta đề cập tới Microsoft Access nội dung sách khơng phải sản phẩm cạnh tranh với Oracle hay SQL Server, mà Microsoft Access ví dụ hay DBMS cá nhân với giao diện người dùng cho phép nghiên cứu khái niệm sở liệu trở nên dễ dàng, thú vị Người dùng sở liệu không thiết phải hiểu rõ cách liệu lưu trữ thực tế file liệu, hay chí file liệu chứa thành phần liệu liên quan Trong hầu hết tổ chức, chuyên gia kỹ thuật coi quản trị viên sở liệu (database administrator - DBA) có trách nhiệm cài đặt, cấu hình phần mềm sở liệu Nhập môn Cơ sở liệu file liệu, giúp người dùng dễ dàng tiếp cận sở liệu Cùng với hệ điều hành máy tính, DBMS quản lý file liệu cách tự động, bao gồm hoạt động mở, đóng, đọc ghi file Khi sử dụng sở liệu, người dùng không thiết phải thao tác trực tiếp với file liệu vật lý Trong đó, làm việc với phần mềm bảng tính xử lý văn bản, người dùng cần lưu tài liệu cách rõ ràng, xác định cụ thể tên file vị trí lưu trữ Nhiều DBMS chạy máy tính cá nhân trường hợp ngoại lệ, người dùng yêu cầu phải tìm mở file vật lý trình truy cập vào sở liệu Ngược lại, DBMS mức doanh nghiệp (như Oracle, Sybase ASE, Microsoft SQL Server MySQL), file vật lý quản lý cách tự động, đó, sử dụng sở liệu, người dùng khơng 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ớp hai lớp trừu tượng sở liệu: Lớp vật lý tồn thực file hệ điều hành, lớp lơgíc tồn cấu trúc liệu trừu tượng tạo thành từ lớp vật lý cần thiết DBMS biến đổi liệu file liệu thành cấu trúc chung Đôi khi, lớp gọi schema, thuật ngữ tập hợp bao gồm toàn thành phần liệu lưu trữ sở liệu cụ thể, thuộc người dùng sở liệu Tùy thuộc vào DBMS cụ thể, lớp chứa tập hợp bảng hai chiều, cấu trúc phân cấp tương tự sơ đồ tổ chức công ty hay vài cấu trúc khác Trong mục “Các mơ hình sở liệu thơng dụng” phần sau chương mô tả chi tiết cấu trúc Lớp bên Lớp ngồi (external layer) hay mơ hình bên ngồi (external model) lớp trừu tượng thứ hai sở liệu Lớp bao gồm view người dùng trình bày phần trên, gọi chung subschema (schema con) Ở lớp này, người dùng sở liệu (các chương trình ứng dụng người dùng thực sự) truy cập vào sở liệu kết nối gửi truy vấn tới chúng Lý tưởng có DBA làm việc với lớp vật lý lơgíc DBMS kiểm soát việc chuyển đổi thành phần chọn từ nhiều cấu trúc liệu lớp lơgíc thành view người dùng View người dùng lớp định nghĩa trước, đồng thời lưu trữ sở liệu để tái sử dụng, thành phần tạm thời DBMS tạo ra, nhằm lưu kết truy vấn ad-hoc tới sở liệu đến người dùng không sử dụng Truy vấn ad-hoc (hay gọi truy vấn tức thời, truy vấn phi chuẩn tắc), truy vấn không lập kế hoạch cẩn thận không tái sử dụng View trình bày chi tiết Chương Độc lập liệu vật lý Khả thay đổi cấu trúc file vật lý sở liệu mà khơng làm gián đoạn người dùng q trình diễn gọi độc lập liệu vật lý (physical data independence) Như thấy Hình 1-1, ranh giới phân cách lớp vật lý với lớp lơgíc tạo độc lập liệu vật lý DBMS Bạn nên hiểu, độc lập liệu vật lý khơng phải thuộc tính “có hay khơng”, mà đặc tính cho thấy DBMS có tính độc lập liệu so với DBMS khác Thước Chương 1: Căn sở liệu đo cho tính độc lập liệu vật lý, đơi gọi mức độ độc lập liệu vật lý, tạo thay đổi hệ thống file mà khơng gây ảnh hưởng tới lớp lơgíc Khi hệ thống chưa cung cấp khả độc lập liệu, chí thay đổi nhỏ tới cách lưu trữ liệu yêu cầu phận lập trình phải thay đổi chương trình máy tính sử dụng liệu, công việc tốn ngốn nhiều thời gian Tất hệ thống máy tính đại có số mức độ độc lập liệu vật lý Chẳng hạn, chép từ ổ cứng tới ổ đĩa mềm hay ổ lưu trữ USB, bảng tính máy tính cá nhân tiếp tục làm việc xác Sự khác đáng kể hiệu (tốc độ) thiết bị không quan trọng, vấn đề nằm chỗ, thiết bị có cấu trúc vật lý hồn tồn khác nhau, hệ điều hành máy tính cá nhân tự động kiểm sốt khác biệt đó, đồng thời chuyển liệu file cho ứng dụng (trong ví dụ chương trình bảng tính, chẳng hạn Microsoft Excel), cuối trình bày với người dùng theo cách thức Tuy nhiên, hầu hết hệ thống cá nhân, người dùng phải ghi nhớ vị trí lưu file để dễ dàng tìm thấy cần DBMS mở rộng mạnh mẽ tính độc lập liệu vật lý hệ thống máy tính cung cấp DBMS cho phép người dùng sở liệu truy cập tới đối tượng (object) sở liệu (chẳng hạn, bảng DBMS quan hệ) mà không cần tham chiếu tới file liệu vật lý Catalog DBMS lưu trữ định nghĩa đối tượng theo dõi nơi lưu trữ vật lý đối tượng Sau số ví dụ thay đổi vật lý thể thực theo kiểu độc lập liệu: ●● Di chuyển file sở liệu từ thiết bị sang thiết bị khác hay từ thư mục sang thư mục khác ●● Tách hay gộp file liệu sở liệu ●● Đổi tên file liệu sở liệu ●● Di chuyển đối tượng sở liệu từ file liệu sang file liệu khác ●● Thêm đối tượng hay file liệu vào sở liệu Lưu ý, không đề cập tới việc xóa thứ Rõ ràng, bạn xóa đối tượng sở liệu khiến việc sử dụng đối tượng thất bại Tuy nhiên, thứ khác không bị ảnh hưởng, ngoại trừ tính sẵn sàng sở liệu hay dịch vụ bị ảnh hưởng số DBMS yêu cầu sở liệu hay dịch vụ DBMS ngừng lại lúc thực thay đổi lớp vật lý Độc lập liệu lơgíc Khả tạo thay đổi tới lớp lơgíc mà khơng làm gián đoạn người dùng trình diễn gọi độc lập liệu lơgíc (logical data independence) Hình 1-1 cho thấy ranh giới lớp lơgíc lớp ngồi tạo tính độc lập liệu lơgíc Tương tự độc lập liệu vật lý, độc lập liệu lơgíc có mức độ khác Điều quan trọng bạn nên hiểu hầu hết thay đổi lơgíc liên quan đến thay đổi vật lý Chẳng hạn, bạn thêm đối tượng sở liệu (ví dụ, bảng DBMS quan hệ) mà không lưu trữ vật lý liệu vị trí đó; vậy, có thay đổi tương ứng tạo lớp vật lý Ngồi ra, việc xóa đối tượng lớp lơgíc khiến thứ sử dụng đối tượng thất bại, khơng gây ảnh hưởng khác 10 Nhập môn Cơ sở liệu Sau số ví dụ thay đổi an tồn lớp lơgíc nhờ tính độc lập liệu lơgíc: ●● Thêm đối tượng sở liệu ●● Thêm thành phần liệu vào đối tượng có sẵn ●● Khi cần thực thay đổi lớp lơgíc (chẳng hạn kết hợp hay tách đối tượng có sẵn), trường hợp tạo view mơ hình ngồi để thay (các xử lý thông qua view thay cho kết giống xử lý trực tiếp với đối tượng ban đầu lớp lơgíc) Các mơ hình sở liệu thơng dụng Một mơ hình sở liệu kiến trúc DBMS sử dụng để lưu đối tượng sở liệu liên kết chúng với Các mô hình sở liệu thơng dụng sau trình bày theo thứ tự phát triển Phần trình bày tóm lược lịch sử sở liệu để giúp xếp thứ theo trật tự thời gian File phẳng File phẳng (flat file) file hệ điều hành “thông thường”, đó, ghi nằm file khơng chứa thơng tin cấu trúc file hay mối quan hệ 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 cấu trúc hay ý nghĩa liệu file Về bản, file phẳng sở liệu chúng khơng đáp ứng tiêu chí đề phần trước Tuy nhiên, có hai điều quan trọng bạn cần hiểu rõ Trước hết, file phẳng thường dùng để lưu trữ thông tin sở liệu Trong trường hợp này, hệ điều hành không hiểu nội dung cấu trúc file, DBMS chứa siêu liệu (metadata) cho phép chuyển file phẳng lớp vật lý cấu trúc sở liệu nằm lớp lơgíc Theo nghĩa đen, siêu liệu có nghĩa “dữ liệu liệu”, thuật ngữ sử dụng đề cập tới thông tin mà sở liệu lưu trữ catalog để mô tả liệu lưu sở liệu mối quan hệ liệu Chẳng hạn, siêu liệu khách hàng bao gồm tất thành phần liệu thu thập khách hàng (như tên, địa trạng thái tài khoản) với độ dài, giá trị liệu tối thiểu, tối đa mô tả ngắn gọn thành phần liệu Thứ hai, file phẳng tồn trước có sở liệu, hệ thống sở liệu sơ khai phát triển từ hệ thống file phẳng Trên Hình 1-2 hệ thống file phẳng mẫu, phần nhỏ liệu công ty giả tưởng tên Northwind Traders, nhà cung cấp mặt hàng thực phẩm đa quốc gia (và sở liệu mẫu Microsoft) Nhớ rằng, tiêu đề cột (Customer ID, Company Name…) đưa vào với mục đích minh họa - có ghi liệu lưu trữ file thực Dữ liệu khách hàng lưu trữ file Customer, đó, ghi đại diện cho khách hàng Northwind Mỗi khách hàng Northwind có ghi file Employee, sản phẩm Northwind bán có ghi file Product Dữ liệu đơn đặt hàng (đơn đặt hàng khách hàng với Northwind) lưu trữ hai file phẳng khác File Order chứa ghi đơn đặt hàng từ khách hàng, lưu liệu đơn đặt hàng, ID khách hàng tên nhân viên nhận đơn đặt hàng từ khách File Order Detail chứa dòng chi tiết 42 Nhập mơn Cơ sở liệu LƯU Ý Nếu so sánh Hình 2-6 Hình 2-7, bạn thấy cột Employee Name Customer Name Hình 2-6 thay cho cột Employee ID Customer ID định nghĩa bảng Orders Hình 2-7 Đây khơng phải lỗi mà tính Microsoft Access, đề cập mục “Ràng buộc tham chiếu” phần sau chương Điều đáng tiếc tiêu chuẩn công nghiệp thường tụt hậu so với phát triển RDBMS Hầu hết nhà cung cấp tự phát triển tính cho sản phẩm họ trước ngồi lại với nhà cung cấp khác để đưa tiêu chuẩn Điều giải thích lại có khác biệt lớn kiểu liệu sản phẩm RDBMS Ngày nay, tiêu chuẩn ANSI/ISO SQL bao hàm kiểu liệu quan hệ nhà cung cấp hỗ trợ tất hầu hết kiểu liệu tiêu chuẩn Tuy nhiên, nhà cung cấp có “mở rộng” riêng ngồi chuẩn, họ không hỗ trợ kiểu liệu tiêu chuẩn hành mà thêm tính đặc biệt, làm cho sản phẩm họ trở nên đặc biệt so với đối thủ Người ta nói đùa rằng, điều tuyệt vời tiêu chuẩn sở liệu có nhiều tiêu chuẩn để lựa chọn Về mặt tiêu chuẩn công nghiệp cho sở liệu quan hệ, Microsoft Access có lẽ sản phẩm tuân thủ Do có nhiều tiêu chuẩn mở rộng từ nhà cung cấp, nên DBA phải người có kiến thức chuyên sâu kiểu liệu DBMS hỗ trợ để triển khai sở liệu thành công Và dĩ nhiên, phải cẩn thận chuyển đổi thiết kế lơgíc DBMS nhà cung cấp khác Bảng 2-1 cho thấy kiểu liệu tương đương từ nhiều nhà cung cấp RDBMS khác Tuy nhiên, cần nhớ rằng, kiểu liệu liệt kê khơng giống hệt mà tương đương.Ví dụ, kiểu VARCHAR Oracle có độ dài lên tới 4000 ký tự (ở phiên Oracle8i, độ dài tối đa 2000 ký tự), nhiên kiểu liệu MEMO tương đương Microsoft Access chứa hàng gigabyte ký tự (khoảng tỷ ký tự)! Ràng buộc Ràng buộc (constraint) quy tắc đặt vào đối tượng sở liệu (thường bảng cột) để giới hạn giá trị liệu cho phép đối tượng sở liệu Bảng cột đối tượng quan trọng sở liệu quan hệ mà sử dụng ràng buộc thể cài đặt quan hệ quy tắc nghiệp vụ thiết kế lơgíc Mỗi ràng buộc gán tên nhất, cho phép tham chiếu tới ràng buộc thơng báo lỗi câu lệnh Một thói quen tốt DBA gán tên cho ràng buộc, không làm điều này, RDBMS tự động sinh tên cho ràng buộc, tên thường khơng có tính mơ tả Chương 2: Tìm hiểu thành phần sở liệu quan hệ Kiểu liệu Microsoft Access Microsoft SQL Server Oracle Chuỗi ký tự có độ dài xác định TEXT CHAR CHAR Chuỗi ký tự có độ dài biến đổi MEMO VARCHAR VARCHAR Văn dài MEMO TEXT CLOB LONG (Đã lỗi thời, khuyến cáo không nên sử dụng) Số nguyên INTEGER LONGINTEGER INTEGER SMALLINT TINYINT NUMBER Số thập phân NUMBER DECIMAL NUMERIC NUMBER Tiền tệ CURRENCY MONEY SMALLMONEY Khơng có, sử dụng NUMBER Ngày/giờ DATE/TIME DATETIME SMALLDATETIME DATE TIMESTAMP Bảng 2-1 Những kiểu liệu tương đương sản phẩm RDBMS Ràng buộc khóa Khóa (primary key) cột tập hợp cột xác định dòng ghi bảng Định danh thiết kế mức khái niệm cài đặt khóa thiết kế lơgíc Biểu tượng hình khóa cạnh trường Order ID Hình 2-7 biểu thị rằng, cột định nghĩa khóa bảng Orders Khi định nghĩa khóa chính, RDBMS cài đặt ràng buộc khóa để đảm bảo khơng tồn hai dòng bảng có giá trị khóa Chú ý, khóa tạo thành từ nhiều cột, cột có giá trị trùng bảng, kết hợp giá trị cột khóa giá trị kết hợp phải bảng Hầu hết ràng buộc khóa cài đặt RDBMS cách sử dụng mục (index), kiểu đối tượng đặc biệt sở liệu, cho phép tìm kiếm nhanh giá trị cột Khi thêm dòng vào bảng, RDBMS tự động tìm kiếm mục để đảm bảo giá trị khóa dòng chưa sử dụng bảng, giá trị khóa tồn tại, dòng thêm vào bị từ chối Chỉ mục tìm kiếm nhanh so với bảng; thế, việc áp dụng mục cho khóa bảng cần thiết, giúp việc tìm khóa trùng thêm dòng trở nên nhanh chóng Ràng buộc tham chiếu Để hiểu phương pháp RDBMS sử dụng ràng buộc tham chiếu thực thi quan hệ, trước tiên, bạn phải nắm khái niệm khóa ngoại Khi quan hệ - nhiều thực thi bảng, cột tập cột lưu bảng (bảng tương ứng với phía “nhiều” quan hệ) có chức 43 44 Nhập mơn Cơ sở liệu liên kết bảng với bảng cha (bảng tương ứng với phía “một” quan hệ), gọi khóa ngoại (foreign key) Được gọi khóa ngoại cột (các cột) chép từ bảng khác (bảng ngoài) Trong bảng Orders (Hình 2-6), cột Employee ID khóa ngoại liên kết tới bảng Employees, cột Customer ID khóa ngoại liên kết tới bảng Customers Trong hầu hết sở liệu quan hệ, khóa ngoại phải khóa bảng cha, cột hay tập cột có định nghĩa mục Điều nhằm mục đích tăng tốc độ xử lý Phần lớn người tán thành việc cột (các cột) khóa ngoại tên với cột (các cột) khóa bảng cha, nhiên có ý kiến trái chiều, lý đưa tên trùng gây khó khăn ngôn ngữ truy vấn Tốt nhất, từ đầu, bạn nên thiết lập số tiêu chuẩn tuân thủ theo tiêu chuẩn suốt dự án sở liệu Mỗi quan hệ thực thể thiết kế mức khái niệm ánh xạ tương ứng thành ràng buộc tham chiếu thiết kế lơgíc Ràng buộc tham chiếu (referential constraint), gọi ràng buộc toàn vẹn tham chiếu (referential integrity constraint) ràng buộc bắt buộc thực quan hệ bảng sở liệu quan hệ Bắt buộc thực có nghĩa RDBMS tự động kiểm tra để đảm bảo giá trị khóa ngoại bảng ln có giá trị khóa tương ứng bảng cha Microsoft Access cung cấp tính thú vị cột khóa ngoại, nhiên, bạn cần chút thời gian để làm quen với tính Khi định nghĩa ràng buộc tham chiếu, bạn định nghĩa phép tìm kiếm tự động dòng bảng cha Ở Hình 2-7, cột thứ ba bảng Orders hiển thị Customer ID Tuy nhiên, Hình 2-6, bạn thấy cột thứ ba bảng Orders cột Customer, hiển thị tên khách hàng Nếu nhấn vào cột Customer dòng bất kỳ, menu xổ xuống xuất hiện, cho phép bạn chọn khách hàng hợp lệ (từ bảng Customers) làm cha (chủ) dòng chọn bảng Orders Tương tự, cột Employee ID bảng Orders hiển thị tên nhân viên Tính dễ sử dụng tiện lợi cho người dùng, ngăn không cho phép kết hợp khách hàng hay nhân viên không tồn với đơn hàng Tuy nhiên, tính lại ẩn khóa ngoại, thế, Hình 2-6 khơng hữu dụng minh họa cho hoạt động ràng buộc tham chiếu Hình 2-8 liệt kê phần tử bảng Orders với tính tự động tìm kiếm vơ hiệu hóa, bạn thấy giá trị khóa ngoại thực cột Employee ID Customer ID Khi cập nhật bảng Orders (như Hình 2-8), RDBMS thực thi ràng buộc tham chiếu mà định nghĩa bảng Điểm mạnh ràng buộc sở liệu chúng thực thi tự động, ràng buộc ln có hiệu lực trừ bị DBA vơ hiệu hóa Dưới kiện đặc biệt mà RDBMS phải xử lý thực thi ràng buộc tham chiếu: Chương 2: Tìm hiểu thành phần sở liệu quan hệ Hình 2-8 Bảng Orders Northwind (với giá trị khóa ngoại) ●● Khi bạn chèn dòng vào bảng con, phép chèn bị từ chối khơng tồn dòng tương ứng bảng cha Ví dụ, bạn chèn dòng vào bảng Orders với giá trị cột Employee ID 12345, RDBMS kiểm tra xem bảng Employees có nhân viên với mã số (Employee ID) 12345 hay không Nếu khơng có, phép chèn thất bại ●● Khi bạn cập nhật khóa ngoại bảng con, phép cập nhật bị từ chối giá trị khóa ngoại khơng tồn bảng cha Ví dụ, bạn cố thay đổi giá trị cột Employee ID (trong bảng Orders) đơn hàng 48 từ giá trị thành 12345, RDBMS kiểm tra bảng Employees xem có nhân viên mã số 12345 hay khơng Nếu khơng có, phép cập nhật thất bại ●● Khi bạn xóa dòng từ bảng cha, dòng có liên quan tới nhiều dòng khác bảng dòng bảng phải xóa, khơng phép xóa thất bại Hầu hết RDBMS cung cấp tùy chọn cho phép tự động xóa dòng bảng con, gọi cascading delete Có thể bạn băn khoăn lại phải tự động xóa dòng bảng Hãy xem xét bảng Orders Order Details Nếu đơn hàng bị xóa, khơng xóa ln tất dòng chi tiết đơn hàng bước? Tuy nhiên, với bảng Employees, rõ ràng, khơng muốn điều xảy Nếu xóa nhân viên có mã số khỏi bảng Employees (có thể người khơng nhân viên nữa), RDBMS phải kiểm tra xem có dòng gán Employee ID bảng Orders hay không, có phép xóa thất bại Ở đây, khơng có quy tắc nghiệp vụ quy định việc tự động xóa đơn hàng nhân viên rời khỏi công ty 45 46 Nhập môn Cơ sở liệu Trong hầu hết sở liệu quan hệ, câu lệnh SQL sử dụng để định nghĩa ràng buộc tham chiếu SQL giới thiệu Chương SQL ngôn ngữ sử dụng RDBMS để giao tiếp với sở liệu Nhiều nhà cung cấp hỗ trợ bảng điều khiển giao diện đồ họa (GUI), cho phép định nghĩa đối tượng sở liệu, ví dụ ràng buộc tham chiếu Ví dụ, SQL Server, bảng điều khiển GUI đặt công cụ SQL Server Management Studio, Oracle cơng cụ SQL Developer Với Microsoft Access bảng điều khiển Relationships, Hình 2-9, sử dụng để định nghĩa ràng buộc tham chiếu Hình 2-9 Bảng điều khiển Relationships Microsoft Access 2007 Để tiện theo dõi, Hình 2-9 hiển thị bảng Orders bảng cha Employees Customers Các ràng buộc tham chiếu biểu diễn đường nét đậm với ký tự số nằm gần bảng cha (phía “một”) ký tự vơ (∞) nằm gần bảng (phía “nhiều”) Những ràng buộc định nghĩa đơn giản cách kéo tên khóa bảng Chương 2: Tìm hiểu thành phần sở liệu quan hệ Hình 2-10 Bảng điều khiển Edit Relationships Microsoft Access 2007 cha vào vị trí tên khóa ngoại bảng Sau đó, cửa sổ pop-up ra, cho phép xác định tùy chọn cho ràng buộc tham chiếu, Hình 2-10 Ở bảng điều khiển Edit Relationships, tên hai bảng xuất với bảng cha nằm bên trái bảng nằm bên phải Nếu bạn bảng bảng cha, bảng bảng con, trường Relationship Type bảng giúp bạn Bên tên bảng dòng để chọn cột tạo thành khóa khóa ngoại Hình 2-10 hiển thị cột khóa ID bảng Customers cột khóa ngoại Customer ID bảng Orders Các hộp kiểm (checkbox) cung cấp số tùy chọn sau: ●● Enforce Referential Integrity Nếu đánh dấu hộp kiểm này, ràng buộc bắt buộc; việc bỏ đánh dấu hộp kiểm tắt chế độ bắt buộc ràng buộc ●● Cascade Update Related Fields Nếu đánh dấu hộp kiểm này, thay đổi khóa bảng cha khiến khóa ngoại tương ứng bảng tự động cập nhật theo Tuy nhiên, việc cập nhật khóa bảng cha xảy ●● Cascade Delete Related Records Nếu đánh dấu hộp kiểm này, xóa dòng bảng cha, dòng liên quan bảng tự động bị xóa Đến đây, suy nghĩ thật cẩn thận Có trường hợp bạn nên sử dụng tùy chọn này, ràng buộc bảng Orders bảng Order Details, số trường hợp khác, sử dụng tùy chọn dẫn tới việc xóa liệu khơng mong muốn, ví dụ xóa nhân viên, tất đơn hàng nhân viên phụ trách tự động bị xóa khỏi sở liệu Bảng tương giao Quan hệ nhiều - nhiều đề cập phần trước, kiểu quan hệ cài đặt trực tiếp sở liệu quan hệ, cần tạo bảng tương giao để thiết lập quan hệ nhiều - nhiều Hình 2-11 đưa cách cài đặt bảng tương giao Order Details Microsoft Access 47 48 Nhập mơn Cơ sở liệu Hình 2-11 Bảng tương giao Order Details (Microsoft Access 2007) Quan hệ nhiều - nhiều đơn hàng sản phẩm thiết kế khái niệm trở thành bảng tương giao (bảng Order Details) thiết kế lơgíc Khi đó, quan hệ nhiều - nhiều tách thành hai quan hệ - nhiều, bảng tương giao nằm phía “nhiều” quan hệ Khóa bảng Order Details tạo cách kết hợp cột Order ID Product ID (còn gọi khóa tự nhiên), Order ID khóa ngoại liên kết tới bảng Orders Product ID khóa ngoại liên kết tới bảng Products Tuy nhiên, trường hợp này, nhà thiết kế chọn phương án thêm vào bảng cột ID làm khóa cho bảng Order Details Khóa gọi khóa thay (surrogate key), dùng để thay cho khóa tự nhiên (natural key) Hãy dành chút thời gian để kiểm tra nội dung bảng tương giao hai ràng buộc tham chiếu Việc hiểu rõ bảng tương giao ràng buộc tham chiếu quan trọng, giúp bạn nắm cách thức làm việc sở liệu quan hệ Sau số điểm cần xem xét: ●● Mỗi dòng bảng tương giao Order Details giao sản phẩm đơn hàng Việc bao gồm trường Product Name bảng khơng có ý nghĩa tên sản phẩm hoàn toàn trường hợp xuất sản phẩm đơn hàng Tương tự vậy, việc thêm cột Customer ID vào bảng Order Details khơng cần thiết, dòng chi tiết đơn hàng thuộc khách hàng Chương 2: Tìm hiểu thành phần sở liệu quan hệ ●● Mỗi dòng bảng Products có nhiều dòng liên quan bảng Order Details (mỗi sản phẩm đặt hàng nhiều lần đơn hàng khác nhau), nhiên, dòng bảng Order Details thuộc dòng bảng Products ●● Mỗi dòng bảng Orders có nhiều dòng liên quan bảng Order Details (mỗi đơn hàng có nhiều dòng chi tiết đơn hàng, dòng chi tiết cho sản phẩm), nhiên, dòng bảng Order Details thuộc dòng bảng Orders Ràng buộc tồn vẹn Như đề cập, quy tắc nghiệp vụ thiết kế khái niệm trở thành ràng buộc thiết kế lơgíc Ràng buộc tồn vẹn (integrity constraint) ràng buộc làm tăng thêm tính xác liệu sở liệu Ưu điểm ràng buộc toàn vẹn RDBMS tự động thực thi ràng buộc này, tức ràng buộc ln trì, cho dù bạn kết nối tới sở liệu theo cách (trừ bạn DBA) Một số kiểu ràng buộc toàn vẹn chủ yếu ràng buộc NOT NULL, ràng buộc CHECK ràng buộc bắt buộc với trigger Ràng buộc NOT NULL Khi định nghĩa cột sở liệu, bạn xác định cột có cho phép nhận giá trị null hay không Giá trị null (null value) sở liệu quan hệ mã đặc biệt, đặt vào cột để biểu thị giá trị cột hàng khơng xác định Giá trị null không giống giá trị trống, chuỗi rỗng, hay giá trị không - mã đặc biệt, không biểu thị ý nghĩa khác sở liệu Cách xử lý thống giá trị null quy định tiêu chuẩn ANSI/ISO SQL Tuy nhiên, có nhiều tranh luận tính hữu ích giá trị null, sở liệu cho bạn biết giá trị lại khơng xác định Ví dụ, để giá trị cột Job Title bảng Employees null, bạn khơng thể biết liệu giá trị null giá trị khơng xác định (bạn biết rằng, nhân viên phải có chức danh, lại khơng biết chức danh gì), chức danh khơng có (có lẽ số nhân viên khơng có chức danh), hay khơng gán (các nhân viên định phải có chức danh, song người quản lý chưa nghĩ chức danh cho họ) Một tình khác, giá trị null khơng xác định nên mang so sánh với giá trị khác, kể giá trị null khác, điều dẫn đến khái niệm lơgíc ba giá trị tìm kiếm sở liệu Khi sử dụng giá trị null, phép tìm kiếm trả điều kiện true (nếu cột thỏa mãn điều kiện tìm kiếm), false (nếu cột khơng thỏa mãn điều kiện tìm kiếm), khơng xác định (nếu cột có giá trị null) Các nhà phát triển viết chương trình ứng dụng phải xử lý giá trị null trường hợp đặc biệt Bạn hiểu thêm giá trị null Chương học SQL Trong Microsoft Access, ràng buộc NOT NULL điều khiển tùy chọn Required cửa sổ thiết kế bảng Hình 2-12 đưa định nghĩa cột Discount bảng Order Details Cột bắt buộc (không phép nhận giá trị null) tùy chọn Required thiết lập Yes Trong định nghĩa bảng SQL, bạn cần đặt từ khóa NULL NOT NULL vào định nghĩa cột Hãy ý tới giá trị mặc định! Trong Oracle, bạn bỏ qua ràng buộc NOT NULL giá trị mặc định NULL, có nghĩa cột nhận giá trị null 49 50 Nhập mơn Cơ sở liệu Hình 2-12 Cửa sổ định nghĩa bảng Order Details, cột Discount Nhưng số RDBMS DB2, Microsoft SQL Server, Sybase ASE ngược lại: Nếu bạn bỏ qua ràng buộc NOT NULL, giá trị mặc định NOT NULL, có nghĩa cột khơng thể chứa giá trị null Ràng buộc CHECK Ràng buộc CHECK sử dụng câu lệnh lơgíc đơn giản để kiểm tra tính hợp lệ giá trị cột Kết câu lệnh lơgíc phải giá trị lơgíc true false, kết true, giá trị cột cho phép đặt vào bảng; ngược lại, kết false, giá trị cột bị từ chối RDBMS đưa thơng báo lỗi tương ứng Trong Hình 2-12, để ý ràng buộc =0 xuất tùy chọn Validation Rule cột Discount Quy tắc kiểm tra không cho phép giá trị cột Discount (tỷ lệ chiết khấu) lớn 100% (giá trị 1,00) nhỏ 0% Mặc dù cú pháp tùy chọn Validation Rule khác nhau, song mục đích giống Trong Oracle SQL, ràng buộc viết sau: CHECK (DISCOUNT =0) Chương 2: Tìm hiểu thành phần sở liệu quan hệ Các ràng buộc thực thi sử dụng trigger Một số ràng buộc phức tạp sử dụng khai báo để thực thi Ví dụ, quy tắc nghiệp vụ Hình 2-1 (Những khách hàng nợ q hạn khơng phép đặt đơn hàng mới) thuộc nhóm ràng buộc phức tạp liên quan tới nhiều bảng khác Nếu kiểm tra thấy dòng bảng Account Receivable khách hàng có số dư nợ hạn lớn 0, ta cần ngăn khơng cho phép thêm dòng vào bảng Orders Như nói, cách thực thi tốt quy tắc nghiệp vụ thực thi chúng lơgíc ứng dụng Tuy nhiên, muốn thêm ràng buộc yêu cầu ràng buộc thực thi, không phụ thuộc vào cách thức cập nhật sở liệu, bạn chọn trigger Trigger mơ-đun lơgíc lập trình, kích hoạt xảy kiện cụ thể sở liệu Ở ví dụ này, muốn trigger kích hoạt dòng thêm vào bảng Orders Trigger có nhiệm vụ lấy số dư nợ hạn (overdue amount) khách hàng từ bảng Account Receivable Nếu số dư nợ hạn lớn 0, trigger phát lỗi, làm dừng truy vấn thêm dòng, đồng thời trả thông báo lỗi tương ứng Trong Microsoft Access, trigger viết dạng macro sử dụng ngôn ngữ Microsoft Visual Basic for Applications (VBA) Một số RDBMS cung cấp ngôn ngữ đặc biệt để viết mô-đun chương trình trigger: PL/SQL Oracle, Transact SQL Microsoft SQL Server Sybase ASE Một số RDBMS khác, ví dụ DB2, sử dụng ngơn ngữ lập trình chung C View View (khung nhìn) truy vấn sở liệu lưu trữ, cung cấp cho người dùng tập liệu tổng hợp từ nhiều bảng sở liệu Nói cách khác, view bảng ảo, hình thức hầu hết thành phần view giống bảng, ngoại trừ điều view không chứa liệu (view đơn giản truy vấn lưu trữ sở liệu) View người dùng tạo thành lớp ngồi mơ hình ANSI/SPARC Trong q trình thiết kế lơgíc, view tạo cách sử dụng phương pháp tương ứng với sở liệu cụ thể Ở hầu hết RDBMS, view tạo SQL Trong Microsoft Access, view không hỗ trợ trực tiếp Tuy nhiên, Access hỗ trợ kiểu đối tượng tương đương với view truy vấn (query), tạo cách sử dụng bảng điều khiển Query Hình 2-13 cho thấy cách thức Microsoft Access định nghĩa view đơn giản để liệt kê tất đơn hàng khách hàng bang Washington 51 52 Nhập mơn Cơ sở liệu Hình 2-13 Định nghĩa view Microsoft Access 2007: Liệt kê tất đơn hàng khách hàng bang Washington View Hình 2-13 hiển thị hai cột từ bảng Customer ba cột từ bảng Orders View so khớp (kết nối) bảng Customers bảng Orders, đồng thời lọc dòng để chọn đơn hàng khách hàng bang Washington Phép lọc thực cách thiết lập thuộc tính Criteria cột State/Province (= ‘WA’) Chúng ta tìm hiểu chi tiết bảng điều khiển Query Microsoft Access Chương Hình 2-14 hiển thị kết thực thi truy vấn Mặc dù có hai khách hàng Washington, song người số họ có đơn hàng, có hai đơn hàng xuất bảng kết Các view phục vụ số chức hữu dụng như: ●● Ẩn cột mà người dùng khơng cần nhìn thấy (hoặc khơng phép nhìn thấy) ●● Ẩn dòng mà người dùng khơng cần nhìn thấy (hoặc khơng phép nhìn thấy) ●● Ẩn phép xử lý phức tạp sở liệu, ví dụ phép kết nối ●● Tăng tốc độ xử lý truy vấn (trong số RDBMS, ví dụ Microsoft SQL Server) Chương 2: Tìm hiểu thành phần sở liệu quan hệ Hình 2-14 Kết thực thi truy vấn thể Hình 2-13 Bài tự trắc nghiệm kiến thức Chương Chọn đáp án cho câu hỏi lựa chọn câu hỏi điền vào chỗ trống Chú ý, có nhiều đáp án cho câu hỏi Ví dụ sau thực thể? A Một khách hàng B Một đơn hàng khách hàng C Tiền lương nhân viên D Tên khách hàng Ví dụ sau thuộc tính? A Một nhân viên B Tên nhân viên C Tiền lương nhân viên D Một danh sách tên nhân viên xếp theo thứ tự ABC Dấu hiệu sau biểu thị cho lực lượng quan hệ “0, 1, nhiều” đường biểu diễn quan hệ? A Một dấu vng góc dấu ký hiệu hình vương miện gần vị trí kết thúc đường quan hệ B Một vòng tròn gần vị trí kết thúc đường quan hệ dấu ký hiệu hình vương miện vị trí kết thúc đường quan hệ C Hai dấu vng góc gần vị trí kết thúc đường quan hệ D Một vòng tròn dấu vng góc gần vị trí kết thúc đường quan hệ 53 54 Nhập môn Cơ sở liệu Đâu kiểu quan hệ hợp lệ sở liệu quan hệ? A Một - nhiều B Không - nhiều C Nhiều - nhiều D Một - Một sản phẩm sản xuất nhiều nhà máy, nhà máy sản xuất nhiều loại sản phẩm, ví dụ biểu diễn kiểu quan hệ nào? A Một - B Một - nhiều C Nhiều - nhiều D Đệ quy Trong ví dụ đây, ví dụ quan hệ đệ quy? A Một đơn vị tổ chức phòng ban B Một nhân viên quản lý nhân viên khác C Một nhân viên quản lý phòng D Một nhân viên có nhiều người cấp Ví dụ sau quy tắc nghiệp vụ? A Một ràng buộc tham chiếu phải tham chiếu tới khóa bảng cha B Tuổi nhân viên phải lớn 18 C Một truy vấn loại bỏ cột nhân viên không phép xem D Các nhân viên có bậc lương không phép thay đổi đơn hàng Một bảng quan hệ A Được tạo thành từ cột hàng B Phải gán kiểu liệu xác định C Phải gán tên D Là đơn vị lưu trữ mơ hình quan hệ Một cột bảng quan hệ A Phải gán kiểu liệu xác định B Phải gán tên bảng C Được kế thừa từ thực thể thiết kế khái niệm D Là đơn vị lưu trữ nhỏ đặt tên sở liệu quan hệ 10 Một kiểu liệu A Hỗ trợ DBMS việc lưu trữ liệu hiệu Chương 2: Tìm hiểu thành phần sở liệu quan hệ B Cung cấp tập hành vi cho cột hỗ trợ người dùng C Có thể chọn dựa vào quy tắc nghiệp vụ thuộc tính D Giới hạn ký tự phép sử dụng cột 11 Một ràng buộc khóa A Phải tham chiếu tới nhiều cột bảng B Phải định nghĩa cho tất bảng sở liệu C Thường cài đặt cách sử dụng mục D Đảm bảo rằng, khơng có hai dòng bảng có giá trị khóa 12 Ràng buộc tham chiếu A Phải có cột khóa khóa ngoại tên B Đảm bảo rằng, giá trị khóa khơng bị trùng bảng C Định nghĩa quan hệ nhiều - nhiều hai bảng D Đảm bảo rằng, giá trị khóa ngoại tham chiếu tới giá trị khóa bảng cha 13 Một ràng buộc tham chiếu định nghĩa A Sử dụng bảng điều khiển Relationships Microsoft Access B Sử dụng SQL hầu hết sở liệu quan hệ C Sử dụng kiểu liệu tham chiếu cho cột (các cột) khóa ngoại D Sử dụng trigger 14 Các kiểu ràng buộc toàn vẹn A Ràng buộc CHECK B Quan hệ - C Ràng buộc NOT NULL D Ràng buộc bắt buộc thực thi với trigger 15 Bảng _ sử dụng để giải quan hệ nhiều - nhiều 16 Một thực thể thiết kế mức khái niệm ánh xạ thành _ thiết kế mức lơgíc 17 Một thuộc tính thiết kế mức khái niệm ánh xạ thành _ thiết kế mức lơgíc 18 Các phần tử bên ngồi mơ hình ANSI/SPARC trở thành _ thiết kế mức lơgíc 19 Một quan hệ thiết kế mức khái niệm ánh xạ thành thiết kế mức lơgíc 20 Một ràng buộc khóa (primary key) thực thi cách sử dụng thiết kế mức lơgíc 55