chất đều mang tính trực giác; bây giờ chúng ta cần đƣa ra những đề xuất hình thức hơn. Trƣớc hết, nhận thấy rằng độ hạt của khoảng [d04, d10] là các ngày. Chính xác hơn ta có thể nói nó là kiểu DATE, với thuật ngữ đó ta muốn nói rằng thành viên của họ thông thƣờng những kiểu dữ liệu “DATETIME” trong đó độ chính xác là “ngày” (trái với, “giờ” hoặc “mini giây” hoặc “tháng”). Điều này cho phép chúng ta bắt buộc kiểu chính xác của khoảng trong những vấn đề nhƣ sau:
Điều đầu tiên và trên hết tất nhiên là một kiểu khoảng; điều này bản thân nó là đủ để xác định những toán tử trên giá trị khoảng trong vấn đề bàn đến (ví
dụ giống nhƣ phát biểu: một giá trị r thuộc một kiểu quan hệ nào đó đủ để xác định những toán tử - JOIN, ..vv – áp dụng đƣợc cho giá trị r đó.)
Điều thứ hai, khoảng trong vấn đề bàn luận rất rõ ràng là một khoảng từ một ngày nào đó tới một ngày khác, và điều này là đủ để xác định tập của các giá trị khoảng mà các giá trị này tạo nên một kiểu khoảng đang xét.
Kiểu đặc trƣng của [d04, d10] do vậy là INTERVAL(DATE) trong đó:
a. INTERVAL là một phần tử sinh kiểu (tƣơng tự mảng trong các ngôn ngữ lập trình thông thƣờng) cho phép chúng ta định nghĩa một loạt các kiểu khoảng đặc trƣng (xem thêm phần thảo luận dƣới).
b. DATE là một kiểu điểm trong kiểu khoảng đặc trƣng này.
Điều chú ý quan trọng là, thông thƣờng kiểu điểm PT xác định cả kiểu và độ chính xác giá trị của điểm đầu và điểm cuối – và mọi điểm nằm giữa - của kiểu
INTERVAL(PT). (Tất nhiên là trong trƣờng hợp kiểu DATE, độ chính xác là ẩn).
UChú ý:U Thông thƣờng, ta không xem xét độ chính xác nhƣ là một phần của kiểu có thể ứng dụng đƣợc, mà nhƣ là một ràng buộc toàn vẹn. Ví dụ cho trƣớc khai báo
DECLARE X TIMESTAMP(3) và DECLARE Y TIMESTAMP(6); X,Y là có cùng một kiểu nhƣng chịu các ràng buộc khác nhau (X bị ràng buộc lấy các giá trị mini giây và Y bị ràng buộc lấy các giá trị micro giây). Do đó chẳng hạn nói rằng
TIMESTAMP(3) hoặc DATE là một kiểu điểm hợp lệ là gói (bundle) hai khái niệm làm một, mà thực sự cần đƣợc tách riêng ra. Thay vì đó, tốt hơn là định nghĩa hai kiểu TB1B và TB2B, cả hai với một biểu diễn có thể TIMESTAMP nhƣng với ràng buộc độ chính xác khác nhau, và do đó nói rằng TB1B và TB2B (ví dụ không phải là
TIMESTAMP(3) and TIMESTAMP(6)) là kiểu điểm hợp lệ. Tuy nhiên để cho đơn giản ta theo những quy ƣớc đã sử dụng trong chƣơng này và biểu diễn độ chính xác đó là một phần của kiểu.
Đặc điểm nào cần có cho một kiểu nếu nó là hợp lệ nhƣ một kiểu điểm? Tất nhiên chúng ta thấy rằng một khoảng đƣợc xác định bởi điểm đầu và điểm cuối của nó; đồng thời cũng thấy rằng (ít nhất không mang tính hình thức) một khoảng gồm một tập các điếm. Nếu ta muốn có thể xác định hoàn toàn tập của các điểm, chỉ cho trƣớc điểm đầu s và điểm cuối e, trƣớc hết chúng ta phải xác định đƣợc điểm ngay sau điểm s (trong một trật tự thoả thuận nào đó). Ta gọi điểm ngay sau đó là điểm kế tiếp của s; để cho đơn giản, ta coi nó nhƣ là s+1. Do đó hàm xác định s+1 từ s là một hàm kế tiếp cho kiểu điểm (và độ chính xác) trong vấn đề bàn luận. Hàm kế tiếp đó cần phải đƣợc định nghĩa cho mọi giá trị của kiểu điểm, trừ một điểm đƣợc chỉ định là “điểm cuối”. (Do đó cũng sẽ có một điểm đƣợc chỉ định là “điểm đầu”, mà nó không đƣợc kế tiếp từ bất kể điểm nào).
Sau khi đã xác định đƣợc s+1 là một kế tiếp của s, tiếp theo ta phải xác định liệu s+1 có đứng sau e hay không, theo cùng trật tự đã thoả thuận về kiểu điểm đang xét. Nếu nó không đứng sau, thì s+1 thực sự là một điểm trong [s, e], và bây giờ ta phải xem xét điểm tiếp theo s+2. Lặp lại quá trình này cho tới khi gặp điểm đầu tiên
s+n mà đứng sau e (đó là điểm kế tiếp của e), ta sẽ nhận ra mọi điểm trong khoảng [s, e].
Chú ý rằng điểm s+n trong thực tế là một kế tiếp của e (nghĩa là nó thực sự đứng ngay sau e), bây giờ ta có thể phát biểu chắc chắn rằng chỉ có duy nhất đặc tính của một kiểu PT hợp lệ nhƣ một kiểu điểm là một hàm kế tiếp phải đƣợc định nghĩa cho nó. Sự tồn tại của hàm đó chỉ ra rằng cần phải có một thứ tự toàn phần cho các giá trị trong PT (và do đó ta có thể giả định các toán tử so sánh - “<”, “≤”, …vv. – là sẵn có và xác định với mọi cặp giá trị PT).
Định nghĩa [2]: Cho PT là một kiểu điểm. Khi đó một khoảng (hoặc giá trị khoảng)
i của kiểu INTERVAL(PT) là một giá trị vô hƣớng mà theo đó hai toán tử một ngôi (START và END) và một toán tử hai ngôi IN đƣợc định nghĩa nhƣ sau:
a. mỗi toán tử START(i) và END (i) trả lại một giá trị kiểu PT. b. START(i) ≤ END (i).
c. Cho p là một giá trị của PT. Khi đó p IN i là đúng khi và chỉ khi cả
START(i) ≤ p và p ≤ END (i) là đúng.
UChú ý:U yêu cầu trong định nghĩa này là hàm kế tiếp đƣợc xác định cho kiểu PT. Cũng phải chú ý rằng, theo định nghĩa, các khoảng là luôn luôn không rỗng (nghĩa là, luôn có ít nhất một điểm “TRONG” bất kỳ khoảng nào cho trƣớc.)
1.4.2- Toán tử vô hƣớng trên khoảng: