Chồng chéo ngày giờ python

Toán tử tích chập thường thấy trong xử lý tín hiệu, trong đó nó mô hình hóa tác động của hệ thống bất biến theo thời gian tuyến tính lên tín hiệu [1]. Trong lý thuyết xác suất, tổng của hai biến ngẫu nhiên độc lập được phân phối theo tích chập của các phân phối riêng lẻ của chúng

Nếu v dài hơn a, các mảng được hoán đổi trước khi tính toán

Tham sốsa[N,] array_like

Mảng đầu vào một chiều đầu tiên

v[M,] array_like

Mảng đầu vào một chiều thứ hai

chế độ{'đầy đủ', 'hợp lệ', 'tương tự'}, tùy chọn'đầy đủ'

Theo mặc định, chế độ là 'đầy đủ'. Điều này trả về tích chập tại mỗi điểm chồng lấp, với hình dạng đầu ra là [N+M-1,]. Tại các điểm cuối của tích chập, các tín hiệu không trùng lặp hoàn toàn và có thể nhìn thấy các hiệu ứng ranh giới

'tương tự'

Chế độ 'giống nhau' trả về đầu ra có độ dài

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
10. Hiệu ứng ranh giới vẫn có thể nhìn thấy

'có giá trị'

Chế độ 'hợp lệ' trả về đầu ra có độ dài

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
11. Tích chập chỉ được đưa ra cho các điểm mà các tín hiệu trùng nhau hoàn toàn. Các giá trị bên ngoài ranh giới tín hiệu không có hiệu lực

Returnsoutndarray

Tích chập tuyến tính, rời rạc của a và v

ghi chú

Hoạt động tích chập rời rạc được định nghĩa là

\[[a * v]_n = \sum_{m = -\infty}^{\infty} a_m v_{n - m}\]

Có thể chỉ ra rằng một tích chập \[x[t] * y[t]\] trong thời gian/không gian tương đương với phép nhân \[X[f] Y[f]\] trong miền Fourier, sau phần đệm thích hợp [ . Vì phép nhân hiệu quả hơn [nhanh hơn] so với tích chập, nên hàm

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
12 khai thác FFT để tính toán tích chập của các tập dữ liệu lớn

Người giới thiệu

1

Wikipedia, “Tích chập”, https. // vi. wikipedia. org/wiki/Convolution

ví dụ

Lưu ý cách toán tử tích chập lật mảng thứ hai trước khi “trượt” hai mảng này qua một mảng khác

>>> np.convolve[[1, 2, 3], [0, 1, 0.5]]
array[[0. , 1. , 2.5, 4. , 1.5]]

Chỉ trả về các giá trị ở giữa của tích chập. Chứa các hiệu ứng ranh giới, trong đó các số không được tính đến

Các loại phạm vi là các kiểu 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à kiểu con của phạm vi]. Chẳng hạn, phạm vi của

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2 có thể được sử dụng để thể hiện phạm vi thời gian mà một phòng họp được đặt trước. Trong trường hợp này, kiểu dữ liệu là
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
3 [viết tắt của “phạm vi dấu thời gian”] và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2 là kiểu con. Loại phụ phải có tổng thứ tự để nó được xác định rõ liệu các giá trị phần tử nằm trong, trước hay sau một phạm vi giá trị

Các loại phạm vi rất hữu ích vì chúng đại diện cho nhiều giá trị thành phần trong một giá trị phạm vi duy nhất và vì các khái niệm như phạm vi chồng lấp có thể được thể hiện rõ ràng. Việc sử dụng phạm vi thời gian và ngày tháng cho mục đích lập lịch biểu là ví dụ rõ ràng nhất;

Mỗi loại phạm vi có một loại đa phạm vi tương ứng. Một đa phạm vi là một danh sách có thứ tự các phạm vi không liền kề, không trống, không rỗng. Hầu hết các toán tử phạm vi cũng hoạt động trên nhiều phạm vi và chúng có một vài chức năng của riêng chúng

8. 17. 1. Các loại phạm vi và đa phạm vi tích hợp

