Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 124 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
124
Dung lượng
1,53 MB
Nội dung
TRƢỜNG ĐẠI HỌC QUẢNG BÌNH KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN GIÁOTRÌNH (Lƣu hành nội bộ) “HỆ QUẢNTRỊCƠSỞDỮ LIỆU” (Dành cho Đại học, Cao đẳng Công nghệ thông tin) Tác giả: ThS Nguyễn Nƣơng Quỳnh Năm 2015 MỤC LỤC LỜI NÓI ĐẦU Error! Bookmark not defined Chƣơng TỔNG QUAN VỀ HỆQUẢNTRỊCƠSỞDỮLIỆU 1.1 Giới thiệu 1.2 Mục tiêu hệquảntrịsởliệu 1.3 Quá trình phát triển hệquảntrịsở 1.4 Kiến trúc thành phần hệquảntrịsởliệu 1.5 Tổng quanhệquảntrịsơsởliệu SQL Server 2000 1.6 Cài đặt thành phần hệ QTCSDL Chƣơng XÂY DỰNG, QUẢN LÝ VÀ KHAI THÁC CƠSỞDỮLIỆU 13 2.1 Khái niệm sởliệu 13 2.2 Sơ lƣợc SQL 13 2.5 Truy xuất liệu 30 2.7 Bổ sung, cập nhật xoá liệu 60 Chƣơng LẬP TRÌNH CSDL BẰNG T-SQL 70 3.1 Khai báo sử dụng biến 70 3.2 Cấu trúc điều khiển 71 3.3 Thủ tục lƣu trữ (Stored procedure) 73 3.4 Kiểu liệu cursor 79 3.5 Hàm ngƣời dùng (User Defined Functions) 83 3.6 Triggers 88 Chƣơng BẢO MẬT VÀ AN TOÀN DỮLIỆU 101 4.1 Khái niệm 101 4.2 Quảntrị ngƣời dùng 101 4.3 Bảo mật hệquảntrịsởliệu 107 4.4 Giao tác SQL 108 CHƢƠNG LẬP TRÌNHCƠSỞDỮLIỆU 115 5.1 Các mô hình truy cập liệu 115 5.2 Các Kỹ thuật lập trìnhsởliệu 119 5.3 Xây dựng ứng dụng CSDL 121 TÀI LIỆU THAM KHẢO 124 Chƣơng I TỔNG QUAN VỀ HỆQUẢNTRỊCƠSỞDỮLIỆU 1.1 Giới thiệu - Một sởliệu (DataBase) tập tập tin có liên quan với nhau, đƣợc thiết kế nhằm làm giảm thiểu lặp lại liệu - Một hệquảntrịsởliệu (DBMS - DataBase Management System) hệ thống gồm CSDL thao tác CSDL đó, đƣợc thiết kế tảng phần cứng, phần mềm với kiến trúc định Mục đích hệquảntrị CSDL cung cấp môi trƣờng để tìm lại thông tin lƣu thông tin CSDL Ngƣời sử dụng sởliệu đƣợc phân thành bốn nhóm tuỳ theo cách thức họ trao đổi với hệ thống • Ngƣời lập trình ứng dụng: Là nhà chuyên môn máy tính, ngƣời trao đổi với hệ thống thông qua lời gọi DML đƣợc nhúng chƣơng trình đƣợc viết ngôn ngữ chủ - host language (Pascal, C, Cobol ) • Ngƣời sử dụng thành thạo: Trao đổi với hệ thống không qua viết chƣơng trình Thay vào họ đặt yêu cầu họ ngôn ngữ truy vấn CSDL Mỗi câu vấn tin nhƣ đƣợc đệ trình cho xử lý vấn tin, chức xử lý vấn tin "dịch" lệnh DML thành thị mà quảntrị lƣu trữ hiểu • Ngƣời sử dụng chuyên biệt: Là ngƣời sử dụng thành thạo, họ viết ứng dụng CSDL chuyên biệt không nằm khung xử lý liệu truyền thống • Ngƣời sử dụng ngây thơ: ngƣời sử dụng không thành thạo, họ trao đổi với hệ thống cầu dẫn chƣơng trình ứng dụng thƣờng trực đƣợc viết sẵn 1.2 Mục tiêu hệquảntrịsởliệuHệquảntrịsởliệu phải đảm bảo mục tiêu sau: - Dữliệu sẵn dùng: liệu đƣợc tổ chức cho ngƣời dùng truy cập dễ dàng theo chức nhiệm vụ họ - Tính toàn vẹn liệu: liệu lƣu trữ sởliệu đắn tin cậy - An toàn liệu: ngƣời dùng đƣợc phép có quyền truy cập liệu Nếu nhiều ngƣời dùng truy cập mục liệu lúc hệquảntrịsởliệu không cho phép họ thực thay đổi gây mâu thuẫn liệu - Độc lập liệu: hệquảntrịsởliệu phải cho phép tất ngƣời dùng đƣợc phép lƣu trữ, cập nhật rút trích liệu hiệu mà không cần nắm chi tiết cấu trúc sởliệu đƣợc biểu diễn cài đặt 1.3 Quá trình phát triển hệquảntrịsở Quá trình phát triển hệquảntrịsởliệu nhƣ sau: - Flat files: 1960s – 1980s - Hierarchical: 1970s – 1990s - Network: 1970s – 1990s - Relational: 1980s - đến - Object-oriented: 1990s - đến - Object-relational: 1990s - đến - Data warehousing: 1980s - đến - Web-enabled: 1990s - đến 1.4 Kiến trúc thành phần hệquảntrịsởliệu Kiến trúc HQTCSDL gồm thành phần chức năng: - Bộ quản lý lƣu trữ (Storage manager) - Bộ xử lý truy vấn (Query processor) * Bộ quản lý lƣu trữ Bộ quản lý lƣu trữ có nhiệm vụ lƣu trữ, rút trích cập nhật liệu vào sởliệu Bộ quản lý lƣu trữ gồm đơn vị sau: - Kiểm tra chứng thực toàn vẹn: Kiểm tra ràng buộc toàn vẹn quyền truy cập liệu ngƣời dùng sởliệu - Quản lý giao dịch: Thành phần đảm bảo sởliệu trạng thái quán Nó quản lý việc thực thi yêu cầu thao tác liệu đảm bảo truy cập liệu đồng thời không dẫn đến mâu thuẫn, - Quản lý file: quản lý việc cấp phát không gian đĩa Thành phần quản lý file có thể: tạo file, xoá file, cập nhật ghi file, lấy ghi từ file - Quản lý vùng đệm: Có trách nhiệm chuyển liệu từ đĩa lƣu trữ vào nhớ theo yêu cầu chƣơng trình * Bộ xử lý truy vấn Thực câu truy vấn nhận đƣợc từ ngƣời dùng qua giai đoạn: phân tích, tối ƣu hoá câu hỏi, lập kế hoạch thực thực tính toán SQL gì? SQL, viết tắt Structured Query Language (ngôn ngữ truy vấn có cấu trúc), công cụ sử dụng để tổ chức, quản lý truy xuất liệu đuợc lƣu trữ sởliệu SQL hệ thống ngôn ngữ bao gồm tập câu lệnh sử dụng để tƣơng tác với sởliệuquanhệ SQL đƣợc sử dụng để điều khiển tất chức mà hệquảntrịsởliệu cung cấp cho ngƣời dùng bao gồm: Định nghĩa liệu: SQL cung cấp khả định nghĩa sở liệu, cấu trúc lƣu trữ tổ chức liệu nhƣ mối quanhệ thành phần liệu Truy xuất thao tác liệu: Với SQL, ngƣời dùng dễ dàng thực thao tác truy xuất, bổ sung, cập nhật loại bỏ liệusởliệu Điều khiển truy cập: SQL đƣợc sử dụng để cấp phát kiểm soát thao tác ngƣời sử dụng liệu, đảm bảo an toàn cho sởliệu Đảm bảo toàn vẹn liệu: SQL định nghĩa ràng buộc toàn vẹn sởliệu nhờ đảm bảo tính hợp lệ xác liệu trƣớc thao tác cập nhật nhƣ lỗi hệ thống Nhƣ vậy, nói SQL ngôn ngữ hoàn thiện đƣợc sử dụng hệ thống sởliệu thành phần thiếu hệquảntrịsởliệu Mặc dù SQL ngôn ngữ lập trình nhƣ C, C++, Java, song câu lệnh mà SQL cung cấp đƣợc nhúng vào ngôn ngữ lập trình nhằm xây dựng ứng dụng tƣơng tác với sởliệu 1.5 Tổng quanhệquảntrịsơsởliệu SQL Server 2000 SQL server hệ thống quảntrị CSDLQH (RDBMS) nhiều ngƣời dùng kiểu Client/Server Đây hệ thống dùng lƣu trữ liệu cho hầu hết ứng dụng lớn * Ứng dụng kiểu Client/Server: Một ứng dụng kiểu Client/Server bao gồm phần: Một phần chạy Server(máy chủ) phần khác chạy workstations (máy trạm) - Phần Server: chứa CSDL, cung cấp chức phục vụ cho việc tổ chức quản lý CSDL, cho phép nhiều ngƣời sử dụng truy cập liệu Điều không tiết kiệm mà thể tính quán mặt liệu Tất liệu đƣợc truy xuất thông qua server, không đƣợc truy xuất trực tiếp Do đó, có độ bảo mật cao, tính chịu lỗi, chạy đồng thời, lƣu dự phòng… - Phần Client (Ứng dụng khách): Là phần mềm chạy máy trạm cho phép ngƣới sử dụng giao tiếp CSDL Server SQL Server sử dụng ngôn ngữ lập trình truy vấn CSDL Transact-SQL, version Structured Query Language Với Transact-SQL, ta truy xuất liệu, cập nhật quản lý hệ thống CSDL quanhệ Với Máy chủ ta cóhệ thống QTCSDL SQL Server Nếu muốn có nhiều hệ thống QTCSDL ta cần có nhiều máy chủ tƣơng ứng SQL Server cósố đặc tính sau: - Cho phép quảntrịhệ CSDL lớn (lên đến vài tega byte), có tốc độ xử lý liệu nhanh đáp ứng yêu cầu thời gian - Cho phép nhiều ngƣời khai thác thời điểm CSDL toàn quảntrị CSDL (lên đến vài chục ngàn user) - Cóhệ thống phân quyền bảo mật tƣơng thích với hệ thống bảo mật công nghệ NT (Network Technology), tích hợp với hệ thống bảo mật Windows NT sử dụng hệ thống bảo vệ độc lập SQL Server - Hỗ trợ việc triển khai CSDL phân tán phát triển ứng dụng Internet - Cho phép lập trình kết nối với nhiều ngôn ngữ lập trình khác dùng xây dựng ứng dụng đặc thù (Visual Basic, C, C++, ASP, ASP.NET, XML, ) - Sử dụng câu lệnh truy vấn liệu Transaction-SQL (Access SQL, Oracle PL/SQL) Các phiên SQL Server - Phiên chuẩn (Standard Edition): phiên cung cấp toàn chức đƣợc thiết kế nhằm chạy máy tính với HĐH Windows NT Windows 2000 Server - Phiên Personal Engine: Chạy máy đơn với HĐH Windows NT; Windows 2000 Server Windows 9x Nó hổ trợ hầu hết tính SQL Server Do đó, ta xây dựng CSDL với phiên này, sau triển khai phiên khác Ngoài phiên khác chạy Window NT 2000 Server nhƣ : - Enterprise Edition: dùng cho xí nghiệp - Developer Edition : dùng cho doanh nghiệp nhỏ - Desktop Engine Các phiên đƣợc cài đặt phụ thuộc vào cài đặt mà ta chọn lựa chọn cài đặt (ví dụ phiên Enterprise, Standard, Personal,… phiên SQL Client, Connectivity,… chọn hộp thoại trình cài đặt) 1.6 Cài đặt thành phần hệ QTCSDL Mỗi CSDL có đối tƣợng sau: 1- Tables: Table đối tƣợng CSDL dùng lƣu trữ liệu cần quản lý Mỗi table có hay nhiều Field (trƣờng) Mỗi Field ứng với loại liệu cần lƣu trữ Table có thành phần liên quan nhƣ : a) Constraint – Ràng buộc: Constraint định ràng buộc liệu bảng bảng khác theo quy tắc b) Triggers – Bẫy Lỗi: Trigger thƣờng chứa mã lệnh kiểm tra liệu, có tính tự động thực có hành động xảy liệu Table nhƣ Insert, Update, Delete c) Indexs – Chỉ mục: Hổ trợ cho việc xếp tìm kiếm nhanh thông tin table 2- Diagram – Sơ đồ quan hệ: Thể mối quanhệliệu table 3- Views – Khung nhìn hay table ảo: Là đối tƣợng dùng hiển thị liệu đƣợc rút trích, tính toán từ Table theo nhu cầu ngƣời dùng 4- Stored Procedure – Thủ tục nội: Chứa lệnh T-SQL dùng thực số tác vụ Stored Proc nhận truyền tham số Stored Proc đƣợc biên dịch trƣớc, thời gian thực nhanh đƣợc gọi Có nhiều Stored Proc hệ thống đƣợc định nghĩa với tiền tố “sp_” có nhiệm vụ thu thập thông tin từ bảng hệ thống có ích cho việc quảntrị 5- User Defined Function: Hàm ngƣời dùng định nghĩa 6- Users: Chứa danh sách User sử dụng CSDL Ngƣời quảntrịhệ thống cao có User Name dbo, tên đăng nhập (Login Name) hệ thống mặc định sa Tài khoản sa tồn bỏ Để thay đổi mật sa, cách nhanh là: Mở trình Query Analyzer Thực thủ tục hệ thống : EXEC SP_PASSWORD NULL, 7- Roles: Các qui định vai trò chức User hệ thống SQL Server 8- Rules: Các qui tắc ràng buộc liệu đƣợc lƣu trữ Table 9- Defaults: Các khai báo giá trị mặc định 10- User Defined Data Type: Kiểu liệu ngƣời dùng tự định nghĩa 11- Full Text Catalogs: Tập phân loại liệu Text Các CSDL hệ thống SQL server Sau cài đặt, SQL Server có CSDL hệ thống CSDL ví dụ sau: Master: CSDL kiểm soát tất hoạt động SQL Server, chứa thông tin hệ thống SQL Server: Các tài khoản đăng nhập, cấu hình hệ thống, thông tin CSDL tạo, thủ tục hệ thống thực tác vụ quảntrịhệ thống, thủ tục ngƣời dùng tạo thêm… Ví dụ: User tạo CSDL mới, thêm hay xóa Stored Procedure, thông tin đƣợc lƣu trữ CSDL master Chú ý: Cần Backup CSDL Master ta sửa đổi hệ thống Model : Chứa template dùng làm mẫu để tạo CSDL Khi ta tạo CSDL SQL Server lấy tất mẫu (bao gồm Tables, Views,…) từ CSDL MSDB: dùng hổ trợ dịch vụ SQL Server Agent, bao gồm xếp thông tin công việc theo lịch biểu, cảnh báo lỗi, kiện, nhân Lịch sử hoạt động Backup đƣợc lƣu CSDL Ví dụ: Khi ta tạo lịch trình cho việc backup liệu hay lịch trình để thực Stored Procedure, tất tác vụ lƣu CSDL Nếu xóa CSDL này, ta phải cài đặt lại cần dùng hệ thống yêu cầu Tempdb: nơi lƣu trữ thông tin tạm thời hoạt động SQL, ví dụ nhƣ table tạm phục vụ cho việc xếp liệu CSDL tempdb tự khởi tạo lại SQL Server đƣợc khởi động lại Pubs: CSDL mẫu nhà xuất bản, bao gồm tác giả, sách, thông tin việc bán sách Hấu hết tính CSDL đƣợc thể CSDL NorthWind: Là CSDL hổ trợ cho việc học tập SQL Server ngƣời sử dụng MS Access Các công cụ SQL server Service Manager: Các dịch vụ SQL Server: Đây trìnhquản lý dịch vụ SQL Server nhƣ: - MSSQL Server: RDBMS, xử lý phát biểu Transact-SQL quản lý file lƣu trữ CSDL - SQL Server Agent: dùng lập lịch thực tự động công việc nhƣ Backup liệu, Replication, … - Microsoft Distributed Transaction Coordinator (MSDTC): Hổ trợ cho ứng dụng Client làm việc với liệu đƣợc phân bổ nhiều máy chủ - Combo Server: Chứa danh sách SQL Server có khả truy xuất từ máy ta Tuy nhiên, ta gỏ tên máy chủ cần kết nối danh sách click nút mũi tên hộp Services, Tiện ích Services Manager cố gắng kết nối tới máy chủ xa Combo Services: Chứa tên dịch vụ đƣợc cung cấp SQL Server chọn Mỗi dịch vụ trạng thái Một số dịch vụ không cung cấp chức tạm dừng Ví dụ: MSSQLServer tiếp tục hoạt động tạm dừng, nhƣng kết nối không đƣợc phép Trình Enterprise Manager Enterprise Manager cung cấp chức phát triển quảntrị SS giao diện đồ họa Các tính EM: Tạo, xóa, cập nhật CSDL đối tƣợng Quản lý lịch trình Backup liệuQuản lý ngƣời dùng truy cập CSDL SS Tạo, xóa cập nhật quyền Login User Định cấu hình cho Server Tạo quản lý tìm kiếm Databases: chứa CSDL đƣợc cài đặt máy chủ Data Transform Service (DTS): Cung cấp phƣơng tiện chuyển đổi liệu từ nhiều nguồn khác vào SQL Server từ SQL Server sang nguồn khác Nó cógiao diện cho phép lập trình xây dựng gói dịch vụ chuyển đổi liệu Management: Cho phép ta thực tác vụ quảntrị CSDL, xem nhật ký hoạt động Server, quản lý SQL Server Agent Replication: cho phép phân bổ liệu đối tƣợng Database từ CSDL đến database đến database khác Typically, replication is used between physically distributed servers Security : chứa chức điều khiển tất hoạt động liên quan đến việc bảo mật SQL Server Support Services: cho phép điều khiển dịch vụ khác cóquanhệ với SQL Server nhƣ: Distributed Transaction Coordinator, Full Text Search SQL Mail cho phép nhận e-mail từ SQL Server Metadata Services enables you to manage metadata, or data about data Công Cụ Lập Trình - Query Analyzer (ISQLW) Là giao diện để chạy truy vấn Transact-SQL thủ tục lƣu trữ 10 SAVE TRANSACTION: Đánh dấu vị trígiao tác (gọi điểm đánh dấu) ROLLBACK TRANSACTION: Quay lui trở lại đầu giao tác điểm đánh dấu trƣớc giao tác COMMIT TRANSACTION: Đánh dấu điểm kết thúc giao tác Khi câu lệnh thực thi có nghĩa giao tác thực thành công ROLLBACK [WORK]: Quay lui trở lại đầu giao tác COMMIT [WORK]: Đánh dấu kết thúc giao tác Một giao tác SQL đƣợc bắt đấu câu lệnh BEGIN TRANSACTION Câu lệnh đánh dấu điểm bắt đầu giao tác có cú pháp nhƣ sau: BEGIN TRANSACTION [tên_giao_tác] Một giao tác kết thúc trƣờng hợp sau: Câu lệnh COMMIT TRANSACTION (hoặc COMMIT WORK) đƣợc thực thi Câu lệnh báo hiệu kết thúc thành công giao tác Sau câu lệnh này, giao tác đƣợc bắt đầu Khi câu lệnh ROLLBACK TRANSACTION (hoặc ROLLBACK WORK) đƣợc thực thi để huỷ bỏ giao tác đƣa sởliệu trạng thái nhƣ trƣớc giao tác bắt đầu Một giao tác bắt đầu sau câu lệnh ROLLBACK đƣợc thực thi Một giao tác kết thúc trình thực gặp lỗi (chẳng hạn hệ thống gặp lỗi, kết nối mạng bị “đứt”, ) Trong trƣờng hợp này, hệ thống tự động phục hồi lại trạng thái sởliệu nhƣ trƣớc giao tác bắt đầu (tƣơng tự nhƣ câu lệnh ROLLBACK đƣợc thực thi để huỷ bỏ giao tác) Tuy nhiên, trƣờng hợp giao tác đƣợc bắt đầu Ví dụ: Giao tác dƣới kết thúc lệnh ROLLBACK TRANSACTION thay đổi vể mặt liệu mà giao tác thực (UPDATE) tác dụng BEGIN TRANSACTION giaotac1 UPDATE monhoc SET sodvht=4 WHERE sodvht=3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL ROLLBACK TRANSACTION giaotac1 giao tác dƣới kết thúc lệnh COMMIT thực thành công việc cập nhật liệu bảng MONHOC DIEMTHI BEGIN TRANSACTION giaotac2 UPDATE monhoc SET sodvht=4 WHERE sodvht=3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL 110 COMMIT TRANSACTION giaotac2 Câu lệnh: SAVE TRANSACTION tên_điểm_dánh_dấu đƣợc sử dụng để đánh dấu vị trígiao tác Khi câu lệnh đƣợc thực thi, trạng thái sởliệu thời điểm đƣợc ghi lại nhật ký giao tác Trong trình thực thi giao tác quay trở lại điểm đánh dấu cách sử dụng câu lệnh: ROLLBACK TRANSACTION tên_điểm_đánh_dấu 111 Trong trƣờng hợp này, thay đổi mặt liệu mà giao tác thực từ điểm đánh dấu đến trƣớc câu lệnh ROLLBACK đƣợc triệu gọi bị huỷ bỏ Giao tác đƣợc tiếp tục với trạng thái sởliệucó đƣợc điểm đánh dấu Sau câu lệnh ROLLBACK TRANSACTION đƣợc sử dụng để quay lui lại điểm đánh dấu giao tác, giao tác đƣợc tiếp tục với câu lệnh sau Nhƣng câu lệnh đƣợc sử dụng để quay lui lại đầu giao tác (tức huỷ bỏ giao tác), giao tác kết thúc câu lệnh COMMIT TRANSACTION trƣờng hợp gặp lỗi Ví dụ: Câu lệnh COMMIT TRANSACTION giao tác dƣới kết thúc thành công giao tác 112 BEGIN TRANSACTION giaotac3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL SAVE TRANSACTION a UPDATE monhoc SET sodvht=4 WHERE sodvht=3 ROLLBACK TRANSACTION a UPDATE monhoc SET sodvht=2 WHERE sodvht=3 COMMIT TRANSACTION giaotac3 ví dụ dƣới đây, câu lệnh COMMIT TRANSACTION gặp lỗi: BEGIN TRANSACTION giaotac4 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL SAVE TRANSACTION a UPDATE monhoc SET sodvht=4 WHERE sodvht=3 ROLLBACK TRANSACTION giaotac4 UPDATE monhoc SET sodvht=2 WHERE sodvht=3 COMMIT TRANSACTION giaotac4 4.4.3 Giao tác lồng Các giao tác SQL đƣợc lồng vào theo cấp Điều thƣờng gặp giao tác thủ tục lƣu trữ đƣợc gọi từ tiến trìnhgiao tác khác Ví dụ dƣới minh hoạ cho ta trƣờng hợp giao tác lồng Ví dụ: Ta định nghĩa bảng T nhƣ sau: CREATE TABLE T ( A INT PRIMARY KEY, B INT) thủ tục sp_TransEx: CREATE PROC sp_TranEx(@a INT,@b INT) AS BEGIN BEGIN TRANSACTION T1 IF NOT EXISTS (SELECT * FROM T WHERE A=@A ) INSERT INTO T VALUES(@A,@B) IF NOT EXISTS (SELECT * FROM T WHERE A=@A+1) INSERT INTO T VALUES(@A+1,@B+1) COMMIT TRANSACTION T1 113 END Lời gọi đến thủ tuch sp_TransEx đƣợc thực giao tác khác nhƣ sau: BEGIN TRANSACTION T3 EXECUTE sp_tranex 10,20 ROLLBACK TRANSACTION T3 Trong giao tác trên, câu lệnh ROLLBACK TRANSACTION T3 huỷ bỏ giao tác tác dụng lời gọi thủ tục giao tác không tác dụng, tức dòng liệu đƣợc bổ sung vào bảng T (cho dùgiao tác T1 thủ tục sp_tranex thực thành công với lệnh COMMIT TRANSACTION T1) Ta xét tiếp trƣờng hợp giao tác khác có lời gọi đến thủ tục sp_tranex nhƣ sau: BEGIN TRANSACTION EXECUTE sp_tranex 20,40 SAVE TRANSACTION a EXECUTE sp_tranex 30,60 ROLLBACK TRANSACTION a EXECUTE sp_tranex 40,80 COMMIT TRANSACTION sau giao tác thực xong, liệu bảng T là: A B 20 40 21 41 40 80 41 81 Nhƣ vậy, tác dụng lời gọi thủ tục sp_tranex 30,60 giao tác bị huỷ bỏ câu lệnh ROLLBACK TRANSACTION giao tác Nhƣ thấy ví dụ trên, giao tác SQL đƣợc lồng vào nhau, giao tác giao tác có vai trò định Nếu giao tác đƣợc uỷ thác (commit) giao tác đƣợc lồng bên đồng thời uỷ thác; Và giao tác thực lệnh ROLLBACK giao tác lồng bên chịu tác động câu lệnh (cho dùgiao tác lồng bên thực lệnh COMMIT TRANSACTION) 114 CHƢƠNG LẬP TRÌNHCƠSỞDỮLIỆU 5.1 Các mô hình truy cập liệu 5.1.1 ODBC - open database connectivity a ODBC ? ODBC (Open Database Connectivity) standard Database API Ở ÐÂY CẦN PHÂN BIỆT KHÁI NIỆM "standard API" "native API": Standard API API chuẩn, điều có nghĩa đƣợc chấp thuận hỗ trợ từ nhà cung cấp DBMSs nhà phát triển ứng dụng Còn native API API nhà cung cấp DBMS đƣa để truy xuất khai thác hiệu khả đặc trƣng DBMS họ cung cấp (ví dụ Oracle OCI, Sybase DB-Library native API) Các bạn làm quen với Windows API lập trình môi trƣờng Windows Trong Visual Basic bạn dùng trực tiếp hàm, thủ tục Windows API cung cấp nhƣng Visual C++ gần nhƣ liên tục sử dụng hàm, thủ tục để ứng dụng bạn giao tiếp đƣợc với hệ điều hành Windows để tạo giao diện ngƣời sử dụng Cho ví dụ, vấn đề hiển thị video để đƣa cửa sổ hình bạn không cần phải biết đến loại hình đƣợc sử dụng, Windows API cung cấp cho bạn khả hiển thị video độc lập với thiết bị Cũng tƣơng tự nhƣ vậy, ODBC Database API chuẩn, cung cấp cho bạn khả truy nhập đến CSDL cách độc lập với DBMS, qua ODBC bạn truy xuất đƣợc tới CSDL DBMS khác Các đặc điểm ODBC: + ODBC giao diện lập trình sử dụng SQL: ODBC sử dụng lệnh SQL để truy xuất CSDL + ODBC tách nhà phát triển ứng dụng khỏi phức tạp việc kết nối tới nguồn liệu: Mục tiêu đƣợc đề cho ODBC phải dễ dàng cho ngƣời lập trình ứng dụng tạo kết nối ngƣời sử dụng cuối tới nguồn liệu thích hợp mà trở thành chuyên gia mạng + Kiến trúc ODBC cho phép nhiều ứng dụng truy xuất nhiều nguồn liệu + ODBC cung cấp mô hình lập trình "thích ứng" (adaptive): ODBC cung cấp chức mà đƣợc sử dụng với tất DBMS cho phép ứng dụng khai thác khả riêng DBMS Nó cung cấp interrogation function mà ứng dụng chủ động sử dụng để xác định khả 115 DBMS Các interrogation function cho phép ứng dụng hỏi driver vài chức đặc biệt có đƣợc cung cấp DBMS hay không b Kiến trúc ODBC * ODBC đƣợc xây dựng mô hình kiến trúc Client/Server Trong kiến trúc Client/Server bao gồm một client, server, data protocol mà cho phép client server giao tiếp với Mô hình lý tƣởng cho Traditional Relational DBMS, mạng vật lý kết nối client PC tới DBMS máy khác ODBC đƣợc thiết kế để sử dụng với hệ thống nằm mô hình kiến trúc client/server, đáp ứng đƣợc yêu cầu cần thiết cho Traditional Relational DBMS nhƣ: + Cung cấp standard API + Khai thác tất chức DBMS + Cung cấp thực thi tƣơng đƣơng với native API DBMS Kiến trúc ODBC đặt tảng mô hình kiến trúc client/server đảm nhận cho giao diện lập trình phát thu giao thức truyền liệu SQL DBMS, hoạt động thực thi nhƣ native API cho DBMS ODBC không giới hạn với client/server DBMS, làm việc với desktop database file-oriented store nhƣ bảng tính text * Các thành phần kiến trúc ODBC File - Oriented Data Store Client/Server DBMS Applications: Các ứng dụng đảm nhận việc tƣơng tác với ngƣời sử dụng qua user interface gọi ODBC function để đƣa câu lệnh SQL nhận kết trả Driver Manager: Nhƣ tên gọi nó, nhiệm vụ quản lý tƣơng tác chƣơng trình ứng dụng driver, nhiều ứng dụng nhiều driver đƣợc quản lý lúc Driver Manager cung cấp liên kết ứng dụng driver, cho phép nhiều ứng dụng truy xuất liệu qua nhiều driver Driver Manager load hay unload nhiều driver cho nhiều ứng dụng Khi ứng dụng cần truy xuất nguồn liệu, Driver Manager load driver cần thiết Driver Manager xác định ODBC function đƣợc cung cấp driver ghi địa nhớ chúng vào bảng Khi ứng dụng gọi function driver, Driver Manager xác định vào gọi function Bằng cách này, nhiều driver đƣợc quản lý đồng thời ngƣời lập trình ứng dụng 116 lo lắng đến việc quản lý chi tiết driver Một ứng dụng sử dụng ODBC thời điểm với ứng dụng khác mà không cần phải biết đến ứng dụng Drivers: Các driver xử lý ODBC function đƣợc gọi, đƣa yêu cầu SQL để định nguồn liệu, trả kết cho ứng dụng Các driver đảm nhận việc tƣơng tác với lớp phần mềm cần thiết để truy xuất nguồn liệu Data sources: Bao gồm tập hợp liệu môi trƣờng tƣơng ứng chúng, bao gồm hệ điều hành, DBMS, phần mềm mạng c Các mô hình hoạt động ODBC - Mô hình One-Tier Mô hình đƣợc dùng để truy xuất Desktop Database/ISAM (Indexed Sequential Access Method) file (các file liệu Foxpro, Access, Paradox, dBase), flat file (các file text spreadsheet) Trong mô hình One-Tier driver đảm nhiệm vai trò SQL Database Engine, thực xử lý tất câu lệnh SQL (parse, optimize, execute) - Mô hình Two-Tier Ðây mô hình kinh điển kiến trúc Client/Server Các Two-Tier driver trực tiếp gửi nhận thông tin giao thức truyền liệu DBMS ánh xạ tới native Database API, không trực tiếp truy xuất liệu DBMS Server nhận yêu cầu SQL từ Client, thực chúng gửi kết trở lại Client Cho ví dụ, Two-Tier driver truy xuất CSDL Microsoft SQL Server trực tiếp truyền nhận thông tin giao thức truyền liệu, Two-Tier driver truy xuất CSDL Oracle ánh xạ tới Oracle's Native API OCI (Oracle Call Interface) Một biến đổi khác mô hình này: - Mô hình Three-Tier Client mô hình Three-Tier thay kết nối trực tiếp tới DBMS, đƣợc kết nối qua Gateway Server Trong thực tế, Gateway Server kết nối tới nhiều DBMS Trong hệ thống triển khai ứng dụng xây dựng ODBC để truy xuất nhiều nguồn liệu, mô hình Three-Tier đƣa hầu hết phức tạp Client lên Server Nó trợ giúp nhiều việc đơn giản hoá cài đặt, quản lý driver Client 5.1.2 JDBC - java database connectivity a JDBC gì? Tƣơng tự nhƣ ODBC JDBC Database API chuẩn JDBC API định nghĩa lớp Java để đƣa kết nối CSDL, câu lệnh SQL, tập hợp kết quả, 117 siêu liệu, Nó cho phép ngƣời lập trình Java đƣa câu lệnh SQL xử lý kết đƣợc trả JDBC primary API cho việc truy xuất liệu Java JDBC API đƣợc thực qua Driver Manager mà thể cung cấp nhiều driver kết nối tới kiểu CSDL khác Các JDBC driver đƣợc viết hoàn toàn Java (pure java) chúng đƣợc download nhƣ phần applet, chúng đƣợc thực thi sử dụng native method để nối với thƣ viện truy xuất CSDL có (Database Access Libraries) b Kiến trúc jdbc Cũng nhƣ ODBC JDBC đƣợc thiết kế cho mô hình kiến trúc Client/Server với ứng dụng Java truy xuất CSDL Các thành phần chức chúng kiến trúc JDBC tƣơng tự nhƣ ODBC + Java Applications: Các ứng dụng truy nhập CSDL viết Java (Java applet/Java stand-alone application) + JDBC Driver Manager + JDBC Drivers + Data Source c Các mô hình hoạt động JDBC - Mô hình Two-Tier: Trong mô hình Two-Tier, Java applet/application qua driver trực tiếp gọi tới CSDL Mô hình yêu cầu JDBC driver giao tiếp với DBMS đặc biệt đƣợc truy xuất Qua câu lệnh SQL ngƣời sử dụng đƣợc chuyển tới DBMS, kết đƣợc gửi trở lại cho ngƣời sử dụng DBMS đƣợc đặt Database Server Native-API party-Java driver: Kiểu driver chuyển yêu cầu JDBC thành yêu cầu tƣơng ứng native API cho DBMS tƣơng ứng Nó bridge driver nên yêu cầu phải có vài mã đƣợc nạp Client JDBC-ODBC bridge driver: Kiểu driver truy xuất DBMS qua ODBC driver Yêu cầu mã ODBC phải đƣợc nạp Client Kiểu driver hầu nhƣ dùng mạng tổ hợp - nơi mà việc cài đặt client vấn đề chuyên môn cho application server viết Java kiến trúc three-tier Native-protocol pure Java driver: Kiểu driver chuyển yêu cầu JDBC giao thức đƣợc sử dụng trực tiếp DBMS Nó cho phép yêu cầu trực tiếp từ Client tới DBMS Server, giải pháp thích hợp cho truy xuất Intranet - Mô hình Three-Tier: 118 Trong mô hình Three-Tier, yêu cầu đƣợc JDBC-Net driver gửi tới middletier qua giao thức độc lập với DBMS, sau qua giao thức đặc biệt middle-tier gửi câu lệnh SQL tới DBMS DBMS xử lý câu lệnh gửi kết trở lại cho middle-tier, middle-tier gửi kết tới ứng dụng Pure Java driver nhƣ JDBC-Net pure Java driver Native-protocol pure Java driver thƣờng đƣợc sử dụng để truy xuất CSDL, khai thác đƣợc lợi Java tốc độ truy xuất nhanh bridge driver Còn kiểu bridge driver nhƣ JDBCODBC bridge driver Native-API partly Java driver giải pháp tạm thời đƣợc sử dụng trƣờng hợp mà sử dụng pure Java driver 5.2 Các Kỹ thuật lập trìnhsởliệu 5.2.1 ADO – ActiveX Data Object ADO công nghệ truy cập sởliệu hƣớng đối tƣợng, đƣợc xem kỹ thuật để truy cập sởliệu từ Web Server Microsoft ADO đƣợc cung cấp dƣới dạng thƣ viện ActiveX Server, thỏa mái dùng ADO ứng dụng Visual Basic, thực tế sử dụng ADO để làm việc với sởliệu Client/Server dễ dàng kỹ thuật khác Tuy nhiên, với xu hƣớng phát triển công nghệ Internet việc kết nối dựliệu từ xa nhu cầu thực tế thông dụng Do đó, tìm hiểu đối tƣợng ADO môi trƣờng Web, mà cụ thể môi trƣờng ngôn ngữ kịch ASP Để tạo đối tƣợng Recordset ASP, dùng phƣơng thức CreateObject với cú pháp nhƣ sau: Dim rs „Khai báo biến recordset Set rs = Server.CreateObject(“ADODB.Recordset”) Bởi đối tƣợng Server mặc định ASP nên ta không cần phải tham chiếu đến trực tiếp, có nghĩa dùng CreateObject() thay Server.CreateObject() Để tham chiếu đến trƣờng đối tƣợng Recordset, sử dụng hai cú pháp sau: rs.Fields(“Tên trƣờng”) Hoặc: rs! Để đóng đối tƣợng Recordset lại, dùng cú pháp: rs.Close set rs = nothing „hủy đối tƣợng Recordset 119 Ví dụ sau mô tả tổng quát cách sử dụng đối tƣợng ADO để hiển thị danh sách nhân viên sởliệu QuanLyNhanVien (quản lý nhân viên) đƣợc tạo ODBC với tên DSN QLNV: Hien thi dang sach nhan vien =1000000” Do Until rs.EOF Response.write(“rs.Fields(“HotenNV”) & “ – “) Response.write(“rs.Fields(“NgaySinh”) & “– ”) Response.write(“rs.Fields(“Luong”) & “”) rs.MoveNext Loop rs.Close set rs = nothing %> 112 Chú ý: Ở ví dụ trên, đoạn lệnh VB Script đƣợc đặt cặp dấu 5.2.2 OLE_DB Phần lớn nhà lập trình không tƣơng tác trực tiếp với OLE DB Thay vào họ lập trình với đối tƣợng ADO, nhiên cần phải biết mô hình đối tƣợng cung cấp giao diện với OLE DB Chúng ta tham khảo ba mô hình sau để có nhìn sâu OLE DB: 120 5.3 Xây dựng ứng dụng CSDL Lập trình đối tƣợng RecordSet Nhƣ số ví dụ trên, làm quen với đối tƣợng Recordset Bây tìm hiểu rõ phƣơng thức, thuộc tính đối tƣợng Recordset * Các phƣơng thức đối tƣợng Recordset: PHƢƠNG THỨC DIỄN GIẢI AddNew Tạo ghi Cancel Hủy bỏ thao tác thực thi CancelBatch Hủy bỏ cập nhật bị treo CancelUpdate Hủy bỏ thay đổi với ghi hành Clone Tạo đối tƣợng Recordset Close Đóng đối tƣợng Recordset đối tƣợng liên quan CompareBookmarks So sánh chổ đánh dấu Delete Xóa ghi hay tập ghi hành Find Tìm ghi thỏa điều kiện GetRows Lấy nhiều ghi đƣa vào mảng GetString Trả recordset dƣới dạng chuổi Move Di chuyển vị trí ghi hành MoveFirst Đƣa vị trí ghi hành đến ghi Recordset MoveLast Đƣa vị trí ghi hành đến ghi cuối Recordset 121 MoveNext Đƣa vị trí ghi hành đến ghi Recordset MovePrevious Đƣa vị trí ghi hành đến ghi trƣớc Recordset NextRecordset recordset Open Mở Requery Xóa đối tƣợng recordset hành trả đối tƣợng Recordset Cập nhật lại liệu cách thực thi lại câu truy vấn ban đầu Resync Save Seek Supports Refresh lại liệu đối tƣợng Recordset hành Lƣu recordset xuống file Tìm mục Recordset Xác định xem đối tƣợng recordset có hổ trợ chức đặc biệt Update Lƣu thay đổi UpdateBatch Lƣu khối thay đổi xuống đĩa * Các thuộc tính đối tƣợng Recordset: THUỘC TÍNH DIỄN GIẢI BOF Trả giá trị TRUE vị trí ghi thời nằm phía trƣớc ghi đầu tiên, ngƣợc lại FALSE EOF Trả giá trị TRUE vị trí ghi thời nằm phía sau ghi cuối cùng, ngƣợc lại FALSE RecordCount Trả số ghi Recordset Sort Sẵp xếp Để thấy rõ lợi ích tính khả thi đối tƣợng Recordset thao tác liệu, xem xét cách thức kết nối thao tác sởliệu SQL Server Trong thực tế, ngƣời ta thực việc kết nối trực tiếp qua đối tƣợng Recordset mà thƣờng thông qua đối tƣợng kết nối sởliệu gọi đối tƣợng Connection nhằm tăng tính linh động hiệu cho ứng dụng nhƣ Website Chuỗi kết nối OLE DB hệquảntrịsởliệu SQL Server đƣợc cung cấp nhƣ sau: “Data Source = tên_server; Initial Catalog = tên_cơ_sở_dữ_liệu; User ID = tên_sử_dụng; Password = mật_khẩu” Ví dụ sau dùng đối tƣợng Connection kết nối liệu, dùng đối tƣợng Recordset hiển thị thông tin nhân viên: 122 123 TÀI LIỆU THAM KHẢO [1] Dƣơng Quang Thiện, (2007); SQL Server 2000 Lập trình T-SQL, NXB Văn hoá Sài Gòn [2] Phạm Hữu Khang, (2005); Quảntrị SQL Server 2000, NXB Thống kê [3] Nguyễn Nam Thuận - Lữ Đức Hào, (2006); Quản Lý CơSởDữLiệu Với Microsoft SQL Server 2005, NXB Giao thông vận tải [4] Phạm Hữu Khang, (2007), SQL Server 2005 - Lập Trình T-SQL, NXB Lao động Xã hội [5] Phạm Hữu Khang, (2010); Microsoft SQL Server 2008 -Quản TrịCơSởDữ Liệu, NXB Lao động Xã hội [6] Đoàn Thiện Ngân, (2003), Lập trình SQL bản, NXB Lao động Xã hội 124 ... HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 1.1 Giới thiệu 1.2 Mục tiêu hệ quản trị sở liệu 1.3 Quá trình phát triển hệ quản trị sở 1.4 Kiến trúc thành phần hệ quản trị sở liệu. .. câu lệnh Trong hệ quản trị sở liệu khác nhau, câu lệnh có dạng mục đích sử dụng song hệ quản trị sở liệu có số thay đổi Điều dẫn đến cú pháp chi tiết câu lệnh khác hệ quản trị cơ sở liệu khác Câu... 4.2 Quản trị ngƣời dùng 101 4.3 Bảo mật hệ quản trị sở liệu 107 4.4 Giao tác SQL 108 CHƢƠNG LẬP TRÌNH CƠ SỞ DỮ LIỆU 115 5.1 Các mô hình truy cập liệu