intTypePromotion=1

Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:47

0
96
lượt xem
5
download

Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Xây dựng nền tảng với những kiến thức cơ sở Clara Liu, Lập kế hoạch sản phẩm DB2, IBM Toronto Laboratory Tóm tắt: Bạn sẽ được giới thiệu về các kiểu đối tượng cơ sở dữ liệu và các phương pháp lập trình khác nhau. Đây là hướng dẫn đầu tiên trong một loạt bài gồm chín hướng dẫn, sử dụng loạt bài này để trợ giúp chuẩn bị cho kỳ thi lấy chứng chỉ Phát triển ứng dụng của Họ DB2® 9 của IBM® (kỳ thi 733). Trước khi bạn bắt đầu Hướng dẫn này gồm những gì?...

Chủ đề:
Lưu

Nội dung Text: Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình

  1. Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình Xây dựng nền tảng với những kiến thức cơ sở Clara Liu, Lập kế hoạch sản phẩm DB2, IBM Toronto Laboratory Tóm tắt: Bạn sẽ được giới thiệu về các kiểu đối tượng cơ sở dữ liệu và các phương pháp lập trình khác nhau. Đây là hướng dẫn đầu tiên trong một loạt bài gồm chín hướng dẫn, sử dụng loạt bài này để trợ giúp chuẩn bị cho kỳ thi lấy chứng chỉ Phát triển ứng dụng của Họ DB2® 9 của IBM® (kỳ thi 733). Trước khi bạn bắt đầu Hướng dẫn này gồm những gì? Hướng dẫn này giới thiệu về các kiểu đối tượng cơ sở dữ liệu và các phương pháp lập trình khác nhau. Trong hướng dẫn này, bạn tìm hiểu về: Các kiểu đối tượng cơ sở dữ liệu khác nhau.  Mối quan hệ giữa các lược đồ (schema) và các đối tượng cơ sở dữ liệu.  Các khái niệm cơ bản về các thường trình (routine) SQL.  Cơ sở về giao diện lập trình: SQL nhúng động và tĩnh, CLI và ODBC,  .NET, JDBC và SQLJ, PHP, Perl, Python và XML. Các lý do bảo đảm an ninh kết hợp với truy cập dữ liệu từ một ứng dụng.  Đây là hướng dẫn đầu tiên trong một loạt bài viết gồm chín hướng dẫn mà bạn có thể sử dụng để trợ giúp chuẩn bị cho kỳ thi lấy chứng chỉ Phát triển ứng dụng của
  2. Họ DB2 9 của IBM (kỳ thi 733). Các tài liệu trong hướng dẫn này chủ yếu trình bày các mục tiêu trong Phần 1 của kỳ thi, mang tên "Các đối tượng cơ sở dữ liệu và các phương pháp lập trình" (Database objects and programming methods). Bạn không cần một bản sao của DB2 9 để hoàn thành hướng dẫn này. Tuy nhiên, nếu bạn muốn, bạn có thể tải về miễn phí bản sao của DB2 Express-C 9 từ trang tải về DB2 Express-C. Ai nên tìm hiểu hướng dẫn này? Để tham dự kỳ thi “Phát triển ứng dụng họ DB2 9”, bạn đã phải vượt qua được kỳ thi “Căn bản về họ DB2 9” (kỳ thi 730). Bạn có thể sử dụng "Loạt b ài hướng dẫn căn bản về họ DB2" (DB2 Family Fundamentals tutorial series) để chuẩn bị cho kỳ thi đó. Đây là loạt bài hướng dẫn rất phổ biến, đã giúp cho nhiều người hiểu các vấn đề căn bản về họ các sản phẩm DB2. Mặc dù không phải tất cả các tư liệu được thảo luận trong loạt bài hướng dẫn căn bản về họ DB2 đều là cần thiết để hiểu các khái niệm được mô tả trong hướng dẫn này, bạn cần phải có một kiến thức cơ sở về: Các cá thể DB2.  Các cơ sở dữ liệu.  Các đối tượng cơ sở dữ liệu.  An ninh DB2. 
  3. Hướng dẫn này là một trong những công cụ có thể trợ giúp bạn chuẩn bị cho Kỳ thi 733. Bạn cũng nên xem lại phần Tài nguyên ở phần cuối của hướng dẫn này để biết thêm thông tin về các đối tượng cơ sở dữ liệu và các phương pháp lập trình. Các đối tượng cơ sở dữ liệu DB2 Các đối tượng cơ sở dữ liệu cơ bản Các đối tượng cơ sở dữ liệu là các khối nền tảng của một cơ sở dữ liệu. DB2 cung cấp các kiểu đối tượng cơ sở dữ liệu khác nhau để lưu trữ và biểu diễn các thông tin khác nhau. Các đối tượng này có thể được được tạo ra, được sửa đổi và bị loại bỏ bằng cách sử dụng database definition language (DDL-Ngôn ngữ định nghĩa cơ sở dữ liệu ). Để thao tác các đối tượng này, bạn sử dụng database manipulation language (DML- Ngôn ngữ thao tác cơ sở dữ liệu), trong đó bao gồm các câu lệnh SELECT (Chọn), UPDATE (Cập nhật), INSERT (chèn) và DELETE (Xóa). Một số các đối tượng cơ sở dữ liệu thường được sử dụng phổ biến là: Các bảng.  Các kiểu dữ liệu do người sử dụng định nghĩa.  Các ràng buộc.  Các khung nhìn.  Các chỉ mục.  Nếu bạn còn chưa hiểu rõ về các đối tượng cơ sở dữ liệu cơ bản này, xin vui lòng xem hướng dẫn căn bản về họ DB2, mang tên "Làm việc với các đối tượng DB2" (Working with DB2 objects) (developerWorks, 07.2006) về các thông tin nền.
  4. Ngoài các các đối tượng cơ sở dữ liệu được giới thiệu trong các hướng dẫn căn bản về họ DB2, có nhiều đối tượng khác mà nhiều nhà phát triển thấy là có ích khi phát triển các ứng dụng DB2. Hướng dẫn này giới thiệu các đối tượng ấy trong phần này. Một lưu ý trước khi bạn tiến hành: Trong các ví dụ mà bạn sẽ thấy ở đây, các tên đối tượng được chỉ rõ bằng chữ thường. Bất kể nền tảng DB2 đang chạy là gì, nó sẽ luôn luôn lưu giữ các tên bằng chữ hoa, trừ khi tên của một mã nhận dạng (identifier) được bao quanh bởi cặp dấu nháy kép (""). Ví dụ, câu lệnh sau tạo ra một bảng gọi là employee (nhân viên - chữ thường) với các định nghĩa của cột giống như bảng EMPLOYEE (chữ hoa). CREATE TABLE "employee" LIKE employee Các biệt danh Một biệt danh (alias) là một tên thay thế cho một bảng, một khung nhìn hoặc biệt hiệu hiện có. Một biệt danh cũng có thể dùng như là một tên thay thế cho một biệt danh khác. Giống như các đối tượng, một biệt danh có thể được tạo ra hoặc bị hủy bỏ và nó có thể có các lời chú thích có liên quan với nó. Dưới đây là một vài ví dụ về các câu lệnh CREATE ALIAS:
  5. CREATE ALIAS aliastab1 FOR tab1; CREATE ALIAS bob.aliastab1 FOR tom.tab1; CREATE SYNONYM bob.aliastab2 FOR bob.aliastab1; Như bạn có thể thấy, câu lệnh CREATE ALIAS khá đơn giản. Bạn có thể tạo một biệt danh trong cùng một lược đồ như là đối tượng nguồn (giống như trong dòng đầu tiên) hoặc tạo tên biệt danh phân biệt đầy đủ (giống như trong dòng thứ hai). Việc sử dụng từ khóa SYNONYM thay cho ALIAS (giống như trong dòng thứ ba) cho tương thích với DB2 cho zSeries cũng là hợp lệ. Không đòi hỏi phải được cấp quyền hoặc có quyền ưu tiên đặc biệt nào để sử dụng các biệt danh. Tuy nhiên, bạn cần được cấp quyền thích hợp đối với các đối tượng nền bên dưới đang được tham chiếu. Để tìm một danh sách đầy đủ các đặc quyền đối với các đối tượng cơ sở dữ liệu, hãy xem hướng dẫn thi chứng chỉ DBA DB2 có tên "Quản lý máy chủ" (Server management (developerWorks, 06.2006). Chúng tôi đã nói ở trên rằng các biệt danh cũng có thể được tạo ra cho các biệt hiệu (nicknames). Các biệt hiệu là các đối tượng cơ sở dữ liệu tham chiếu đến các bảng dữ liệu hoặc các khung nhìn được đặt trên hệ thống liên hiệp (federated systems). Tuy nhiên, sự hỗ trợ với cơ sở dữ liệu liên hiệp nằm ngoài phạm vi của hướng dẫn này. Để thêm một lời chú thích cho một biệt danh, hay đưa ra câu lệnh này:
  6. COMMENT ON aliastab1 IS 'My first alias on tab1' Để loại bỏ một biệt danh, sử dụng câu lệnh DROP, giống như bạn sẽ làm với bất kỳ đối tượng cơ sở dữ liệu khác: DROP ALIAS aliastab1 Các đối tượng chuỗi Một chuỗi (sequence) là một đối tượng cơ sở dữ liệu cho phép sinh ra các giá trị tự động. Không giống như một cột mã nhận dạng, bị ràng buộc với một bảng cụ thể, một chuỗi là một đối tượng toàn cục và độc lập, có thể được sử dụng bởi bất kỳ bảng nào trong cùng một cơ sở dữ liệu. Một cột mã nhận dạng là một loại đối tượng chuỗi cụ thể. Do đó, các đặc điểm của các cột mã nhận dạng cũng áp dụng cho các đối tượng chuỗi. Ví dụ về một câu lệnh CREATE SEQUENCE được minh họa dưới đây: Liệt kê 1. Câu lệnh CREATE SEQUENCE
  7. CREATE SEQUENCE myseq AS INTEGER START WITH 360 INCREMENT BY 10 NO MAXVALUE CYCLE CACHE 20 Bất kỳ một kiểu dữ liệu số chính xác nào không có phần lẻ (scale of zero) đều có thể được sử dụng cho giá trị chuỗi. Chúng gồm có SMALLINT, INTEGER, BIGINT hoặc DECIMAL. Bất kỳ một kiểu khác biệt nào do người sử dụng định nghĩa dựa trên các kiểu dữ liệu này cũng có thể được sử dụng cho các giá trị chuỗi. Điều này mở rộng thêm nữa việc sử dụng các kiểu khác biệt do người dùng định nghĩa trong một ứng dụng. Như được hiển thị trong Liệt kê 1 ở trên, bạn có thể tùy chỉnh một đối tượng chuỗi bằng cách chỉ rõ giá trị bắt đầu của nó. Trong ví dụ này, giá trị đầu tiên cho chuỗi này là 360. Việc tạo ra các giá trị trong chuỗi được kiểm soát bởi mệnh đề INCREMENT BY. Các hằng số dương và âm được hỗ trợ để tạo ra các giá trị chuỗi tăng lên và giảm xuống. Theo mặc định, các giá trị nhỏ nhất và lớn nhất do một chuỗi tạo ra bị ràng buộc bởi sự giới hạn của kiểu dữ liệu chuỗi. Ví dụ, một giá trị chuỗi INTEGER (số nguyên) phải nằm trong khoảng từ -2.147.483.647 đến 2.147.483.647. Bạn có thể tìm thấy các giới hạn của tất cả các kiểu dữ liệu số trong Hướng dẫn tham khảo
  8. SQL DB2 (xem Tài nguyên). Để thay đổi hành vi này, hãy sử dụng các tùy chọn MINVALUE (giá trị nhỏ nhất) và MAXVALUE (giá trị lớn nhất) để thiết lập một ranh giới cho các giá trị được tạo ra. Nếu các giá trị nhỏ nhất hoặc lớn nhất đã đạt tới, một tùy chọn khác, được gọi là CYCLE hay NO CYCLE, (theo chu kỳ hay không theo chu kỳ), có thể được sử dụng để chỉ rõ xem liệu các giá trị chuỗi có nên được tái sử dụng lại hay không. Lưu ý rằng khi CYCLE có hiệu lực, các giá trị sao đúp có thể được tạo ra cho chuỗi. Tùy chọn bộ nhớ đệm (CACHE) cho phép DB2 duy trì một số các giá trị đã được cấp phát trước trong bộ nhớ để cải thiện hiệu năng. CACHE 20 là hành vi mặc định. Có một điều cần nhớ về tùy chọn này: Nếu DB2 bị dừng lại trước khi tất cả các giá trị đã ghi nhớ sẵn được sử dụng, mọi giá trị đã ghi nhớ sẵn và không sử dụng sẽ bị loại bỏ. Khi DB2 được khởi động lại, khối các giá trị tiếp theo được tạo ra và được ghi nhớ sẵn, như vậy sẽ tạo ra khoảng hẫng giữa các giá trị. Nếu ứng dụng của bạn không cho phép có các khoảng hẫng giá trị, hãy cân nhắc việc sử dụng tùy chọn NOCACHE (không bộ đệm) để thay thế. Nếu không sử dụng việc ghi nhớ đệm, hiệu năng có thể xấu đi đáng kể đối với tốc độ tạo số chuỗi cao. Một bản ghi nhật ký được viết lại mỗi khi một giá trị mới được tạo ra. Kết quả là, sẽ hiệu quả hơn nếu nhận được các giá trị thông qua một yêu cầu và ghi nhớ sẵn chúng vào bộ nhớ. Bạn có thể thay đổi các đặc điểm của một đối tượng chuỗi bằng câu lệnh ALTER SEQUENCE. Tất cả các thông số cài đặt được thảo luận ở trên có thể được thay đổi, trừ kiểu dữ liệu của giá trị chuỗi. Để có sơ đồ cú pháp đầy đủ, hãy xem Hướng dẫn tham khảo SQL DB2 (xem Tài nguyên). Việc hủy bỏ một đối tượng chuỗi cũng giống như hủy bỏ bất kỳ đối tượng cơ sở dữ liệu khác nào. Từ khóa RESTRICT ở cuối của câu lệnh ngăn cho chuỗi khỏi bị
  9. hủy bỏ nếu có tồn tại bất kỳ sự phụ thuộc nào. Đây là hành vi mặc định. Bạn có thể chọn chỉ định rõ ràng từ khóa RESTRICT trong câu lệnh đó. DROP SEQUENCE myseq RESTRICT Tạo và lấy ra các giá trị chuỗi Một chuỗi là một kiểu đối tượng cơ sở dữ liệu; do vậy, việc truy cập của nó cũng được kiểm soát bởi các đặc quyền. Theo mặc định, chỉ có người tạo lập (creator) chuỗi, SYSADM và DBADM có các đặc quyền USAGE trên đối tượng đó. Nếu bạn muốn những người dùng khác sử dụng chuỗi đó, bạn cần phải sử dụng câu lệnh sau: GRANT USAGE ON SEQUENCE seq_object_name TO PUBLIC Nếu bạn muốn thay đổi các thuộc tính của một đối t ượng chuỗi, thì bạn cần có đặc quyền ALTER trên đối tượng đó: GRANT ALTER ON SEQUENCE seq_object_name TO GROUP group_name
  10. Hãy xem hướng dẫn thi chứng chỉ DBA DB2 có tên là "Quản lý máy chủ" để tìm hiểu thêm về an ninh DB2. Hai biểu thức được cung cấp để tạo ra và lấy ra các giá trị chuỗi. Biểu thức NEXT VALUE FOR seq-name được sử dụng để nhận được giá trị chuỗi tiếp theo, trong khi biểu thức PREVIOUS VALUE FOR seq-name được sử dụng để lấy ra giá trị chuỗi cuối cùng đã được tạo ra. Các ví dụ trong Liệt kê 2 dưới đây minh họa việc sử dụng các biểu thức này. Liệt kê 2. Các biểu thức NEXT VALUE FO R và PREVIOUS VALUE FOR INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'BOB'); INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'PAT'); COMMIT; INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'GENE'); ROLLBACK; INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'PAUL'); VALUES PREVIOUS VALUE FOR myseq INTO :hostvar Giả sử rằng bạn bắt đầu với một bảng t1 trống rỗng và giá trị chuỗi tiếp theo của myseq là 1. Sau khi các câu lệnh ở trên được thi hành, với tùy chọn autocommit (tự động cam kết) bị tắt, t1 chứa các hàng sau đây:
  11. 1 NAME ------- ------- 1 BOB 2 PAT 4 PAUL 3 record(s) selected. Mặc dù giá trị được tạo ra cho GENE đã được rút khỏi cam kết, DB2 sẽ không sử dụng lại nó. Do đó, giá trị chuỗi tiếp theo đã được tạo ra cho PAUL đã là 4 chứ không phải là 3. Câu lệnh cuối cùng trong Liệt kê 2 ở trên cho thấy biểu thức PREVIOUS VALUE có thể được sử dụng như thế nào. Biến chủ :hostvar lưu trữ giá trị cuối cùng được tạo ra trong phiên làm việc hiện tại. Nếu bạn muốn giữ lại bất kỳ giá trị nào đã được tạo ra trước đó, bạn nên lưu lại các giá trị trước đó trước khi tạo ra một giá trị tiếp sau. Các bảng tạm thời
  12. Như tên của chúng gợi ý, các bảng tạm thời (temporary tables) không phải là các đối tượng cơ sở dữ liệu cố định. Một bảng tạm thời hoạt động giống như một bảng bình thường, ngoại trừ rằng không phải tất cả các tính năng và các tùy chọn đều được hỗ trợ hoặc phải có. Nó chỉ tồn tại trong khoảng thời gian kết nối. Khi kết nối được đóng lại, tất cả các bảng tạm thời được khai báo trong nó sẽ được tự động loại bỏ. Chỉ có phiên làm việc hay ứng dụng khai báo một bảng tạm thời sẽ có quyền truy cập vào nó. Nếu hai ứng dụng tạo ra một bảng tạm thời có cùng tên, mỗi cá thể của bảng đó là duy nhất. Vì vậy, bạn không cần phải lo lắng về một sự xuất hiện của kịch bản xung đột dữ liệu tạm thời; vì một bảng tạm thời chỉ cho phép truy cập một kết nối, việc khóa là không cần thiết. Đây là một trong những lợi ích hoạt động chính của các bảng tạm thời. Khai báo các bảng tạm thời Để khai báo các bảng tạm thời, một vùng bảng (tablespace) tạm thời USER phải tồn tại để lưu trữ định nghĩa và nội dung của bảng tạm thời. (Một vùng bảng tạm thời USER là khác với một vùng bảng tạm thời SYSTEM, cái sau chỉ được DB2 sử dụng một cách nội bộ để thực hiện các hoạt động, ví dụ nh ư sắp xếp thứ tự). Câu lệnh đơn giản dưới đây tạo ra một vùng bảng tạm thời USER: CREATE USER TEMPORARY TABLESPACE usertempspace MANAGED BY SYSTEM USING ('usertempspace')
  13. Một số các mệnh đề tùy chọn được hỗ trợ khi khai báo một bảng tạm thời toàn cầu. Các ví dụ trong Liệt kê 3 minh họa hoạt động của chúng: Liệt kê 3. Các mệnh đề tùy chọn được hỗ trợ với bảng tạm thời toàn cầu DECLARE GLOBAL TEMPORARY TABLE t_dept ( deptid CHAR(6), deptname CHAR(20) ) ON COMMIT PRESERVE ROWS NOT LOGGED ON ROLLBACK DELETE ROWS IN usertempspace Trong ví dụ trong Liệt kê 3, bảng tạm thời t_dept được khai báo có hai cột. Mệnh đề ON COMMIT PRESERVE ROWS cho biết khi một hoạt động COMMIT được thực hiện, các hàng trong bảng tạm thời sẽ được duy trì. Ví dụ trên chỉ rõ rằng những thay đổi với bảng không được ghi nhật ký lại (NOT LOGGED). Điều này có nghĩa là bất cứ các hoạt động chèn, cập nhật hoặc xóa đối với bảng không được ghi lại. Tuy nhiên, việc tạo ra và loại bỏ bảng được ghi lại. Nếu bảng được tạo ra trong một đơn vị làm việc và sau đó cuộn ngược lại, thì bảng tạm thời sẽ bị loại bỏ. Mặt khác, nếu bảng bị loại bỏ trong một đ ơn vị làm việc, thì bảng đó sẽ được phục hồi lại mà không có bất kỳ hàng nào.
  14. Bạn không cần phải sử dụng mệnh đề IN để chỉ rõ vùng bảng tạm thời của người sử dụng mà bảng tạm thời này sẽ sử dụng vùng bảng đó. Nếu bạn không định rõ thông tin này, DB2 sẽ tìm kiếm một vùng bảng phù hợp nhất. Nếu không tìm thấy một vùng bảng tạm thời của người sử dụng, DB2 sẽ đưa ra một lỗi. Hãy xem xét một ví dụ khác: Liệt kê 4. Khai báo bảng tạm thời toàn cầu DECLARE GLOBAL TEMPORARY TABLE t_proj LIKE project ON COMMIT PRESERVE ROWS WITH REPLACE IN usertempspace Bảng tạm thời t_proj được khai báo với từ khóa LIKE, do đó, nó có cùng một định nghĩa cột như là bảng cố định hay khung nhìn có tên là dự án (project). Mệnh đề ON COMMIT PRESERVE ROWS cho biết rằng tất cả các hàng trong bảng tạm thời sẽ được lưu giữ tại COMMIT. Vì vậy, chúng sẽ có sẵn để xử lý tiếp tục trong giao dịch tiếp sau. Trước khi bạn có thể khái báo bảng tạm thời khác có cùng tên trong cùng một phiên làm việc, bảng tạm thời phải được loại bỏ. Điều này có thể được thực hiện hoặc dứt khoát hoặc với tùy chọn WITH REPLACE như được hiển thị trong Liệt
  15. kê 4. Với tùy chọn WITH REPLACE, DB2 xóa hoàn toàn tất cả các dữ liệu, loại bỏ bảng tạm thời và tạo lại nó với các định nghĩa mới. Tùy chọn WITH REPLACE trở nên rất dễ dùng khi được sử dụng liên hợp với việc tạo nhóm kết nối (connection pooling). Việc tạo nhóm kết nối là một cơ chế để sử dụng lại các kết nối cơ sở dữ liệu, sao cho các tài nguyên không được cấp phát hoặc hủy cấp phát theo yêu cầu. Các hoạt động này khá tốn kém, đặc biệt là khi có một số lượng lớn các kết nối có thực hiện các giao dịch tương đối ngắn. Do các kết nối không được giải phóng, có thể là các bảng tạm thời được sử dụng trước đó không được xóa hết. Ứng dụng tiếp theo sử dụng kết nối có thể lấy phải các dữ liệu còn sót lại từ việc thi hành trước đó. Vì vậy, việc sử dụng tùy chọn WITH REPLACE đảm bảo rằng bảng tạm thời được khai báo sẽ được làm mới với định nghĩa mới. Các lược đồ và các đối tượng cơ sở dữ liệu Hầu hết các các đối tượng cơ sở dữ liệu được xác định bởi một lược đồ và một tên đối tượng. Một lược đồ cơ sở dữ liệu cung cấp một phân loại logic các đối tượng cơ sở dữ liệu. Dưới đây là một số ví dụ về các tên đối tượng có hai phần: DB2ADMIN.EMPLOYEE HRPROD.AUDIT_VIEW HRPROD.AUDIT_TRIG
  16. Nếu một lược đồ không được chỉ rõ khi truy cập vào một đối tượng cơ sở dữ liệu, mã nhận dạng người dùng được sử dụng để thiết lập kết nối cơ sở dữ liệu sẽ được thiết lập như là lược đồ mặc định. Ví dụ, nếu người sử dụng db2admin kết nối vào một cơ sở dữ liệu và tạo ra một bảng T1, DB2 sẽ tạo ra một bảng gọi là db2admin.T1. Tất cả các câu lệnh SQL tiếp sau có tham khảo một bảng T1 có tên không phân biệt đủ, được phân giải đến db2admin.T1. Sổ đăng ký đặc biệt của DB2: CURRENT SCHEMA Như bạn có thể đã phát hiện ra trong hoạt động cơ sở dữ liệu của bạn, không phải lúc nào cũng khả thi để kết nối đến một cơ sở dữ liệu với mã nhận dạng (ID) của người sử dụng mà tên người dùng (username) của nó cũng là lược đồ của các đối tượng mà bạn muốn thao tác. Việc mã hóa cứng (hard-coding) một ứng dụng dùng các tên phân biệt đầy đủ của các đối tượng cũng không phải là giải pháp tốt nhất. May mắn thay, DB2 cho phép bạn thay đổi lược đồ hiện tại bằng cách sử dụng lệnh SET CURRENT SCHEMA. Theo mặc định, sổ đăng ký đặc biệt CURRENT SCHEMA DB2 được thiết lập theo USER được kết nối vào cơ sở dữ liệu. Khi bạn thay đổi CURRENT SCHEMA, bất kỳ các đối tượng cơ sở dữ liệu có tên không phân biệt đầy đủ nào được gắn tiếp đầu ngữ với giá trị mới. Lược đồ hiện tại có thể nhận được bằng lệnh này: Các đối tượng cơ sở dữ liệu cho phát triển ứng dụng DB2
  17. Các thường trình Trong phần này, bạn sẽ tìm hiểu về một vài kiểu đối tượng cơ sở dữ liệu nữa. Các đối tượng này được gọi chung là các thường trình (routines). Có ba kiểu chức năng chính của thường trình: các thủ tục được lưu sẵn (stored procedures), các hàm (functions) và các phương thức (methods). (Để biết thêm chi tiết về sự khác nhau giữa các kiểu này, hãy xem phần dưới đây có tên là "Các thủ tục được lưu sẵn, các hàm và các phương thức"). Các thường trình là các đối tượng cơ sở dữ liệu gói kín logic lập trình và logic cơ sở dữ liệu có liên quan đến một nhiệm vụ cụ thể. Bằng cách sử dụng có hiệu quả các thường trình, bạn có thể làm đơn giản hóa mã ứng dụng của bạn và làm tăng khả năng sử dụng lại mã. Ví dụ, nếu logic nghiệp vụ nào đó được gói kín trong một thường trình, các thay đổi quy tắc nghiệp vụ ấy sẽ chỉ ảnh hưởng đến thường trình cụ thể đó. Kết quả là, các sự thay đổi ứng dụng có thể được làm giảm tối thiểu. Các thường trình được định nghĩa và được xử lý tại máy chủ cơ sở dữ liệu. Điều này cho phép một ứng dụng khai thác sức mạnh của máy chủ cơ sở dữ liệu trong khi làm giảm tải xử lý cần thiết tại phía khách. Thông thường, một logic nghiệp vụ phức tạp đưa ra nhiều câu lệnh SQL. Các câu lệnh này được gửi đi riêng biệt từ máy khách đến máy chủ, dẫn đến lưu lượng mạng cao nếu như có rất nhiều hoạt động của cơ sở dữ liệu. Nếu các hoạt động này được bắt giữ trong một thường trình, thì lưu lượng mạng giữa các máy khách và các máy chủ có thể được làm giảm đáng kể, do đó cải thiện hiệu năng ứng dụng tổng thể. Khả năng để thắt chặt an ninh là một lợi thế quan trọng khác của việc sử dụng các thường trình. Các thường trình có thể được dùng để che dấu sự truy cập trực tiếp vào các đối tượng cơ sở dữ liệu nằm bên dưới. Chỉ cần gọi một thường trình với
  18. đặc quyền EXECUTE; không có đặc quyền rõ ràng nào cho các các đối tượng cơ sở dữ liệu nằm bên dưới. Các triển khai thực hiện thường trình khác nhau Một số cách triển khai thực hiện các thường trình có khả năng là: Các thường trình gắn kèm (built-in) đi cùng với hệ thống DB2. Chúng  được định nghĩa trong các lược đồ hệ thống như SYSIBM, SYSPROC, SYSFUN và SYSTOOLS. Các thường trình có nguồn gốc (sourced) chỉ áp dụng cho các hàm. Một  hàm có nguồn gốc sao chép chính xác các ngữ nghĩa của hàm khác. Các thường trình bên ngoài (external) được triển khai thực hiện trong một  ngôn ngữ lập trình bên ngoài. Bạn có thể phát triển các thường trình trong các ngôn ngữ được hỗ trợ sau: Ngôn ngữ Java™. o C/C++. o .NET. o OLE (chỉ với các thủ tục được lưu sẵn). o OLE DB (chỉ với các hàm bảng). o
  19. Các thường trình SQL Các thường trình SQL được triển khai thực hiện  trong SQL Procedural Language (SQL PL - Ngôn ngữ thủ tục SQL). SQL PL DB2 là một tập con của chuẩn ngôn ngữ SQL Persistent Stored Modules (SQL/PSM - Các mô đun SQL được lưu trữ lâu dài). Tiêu chuẩn này là cơ sở cho các ngôn ngữ lập trình có cấu trúc được sử dụng với SQL để viết các thủ tục được lưu sẵn, các hàm và các phương thức. Nó kết hợp việc dễ dàng truy cập dữ liệu của SQL với cấu trúc kiểm soát luồng của một ngôn ngữ lập trình đơn giản. Đây là lý do chính tại sao SQL PL lại phổ biến đến vậy. Các thủ tục được lưu sẵn, các hàm và các phương thức Các thủ tục được lưu sẵn (Stored procedures) là các đối tượng cơ sở dữ liệu có chứa các chương trình chuyên dụng để truy cập và sửa đổi dữ liệu trong một hoặc nhiều bảng. Trong một thủ tục được lưu sẵn, bạn có thể bao bọc nhiều câu lệnh SQL với logic luồng. Chúng dùng như các mở rộng của thường trình con (subroutine) cho các ứng dụng khách hay các thường trình khác. Chúng được thi hành và được quản lý dưới sự kiểm soát của một hệ quản lý cơ sở dữ liệu quan hệ (RDBMS). Các hàm (Functions) các mở rộng SQL mà bạn có thể tùy chỉnh. Chúng được gọi từ bên trong các câu lệnh SQL như các danh sách chọn (select-list) hoặc các mệnh đề FROM. Có bốn kiểu hàm: aggregate, scalar, row và table. Các thủ tục được lưu sẵn thường được sử dụng để gói kín logic ứng dụng phức tạp và thực hiện các hoạt động cơ sở dữ liệu nặng, chẳng hạn như các phép nối nhiều bảng và các thao tác con trỏ. Mặt khác, các hàm -- đặc biệt là các hàm SQL -- thường có chứa các hoạt động đơn giản hơn. Các câu lệnh được mã hóa trong các
  20. hàm SQL được khai triển vào trong và thi hành với các câu lệnh SQL tham chiếu chúng. Điều này làm cho các câu lệnh được biên dịch động tại thời điểm thi hành. Nếu một hàm SQL phức tạp được sử dụng trong một câu lệnh SQL, DB2 yêu cầu tài nguyên bổ sung để biên dịch nó và tạo ra một kế hoạch truy cập dữ liệu. Điều này có thể ảnh hưởng đến hiệu năng thời gian chạy tổng thể. Một phương thức ( method ) bao kín logic để cung cấp hành vi hoạt động cho các kiểu dữ liệu có cấu trúc, chứa một hay nhiều thuộc tính có tên, mỗi một thuộc tính lại có kiểu dữ liệu riêng của nó. Sổ đăng ký đặc biệt của DB2: CURRENT PATH Giống như hầu hết các đối tượng cơ sở dữ liệu DB2, một tên thường trình đầy đủ gồm có một lược đồ và một tên thường trình. Sổ đăng ký đặc biệt DB2 được giới thiệu ở phần trên trong hướng dẫn này, CURRENT SCHEMA (nó cũng được thảo luận ở trên trong phần có tên là "Sổ đăng ký đặc biệt DB2: CURRENT SCHEMA "), phân giải các lược đồ cho hầu hết các đối tượng cơ sở dữ liệu, nhưng không phải cho các thường trình. Thay vào đó, DB2 bố trí một thường trình bằng việc sử dụng một sổ đăng ký đặc biệt CURRENT PATH. Bạn có thể nhận được các giá trị cài đặt CURRENT PATH với lệnh này: VALUES CURRENT PATH
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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