PostgreSQL đi kèm với các loại phạm vi tích hợp sau

  • [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    5 — Phạm vi của
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    6,
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    7 — Đa phạm vi tương ứng

  • [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    8 — Phạm vi của
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    9,
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    0 — Đa phạm vi tương ứng

  • -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    1 — Phạm vi của
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    2,
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    3 — Đa phạm vi tương ứng

  • [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    3 — Phạm vi của
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    5,
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    6 — Đa phạm vi tương ứng

  • -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    7 — Phạm vi của
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    8,
    -- includes 3, does not include 7, and does include all points in between
    SELECT '[3,7]'::int4range;
    
    -- does not include either 3 or 7, but includes all points in between
    SELECT '[3,7]'::int4range;
    
    -- includes only the single point 4
    SELECT '[4,4]'::int4range;
    
    -- includes no points [and will be normalized to 'empty']
    SELECT '[4,4]'::int4range;
    
    9 — Đa phạm vi tương ứng

  • [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    90 — Phạm vi của
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    91,
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    [lower-bound,upper-bound]
    empty
    
    92 — Đa phạm vi tương ứng

Ngoài ra, bạn có thể xác định các loại phạm vi của riêng mình;

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2

Xem Bảng 9. 54 và Bảng 9. 56 để biết danh sách đầy đủ các toán tử và hàm trên các loại phạm vi

8. 17. 3. Giới hạn bao gồm và độc quyền

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ả các điểm giữa các giá trị này được bao gồm trong phạm vi. Một giới hạn bao gồm có nghĩa là điểm biên cũng được bao gồm trong phạm vi, trong khi một giới hạn loại trừ có nghĩa là điểm biên không được bao gồm trong phạm vi

Ở dạng văn bản của một phạm vi, giới hạn dưới bao gồm được biểu thị bằng “________ 193” trong khi giới hạn dưới dành riêng được biểu thị bằng “________ 194”. Tương tự như vậy, giới hạn trên bao gồm được biểu thị bằng “

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
95”, trong khi giới hạn trên dành riêng được biểu thị bằng “
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
96”. [Xem Phần 8. 17. 5 để biết thêm chi tiết. ]

Hàm

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
97 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
98 lần lượt kiểm tra tính bao hàm của giới hạn dưới và giới hạn trên của một giá trị phạm vi

8. 17. 4. Phạm vi vô hạn [Không giới hạn]

Giới hạn dưới của một phạm vi có thể được bỏ qua, nghĩa là tất cả các giá trị nhỏ hơn giới hạn trên đều được bao gồm trong phạm vi, e. g. ,

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
99. Tương tự, nếu giới hạn trên của phạm vi bị bỏ qua, thì tất cả các giá trị lớn hơn giới hạn dưới đều được bao gồm trong phạm vi. Nếu cả giới hạn dưới và giới hạn trên đều bị bỏ qua, tất cả các giá trị của loại phần tử được coi là nằm trong phạm vi. Chỉ định một giới hạn bị thiếu là bao gồm sẽ tự động được chuyển đổi thành độc quyền, e. g. ,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
00 được chuyển đổi thành
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
01. Bạn có thể coi các giá trị bị thiếu này là +/-infinity, nhưng chúng là các giá trị loại phạm vi đặc biệt và được coi là vượt quá các giá trị +/-infinity của bất kỳ loại phần tử phạm vi nào

Các loại phần tử có khái niệm “vô cùng” có thể sử dụng chúng làm giá trị ràng buộc rõ ràng. Ví dụ: với phạm vi dấu thời gian,

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
02 không bao gồm giá trị
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2 đặc biệt
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
04, trong khi
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
05 bao gồm giá trị đó, cũng như
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
06 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
07

Hàm

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
08 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
09 lần lượt kiểm tra các giới hạn trên và dưới vô hạn của một phạm vi

8. 17. 5. Phạm vi Đầu vào/Đầu ra

Đầu vào cho một giá trị phạm vi phải tuân theo một trong các mẫu sau

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty

Dấu ngoặc đơn hoặc dấu ngoặc đơn cho biết giới hạn dưới và giới hạn trên là loại trừ hay bao gồm, như đã mô tả trước đây. Lưu ý rằng mẫu cuối cùng là

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
10, đại diện cho một phạm vi trống [phạm vi không chứa điểm nào]

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
11 có thể là một chuỗi đầu vào hợp lệ cho loại phụ hoặc trống để biểu thị không có giới hạn dưới. Tương tự như vậy,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
12 có thể là một chuỗi đầu vào hợp lệ cho kiểu con hoặc trống để biểu thị không có giới hạn trên

Mỗi giá trị ràng buộc có thể được trích dẫn bằng ký tự

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
13 [trích dẫn kép]. Đ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 vuông, dấu phẩy, dấu ngoặc kép hoặc dấu gạch chéo ngược, vì các ký tự này nếu không sẽ được coi là một phần của cú pháp phạm vi. Để đặt dấu ngoặc kép hoặc dấu gạch chéo ngược trong giá trị giới hạn được trích dẫn, hãy thêm dấu gạch chéo ngược vào trước giá trị đó. [Ngoài ra, một cặp dấu ngoặc kép trong giá trị giới hạn dấu ngoặc kép được dùng để biểu thị ký tự dấu ngoặc kép, tương tự như các quy tắc cho dấu ngoặc đơn trong chuỗi ký tự SQL. ] Ngoài ra, bạn có thể tránh trích dẫn và sử dụng tính năng thoát dấu gạch chéo ngược để bảo vệ tất cả các ký tự dữ liệu mà nếu không sẽ được coi là cú pháp phạm vi. Ngoài ra, để viết một giá trị giới hạn là một chuỗi rỗng, hãy viết
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
14, vì không viết gì có nghĩa là một giới hạn vô hạn

Khoảng trắng được cho phép trước và sau giá trị phạm vi, nhưng bất kỳ khoảng trắng nào giữa dấu ngoặc đơn hoặc dấu ngoặc vuông đều được coi là một phần của giá trị giới hạn dưới hoặc giới hạn trên. [Tùy thuộc vào loại phần tử, nó có thể có hoặc không đáng kể. ]

Ghi chú

Các quy tắc này rất giống với các quy tắc để viết các giá trị trường bằng chữ kiểu tổng hợp. Xem Phần 8. 16. 6 cho bình luận bổ sung

ví dụ

-- includes 3, does not include 7, and does include all points in between
SELECT '[3,7]'::int4range;

-- does not include either 3 or 7, but includes all points in between
SELECT '[3,7]'::int4range;

-- includes only the single point 4
SELECT '[4,4]'::int4range;

-- includes no points [and will be normalized to 'empty']
SELECT '[4,4]'::int4range;

Đầu vào cho đa phạm vi là dấu ngoặc nhọn [______415 và

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
16] chứa 0 hoặc nhiều phạm vi hợp lệ, được phân tách bằng dấu phẩy. Khoảng trắng được phép xung quanh dấu ngoặc và dấu phẩy. Điều này nhằm mục đích gợi nhớ đến cú pháp mảng, mặc dù đa phạm vi đơn giản hơn nhiều. chúng chỉ có một chiều và không cần trích dẫn nội dung của chúng. [Tuy nhiên, các giới hạn của phạm vi của chúng có thể được trích dẫn như trên. ]

ví dụ

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
9

8. 17. 6. Xây dựng Ranges và Multiranges

Mỗi loại phạm vi có một hàm tạo có cùng tên với loại phạm vi. Việc sử dụng hàm xây dựng thường thuận tiện hơn là viết một hằng số phạm vi, vì nó tránh được nhu cầu trích dẫn thêm các giá trị bị ràng buộc. Hàm tạo chấp nhận hai hoặc ba đối số. Biểu mẫu hai đối số xây dựng một phạm vi ở dạng chuẩn [bao gồm giới hạn dưới, loại trừ giới hạn trên], trong khi biểu mẫu ba đối số xây dựng một phạm vi có giới hạn của biểu mẫu được chỉ định bởi đối số thứ ba. Đối số thứ ba phải là một trong các chuỗi “_______417”, “

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
18”, “
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
19” hoặc “
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
30”. Ví dụ

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
0

Mỗi loại phạm vi cũng có một hàm tạo đa phạm vi có cùng tên với loại đa phạm vi. Hàm xây dựng không nhận hoặc nhiều đối số là tất cả các phạm vi của loại thích hợp. Ví dụ

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
1

8. 17. 7. Các loại phạm vi rời rạc

Phạm vi rời rạc là phạm vi có loại phần tử có “bước” được xác định rõ, chẳng hạn như

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
6 hoặc
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
91. Trong các loại này, hai phần tử có thể được coi là liền kề, khi không có giá trị hợp lệ nào giữa chúng. Điều này trái ngược với các phạm vi liên tục, trong đó luôn luôn [hoặc hầu như luôn luôn] có thể xác định các giá trị phần tử khác giữa hai giá trị đã cho. Ví dụ: phạm vi trên loại
-- includes 3, does not include 7, and does include all points in between
SELECT '[3,7]'::int4range;

-- does not include either 3 or 7, but includes all points in between
SELECT '[3,7]'::int4range;

-- includes only the single point 4
SELECT '[4,4]'::int4range;

-- includes no points [and will be normalized to 'empty']
SELECT '[4,4]'::int4range;
2 là liên tục, cũng như phạm vi trên
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2. [Mặc dù
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2 có độ chính xác hạn chế và do đó về mặt lý thuyết có thể được coi là rời rạc, tốt hơn nên coi nó là 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 phạm vi rời rạc là có một ý tưởng rõ ràng về giá trị “tiếp theo” hoặc “trước đó” cho mỗi giá trị phần tử. Biết được điều đó, có thể chuyển đổi giữa các biểu diễn bao gồm và loại trừ các giới hạn của một 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ị đã cho ban đầu. Ví dụ: trong một phạm vi số nguyên, loại

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
36 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
37 biểu thị cùng một bộ giá trị;

Loại phạm vi riêng biệt phải có chức năng chuẩn hóa nhận biết kích thước bước mong muốn cho loại phần tử. Chức năng chuẩn hóa được giao nhiệm vụ chuyển đổi các giá trị tương đương của loại phạm vi để có các biểu diễn giống hệt nhau, đặc biệt là các giới hạn bao gồm hoặc loại trừ một cách nhất quán. Nếu chức năng chuẩn hóa không được chỉ định, thì các phạm vi có định dạng khác nhau sẽ luôn được coi là không bằng nhau, mặc dù chúng có thể đại diện cho cùng một tập hợp giá trị trong thực tế

Các loại phạm vi dựng sẵn

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
5,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
8 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
90 đều sử dụng dạng chính tắc bao gồm giới hạn dưới và loại trừ giới hạn trên; . Tuy nhiên, các loại phạm vi do người dùng xác định có thể sử dụng các quy ước khác

8. 17. 8. Xác định các loại phạm vi mới

Người dùng có thể xác định loại phạm vi của riêng họ. Lý do phổ biến nhất để làm điều này là sử dụng phạm vi trên các loại phụ không được cung cấp trong số các loại phạm vi tích hợp. Ví dụ: để xác định một loại phạm vi mới của loại phụ

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
72

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
3

Bởi vì

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
72 không có "bước" có ý nghĩa, nên chúng tôi không định nghĩa hàm chuẩn hóa trong ví dụ này

Khi bạn xác định phạm vi của riêng mình, bạn sẽ tự động nhận được loại đa phạm vi tương ứng

Xác định loại phạm vi của riêng bạn cũng cho phép bạn chỉ định một lớp toán tử cây B kiểu con khác hoặc đối chiếu để sử dụng, để thay đổi thứ tự sắp xếp xác định giá trị nào rơi vào một phạm vi nhất định

Nếu loại phụ được coi là có các giá trị rời rạc thay vì liên tục, lệnh

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
74 sẽ chỉ định hàm
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
75. Hàm chuẩn hóa lấy một giá trị phạm vi đầu vào và phải trả về một giá trị phạm vi tương đương có thể có các giới hạn và định dạng khác nhau. Đầu ra chuẩn cho hai phạm vi đại diện cho cùng một tập hợp giá trị, ví dụ: phạm vi số nguyên
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
76 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
77, phải giống hệt nhau. Việc bạn chọn đại diện nào là đại diện chính tắc không quan trọng, miễn là hai giá trị tương đương với các định dạng khác nhau luôn được ánh xạ tới cùng một giá trị với cùng định dạng. Ngoài việc điều chỉnh định dạng giới hạn bao gồm/loại trừ, chức năng chuẩn hóa có thể làm tròn các giá trị biên, trong trường hợp kích thước bước mong muốn lớn hơn kích thước mà kiểu con có khả năng lưu trữ. Ví dụ: loại phạm vi trên
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
2 có thể được xác định để có kích thước bước là một giờ, trong trường hợp đó, chức năng chuẩn hóa sẽ cần làm tròn các giới hạn không phải là bội số của một giờ hoặc thay vào đó có thể gây ra lỗi

Ngoài ra, bất kỳ loại phạm vi nào được sử dụng với chỉ mục GiST hoặc SP-GiST phải xác định sự khác biệt của loại phụ hoặc hàm

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
79. [Chỉ mục sẽ vẫn hoạt động mà không có
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
79, nhưng nó có thể kém hiệu quả hơn đáng kể so với khi cung cấp chức năng chênh lệch. ] Hàm chênh lệch kiểu con nhận hai giá trị đầu vào của kiểu con và trả về hiệu của chúng [i. e. ,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
71 trừ đi
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
72] được biểu diễn dưới dạng giá trị
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
72. Trong ví dụ của chúng tôi ở trên, hàm
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
74 làm cơ sở cho toán tử trừ
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
72 thông thường có thể được sử dụng; . Một số suy nghĩ sáng tạo về cách thể hiện sự khác biệt dưới dạng số cũng có thể cần thiết. Trong phạm vi lớn nhất có thể, hàm
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
79 phải phù hợp với thứ tự sắp xếp được ngụ ý bởi lớp toán tử đã chọn và đối chiếu;

Một ví dụ đơn giản hơn về hàm

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
79 là

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
7

Xem TẠO LOẠI để biết thêm thông tin về cách tạo các loại phạm vi

Các chỉ mục GiST và SP-GiST có thể được tạo cho các cột trong bảng thuộc các loại phạm vi. Các chỉ mục GiST cũng có thể được tạo cho các cột trong bảng thuộc nhiều loại. Chẳng hạn, để tạo chỉ mục GiST

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
7

Chỉ mục GiST hoặc SP-GiST trên các phạm vi có thể tăng tốc các truy vấn liên quan đến các toán tử phạm vi này.

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
78,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
79,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
80,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
81,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
82,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
83,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
84,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
85 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
86. Chỉ mục GiST trên nhiều phạm vi có thể tăng tốc các truy vấn liên quan đến cùng một nhóm toán tử đa phạm vi. Chỉ mục GiST trên các phạm vi và chỉ mục GiST trên nhiều phạm vi cũng có thể tăng tốc các truy vấn liên quan đến các phạm vi loại chéo này thành các toán tử đa phạm vi và đa phạm vi đối với các toán tử phạm vi tương ứng.
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
79,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
80,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
81,
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
82, ________ 883, ________ 884, ________ 885 và ________ 886. Xem Bảng 9. 54 để biết thêm thông tin

Ngoài ra, có thể tạo chỉ mục cây B và chỉ mục băm cho các cột trong bảng thuộc loại phạm vi. Đố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à đẳng thức. Có một thứ tự sắp xếp cây B được xác định cho các giá trị phạm vi, với các toán tử

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
05 và
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
06 tương ứng, nhưng thứ tự này khá tùy ý và thường không hữu ích trong thế giới thực. Hỗ trợ băm và cây B của các loại phạm vi chủ yếu nhằm cho phép sắp xếp và băm nội bộ trong các truy vấn, thay vì tạo các chỉ mục thực tế

8. 17. 10. Ràng buộc trên phạm vi

Mặc dù

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
07 là một ràng buộc tự nhiên đối với các giá trị vô hướng, nhưng nó thường không phù hợp với các loại phạm vi. Thay vào đó, một ràng buộc loại trừ thường thích hợp hơn [xem CREATE TABLE. HẠN CHẾ. LOẠI TRỪ]. Các ràng buộc loại trừ cho phép đặc tả các ràng buộc chẳng hạn như “không chồng lấp” trên một loại phạm vi. Ví dụ

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
8

Ràng buộc đó sẽ ngăn mọi giá trị trùng lặp tồn tại trong bảng cùng một lúc

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
0

Bạn có thể sử dụng tiện ích mở rộng

[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
08 để xác định các ràng buộc loại trừ đối với các loại dữ liệu vô hướng đơn giản, sau đó có thể kết hợp với các loại trừ phạm vi để có tính linh hoạt tối đa. Ví dụ: sau khi cài đặt
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
[lower-bound,upper-bound]
empty
08, ràng buộc sau sẽ chỉ loại bỏ các phạm vi chồng chéo nếu số phòng họp bằng nhau

Chủ Đề