PostgreSQL: kèo chấp bóng đá hôm nay liệu: | |||
---|---|---|---|
prev | UP | Chương 8. Kiểu dữ liệu | NEXT |
kèo bóng đá euro là các loại dữ liệu đại diện cho một phạm vi giá trị của một số loại phần tử (được gọi là phạm viphân nhóm). Chẳng hạn, kèo bóng đá euro củadấu thời giancó thể được sử dụng để thể hiện khoảng thời gian mà một phòng họp được bảo lưu. Trong trường hợp này, kiểu dữ liệu làtsrange(viết tắt cho"Dòng thời gian") vàDấu thời gianlà phân nhóm. Loại phụ phải có tổng thứ tự để nó được xác định rõ liệu kèo bóng đá euro giá trị phần tử có nằm trong, trước hoặc sau một phạm vi giá trị.
kèo bóng đá euro rất hữu ích vì chúng đại diện cho nhiều giá trị phần tử trong một giá trị phạm vi duy nhất và bởi vì các khái niệm như phạm vi chồng chéo có thể được biểu thị rõ ràng. Việc sử dụng phạm vi thời gian và ngày cho mục đích lập lịch là ví dụ rõ ràng nhất;
PostgreSQL đi kèm với kèo bóng đá euro tích hợp sau:
int4range- kèo bóng đá euroSố nguyên
int8range- kèo bóng đá euroBigint
numrange- kèo bóng đá euroSố
tsrange- kèo bóng đá eurodấu thời gian không có múi giờ
tstzrange- kèo bóng đá eurodấu thời gian với múi giờ
Daterange- kèo bóng đá eurongày
Ngoài ra, bạn có thể xác định kèo bóng đá euro của riêng bạn; nhìn thấyPostgreSQL: Tài liệu:Để biết thêm thông tin.
Tạo đặt phòng bảng (phòng int, trong thời gian tsrange);
xemBảng 9-47vàBảng 9-48Để biết danh sách đầy đủ các toán tử và chức năng trên kèo bóng đá euro.
Mỗi phạm vi không trống có hai giới hạn, giới hạn dưới và giới hạn trên. Tất cả kèo bóng đá euro điểm giữa kèo bóng đá euro giá trị này được bao gồm trong phạm vi.
Ở dạng văn bản của một kèo bóng đá euro, giới hạn dưới bao gồm được biểu thị bằng"["Trong khi giới hạn dưới độc quyền được biểu diễn bởi"(". Tương tự như vậy, giới hạn trên bao gồm được biểu thị bằng"]", trong khi giới hạn trên độc quyền được biểu diễn bởi")". (Nhìn thấyPhần 8.17.5Để biết thêm chi tiết.)
kèo bóng đá euro chức năngLower_incvàUpper_incKiểm tra tính bao gồm của giới hạn dưới và trên của giá trị kèo bóng đá euro, tương ứng.
Giới hạn dưới của phạm vi có thể được bỏ qua, có nghĩa là tất cả kèo bóng đá euro giá trị nhỏ hơn giới hạn trên được bao gồm trong phạm vi, ví dụ:(, 3]. Tương tự như vậy, nếu giới hạn trên của phạm vi bị bỏ qua, thì tất cả kèo bóng đá euro giá trị lớn hơn giới hạn dưới được bao gồm trong phạm vi.[,]được chuyển đổi thành(,). Bạn có thể nghĩ về kèo bóng đá euro giá trị bị thiếu này là +/- Infinity, nhưng chúng là kèo bóng đá euro giá trị loại phạm vi đặc biệt và được coi là vượt xa mọi giá trị +/- Infinity của loại phạm vi.
kèo bóng đá euro phần tử có khái niệm"Infinity"Có thể sử dụng chúng làm giá trị ràng buộc rõ ràng. Ví dụ: với kèo bóng đá euro dấu thời gian,[hôm nay, vô cực)không bao gồm đặc biệtDấu thời giangiá trịVô cực, trong khi[Hôm nay, Infinity]Bao gồm nó, cũng như[hôm nay,)và[hôm nay,].
kèo bóng đá euro chức năngLower_infvàUpper_infKiểm tra cho giới hạn thấp hơn và trên của kèo bóng đá euro, tương ứng.
Đầu vào cho giá trị phạm vi phải tuân theo một trong kèo bóng đá euro mẫu sau:
(giới hạn thấp hơn,giới hạn trên)giới hạn thấp hơn,giới hạn trên]giới hạn thấp hơn,giới hạn trên)giới hạn thấp hơn,giới hạn trên]
dấu ngoặc đơn hoặc dấu ngoặc cho biết liệu giới hạn dưới và trên là độc quyền hay bao gồm, như được mô tả trước đây. Lưu ý rằng mẫu cuối cùng làtrống, đại diện cho một kèo bóng đá euro trống (một kèo bóng đá euro không chứa điểm).
Thegiới hạn thấp hơncó thể là một chuỗi có đầu vào hợp lệ cho phân nhóm hoặc trống để chỉ ra không giới hạn dưới. Tương tự như vậy,giới hạn trêncó thể là một chuỗi có đầu vào hợp lệ cho phân nhóm hoặc trống để chỉ ra không giới hạn trên.
mỗi giá trị ràng buộc có thể được trích dẫn bằng cách sử dụng"(trích dẫn kép) ký tự. Điều này là cần thiết nếu giá trị ràng buộc chứa dấu ngoặc đơn, dấu ngoặc, dấu phẩy, dấu ngoặc kép hoặc dấu gạch chéo ngược, vì kèo bóng đá euro ký tự này sẽ được coi là một phần của cú pháp phạm vi."", Vì viết không có gì có nghĩa là một ràng buộc vô hạn.
Whitespace được cho phép trước và sau giá trị kèo bóng đá euro, nhưng bất kỳ khoảng trắng nào giữa dấu ngoặc hoặc dấu ngoặc được lấy làm một phần của giá trị giới hạn dưới hoặc trên. (Tùy thuộc vào loại phần tử, nó có thể hoặc không đáng kể.)
Lưu ý:kèo bóng đá euro quy tắc này rất giống với kèo bóng đá euro quy tắc để viết kèo bóng đá euro giá trị trường trong kèo bóng đá euro chữ loại tổng hợp. Nhìn thấyPhần 8.16.6để bình luận bổ sung.
Ví dụ:
- Bao gồm 3, không bao gồm 7 và bao gồm tất cả kèo bóng đá euro điểm ở giữa
Mỗi loại phạm vi có hàm hàm tạo có cùng tên với loại phạm vi. Sử dụng hàm hàm tạo thường thuận tiện hơn so với việc viết một hằng số theo nghĩa đen, vì nó tránh được sự cần thiết phải trích dẫn thêm kèo bóng đá euro giá trị bị ràng buộc."()", "(]", "[)"hoặc"[]". Ví dụ:
- Hình thức đầy đủ là: giới hạn dưới, giới hạn trên và đối số văn bản cho biết
Một kèo bóng đá euro riêng biệt là một loại có loại phần tử có một phần được xác định rõ"Bước", chẳng hạn nhưSố nguyênhoặcngày. Trong kèo bóng đá euro này, hai yếu tố có thể nói là liền kề, khi không có giá trị hợp lệ giữa chúng.SốLoại liên tục, như là một kèo bóng đá euro trênDấu thời gian. (Mặc dùDấu thời giancó độ chính xác hạn chế, và về mặt lý thuyết có thể được coi là rời rạc, tốt hơn là xem xét nó liên tục vì kích thước bước thường không được quan tâm.)
Một cách khác để suy nghĩ về một loại kèo bóng đá euro riêng biệt là có một ý tưởng rõ ràng về A"Tiếp theo"hoặc"Trước"Giá trị cho mỗi giá trị phần tử. Biết rằng, có thể chuyển đổi giữa kèo bóng đá euro biểu diễn bao gồm và độc quyền của giới hạn phạm vi, bằng cách chọn giá trị phần tử tiếp theo hoặc trước đó thay vì giá trị ban đầu.[4,8]và(3,9)biểu thị cùng một tập hợp kèo bóng đá euro giá trị; nhưng điều này sẽ không như vậy đối với một phạm vi trên số.
Một loại kèo bóng đá euro rời rạc phải cóCanonicalizationHàm nhận thức được kích thước bước mong muốn cho loại phần tử. Hàm Canonicalization được tính phí chuyển đổi kèo bóng đá euro giá trị tương đương của loại phạm vi để có kèo bóng đá euro biểu diễn giống hệt nhau, đặc biệt là giới hạn bao gồm hoặc độc quyền.
kèo bóng đá euro tích hợpint4range, int8rangevàDaterangeTất cả sử dụng một hình thức kinh điển bao gồm giới hạn dưới và kèo bóng đá euro trừ giới hạn trên; đó là,[). Tuy nhiên, kèo bóng đá euro do người dùng xác định có thể sử dụng các quy ước khác.
Người dùng có thể xác định kèo bóng đá euro của riêng họ. Lý do phổ biến nhất để làm điều này là sử dụng các phạm vi trên các phân nhóm không được cung cấp trong số kèo bóng đá euro tích hợp.float8:
Tạo loại floatrange dưới dạng kèo bóng đá euro (
vìfloat8không có ý nghĩa"Bước", chúng tôi không xác định chức năng chính trị trong ví dụ này.
Nếu phân nhóm được coi là có kèo bóng đá euro giá trị riêng biệt thay vì liên tục,Tạo kèo bóng đá euroLệnh phải chỉ định ACanonicalHàm. Hàm Canonicalization có giá trị kèo bóng đá euro đầu vào và phải trả về giá trị kèo bóng đá euro tương đương có thể có giới hạn và định dạng khác nhau.[1, 7]và[1, 8), phải giống hệt nhau. Không quan trọng bạn chọn cách đại diện nào là chính thức, miễn là hai giá trị tương đương với kèo bóng đá euro định dạng khác nhau luôn được ánh xạ tới cùng một giá trị với cùng một định dạng.Dấu thời giancó thể được định nghĩa có kích thước bước là một giờ, trong trường hợp đó, hàm chính tắc hóa sẽ cần phải làm tròn kèo bóng đá euro giới hạn không phải là bội số của một giờ, hoặc có thể ném lỗi thay thế.
22479_22687
22693_22816SubType_Diff, chức năng. (Chỉ mục vẫn sẽ hoạt động mà không cóSubType_Diff, nhưng nó có khả năng kém hiệu quả hơn đáng kể so với khi hàm khác biệt được cung cấp.) Hàm chênh lệch phân nhóm lấy hai giá trị đầu vào của phân nhóm và trả về sự khác biệt của chúng (nghĩa là,xtrừY) được biểu diễn dưới dạngfloat8Giá trị. Trong ví dụ của chúng tôi ở trên, chức năng làm nền tảng cho thông thườngfloat8Có thể sử dụng toán tử trừ; Nhưng đối với bất kỳ kèo bóng đá euro phụ nào khác, một số kèo bóng đá euro chuyển đổi sẽ là cần thiết.SubType_DiffHàm nên đồng ý với thứ tự sắp xếp được ngụ ý bởi lớp toán tử được chọn và đối chiếu; nghĩa là, kết quả của nó sẽ tích cực bất cứ khi nào đối số đầu tiên của nó lớn hơn thứ hai theo thứ tự sắp xếp.
xemPostgreSQL: Tài liệu:Để biết thêm thông tin về việc tạo kèo bóng đá euro.
Các chỉ mục Gist và SP-Gist có thể được tạo cho các cột bảng của kèo bóng đá euro. Chẳng hạn, để tạo chỉ mục GIST:
24227_24293
Chỉ số sp-gist có thể tăng tốc kèo bóng đá euro truy vấn liên quan đến kèo bóng đá euro toán tử phạm vi này:=, &&, <@, @, <<, , -|-, &<và&(xemBảng 9-47Để biết thêm thông tin).
Ngoài ra, các chỉ mục b-cây và băm có thể được tạo cho các cột bảng của kèo bóng đá euro. Đối với các loại chỉ mục này, về cơ bản, hoạt động phạm vi hữu ích duy nhất là bình đẳng.<vàNgười vận hành, nhưng đặt hàng khá tùy tiện và thường không hữu ích trong thế giới thực. Hỗ trợ b-cây và băm của kèo bóng đá euro chủ yếu có nghĩa là cho phép phân loại và băm nội tâm trong các truy vấn, thay vì tạo các chỉ mục thực tế.
trong khiđộc đáolà một ràng buộc tự nhiên cho các giá trị vô hướng, nó thường không phù hợp với kèo bóng đá euro. Thay vào đó, một ràng buộc loại trừ thường phù hợp hơn (xemTạo bảng ... ràng buộc ... kèo bóng đá euro trừ). kèo bóng đá euro ràng buộc loại trừ cho phép đặc tả kèo bóng đá euro ràng buộc như"Không chồng chéo"Trên một loại kèo bóng đá euro. Ví dụ:
Tạo đặt phòng bảng (
ràng buộc đó sẽ ngăn bất kỳ giá trị chồng chéo nào tồn tại trong bảng cùng một lúc:
Chèn vào kèo bóng đá euro giá trị đặt phòng
Bạn có thể sử dụngPostgreSQL:Mở rộng để xác định các ràng buộc loại trừ trên kèo bóng đá euro dữ liệu vô hướng đơn giản, sau đó có thể được kết hợp với kèo bóng đá euro trừ phạm vi để linh hoạt tối đa. Ví dụ, saubtree_gistĐược cài đặt, ràng buộc sau đây sẽ từ chối kèo bóng đá euro phạm vi chồng chéo chỉ khi số phòng họp bằng nhau:
Tạo phần mở rộng btree_gist;