Thao tác cập nhật

Một phần của tài liệu Nghiên cứu một số phương pháp gán nhãn thời gian trên cơ sở dữ liệu (Trang 50 - 53)

Chúng ta đã tìm hiểu việc cập nhật dữ liệu trong quan hệ thời gian giao tác và thời gian hợp lệ, vậy việc cập nhật sẽ được thực hiện như thế nào trong

quan hệ theo hai loại thời gian. Để minh họa các bộ được tạo ra như thế nào ta xét quan hệ NV_BT ở trên.

Một phiên bản hiện thời của một nhân viên sẽ có giá trị là uc ở thuộc tính TET và Nobind Now ở thuộc tính VET.

Nếu một vài thuộc tính như LUONG được cập nhật thì giao tác T tiến hành việc cập nhật sẽ có hai tham số:

- Một là giá trị mới của LUONG.

- Hai là thời gian hợp lệ VT khi lương mới có hiệu quả trong thực tế.

Giả sử rằng VT- là thời điểm hợp lệ trước VT và giao tác T đó có một mốc thời gian bắt đầu là TS(T). Những thay đổi tiếp theo sau đây sẽ được áp dụng với bảng NV_BT:

- Bước 1. Tạo bảng sao v2 của bảng hiện thời v; đặt v2.VET thành VT-, v2.TST thành TS(T), v2.TET thành uc và chèn v2 vào NV_BT; v2 là bản sao hiện thời trước đó của v sau khi nó bị đóng tại thời gian hợp lệ VT-.

- Bước 2. Tạo bản sao v3 của bản hiện thời v; đặt v3.VST là VT, v3.VET là Nobind Now, v3.LUONG là giá trị lương mới, v3.TST là TS(T), v3.TET là uc

và chèn v3 vào NV_BT. Lúc này v3 biễu diễn cho bản hiện thời mới. - Bước 3. Đặt v.TET là TS(T) khi bản hiện thời v không còn đúng.

Để minh họa, ta xét nhân viên “An” trong NV_BT trong bảng 3.8 ở trên. Bộ dữ liệu này là bản hiện thời, ta đặt là bộ này là bộ v1.

Bảng 3.9. Bộ dữ liệu của nhân viên “An” trong quan hệ NV_BT

TÊN MANV LUONG MAPB VST VET TST TET

v1 An 101 25000 5 1997/06/15 Nobind Now

1997/06/04, 13:05:58

Bây giờ ta tiến hành cập nhật lương mới cho nhân viên “An” là 30000 vào lúc “1998/06/04; 08:56:12” với thời gian hiệu lực áp dụng là ngày “1998/06/01”, thao tác cập nhật này tiến hành như sau:

- Trước khi cập nhật lương mới cho nhân viên “An” từ 25000 lên 30000 thì chỉ có bộ v1 là ở trong NV_BT và nó là bản hiện thời với giá trị ở TET là uc. Sau đó một giao tác T có mốc thời gian TS(T) là “1998/06/04; 08:56:12” cập nhật lương thành 30000 với thời gian có hiệu lực là “1998/06/01”.

- Khi cập nhật, bộ v2 được tạo ra là bản sao của v1 ngoại trừ giá trị ở VET được đặt lại là “1998/05/31” trước một ngày so với thời gian hợp lệ mới và giá trị TST của nó là mốc thời gian của giao tác cập nhật.

- Tiếp đó, bộ v3 là bản sao của bộ v1 cũng được tạo ra với giá trị lương mới ở LUONG là 30000, giá trị ở VST là “1998/06/01”, giá trị ở VET vẫn là

Nobind Now, giá trị ở TST là mốc thời gian của giao tác cập nhật và giá trị ở TET cũng vẫn là uc.

- Cuối cùng giá trị TET của v1 được đặt lại là mốc thời gian của giao tác cập nhật “1998/06/04, 08:56:12”. Bây giờ, v3 chính là bản hiện thời.

Kết quả cập nhật này thể hiện trong bảng 3.10 dưới đây:

Bảng 3.10.Bộ dữ liệu của nhân viên “An” trong quan hệ NV_BT

sau khi cập nhật lương

TÊN MANV LUONG MAPB VST VET TST TET

v1 An 101 25000 5 1997/06/15 Nobind Now 1997/06/08, 13:05:58 1998/06/04, 08:56:12 v2 An 101 25000 5 1997/06/15 1998-05-31 1998/06/04, 08:56:12 uc v3 An 101 30000 5 1998/06/01 Nobind Now 1998/06/04, 08:56:12 uc

Chú ý rằng đây là một cập nhật sau, vì giao tác cập nhật đã được thực hiện vào ngày 04/06/1998 nhưng việc thay đổi lương lại bắt đầu có hiệu lực từ 01/06/1998.

Một phần của tài liệu Nghiên cứu một số phương pháp gán nhãn thời gian trên cơ sở dữ liệu (Trang 50 - 53)

Tải bản đầy đủ (PDF)

(68 trang)