Tải bản đầy đủ (.pdf) (72 trang)

Một số mô hình cơ sở dữ liệu mở rộng : Luận văn ThS. Công nghệ thông tin : 60 48 05

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.42 MB, 72 trang )

ĐẠ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 <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


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.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
<Trigger>:: = CREAT TRIGGER < Tên Trigger >
(APTER/BEFOR)< sự kiện kích hoạt> ON <tên bảng>
[FOR EACH ROW/ FOR EACH STATEMENT]
[WHEN<điều kiện>]
< hành động của trigger>;
<sự kiện kích hoạt>::=<sự kiện của trigger>
<sự kiện của trigger>:: cột>}]>.


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


21

dụng nhằm khai thác, thiết kế, lập trình và cài đặt các khái niệm thời gian. Có
nhiều ứng dụng mà thời gian cần đƣợc quan tâm trong CSDL. Chẳng hạn, việc
theo dõi sức khỏe bệnh nhân, các hệ thống đặt chỗ trƣớc (nhƣ ở khách sạn, sân
bay, nơi cho thuê xe, ga tàu,…) hằng ngày luôn nhận đƣợc các yêu cầu đặt chỗ
trƣớc, thí nghiệm theo từng thời điểm khác nhau. Trong thực tế, phần lớn các
ứng dụng CSDL đều có các thông tin có yếu tố thời gian. Tuy nhiên, ngƣời sử
dụng thƣờng cố gắng để đơn giản hóa hay loại bỏ các lĩnh vực có yếu tố thời
gian do sự phức tạp của chúng mang lại trong các ứng dụng của ngƣời dùng [8].

Hình 1.4: Mô hình Cơ sở dữ liệu thời gian( Temporal database)
Một sự việc hay sự kiện có thể đƣợc kết hợp với một thời điểm hay một
khoảng thời gian đặc biệt trong CSDL. Thời gian kết hợp này có thể đƣợc giải
thích theo nhiều cách khác nhau. Cách giải thích hợp lý nhất là thời gian kết
hợp(associated time) có thể xem nhƣ thời gian là sự việc xảy ra hay suốt quãng
thời gian mà sự việc đƣợc coi là đúng trong thực tế. Thì thời gian kết hợp đƣợc
gọi là thời gian hợp lệ (valid time). Và CSDL có yếu tố thời gian sử dụng cách
giải thích này đƣợc gọi là CSDL thời gian hợp lệ.
Tuy nhiên, có một cách giải thích khác cũng đƣợc chấp nhận đó là thời
gian kết hợp là thời gian khi thông tin thực sự đƣợc lƣu giữ trong CSDL. Thời
gian đó là giá trị của đồng hồ hệ thống khi thông tin đƣợc lƣu giữ là hợp lệ.

Trong trƣờng hợp này, thời gian kết hợp đƣợc gọi là thời gian thực hiện giao tác
hay thời gian giao tác (transaction time). Nếu CSDL có yếu tố thời gian sử dụng
cách giải thích này đƣợc gọi là CSDL thời gian giao tác.


22

Nhiều cách giải thích khác cũng đƣợc đƣa ra, nhƣng hai dạng thời gian
trên là thông dụng nhất, và chúng đƣợc coi nhƣ là những loại thời gian. Trong
một vài ứng dụng thì chỉ một loại đƣợc sử dụng. Có một vài ứng dụng khác thì
cần đến cả hai loại trên, trong trƣờng hợp này CSDL thời gian đƣợc gọi là CSDL
theo hai loại thời gian (bitemporal). Nếu có thêm nhiều cách giải thích khác nữa,
thì ngƣời sử dụng có thể tự định nghĩa và cài đặt vào trong các ứng dụng của họ
một cách thích hợp và nó đƣợc coi là loại thời gian do ngƣời sử dụng định ra.

Valid time

Transaction time

Bitemporal

.VST
.VET

.TST
.TET

.VST-VET
.TST-TET


