Các phương pháp gán nhãn thời gian giao tác

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 31 - 34)

Như luận văn đã trình bày trong mục 1.3 là có 2 kỹ thuật gán nhãn thời gian cơ bản, kỹ thuật thứ nhất đó là kỹ thuật ghi nhận thông tin thời gian liên quan đến mỗi bộ dữ liệu, kỹ thuật gán nhãn thời gian thứ 2 đó là kỹ thuật ghi nhận thông tin thời gian liên quan đến mỗi thuộc tính trong từng bộ dữ liệu. Nhưng đối với kỹ thuật thứ gán nhãn thời gian thứ 2 thì thông tin sẽ trở nên rất phức tạp, do đó các hệ quản trị CSDL phải hỗ trợ thêm các phương pháp lưu trữ, xử lý, và truy vấn hiệu quả hơn.

Vì vậy, trong luận văn này chỉ trình bày phương pháp gán nhãn thời gian bằng kỹ thuật ghi nhận thông tin thời gian liên quan đến mỗi bộ dữ liệu.

Trong quan hệ thời gian giao tác, bấ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 đó sẽ được ghi lại. Từng giao tác có phương thức gán nhãn thời gian riêng, cụ thể sẽ được trình bày trong các mục dưới đây:

2.5.1. Gán nhãn thời gian giao tác cho giao tác chèn

Khi chúng ta chèn một bộ dự liệu mới, dữ liệu đó sẽ được gán nhãn thời gian với thời gian bắt đầu giao tác chèn TST là của hệ thống khi giao tác được thực hiện và thời gian kết thúc giao tác TET là uc, ta có thể viết [thời gian hiện thời - uc].

Bảng 2.5.Bộ dữ liệu trong quan hệ NV_TT

NV_TT

TÊN MANV LUONG MAPB TST TET

Bây giờ chúng ta tiến hành chèn thêm nhân viên mới có tên là “An” , mã nhân viên là “101”, lương là 25000 và có mã phòng ban là “5” vào quan hệ NV_TT tại thời điểm 1997/06/08, 13:05:58với câu lệnh thời gian như sau:

-- on 1997/06/08, 13:05:58

INSERT INTO NV_TT VALUES (’An’,’101’,25000,’5’); COMMIT;

Kết quả của giao tác chèn này như sau:

Bảng 2.6. Bộ dữ liệu trong quan hệ NV_TT sau khi thực hiện giao tác chèn

TÊN MANV LUONG MAPB TST TET

An 101 25000 5 1997/06/08,

13:05:58

Uc

Nếu ta viết bằng ngôn ngữ SQL-92 thì câu lệnh chèn sẽ được viết dưới dạng sau:

INSERT INTO NV_TT

VALUES (TEN MỚI, MANV MỚI, LUONG MỚI, MAPB, THỜI GIAN HỢP LỆ, UC)

2.5.2. Gán nhãn thời gian giao tác cho giao tác cập nhật

Khi chúng ta tiến hành cập nhật thông tin dữ liệu thì các mốc thời gian giao tác sẽ được cập nhật lại cụ thể như sau:

- TST của bộ dữ liệu mới sẽ có giá trị chính là mốc thời gian khi thực hiện giao tác cập nhật.

- TET của bộ dữ liệu mới sẽ có giá trị là uc.

- TET của bộ dữ liệu cũ sẽ có giá trị là thời gian hiện thời của hệ thống khi giao tác cập nhật được thực hiện.

Ví dụ 2.3. Xét quan hệ NV-TT có bộ dữ liệu như trong bảng 2.4.

Bây giờ, ta tiến hành cập nhật lương mới cho nhân viên có tên “An” từ 25000 lên 30000 vào thời điểm là “1998/06/04; 08:56:12”. Quá trình cập nhật này sẽ diễn ra như sau:

- Ta gọi bộ dữ liệu hiện thời của nhân viên “An” là v1. 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_TT 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.

- Khi cập nhật, bộ dữ liệu v2 sẽ được tạo ra là bản sao của bộ v1với giá trị lương mới là 30000 và có giá trị thời gian bắt đầu giao tác TST là mốc thời gian của giao tác cập nhật “1998/06/04, 08:56:12” và giá trị thời gian kết thúc giao tác TET là vẫn là uc. Bởi vì tại thời điểm này, bộ dữ liệu v2 là bộ dữ liệu hiện thời mang giá trị đúng.

- Đồng thời giá trị TET của bộ dữ liệu v1 lúc này cũng bị thay đổi thành mốc thời gian của giao tác cập nhật là “1998/06/04; 08:56:12”

Bảng 2.7. Bảng kết quả cập nhật lương cho nhân viên An

TÊN MANV LUONG MAPB TST TET

v1 An 101 25000 5 1997-06-08, 13:05:58 1998-06-04, 08:56:12 v2 An 101 30000 5 1998-06-04, 08:56:12 Uc

Với thao tác cập nhật này, chúng ta có thể viết câu lệnh thời gian như sau:

--on 1998-06-04, 08:56:12:

UPDATE NV_TT SET LUONG =30000 WHERE TEN=’An’;

COMMIT;

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 31 - 34)

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

(68 trang)