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. TIEU LUAN MOI download : skknchat@gmail.com 10 CHƢƠNG 1: TỔNG QUAN VỀ MÔ HÌNH CƠ SỞ DỮ LIỆU MỞ RỘNG 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.
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.1: Mô hình cơ sở dữ liệu tích cực( Active Database). 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. TIEU LUAN MOI download : skknchat@gmail. 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). - Đồ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à: TIEU LUAN MOI download : skknchat@gmail.com 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ợ.2 : Ngữ cảnh mà trong đó một quy tắc đƣợc xử lý[7] 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 TIEU LUAN MOI download : skknchat@gmail.com 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. 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.
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ẻ. 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. 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.
On delete to Holder If delete .value >0 Do instead <inform system manager> 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 TIEU LUAN MOI download : skknchat@gmail.com 14 và ngƣời quản lý hệ thống đƣợc thông báo: On delete to Holder If delete .value >0 Do <inform system manager> 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. Đô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) Where reg# in (select reg# from Owns where stock# = update.