Hình 1.5: Mô hình CSDL thời gian.
Valid Time: Thời gian sự việc xảy ra trong thực tế
VST( Valid Start Time): Thời gian bắt đầu có hiệu lực
VET( Valid End Time): Thời gian kết thúc hiệu lực.
Transaction Time: Thời gian khi sự thay đổi đƣợc lƣu trong cơ sở dữ liệu
TST( Transactiion Start Time): Thời gian giao dịch đƣợc tạo ra
TET(Transaction End Time): Thời gian giao dịch kết thúc
1.3.1.Quan hệ thời gian hợp lệ.
Trong quan hệ thời gian hợp lệ, để thấy đƣợc các loại thời gian khác nhau
đƣợc biểu diễn nhƣ thế nào trong mô hình CSDL, ví dụ xét hai quan hệ
NHANVIEN và DONVI (Hình 1.6(a), rồi chuyển chúng thành các quan hệ thời
gian hợp lệ bằng cách thêm vào các thuộc tính thời gian bắt đầu hợp lệ VST
(Valid Start Time) và thuộc tính thời gian kết thúc hợp lệ VET (Valid End Time)
có kiểu dữ liệu là kiểu Date. Điều này đƣợc trình bày trong hình 1.6 (b) với các
quan hệ đƣợc đổi tên thành NHANVIEN_VT và DONVI_VT tƣơng ứng [8].


23
(a) NHANVIEN_VT
TênNV

MasoNV

Luong

MasoDV

MasoNGS

VST


VET

DONVI_VT
TênDV

MasoDV

TongLuong MasoNQL

VST

VET

(b) NHANVIEN_TT
TênNV

MasoNV

Luong

MasoDV

MasoNGS

TST

TET

DONVI_TT

TênDV

MasoDV

TongLuong MasoNQL

TST

TET

(c) NHANVIEN_BT
TênNV

MasoNV

Luong

MasoDV

MasoNGS

VST

VET

VET

TST

TST


TET

DONVI_BT
TênDV

MasoDV

TongLuong MasoNQL

VST

TET

Hình 1. 6: Các loại CSDL quan hệ theo thời gian khác nhau
(a) CSDL phi thời gian

(b) CSDL thời gian hợp lệ

(c) CSDL thời gian giao tác

(d) CSDL theo hai loại thời gian

Chúng ta xét xem quan hệ NHANVIEN_VT khác nhƣ thế nào với quan hệ
NHANVIEN (phi thời gian). Trong quan hệ NHANVIEN_VT, mỗi bộ V biểu
diễn một phiên bản thông tin của nhân viên trong suốt khoảng thời gian hợp lệ
[V.VST, V.VET]. Ngƣợc lại, trong quan hệ NHANVIEN, mỗi bộ biểu diễn trạng
thái hiện thời của mỗi nhân viên. Trong NHANVIEN_VT, một phiên bản hiện
thời của một nhân viên có một giá trị đặc biệt là now tại thuộc tính VET đƣợc
coi là thời gian kết thúc hợp lệ của phiên bản đó. Giá trị now này là một biến

thời gian ngầm đại diện cho thời gian hiện thời. Quan hệ phi thời gian
NHANVIEN chỉ gồm những bộ từ quan hệ NHANVIEN_VT có VET là now mà
thôi.
NHANVIEN_VT
TênNV

Bắc
Bắc
Trung
Trung

MasoNV

101
101
102
102

Luong

25000
30000
25000
30000

MasoDV

5
5
4

5

VST

VET

1997-06-15
1998-06-01
1994-08-20
1996-02-01

1998-05-31
now
1996-01-31
1997-03-31


24

DONVI_VT
TenDV

Research
Research

MasoDV

5
5


MasoNQL

106
102

VST

1996-09-20
1997-04-01

VET

1997-03-31
now

Hình 1.7.Quan hệ thời gian hợp lệ NHANVIEN_VT và DONVI_VT.
Quan hệ thời gian hợp lệ về cơ bản chúng lƣu lại các dấu vết của những thay
đổi khi chúng có hiệu lực trong thực tế. Nếu những thay đổi thực tế đó đƣợc áp
dụng thì CSDL sẽ lƣu giữ các trạng thái thực tế. Tuy nhiên, việc cập nhật, xóa
hay chèn có thể đƣợc áp dụng theo cách cập nhật trƣớc hay cập nhật sau nên sẽ
không có trạng thái CSDL thực tế nào đƣợc lƣu giữ tại bất kỳ thời điểm nào.
Nếu các trạng thái CSDL thực tế quan trọng đối với một ứng dụng thì ứng dụng
này sẽ sử dụng quan hệ thời gian giao tác.
1.3.2.Quan hệ thời gian giao tác.
Trong quan hệ thời gian giao tác, khi nào có một thay đổi trong CSDL thì
mốc thời gian thực tế của giao tác thực hiện sự thay đổi đó (nhƣ chèn, xóa, cập
nhật) sẽ đƣợc ghi lại. Một CSDL hữu ích nhất khi những thay đổi đó đƣợc áp
dụng đồng thời trong phần lớn các trƣờng hợp. Nếu ta chuyển CSDL phi thời
gian sang CSDL thời gian giao tác, thì hai quan hệ NHANVIEN và DONVI
đƣợc chuyển thành quan hệ thời gian giao tác bằng cách thêm vào các thuộc tính

thời gian bắt đầu giao tác TST (Transaction Start Time) và thời gian kết thúc
giao tác TET (Transaction End Time) có kiểu dữ liệu là Timestamp. Điều này
đƣợc trình bày hình 1.6(c), ở đó quan hệ đƣợc đổi tên thành NHANVIEN_TT và
DONVI_TT tƣơng ứng.
Trong quan hệ NHANVIEN_TT, mỗi bộ V biểu diễn một phiên bản của một
nhân viên đƣợc tạo ra tại một thời điểm trong thực tế là V.TST và đƣợc xóa đi tại
thời điểm V.TET (khi nó không còn đúng). Trong NHANVIEN_TT, bản hiện
thời của mỗi nhân viên có một giá trị đặc biệt là uc (Until Changed) ở thời gian
kết thúc giao tác (TET), cho biết rằng bộ biểu diễn các thông tin của nhân viên
đó đúng cho đến khi nó bị thay đổi bởi các giao tác khác. Trong một CSDL thời
gian giao tác, ngƣời sử dụng có thể xem lại các trạng thái CSDL thực tế tại một
thời điểm t đã qua nào đó bằng cách truy xuất tất cả các bộ phiên bản V có thời
gian giao tác [V.TST, V.TET] có chứa thời điểm t.


25

1.3.3.Quan hệ theo hai loại thời gian.
Một vài ứng dụng có cả thời gian hợp lệ và thời gian giao tác, thì quan hệ
trong ứng dụng này đƣợc gọi là quan hệ theo hai loại thời gian. Hình 1.6 (d) cho
ta thấy đƣợc làm thế nào để các quan hệ phi thời gian NHANVIEN và DONVI
trở thành các quan hệ theo hai loại thời gian NHANVIEN_BT và DONVI_BT.
[8].
NHANVIEN_BT
TenNV

MasoNV

Luong


MasoDV

VST

VET

V1

Bắc

101

25000

5

1997-06-15

now

V2

Bắc

101

25000

5


1997-06-15

1998-05-31

V3

Bắc

101

30000

5

1998-06-01

now

V4

Trung

102

25000

4

1994-08-20


now

V5

Trung

102

25000

4

1994-08-20

1996-01-31

V6

Trung

102

30000

5

1996-02-01

now


V7

Trung

102

30000

5

1996-02-01

1997-03-31

V8

Trung

102

40000

5

1997-04-01

now

V9


Nam

103

28000

4

1996-05-01

now

V10

Nam

103

28000

4

1996-05-01

1997-08-10

V11

Tuấn


104

38000

5

1998-08-01

now

TST

TET

1997-06-08,
13:05:58
1998-06-04,
08:56:12
1998-06-04,
08:56:12
1994-08-20,
11:18:23
1996-01-07,
14:33:02
1996-01-07,
14:33:02
1997-03-28,
09:23:57
1997-03-28,
09:23:57

1996-04-27,
16:22:05
1997-08-12,
10:11:07
1998-07-28,
09:25:37

1998-06-04,
08:56:12
uc
uc
1996-01-07,
14:33:02
uc
1997-03-28,
09:23:57
uc
uc
1997-08-12,
10:11:07
uc
uc

DONVI_BT.
TenDV

MasoDV

MasoNQL


V12

Reseach

5

106

V13

Reseach

5

106

V14

Reseach

5

102

VST

VET

TST
TET

1996-09-15, 1996-03-28,
1996-09-20
now
14:52:12
09:23:57
1996-03-28,
1996-09-20 1997-03-31
uc
09:23:57
1996-03-28,
1997-04-01
now
uc
09:23:57

Hình 1.8. Các bộ trong quan hệ theo hai loại thời gian NHANVIEN_BT và
DONVI_BT.


×