Một số mô hình cơ sở dữ liệu mở rộng

  • Số trang: 72 |
  • Loại file: PDF |
  • Lượt xem: 26 |
  • Lượt tải: 0
tailieuonline

Đã đăng 27372 tài liệu

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ NGỌC TÚ MỘT SỐ MÔ HÌNH CƠ SỞ DỮ LIỆU MỞ RỘNG LUẬN VĂN THẠC SỸ NGÀNH CÔNG NGHỆ THÔNG TIN Hà Nội - 2013 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ NGỌC TÚ MỘT SỐ MÔ HÌNH CƠ SỞ DỮ LIỆU MỞ RỘNG Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60 48 05 LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS Nguyễn Tuệ Hà Nội – 2013 3 LỜI CẢM ƠN Lời đầu tiên em xin chân thành cảm ơn thầy giáo TS. Nguyễn Tuệ đã cho em nhiều ý kiến đóng góp quý báu, tận tình hƣớng dẫn và giúp đỡ em về mặt kiến thức, cũng nhƣ tài liệu để em có thể hoàn thành luận văn này. Em xin gửi lời cảm ơn đến Ban Giám hiệu, các phòng ban, khoa sau đại học trƣờng Đại Học Công Nghệ đã tạo điều kiện cho em trong suốt quá trình khóa học. Em cũng bày tỏ lòng biết ơn sâu sắc đến các thầy giáo, cô giáo trƣờng trƣờng Đại Học Công Nghệ - Đại học Quốc Gia Hà Nội các thầy giáo, cô giáo đã tham gia giảng dậy, hƣớng dẫn, chỉ bảo em trong suốt quá trình học. Và em xin gửi lời cảm ơn đến bạn bè, gia đình và các đồng nghiệp đã có những động viên, khuyến khích và hỗ trợ cần thiết để em hoàn thành luận văn này. Hà Nội, ngày tháng năm 2013 Nguyễn Thị Ngọc Tú 4 LỜI CAM ĐOAN Tôi xin cam đoan bản luận văn “ Một số mô hình cơ sở dữ liệu mở rộng” là công trình nghiên cứu của tôi dƣới sự hƣớng dẫn khoa học của TS. Nguyễn Tuệ, tham khảo các nguồn tài liệu đã đƣợc ghi rõ trong trích dẫn và danh mục tài liệu tham khảo. Các nội dung công bố và kết quả trình bày trong luận văn này là hoàn toàn trung thực. Hà Nội, ngày tháng 10 năm 2103 Học viên (kí và ghi rõ họ tên) Nguyễn Thị Ngọc Tú 5 MỤC LỤC DANH MỤC HÌNH VẼ ........................................................................................ 7 KÝ HIỆU VIẾT TẮT ............................................................................................ 7 MỞ ĐẦU ............................................................................................................... 9 CHƢƠNG 1: TỔNG QUAN VỀ MÔ HÌNH CƠ SỞ DỮ LIỆU MỞ RỘNG .... 10 1.1. Một số mô hình CSDL mở rộng ............................................................... 10 1.2. Mô hình cơ sở dữ liệu tích cực( Active database). ................................... 10 1.2.1. Quy tắc ECA (Event- Condition -Action). ....................................... 10 1.2.1.1. Sự kiện (Event) ............................................................................ 11 1.2.1.2 Điều kiện(Condition) .................................................................... 12 1.2.1.3. Hành động(active)........................................................................ 13 1.2.2. Mô hình tổng quát của CSDL tích cực ............................................... 14 1.2.3. Thiết kế và cài đặt CSDL tích cực...................................................... 19 1.3. Mô hình cơ sở dữ liệu thời gian(Temporal database) ............................... 20 1.3.1.Quan hệ thời gian hợp lệ. .................................................................... 22 1.3.2.Quan hệ thời gian giao tác. .................................................................. 24 1.3.3.Quan hệ theo hai loại thời gian. .......................................................... 25 1.3.4.Thiết kế cơ sở dữ liệu thời gian ........................................................... 27 1.4. Mô hình cơ sở dữ liệu không gian (spatial database). .............................. 28 1.4.1. Đặc trƣng của CSDL không gian. ...................................................... 28 1.4.2. Hình học và mô hình dữ liệu DBMS. ................................................ 31 1.4.3. Một số bài toán của GIS. .................................................................... 35 CHƢƠNG 2: POSTGRESQL VÀ POSTGIS ..................................................... 36 2.1. POSTGRESQL. ........................................................................................ 36 2.1.1. Giới thiệu về hệ quản trị cơ sở dữ liệu PostgreSQL .......................... 36 2.1.2. Các chức năng cơ bản của hệ quản trị CSDL PostgreSQL. ............... 37 2.1.3. Các lệnh thao tác với hệ quản trị CSDL Postgresql ........................... 37 2.1.4. Cài đặt hệ quản trị CSDL PostgreSQL............................................... 41 2.2. POSTGIS .................................................................................................. 44 2.2.1. Giới thiệu về POSTGIS . .................................................................... 44 2.2.2. Chức năng cơ bản của Postgis............................................................ 44 2.2.3. Cách lệnh thao tác trong PostGis ....................................................... 45 2.2.4. Thực hiện cài đặt PostGis................................................................... 56 2.3. Chỉ mục .................................................................................................. 56 2.3.1. Chỉ mục GIST. ................................................................................. 57 2.3.2. Sử dụng chỉ mục ................................................................................. 57 CHƢƠNG 3......................................................................................................... 59 3.1. Phân tích bài toán ...................................................................................... 59 3.1.1. Nguồn dữ liệu đầu vào và phạm vi bài toán....................................... 59 3.1.2. Phƣơng pháp kỹ thuật giải quyết bài toán .......................................... 60 3.1.3. Xây dựng chƣơng trình ứng dụng ...................................................... 60 3.2 Xây dựng cơ sở dữ liệu ........................................................................... 62 6 3.2.1. Tạo bảng cơ sở dữ liệu ....................................................................... 62 3.2.2 Tạo các Trigger, các hàm trong bài toán .......................................... 64 3.3. Thử nghiệm và đánh giá các thuật toán .................................................... 69 KẾT LUẬN ......................................................................................................... 70 TÀI LIỆU THAM KHẢO ................................................................................... 71 7 DANH MỤC HÌNH VẼ Hình 1.1: Mô hình cơ sở dữ liệu tích cực( Active Database). ....................................... 10 Hình 1.2 : Ngữ cảnh mà trong đó một quy tắc đƣợc xử lý[7] ....................................... 12 Hình 1.3: Mô hình ECA (Event- Condition -Action)................................................... 15 Hình 1.4: Cơ sở dữ liệu thời gian( Temporal database) ................................................ 21 Hình 1.5: Mô hình CSDL thời gian. .............................................................................. 22 Hình 1. 6: Các loại CSDL quan hệ theo thời gian khác nhau........................................ 23 Hình 1.7.Quan hệ thời gian hợp lệ NHANVIEN_VT và DONVI_VT. ........................ 24 Hình 1.8. Các bộ trong quan hệ theo hai loại thời gian. ................................................ 25 Hình 1.9: Điểm (Point) .................................................................................................. 30 Hình 1.10: Đƣờng – Cung (Line- Arc). ......................................................................... 31 Hình 1.11: Vùng(polygon)............................................................................................. 31 Hình1.12: Mô hình vector ............................................................................................. 34 Hình 1.13: Mô hình raster ............................................................................................. 34 Hình 2.1: Một số lệnh trong hệ quản trị CSDL PostgreSQl .......................................... 39 Hình 2.2: Nhóm lệnh chung trong psql ......................................................................... 40 Hình 2.3: Nhóm lệnh truy vấn bộ đệm của psql ............................................................ 40 Hình 2.4: Nhóm lệnh vào/ra của psql ............................................................................ 40 Hình 2.5. Nhóm lệnh định dạng .................................................................................... 40 Hình 2. 6. Kết quả kiểm tra tính tống chiều dài biên giới đƣờng bộ Việt Nam ............ 42 Hình 2.7: Kết quả kiểm tra tính tổng độ dài đƣờng bộ chạy qua địa phân Hà Nội ....... 43 Hình 2.8 Đƣờng viền ..................................................................................................... 46 Hình 2.9: Một số hàm cơ bản trong PostGis. ................................................................ 47 Hình 2.10. A. Intersection(B) ........................................................................................ 51 Hình 2.11: A. Difference(B) và B. Difference(A) ......................................................... 52 Hình 2.12. A. Union(B) ................................................................................................. 52 Hình 2.13. A. SymDifference(B) ................................................................................... 53 Hình 2.14: Hàm Bssuffer ............................................................................................... 54 Hình 2.15: kết quả sử dụng hai hàm ST_Distance() và ST_AsText(). .......................... 56 Hình 3.1: Mô hình Use – case ....................................................................................... 62 Bảng 3.1: Station. .......................................................................................................... 62 Bảng 3.2: Points ............................................................................................................. 63 Bảng 3.3: Bus ................................................................................................................ 63 Bảng 3.4: GoBus............................................................................................................ 63 Hình 3.2Trang chủ của website hệ thống quản lý xe buýt Hà Nội ................................ 67 Hình 3.3.Trang tin tức giao thông ................................................................................. 67 Hình 3.4: Cập nhật thông tin về các điểm xe buýt. ....................................................... 68 Hinh 3.5 : Cập nhật thông tin chi tiết về các trạm xe buýt. ........................................... 68 Hinh3.6: Cập nhật thông tin chi tiết về các tuyến xe buýt hoạt động ........................... 69 8 KÝ HIỆU VIẾT TẮT Stt Từ viết tắt 1 CSDL 2 4 CNTT DBMS DB 5 ECA 6 SQL 7 8 UC GIS TST TET VST VET 3 9 10 11 12 Tiếng Anh Tiếng Việt Cơ sở dữ liệu Công nghệ thông tin Data Base Manager System Hệ quản trị cơ sở dữ liệu Data base Cơ sở dữ liệu Sự kiện – điều kiện – hành Event- Condition -Action động Ngôn ngữ truy vấn mang tính Structured Query Language cấu trúc Until Changed Cho đến khi thay đổi Geographic Information System Hệ thông tin địa lý Transactiion Start Time Thời gian giao dịch bắt đầu Transactiion End Time Thời gian giao dịch kết thúc Valid Start Time Thời gian bắt đầu có hiệu lực Valid End Time Thời gian kết thúc hiệu lực 9 MỞ ĐẦU Ngày nay, ngành Công nghệ thông tin đã phát triển và có nhiều ứng dụng vào mọi lĩnh vực cuộc sống. Trong các ứng dụng đó có các mô hình cơ sở dữ liệu đóng vai trò quan trọng. Để đáp ứng đƣợc việc các ứng dụng liên quan đến các xử lý thông tin phức tạp, việc mở rộng các mô hình cơ sở dữ liệu là cần thiết. Mục đích của luận văn là nghiên cứu và giới thiệu một số mô hình cơ sở dữ liệu mở rộng (cơ sở dữ liệu tích cực, cơ sở dữ liệu thời gian và cơ sở dữ liệu không gian) đi sâu nghiên cứu nghiên cứu hệ quản trị cơ sở dữ liệu không gian (PostgreSQL, PostGis) và xây dựng một ứng dụng về quản lý xe buýt. Luận văn bao gồm ba chƣơng: Chƣơng 1: Tổng quan về cơ sở dữ liệu mở rộng Chƣơng này trình bày một số mô hình CSDL mở rộng nhƣ cơ sở dữ liệu tích cực, cơ sở dữ liệu thời gian và cơ sở dữ liệu không gian cùng với các ứng dụng của chúng. Chƣơng 2: Hệ quản trị CSDL postgreSQL và Postgis. Chƣơng này trình bày nghiên cứu hệ quản trị CSDL PostgreSQL và PostGis, cách lƣu trữ dữ liệu và các câu lệnh truy vấn dữ liệu của chúng Chƣơng 3: Xây dựng chƣơng trình quản lý bản đồ xe buýt Hà Nội. Chƣơng này trình bày bài toán quản lý xe buýt, xây dựng cơ sở dữ liệu và lập trình demo hoạt động quản lý. Cuối cùng, trong phần kết luận, chúng tôi tổng kết lại những công việc đã làm trong luận văn, những khuyết điểm và hạn chế cũng nhƣ hƣớng phát triển tiếp theo. 10 CHƢƠNG 1: TỔNG QUAN VỀ MÔ HÌNH CƠ SỞ DỮ LIỆU MỞ RỘNG 1.1. Một số mô hình CSDL mở rộng Cùng với sự phát triển của công nghệ thông tin , mô hình cơ sở dữ liệu quan hệ đã có rất nhiều các ứng dụng trong quản lý cũng nhƣ nhiều lĩnh vực khác. Tuy nhiên trong quá trình ứng dụng có nhiều vấn đề nảy sinh. Chẳng hạn, việc đảm bảo các ràng buộc toàn vẹn khi cập nhật dữ liệu, việc ghi lại lịch sử biến đổi của dữ liệu hoặc nhu cầu mở rộng thêm các kiểu dữ liệu. Vì vậy, ngƣời ta đã đề nghị một số mô hình mở rộng để đáp ứng các ứng dụng trên. Trong phần này chúng tôi xin trình bày ngắn gọn về các mô hình mở rộng đó. Cụ thể luận văn sẽ trình bày về cơ sở dữ liệu tích cực, cơ sở dữ liệu thời gian và cơ sở dữ liệu không gian. 1.2. Mô hình cơ sở dữ liệu tích cực( Active database). Cơ sở dữ liệu tích cực là một cơ sở dữ liệu cộng với một tập các quy tắc tích cực (active rules). Các quy tắc này sẽ đƣợc tự động kích hoạt sau một sự kiện cập nhật nhƣ (insert, delete, update) trên cơ sở dữ liệu, nhằm đảm bảo tính toàn vẹn của cơ sở dữ liệu. Hình 1.1: Mô hình cơ sở dữ liệu tích cực( Active Database). 1.2.1. Quy tắc ECA (Event- Condition -Action). Mô hình đƣợc sử dụng để chỉ rõ các quy tắc của cơ sở dữ liệu tích cực đƣợc tham chiếu đến nhƣ mô hình ECA. Một quy tắc trong mô hình ECA có 3 thành phần. 11 1.2.1.1. Sự kiện (Event) Sự kiện (Event) làm kích hoạt trigger: Các sự kiện này thƣờng là các thao tác cập nhật cơ sở dữ liệu đƣợc áp dụng một cách tƣờng minh đối với cơ sở dữ liệu. Tuy nhiên, trong mô hình tổng quát, chúng cũng có thể là các sự kiện thời gian hoặc là các dạng sự kiện ngoài khác. Các lựa chọn có thể là: - Các hành động cấu trúc, trong trƣờng hợp sự kiện đƣợc sinh ra bằng một hành động ở một phần của cấu trúc (ví dụ: thêm bản ghi, sửa một thuộc tính, truy cập vào 1 bản ghi). - Trƣờng hợp sự kiện đƣợc sinh ra bởi việc thực hiện một vài hành động của ngƣờì sử dụng. Đối với các ngôn ngữ sự kiện thƣờng cho phép các sự kiện xuất hiện trƣớc hoặc sau một hành động nào đó thực thi. - Sự thực thi (giải quyết), trong trƣờng hợp khi sự kiện đƣợc sinh ra bằng các lệnh thực thi (ví dụ: từ chối (abort), ủy thác (commit), bắt đầu thực thi (begin – transaction)) - Trừu tƣợng hoặc ngƣời dùng định rõ, trong trƣờng hợp một cơ chế lập trình đƣợc sử dụng cho phép một chƣơng trình ứng dụng báo hiệu sự xuất hiện một sự kiện rõ ràng (ví dụ trong phản hồi một vài thông tin mà ngƣời dùng nhập vào). - Ngoại lệ (loại trừ ra), trong trƣờng hợp sự kiện đƣợc sinh ra nhƣ là kết quả của một vài ngoại lệ phát sinh (ví dụ nhƣ, sự cố gắng truy cập một vài dữ liệu mà không có sự cho phép thích hợp). - Đồng hồ, trong trƣờng hợp sự kiện đƣợc sinh ra ở một điểm thời gian, sự kiện thời gian tƣơng đối và chu kỳ đƣợc báo cáo trong tài liệu Ngoài ra, trong trƣờng hợp sự kiện đƣợc sinh ra bởi sự việc xảy ra bên ngoài cơ sở dữ liệu. Các kiểu sự kiện có thể là: - Gốc (nguyên thủy), trong trƣờng hợp này sự kiện đƣợc sinh ra bởi sự việc đơn lẻ ở tầng thấp thuộc một trong những loại đƣợc mô tả ở nguồn (Source). Ví dụ, sự kiện “on insert to Owns” theo dõi việc thêm những bản ghi mới vào quan hệ “Owns”. - Hỗn hợp, trong trƣờng hợp này sự kiện đƣợc sinh ra bởi sự kết hợp các sự kiện hoặc hỗn hợp bằng cách sử dụng một loạt các toán tử cấu thành lên sự kiện. Các toán tử sự kiện khác nhau tùy vào hệ thống. Phổ biến là: 12  Toán tử tách rời(disjunction) – E1 or E2 xuất hiện khi một trong các thành phần E1 hoặc E2 xuất hiện;  Toán tử kết hợp (conjunction) – E1 and E2 xảy ra khi cả hai E1 và E2 đều xảy ra theo thứ tự bất kỳ  Toán tử nối tiếp (sequence)– seq(E1,E2) xuất hiện khi E1 xuất hiện trƣớc E2; toán tử đóng kín – “closure E in Int” xuất hiện chỉ một lần đầu tiên E ra tín hiệu, không cần chú ý tới sự xuất hiện sau đó của E trong một khoảng thời gian Int,  Toán tử lịch sử (history) – times(n,E) in Int báo hiệu khi sự kiện E xuất hiện n lần trong khoảng thời gian Int;  Phủ định (not) – not E1 in Int phát hiện sự không xuất hiện của sự E1 trong khoảng thời gian Int. Vai trò của một sự kiện biểu thị sự kiện phải luôn đƣợc định sẵn cho quy tắc tích cực hay không, hoặc việc đặt tên rõ ràng của một sự kiện có cần thiết hay không. Nếu vai trò là tùy ý, thì khi mà không một sự kiện nào đƣợc xác định thì các quy tắc điều kiện - hành động đƣợc hỗ trợ, các quy tắc đó có chức năng khác nhau đáng kể và thực thi từ quy tắc sự kiện - điều kiện - hành động (ECA). Nếu nhƣ vai trò là none thì các sự kiện có thể không đƣợc định rõ, và tất cả các quy tắc là điều kiện, hành động, nếu vai trò là bắt buộc thì quy tắc ECA là đƣợc hỗ trợ. Hình 1.2 : Ngữ cảnh mà trong đó một quy tắc đƣợc xử lý[7] 1.2.1.2 Điều kiện(Condition) Điều kiện (Condition) xác định hành động của quy tắc có thể đƣợc thực hiện hay không: Mỗi khi sự kiện kích hoạt có mặt, một điều kiện chọn có thể đƣợc tính giá trị. Nếu không có điều kiện nào đƣợc chỉ rõ, hành động sẽ đƣợc thực hiện một lần sự kiện xảy ra. Nếu điều kiện đƣợc chỉ rõ, đầu tiên nó đƣợc tính 13 giá trị là đúng (true) thì hành động của quy tắc sẽ đƣợc thực hiện. Ngữ cảnh biểu thị sự thiết lập mà trong đó điều kiện đƣợc đánh giá. Các thành phần khác nhau của một quy tắc không đƣợc đánh giá trong sự độc lập trong cơ sở dữ liệu hoặc từ mỗi thành phần khác, và hơn nữa cũng có thể không đƣợc đánh giá lần lƣợt. Kết quả là việc xử lý một quy tắc đơn lẻ có thể đƣợc liên kết với ít nhất 4 trạng thái cơ sở dữ liệu khác nhau trong hình 1.2. DBT -:Cơ sở dữ liệu ở thời điểm bắt đầu của sự thực thi hiện thời. DBE - Cơ sở dữ liệu khi sự kiện đã diễn ra. DBC - Cơ sở dữ liệu khi điều kiện đƣợc đánh giá DBA - Cơ sở dữ liệu khi hành động đƣợc thực hiện. Hệ thống quy tắc tích cực có thể hỗ trợ các công cụ bên trong điều kiện của quy tắc mà cho phép nó có thể không truy cập tới hoặc nhiều hơn các trạng thái DBT , DBE và DBC có thể cũng cho phép truy cập tới các ràng buộc liên kết với sự kiện BindE . Các thông tin có sẵn đƣợc dùng với các thành phần khác nhau của một quy tắc đƣợc minh họa ở Hình 1.2. Nhìn chung, vị trí của các thành phần còn phức tạp hơn trong miêu tả ở Hình 1.2, bởi vì trạng thái trƣớc và sau một sự kiện diễn ra có thể khác nhau, và nhiều sự kiện có thể đƣợc bắt đầu và có thể thực hiện tới khi hoàn thành trong khi thực hiện một hành động đơn lẻ. 1.2.1.3. Hành động(active). Hành động (Action) thực hiện: Hành động thƣờng là một dãy lệnh SQL nhƣng nó cũng có thể là một giao tác cơ sở dữ liệu hoặc một chƣơng tình bên ngoài sẽ đƣợc thực hiện một cách tự động. Hành động có thể cập nhật theo cấu trúc của cơ sở dữ liệu hoặc quy tắc thiết lập, thực hiện hành động lấy thông tin từ cơ sở dữ liệu và thông báo ngƣời dùng hoặc quản trị hệ thống trong một vài tình huống, hủy bỏ giao dịch, hoặc lấy một số quy tắc phụ của hành động sử dụng trong do-instead [Stonebraker et al.1990]. Sau đây là một ví dụ của do-instead, nếu xóa khỏi quan hệ Holder một giá trị >0 thì ngƣời quản trị hệ thống sẽ đƣợc thông báo. [7]. On delete to Holder If delete .value >0 Do instead Khác với nhiều cú pháp chuẩn, trong trƣờng hợp này bản ghi đƣợc xóa đi 14 và ngƣời quản lý hệ thống đƣợc thông báo: On delete to Holder If delete .value >0 Do Ngữ cảnh của hành động gần giống với ngữ cảnh của điều kiện, và biểu thị thông tin sẵn có về hành động, nhƣ trong minh họa ở Hình 1.2. Đôi khi thông tin có thể đƣợc chuyển từ điều kiện của quy tắc sang hành động, nhƣ DBE hoặc BindC Sau đây là một ví dụ về sự tiện ích của thông tin ngữ cảnh, quy tắc sau đƣợc sử dụng để sửa lại thông tin lƣu trữ trong thuộc tính value của tất cả bản ghi Holder mà bị ảnh hƣởng bởi sự thay đổi price của vài Stock. On update to price of Stock If true Do update Holder Set value = value*(new.price/old.price) Where reg# in (select reg# from Owns where stock# = update.stock#) Trong quy tắc này, file old và new của price đều đƣợc truy cập tới DBE để làm trạng thái của cơ sở dữ liệu tại thời gian của cập nhật DBA. 1.2.2. Mô hình tổng quát của CSDL tích cực Trên thực tế, các quy tắc ECA cũng đã đƣợc đề nghị từ sớm trong ngôn ngữ SQL và đƣợc thể hiện trong các hệ quản trị cơ sở dữ liệu nhƣ SQL-Server, Oracle dƣới cái tên Trigger. Cú pháp để chỉ ra các Trigger trong hệ thống Oracle đƣợc viết nhƣ sau: Cấu trúc của một Trigger :: = CREAT TRIGGER < Tên Trigger > (APTER/BEFOR)< sự kiện kích hoạt> ON [FOR EACH ROW/ FOR EACH STATEMENT] [WHEN<điều kiện>] < hành động của trigger>; ::= :: {,}]>. 15 Hình 1.3: Mô hình ECA (Event- Condition -Action). Trong đó: CREATE TRIGGER chỉ rõ tên của một trigger(hoặc các quy tắc tích cực ). Mệnh đề AFTER|BEFORE chỉ ra rằng quy tắc sẽ đƣợc kích hoạt sau hoặc trƣớc sự kiện kích hoạt quy tắc xảy ra. Các từ khóa ùy chọn FOR EACH ROW chỉ ra rằng quy tắc sẽ đƣơc kích hoạt một vài lần với mỗi hàng bị ảnh hƣởng bởi sự kiện kích hoạt. Mệnh đề tùy chọn WHEN đƣợc sử dụng để chỉ ra nhƣ một khối PL/SQL, khối này thƣờng chứa một hoặc nhiều lệnh SQL hoặc các lời gọi để thực hiện các thủ tục bên ngoài. Mỗi trigger sử dụng hai file riêng nhƣ NEW, OLD. File NEW dùng để chứa các bộ giá trị đƣợc chèn vào(trong sự kiện INSERT) hoặc các bộ giá trị sau khi đƣợc thay đổi(trong sự kiện UPDATE). File OLD chứa các bộ giá trị bị loại bỏ ( trong sự kiện DELETE) hoặc các bộ giá trị trƣớc khi sửa đổi(trong sự kiện UPDATE) Khi đƣợc kích hoạt, trigger sẽ sử dụng thông tin trong hai file này để kiểm tra điều kiện và thực hiện hành động thích hợp. Ví dụ: Xét hai bảng với ứng dụng CSDL từ DONVI đƣợc thể hiện với hai bảng NHÂNVIÊN và ĐƠNVI. DONVI (MaDV, TenDV, Tongluong, MaNQL) NHANVIEN(MaNV, TenNV, Ngaysinh, Gioitinh, Luong, MaDV, MaNGS ) Có hai quan hệ NHÂN VIÊN và ĐƠN VỊ. Mỗi nhân viên có một tên (TenNV), mã số (MaNV), lƣơng, mã số đơn vị (MaDV) là khóa ngoài tham 16 chiếu đến DONVI, và mã số ngƣời giám sát (MaNGS) là khóa ngoài tham chiếu đến NHANVIEN. Với ví dụ này, chúng ta giả thiết rằng MaNV có thể cho phép có giá trị null, chỉ ra rằng nhân viên có thể tạm thời chƣa đƣợc đăng ký vào đơn vị nào. Mỗi đơn vị có một tên (TenDV), một mã số (MaDV), tổng lƣơng của tất cả các nhân viên đăng ký vào đơn vị (Tongluong) và một ngƣời quản lý (MaNQL) là khóa ngoài đến NHANVIEN. [8] Chú ý rằng thuôc tính Tongluong thực chất là một thuộc tính suy diễn đƣợc, giá trị của nó là tổng lƣơng của tất cả các nhân viên đăng ký vào một đơn vị cụ thể. Việc duy trì giá trị đúng của một thuộc tính suy diễn đƣợc nhƣ vậy có thể đƣợc thực hiện thông qua một luật tích cực. Trƣớc tiên chúng ta phải xác định các sự kiện có thể gây ra một thay đổi giá trị của Tongluong, đó là các sự kiện sau: 1. Chèn vào một hoặc nhiều bộ giá trị nhân viên mới. 2. Thay đổi lƣơng của một hoặc nhiều nhân viên có sẵn. 3. Thay đổi việc đăng ký của các nhân viên có sẵn từ đơn vị này sang đơn vị khác. 4. Loại bỏ một hoặc nhiều bộ giá trị nhân viên. Trong trƣờng hợp sự kiện 1, chúng ta chỉ cần tính lại Tongluong nếu nhân viên mới đƣợc ghi tức khắc vào một đơn vị - nghĩa là giá trị của thuộc tính MaDV đối với bộ nhân viên mới là khác null (giả thiết null là cho phép đối với MaDV). Nhƣ vậy điều đó sẽ là điều kiện để kiểm tra. Một điều kiện tƣơng tự có thể sẽ đƣợc kiểm tra cho sự kiện 2 và 4 để xác định xem có phải là nhân viên mà lƣơng của anh ta bị thay đổi (hoặc bị xóa) hiện tại đã đƣợc đăng ký vào một đơn vị hay không. Với sự kiện 3, chúng ta luôn luôn thực hiện một hành động để duy trì giá trị của Tongluong một cách đúng đắn, nhƣ vậy là không cần điều kiện nào (hành động luôn luôn đƣợc thực hiện). Hành động đối với các sự kiện 1, 2 và 4 là cập nhật một cách tự động giá trị của Tongluong đối với đơn vị của nhân viên để phản ánh việc lƣơng của nhân viên vừa mới đƣợc thêm, xóa hoặc cập nhật. Trong trƣờng hợp của sự kiện 3, cần một hành động đúp: một để cập nhật Tongluong của đơn vị cũ của nhân viên và hành động khác để cập nhật Tongluong của đơn vị mới của nhân viên. Bốn active rules R1, R2, R3 và R4 tƣơng ứng với tình trạng ở trên có thể đƣợc chỉ ra trong ký hiệu của hệ quản trị cơ sở dữ liệu Oracle. R1: CREATE TRIGGER Tongluong1 AFTER INSERT ON NHANVIEN 17 FOR EACH ROW WHEN(NEW. MaDV IS NOT NULL) UPDATE DONVI SET Tongluong = Tongluong + NEW.Luong WHERE MaDV = NEW.MaDV; R2: CREATE TRIGGER Tongluong2 AFTER UPDATE OF Luong ON NHANVIEN FOR EACH ROW WHEN(NEW. MaDV IS NOT NULL) UPDATE DONVI SET Tongluong = Tongluong + NEW.Luong – OLD.Luong WHERE MaDV = NEW.MaDV; R3: CREATE TRIGGER Tongluong3 AFTER UPDATE OF MaDV ON NHANVIEN FOR EACH ROW BEGIN UPDATE DONVI SET Tongluong = Tongluong + NEW.Luong WHERE MaDV = NEW.MaDV; UPDATE DONVI SET Tongluong = Tongluong - OLD.Luong WHERE MaDV = OLD.MaDV; END; R4: CREATE TRIGGER Tongluong4 AFTER DELETE ON NHANVIEN FOR EACH ROW WHEN (OLD.MaDV IS NOT NULL) UPDATE DONVI SET Tongluong = Tongluong - OLD.Luong WHERE MaDV = OLD.MaDV; Bốn trigger (các quy tắc tích cực) R1, R2, R3 và R4 minh họa một số tính chất của các quy tắc tích cực. Trƣớc tiên, các sự kiện cơ bản có thể chỉ ra để kích hoạt các quy tắc là các lệnh cập nhật của SQL chuẩn: INSERT, DELETE, 18 UPDATE. Chúng đƣợc chỉ ra bằng các từ khóa INSERT, DELETE, UPDATE trong ký hiệu của Oracle. Trong trƣờng hợp của UPDATE ngƣời ta có thể chỉ ra các thuộc tính đƣợc cập nhật. Ví dụ, bằng cách viết UPDATE OF Luong, MaDV. Thứ hai, ngƣời thiết kế quy tắc cần có cách tham chiếu đến các bộ giá trị đã đƣợc chèn, xóa, sửa đổi: hai file NEW và OLD của Trigger đƣợc sử dụng trong Oracle: NEW đƣợc sử dụng để tham chiếu đến bộ vừa đƣợc chèn vào hoặc vừa đƣợc sửa đổi, trong khi đó OLD đƣợc sử dụng để tham chiếu đến bộ bị xóa hoặc bộ trƣớc khi đƣợc cập nhật. Nhƣ vậy, quy tắc R1 đƣợc kích hoạt sau một phép toán INSERT đƣợc áp dụng cho quan hệ NHÂNVIÊN. Trong R1, điều kiện (NEW.MaDV IS NOT NULL) đƣợc kiểm tra, và nếu nó đƣợc tính giá trị là đúng, nghĩa là bộ nhân viên vừa mới đƣợc chèn vào là có quan hệ với một đơn vị, thì hành động sẽ đƣợc thực hiện. Hành động cập nhật các bộ ĐƠNVỊ có liên quan tới nhân viên vừa mới đƣợc chèn vào bằng cách cộng lƣơng của ngƣời đó (NEW.Luong) vào thuộc tính Tongluong của đơn vị liên quan của chúng. Quy tắc R2 tƣơng tự với R1 nhƣng nó đƣợc kích hoạt bằng một phép toán UPDATE, sửa đổi lƣơng của một nhân viên thay vì chèn. Quy tắc R3 đƣợc kích hoạt bằng một sửa đổi đối với thuộc tính MaDV của NHÂNVIÊN, nó có nghĩa thay đổi đăng ký của nhân viên từ một đơn vị sang một đơn vị khác. Không có điều kiện để kiểm tra trong R3, vì vậy hành động đƣợc thực hiện mỗi khi sự kiện kích hoạt xuất hiện. Hành động sửa đổi cả đơn vị mới và đơn vị cũ của nhân viên đăng ký lại bằng cách cộng lƣơng của họ vào Tongluong của đơn vị mới và trừ lƣơng của họ ra khỏi Tongluong của đơn vị cũ. Để ý rằng điều này có thể làm việc ngay cả giá trị của MaDV là NULL bởi vì trong trƣờng hợp này không đơn vị nào đƣợc lựa chọn cho hành động của quy tắc. Điều quan trọng là xét ảnh hƣởng của mệnh đề tùy chọn FOR EACH ROW, nó có nghĩa là quy tắc đƣợc kích hoạt một cách riêng rẽ đối với mỗi bộ giá trị. Điều này đƣợc biết đến nhƣ một trigger mức hàng( row-level-trigger). Nếu mệnh đề này bị bỏ qua, trigger sẽ đƣợc biết nhƣ là một trigger mức lệnh (statement-level trigger) và sẽ đƣợc kích hoạt một lần đối với mỗi lệnh kích hoạt. Để thấy sự khác nhau, hãy xem phép toán cập nhật sau đây, nó tăng 10% lƣơng cho tất cả các nhân viên đăng ký vào đơn vị 5. Phép toán này sẽ là một sự kiện kích hoạt quy tắc R2: 19 R2: UPDATE NHANVIEN SET Luong = 1.1* Luong WHERE MaDV=5; Bởi vì lệnh ở trên có thể cập nhật nhiều bản ghi, một quy tắc sử dụng mức hàng ( row-level) nhƣ là R2 sẽ đƣợc kích hoạt một lần đối với mỗi hàng, trong khi đó một quy tắc sử dụng ngữ nghĩa mức lệnh(statement-level) đƣợc kích hoạt chỉ một lần. Hệ thống Oracle cho phép ngƣời sử dụng chọn lựa một trong hai tùy chọn trên để sử dụng cho mỗi quy tắc. Việc dựa vào mệnh đề tùy chọn FOR EACH ROW tạo ra một trigger mức hàng (row-level trigger) và việc bỏ nó tạo ra một trigger mức lệnh (statement-level trigger). 1.2.3. Thiết kế và cài đặt CSDL tích cực. Việc thiết kế và cài đặt các quy tắc cần giải quyết một số vấn đề sau: Thứ nhất: Liên quan đến việc kích hoạt, thôi kích hoạt và nhóm các quy tắc. Thêm vào việc tạo ra các quy tắc, một hệ thống cơ sở dữ liệu tích cực phải cho phép những ngƣời sử dụng kích hoạt, thôi kích hoạt và bỏ các quy tắc bằng cách tham chiếu đến các tên quy tắc của chúng. Một quy tắc không đƣợc kích hoạt (deatived rule) sẽ không bị kích hoạt bởi sự kiện kích hoạt. Tính chất này cho phép các ngƣời sử dụng lựa chọn các quy tắc thôi kích hoạt đối với một chu kỳ thời gian nào đó khi chúng là không cần thiết. Các lệnh kích hoạt sẽ làm cho các quy tắc tích cực trở lại. Lệnh drop loại bỏ các luật ra khỏi hệ thống. Một tùy chọn khác là nhóm các quy tắc vào một cái gọi là thiết lập quy tắc, nhƣ vậy toàn bộ tập hợp các quy tắc có thể đƣợc kích hoạt, ngừng kích hoạt hoặc loại bỏ. Việc có một lệnh có thể kích hoạt một quy tắc hoặc một tập quy tắc thông qua một lệnh PROCESS RULES do ngƣời sử dụng đƣa ra cũng là một điều có lợi. Thứ hai: Liên quan đến liệu hành động đƣợc kích hoạt có thể đƣợc thực hiện trƣớc, sau, hoặc đồng thời với sự kiện kích hoạt đƣợc hay không. Vấn đề liên quan là liệu hành động đƣợc kích hoạt có thể đƣợc xem nhƣ một giao tác tách rời hay không hay nó phải là một phần của cung giao tác kích hoạt quy tắc. Trƣớc tiên chúng ta phải cố gắng phân loại các tùy chọn khác nhau. Điều quan trọng là không phải tất cả các tùy chọn có thể sẵn sàng sử dụng đối với một hệ cơ sở dữ liệu tích cực. Thật vậy, hầu hết các hệ thống thƣơng mại đƣợc giới hạn đến một hoặc hai tùy chọn. Giả thiết rằng sự kiện kích hoạt xảy ra nhƣ là một 20 phần của việc thực hiện giao tác. Trƣớc hết chúng ta xét các tùy chọn khác nhau với việc sự kiện kích hoạt liên kết với việc tính giá trị của các điều kiện của quy tắc nhƣ thế nào. Việc tính giá trị của các điều kiện của quy tắc cũng đƣợc xem nhƣ xem xét quy tắc bởi vì hành động chỉ đƣợc thực hiện sau sự xem xét lại điều kiện tính giá trị đến đúng (true) hoặc sai (false). Có ba khả năng chính đối với sự xem xét quy tắc[4]: 1. Sự xem xét tức thời (immediate consideration): Điều kiện đƣợc tính giá trị nhƣ là một phần của cùng giao tác nhƣ là sự kiện kích hoạt và đƣợc tính toán ngay tức khắc. Trƣờng hợp này có thể đƣợc phân loại thành ba tùy chọn: - Tính giá trị điều kiện trƣớc khi thực hiện sự kiện kích hoạt - Tính giá trị điều kiện sau khi thực hiện sự kiện kích hoạt - Tính giá trị điều kiện thay vì thực hiện sự kiện kích hoạt 2. Sự xem xét chậm (Deferred consideration ): Điều kiện đƣợc tính giá trị ở cuối giao tác chứa sự kiện kích hoạt. Trong trƣờng hợp này có thể có nhiều quy tắc đƣợc kích hoạt chờ để có các điều kiện của chúng đƣợc tính. 3. Sự xem xét riêng rẽ (Detached consideration): Điều kiện đƣợc tính giá trị nhƣ là một giao tác riêng rẽ, tách rời khỏi giao tác kích hoạt Tập hợp các tùy chọn tiếp theo liên quan đến mối quan hệ giữa việc tính giá trị điều kiện của quy tắc và việc thực hiện hành động của quy tắc. Ở đây, một lần nữa có ba tùy chọn có thể có: thực hiện tức khắc, thực hiện chậm và thực hiện tách rời. Tuy nhiên, hầu hết các hệ thống tích cực sử dụng tùy chọn thứ nhất. Nghĩa là, khi điều kiện đƣợc tính giá trị, nếu nó trả lại giá trị đúng (true), hành động đƣợc thực hiện ngay tức khắc. Một vấn đề khác liên quan đến các quy tắc của CSDL tích cực là sự phân biệt các quy tắc ở mức dòng (row-level rule) và các quy tắc mức lệnh (statement-level rule). Bởi vì các lệnh cập nhật của SQL (đƣợc xem nhƣ các sự kiện kích hoạt) có thể chỉ ra một tập hợp các bộ, ta phải phân biệt giữa liệu quy tắc có thể xem xét một lần đối với toàn bộ lệnh hay không hay liệu nó có thể đƣợc xem xét một cách tách biệt đối với từng hàng bị ảnh hƣởng bởi lệnh. 1.3. Mô hình cơ sở dữ liệu thời gian(Temporal database) CSDL có yếu tố thời gian là bao gồm tất cả các ứng dụng CSDL có liên quan đến yếu tố thời gian trong việc tổ chức thông tin. Các ứng dụng CSDL có yếu tố thời gian đã đƣợc phát triển từ rất lâu. Tuy nhiên, việc tạo ra các ứng dụng CSDL này chủ yếu đƣợc dành cho những ngƣời thiết kế và phát triển ứng
- Xem thêm -