cho các giá trị khoảng. Xét kiểu khoảng INTERVAL(PT). Cho p là một giá trị của kiểu PT. Chúng ta sẽ tiếp tục sử dụng ký hiệu p+1, p+2… để biểu thị những kế tiếp của p, và p+1…vv (một ngôn ngữ thực có thể cung cấp một vài loại toán tử NEXT). Tƣơng tự, ta sử dụng ký hiệu p-1, p-2,…vv để biểu điễn những giá trị đứng kế trƣớc
p, kế trƣớc p-1,…vv (một ngôn ngữ thực có thể cung cấp một vài loại toán tử
PRIOR).
Cho pB1B và pB2B là các giá trị trong PT. Khi đó ta định nghĩa MAX(pB1B, pB2B) sẽ trả lại giá trị pB2B nếu pB1B < pB2B là đúng, hoặc pB1B trong trƣờng hợp ngƣợc lại và MIN(pB1B, pB2B) sẽ trả lại giá trị pB1B nếu pB1B < pB2B là đúng, hoặc pB2B trong trƣờng hợp ngƣợc lại.
Ký hiệu ta đã sử dụng sẽ áp dụng cho những chọn lựa khoảng (ít nhất trong ngữ cảnh không hình thức). Ví dụ, yêu cầu chọn lựa [3, 5] và [3, 6], cả hai đều sinh ra giá trị của kiểu INTERVAL(INTEGER) bao gồm các điểm 3, 4, và 5. (Một ngôn ngữ thực có thể đòi hỏi một vài cú pháp tƣờng minh hơn, ví dụ nhƣ:
INTERVAL([3, 5]).)
Cho iB1B là một khoảng [sB1B, eB1B] có kiểu là INTERVAL(PT). Nhƣ chúng ta đã biết: START(iB1B) sẽ trả lại giá trị là sB1B và END(iB1B) sẽ trả lại giá trị eB1B, ta định nghĩa thêm STOP(iB1B) sẽ trả lại giá trị eB1B+1. Giả sử i2B là một khoảng [sB2B, eB2B] cũng có kiểu
INTERVAL(PT). Khi đó ta định nghĩa một số toán tử so sánh khoảng có ngữ nghĩa ít nhiều rõ ràng nhƣ sau. Chú ý: Những toán tử này thƣờng đƣợc gọi là toán tử Allens, do Allens là ngƣời đầu tiên giới thiệu [3]:
iB1B = iB2B khi và chỉ khi cả sB1B=sB2B và eB1B=eB2B là đúng
iB1B là BEFORE iB2B khi và chỉ khi eB1B < sB2Bđúng.
iB1B là MEETS iB2B khi và chỉ khi sB1B=eB2B + 1 hoặc sB2B = eB1B+1 đúng.
iB1B là OVERLAPS iB2B khi và chỉ khi cả sB1B ≤ eB2B và sB2B ≤ eB1B đều đúng.
iB1B là DURING iB2 Bkhi và chỉ khi sB2 B≤ sB1B và eB2B ≥ eB1B đúng.
iB1B là STARTSiB2B khi và chỉ khi sB1B = sB2B và eB1B ≤ eB2 B
iB1 Blà FINISHESiB2B khi và chỉ khi eB1B = eB2B và sB1B ≥ sB2B Dƣới đây là mô tả mang tính đồ hoạ của các toán tử Allens:
Ngoài các toán tử Allens ta có thể định nghĩa thêm một số toán tử nhƣ sau:
iB1BMERGES iB2B khi và chỉ khi iB1BMEETSiB2B hoặc iB1BOVERLAPSiB2B
iB1BCONTAINSiB2B khi và chỉ khi iB2 BDURINGiB1 Blà đúng.PP
Để xác định độ dài của một khoảng, ta sử dụng toán tử DURATION(i) nó sẽ trả lại số các điểm trong i. Ví dụ DURATION([d03, d07]) = 5.
Cuối cùng, ta định nghĩa một số toán tử hai ngôi mà chúng cho kết quả là các khoảng nhƣ sau:
iB1B UNION iB2 cho kết quả là [B MIN(sB1B,sB2B), MAX(eB1B,eB2B)] nếu iB1B MERGES iB2B là đúng và không xác định trong trƣờng hợp ngƣợc lại.
iB1BINTERSECTiB2 Bcho kết quả là [MAX(sB1B,sB2B), MIN(eB1B,eB2B)] nếu iB1BOVERLAPS
iB2B là đúng và không xác định trong trƣờng hợp ngƣợc lại.
UChú ý:U ở đây UNION và INTERSECT là những toán tử tập hợp tổng quát chứ không phải là những toán tử quan hệ đặc biệt.
1.4.3- Các toán tử gộp nhập trên khoảng