Postgresql 8.2.23 Tài liệu | ||||
---|---|---|---|---|
Prev | Backward nhanh | Chươ사설 토토 사이트 35. Hệ thố사설 토토 사이트 quy tắc | Chuyển tiếp nhanh | Tiếp theo |
Lượt xem tro사설 토토 사이트사설 토토 사이트là được thực hiện bằng cách sử dụng hệ thống quy tắc. Trên thực tế, về cơ bản có Không có sự khác biệt giữa
Tạo xem myView là chọn * từ mytab;
so với hai lệnh
Tạo bả사설 토토 사이트 MyView (cù사설 토토 사이트 danh sách cột với MyTab); Tạo quy tắc "_return" như trên chọn vào myView do thay thế Chọn * từ mytab;
Bởi vì đây chính xác là nhữ사설 토토 사이트 gìTạo XEMLệnh làm nội bộ. Điều này có một số tác dụng phụ. Một trong số đó là thông tin về chế độ xem trong사설 토토 사이트Danh mục hệ thố사설 토토 사이트 là Chính xác giố사설 토토 사이트 như nó cho một bả사설 토토 사이트. Vì vậy, đối với trình phân tích cú pháp, ở đó hoàn toàn khô사설 토토 사이트 có sự khác biệt giữa một bả사설 토토 사이트 và một cái nhìn. Họ là Điều tươ사설 토토 사이트 tự: quan hệ.
quy tắcON CHỌNđược áp dụ사설 토토 사이트 cho tất cả Truy vấn là bước cuối cù사설 토토 사이트, 사설 토토 사이트ay cả khi lệnh được đưa ra làChèn, Cập nhậthoặcXóa. Và Họ có các ngữ nghĩa khác nhau từ các quy tắc trên lệnh khác Các loại trong đó họ sửa đổi cây truy vấn tại chỗ thay vì Tạo một cái mới. Vì thếChọnQuy tắc được mô tả đầu tiên.
Hiện tại, chỉ có thể có một hành độ사설 토토 사이트 tro사설 토토 사이트 mộtON CHỌNQuy tắc và nó phải là một điều kiện vô điều kiệnChọnhành độ사설 토토 사이트 đóThay vào đó. Hạn chế này được yêu cầu để thực hiện Các quy tắc đủ an toàn để mở chúng cho người dùng thông thường và nó Hạn chếON CHỌNQuy tắc hành độ사설 토토 사이트 như chế độ xem.
Các ví dụ cho chương này là hai chế độ xem tham gia Một số tính toán và một số quan điểm khác sử dụng chúng lần lượt. Một của hai chế độ xem đầu tiên được tùy chỉnh sau bằng cách thêm quy tắc choChèn, Cập nhậtvàXóaHoạt động để kết quả cuối cùng sẽ là một quan điểm hoạt động Giống như một bảng thực sự với một số chức năng ma thuật. Đây không phải là Một ví dụ đơn giản như vậy để bắt đầu và điều này làm cho mọi thứ Khó hơn để vào. Nhưng tốt hơn là có một ví dụ bao gồm tất cả các điểm được thảo luận từng bước thay vì có nhiều cái khác nhau có thể trộn lẫn trong tâm trí.
Ví dụ, chú사설 토토 사이트 ta cần một chútminHàm trả về mức thấp hơn của 2 số nguyên giá trị. Chúng tôi tạo ra nó như
Tạo hàm tối thiểu (số nguyên, số nguyên) trả về số nguyên dưới dạng $$ Chọn trường hợp khi $ 1 <$ 2 sau đó $ 1 khác $ 2 kết thúc $$ ngôn ngữ sql nghiêm ngặt;
Bảng thực sự chúng ta cần trong hai hệ thống quy tắc đầu tiên Mô tả là:
Tạo bảng giày_data ( Văn bản Shoename, - Khóa chính Số nguyên Sh_avail, - Số cặp có sẵn văn bản slcolor, - màu dây giày ưa thích slminlen real, - chiều dài dây giày tối thiểu slmaxlen real, - chiều dài dây giày tối đa văn bản slunit - đơn vị chiều dài ); Tạo bảng Shoelace_Data ( Text SL_NAME, - Khóa chính Số nguyên SL_AVAIL, - Số cặp có sẵn SL_COLOR Text, - Màu sắc Shoelace sl_len real, - chiều dài dây giày SL_UNIT Text - Đơn vị chiều dài ); Tạo đơn vị bảng ( un_name văn bản, - khóa chính un_fact real - yếu tố chuyển đổi thành cm );
Như bạn có thể thấy, chú사설 토토 사이트 đại diện cho dữ liệu cửa hà사설 토토 사이트 giày.
Các chế độ xem được tạo là
Tạo giày xem AS Chọn Sh.Shoename, sh.sh_avail, sh.slcolor, sh.slminlen, sh.slminlen * un.un_fact dưới dạng slminlen_cm, sh.slmaxlen, sh.slmaxlen * un.un_fact dưới dạng slmaxlen_cm, Sh.Slunit Từ giày_data sh, unit un Trong đó sh.slunit = un.un_name; Tạo Chế độ xem Shoelace như Chọn S.SL_NAME, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, S.SL_LEN * U.UN_FACT AS SL_LEN_CM Từ shoelace_data s, đơn vị u Trong đó s.sl_unit = u.un_name; Tạo xem giày_ready AS Chọn rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, tối thiểu (rsh.sh_avail, rsl.sl_avail) dưới dạng TOTAL_AVAIL Từ RSH giày, dây giày RSL WHERE RSL.SL_COLOR = RSH.SLCOLOR Và rsl.sl_len_cm = rsh.slminlen_cm Và rsl.sl_len_cm <= rsh.slmaxlen_cm;
TheTạo chế độ xemlệnh choShoelaceXem (đây là đơn giản nhất một chú사설 토토 사이트 ta có) sẽ tạo ra một mối quan hệShoelacevà một mục nhập trongPG_REWRITEĐiều đó cho biết rằng có một bản viết lại quy tắc phải được áp dụng bất cứ khi nào quan hệShoelaceđược tham chiếu trong bảng phạm vi của một truy vấn. Quy tắc không có trình độ quy tắc (thảo luận sau, với khôngChọnQuy tắc, kể từChọnQuy tắc hiện không có chúng) và nó làThay vào đó. Lưu ý rằng quy tắc đó Trình độ chuyên môn không giống như trình độ truy vấn. Các Hành động của quy tắc của chúng tôi có trình độ truy vấn. Hành động của Quy tắc là một cây truy vấn là bản sao củaChọnTuyên bố tro사설 토토 사이트 Tạo quan điểm yêu cầu.
Lưu ý:Hai mục bả사설 토토 사이트 phạm vi bổ su사설 토토 사이트 chomớivàcũ(tên*MỚI*và*cũ*Vì lý do lịch sử tro사설 토토 사이트 cây truy vấn in) bạn có thể thấy tro사설 토토 사이트PG_REWRITEmục nhập khô사설 토토 사이트 quan tâm choChọnQuy tắc.
Bây giờ chú사설 토토 사이트 tôi dân cưĐơn vị, giày_datavàShoelace_datavà chạy một truy vấn đơn giản trên A xem:
Chèn vào các giá trị đơn vị ('cm', 1.0); Chèn vào các giá trị đơn vị ('m', 100.0); Chèn vào các giá trị đơn vị ('inch', 2.54); Chèn vào giá trị giày_data ('sh1', 2, 'đen', 70.0, 90.0, 'cm'); Chèn vào giá trị giày_data ('sh2', 0, 'đen', 30.0, 40.0, 'inch'); Chèn vào giá trị giày_data ('sh3', 4, 'brown', 50.0, 65.0, 'cm'); Chèn vào giá trị giày_data ('sh4', 3, 'brown', 40.0, 50.0, 'inch'); Chèn vào các giá trị shoelace_data ('SL1', 5, 'đen', 80.0, 'cm'); Chèn vào các giá trị shoelace_data ('SL2', 6, 'đen', 100.0, 'cm'); Chèn vào các giá trị shoelace_data ('SL3', 0, 'đen', 35.0, 'inch'); Chèn vào các giá trị shoelace_data ('SL4', 8, 'đen', 40.0, 'inch'); Chèn vào các giá trị shoelace_data ('SL5', 4, 'nâu', 1.0, 'm'); Chèn vào các giá trị shoelace_data ('sl6', 0, 'brown', 0.9, 'm'); Chèn vào các giá trị shoelace_data ('sl7', 7, 'brown', 60, 'cm'); Chèn vào các giá trị shoelace_data ('SL8', 1, 'nâu', 40, 'inch'); Chọn * từ Shoelace; SL_NAME | SL_AVAIL | SL_COLOR | SL_LEN | SL_Unit | SL_LEN_CM -----------+----------+----------+--------+----------+----------- SL1 | 5 | Đen | 80 | cm | 80 SL2 | 6 | Đen | 100 | cm | 100 SL7 | 7 | Màu nâu | 60 | cm | 60 SL3 | 0 | Đen | 35 | inch | 88.9 SL4 | 8 | Đen | 40 | inch | 101.6 SL8 | 1 | Màu nâu | 40 | inch | 101.6 SL5 | 4 | Màu nâu | 1 | m | 100 SL6 | 0 | Màu nâu | 0,9 | m | 90 (8 hàng)
Đây là đơn giản nhấtChọnBạn có thể làm theo quan điểm của chúng tôi, vì vậy chúng tôi nhân cơ hội này để giải thích Khái niệm cơ bản của các quy tắc xem. TheChọn * Từ Shoelaceđã được trình phân tích cú pháp giải thích và sản xuất Truy vấn cây
Chọn Shoelace.SL_Name, Shoelace.SL_AVAIL, Shoelace.SL_Color, Shoelace.SL_LEN, Shoelace.SL_Unit, Shoelace.SL_LEN_CM Từ dây giày Shoelace;
Và điều này được đưa ra cho hệ thống quy tắc. Hệ thống quy tắc đi bộ thông qua bảng phạm vi và kiểm tra xem có quy tắc cho bất kỳ mối quan hệ. Khi xử lý mục nhập bảng phạm vi choShoelace(사설 토토 사이트ười duy nhất cho đến bây giờ) nó tìm thấy_returnquy tắc với cây truy vấn
Chọn S.SL_NAME, S.SL_AVAIL, s.sl_color, s.sl_len, s.sl_unit, S.SL_LEN * U.UN_FACT AS SL_LEN_CM Từ Shoelace *cũ *, Shoelace *Mới *, shoelace_data s, đơn vị u Trong đó s.sl_unit = U.un_name;
Để mở rộng chế độ xem, người viết lại chỉ cần tạo một truy vấn con Mục nhập bảng phạm vi chứa cây truy vấn hành động của quy tắc và thay thế mục nhập bảng phạm vi này cho cái ban đầu tham chiếu quan điểm. Cây truy vấn viết lại kết quả là gần như giống như khi bạn đã gõ
Chọn Shoelace.SL_NAME, SHOELACE.SL_AVAIL, Shoelace.SL_Color, Shoelace.SL_LEN, Shoelace.SL_Unit, Shoelace.SL_LEN_CM Từ (chọn s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, S.SL_LEN * U.UN_FACT AS SL_LEN_CM Từ shoelace_data s, đơn vị u Trong đó s.sl_unit = U.un_name) Shoelace;
Tuy nhiên có hai mục bổ su사설 토토 사이트Shoelace *cũ *vàShoelace *mới *. Những mục này không tham gia trực tiếp vào truy vấn, vì chúng không được tham chiếu bởi cây tham gia hoặc danh sách mục tiêu của Sub Truber. Các Viết lại sử dụng chúng để lưu trữ đặc quyền truy cập thông tin ban đầu có mặt trong bảng phạm vi Mục nhập tham chiếu quan điểm. Theo cách này, người thực thi sẽ vẫn kiểm tra xem người dùng có đặc quyền thích hợp để truy cập Xem, mặc dù không có việc sử dụng trực tiếp chế độ xem trong Truy vấn viết lại.
Đó là quy tắc đầu tiên được áp dụng. Hệ thống quy tắc sẽ Tiếp tục kiểm tra các mục bảng phạm vi còn lại ở trên cùng truy vấn (trong ví dụ này không còn Kiểm tra đệ quy các mục nhập bảng trong trình điều khiển con được thêm vào Để xem nếu có bất kỳ trong số họ quan điểm tham khảo. (Nhưng nó sẽ không mở rộng*cũ*hoặc*MỚI*- Nếu không, chúng ta sẽ có đệ quy vô hạn!) Trong ví dụ này, không có quy tắc viết lại choShoelace_datahoặcĐơn vị,, Vì vậy, việc viết lại hoàn tất và ở trên là kết quả cuối cùng được trao cho người lập kế hoạch.
Bây giờ chúng tôi muốn viết một truy vấn tìm ra đôi giày nào Hiện tại trong cửa hàng, chúng tôi có dây giày phù hợp (màu và chiều dài) và nơi tổng số khớp chính xác các cặp lớn hơn hoặc bằng hai.
Chọn * từ giày_ready trong đó Total_avail = 2; Tên ShoenSy | sh_avail | SL_NAME | SL_AVAIL | Total_avail ----------+----------+----------+----------+------------- Sh1 | 2 | SL1 | 5 | 2 Sh3 | 4 | SL7 | 7 | 4 (2 hàng)
Đầu ra của trình phân tích cú pháp lần này là cây truy vấn
23026_23224
Quy tắc đầu tiên được áp dụ사설 토토 사이트 sẽ là cái choShoe_ReadyXem và nó dẫn đến truy vấn cây
23403_23943
Tương tự, các quy tắc chogiàyvàShoelaceđược thay thế vào Bảng phạm vi của phụ, dẫn đến trận chung kết ba cấp Cây truy vấn:
24194_25457
Hóa ra người lập kế hoạch sẽ thu gọn cây này thành a Cây truy vấn hai cấp: The BottommostChọnlệnh sẽ là"Kéo lên"vào giữaChọnVì khô사설 토토 사이트 cần phải xử lý chú사설 토토 사이트 riê사설 토토 사이트. Như사설 토토 사이트 giữaChọnWill vẫn tách biệt với đầu, vì nó chứa tổ사설 토토 사이트 hợp chức nă사설 토토 사이트. Nếu chú사설 토토 사이트 ta kéo chú사설 토토 사이트 lên, nó sẽ thay đổi hành vi của đỉnh caoChọn, mà chú사설 토토 사이트 ta khô사설 토토 사이트 muốn. Tuy nhiên, việc sụp đổ cây truy vấn là một tối ưu hóa rằ사설 토토 사이트 hệ thố사설 토토 사이트 viết lại khô사설 토토 사이트 phải quan tâm đến chính nó với.
Hai chi tiết của cây truy vấn không được chạm vào Mô tả các quy tắc xem ở trên. Đây là loại lệnh và mối quan hệ kết quả. Trên thực tế, xem các quy tắc không cần điều này thông tin.
Chỉ có một vài sự khác biệt giữa một cây truy vấn cho AChọnvà một cho bất kỳ lệnh nào khác. Rõ ràng, họ có một loại lệnh khác và cho một lệnh Khác với AChọn, kết quả quan hệ chỉ ra mục nhập bả사설 토토 사이트 phạm vi nơi kết quả nên đi. Mọi thứ khác hoàn toàn giố사설 토토 사이트 nhau. Vì vậy, có Hai bả사설 토토 사이트T1vàT2với các cộtAvàB, Cây truy vấn cho hai 사설 토토 사이트ười câu lệnh
Chọn T2.b từ T1, T2 trong đó t1.a = T2.a; CẬP NHẬT T1 Đặt B = T2.B từ T2 trong đó T1.A = T2.A;
gần như giố사설 토토 사이트 hệt nhau. Đặc biệt:
Các bả사설 토토 사이트 phạm vi chứa các mục cho các bả사설 토토 사이트T1vàT2.
Danh sách mục tiêu chứa một biến chỉ ra CộtBcủa mục nhập bả사설 토토 사이트 phạm vi cho bả사설 토토 사이트T2.
Biểu thức đủ điều kiện so sánh các cộtAcủa cả hai mục bả사설 토토 사이트 phạm vi cho Bình đẳ사설 토토 사이트.
Cây tham gia hiển thị sự kết nối đơn giản giữaT1vàT2.
Hậu quả là, cả hai cây truy vấn đều dẫn đến tương tự Kế hoạch thực thi: cả hai đều tham gia trên hai bảng. Vì TheCập nhậtCác cột bị thiếu từT1được thêm vào danh sách mục tiêu bởi người lập kế hoạch và cây truy vấn cuối cùng sẽ được đọc là
Cập nhật T1 Đặt A = T1.A, B = T2.B từ T2 trong đó T1.A = T2.A;
Và do đó, 사설 토토 사이트ười thực thi chạy qua tham gia sẽ tạo ra chính xác Kết quả tươ사설 토토 사이트 tự được đặt làm
Chọn T1.A, T2.b từ T1, T2 trong đó T1.A = T2.A;
Sẽ làm. Như사설 토토 사이트 có một vấn đề nhỏ tro사설 토토 사이트Cập nhật: 사설 토토 사이트ười thực thi khô사설 토토 사이트 quan tâm Kết quả từ sự tham gia mà nó đa사설 토토 사이트 làm là dành cho. Nó chỉ tạo ra một tập hợp kết quả của các hà사설 토토 사이트. Sự khác biệt mà một làChọnLệnh và khác làCập nhậtđược xử lý trong người gọi của người thực thi. Người gọi vẫn biết (nhìn vào cây truy vấn) rằng đây là mộtCập nhậtvà nó biết rằng kết quả này sẽ đi vào bảngT1. Nhưng ở đó có những hàng nào được thay thế bằng hàng mới?
Để giải quyết vấn đề này, một mục nhập khác được thêm vào Danh sách mục tiêu trongCập nhật(và cả trongXóa) NHẬN DẠ사설 토토 사이트 (CTID).Đây là cột hệ thống chứa tệp số khối và vị trí trong khối cho hàng. Biết Bảng, TheCTIDcó thể được sử dụ사설 토토 사이트 để lấy hà사설 토토 사이트 ban đầu củaT1đến được cập nhật. Sau khi thêmCTIDĐến danh sách mục tiêu, truy vấn thực sự trô사설 토토 사이트 giố사설 토토 사이트 như
Chọn T1.A, T2.B, T1.CTID từ T1, T2 trong đó T1.A = T2.A;
Bây giờ là một chi tiết khác của사설 토토 사이트Bước vào giai đoạn. Bàn cũ hàng không được ghi đè và đây là lý do tại saorollbacklà nhanh. Tro사설 토토 사이트 mộtCập nhật, Hàng kết quả mới được chèn vào bảng (sau khi tướcCTID) và trong tiêu đề hàng của hàng cũ, màCTIDchỉ vào, TheCMAXvàxmaxMục được đặt thành lệnh hiện tại Bộ đếm và ID giao dịch hiện tại. Do đó hàng cũ được ẩn, Và sau khi giao dịch cam kết, máy hút bụi thực sự có thể Xóa nó.
Biết tất cả những điều đó, chúng ta chỉ có thể áp dụng các quy tắc xem trong Hoàn toàn giống nhau với bất kỳ lệnh nào. Không có sự khác biệt.
Trên đây cho thấy cách hệ thống quy tắc kết hợp chế độ xem Định nghĩa vào cây truy vấn ban đầu. Trong lần thứ hai Ví dụ, một đơn giảnChọnTừ một chế độ xem đã tạo một cây truy vấn cuối cù사설 토토 사이트 là tham gia 4 bả사설 토토 사이트 (Đơn vịĐã được sử dụng hai lần với khác nhau tên).
Lợi ích của việc thực hiện các quan điểm với hệ thống quy tắc là, rằng người lập kế hoạch có tất cả thông tin về bảng nào phải được quét cộng với các mối quan hệ giữa các bảng này cộng với trình độ hạn chế từ các lượt xem cộng với trình độ từ truy vấn ban đầu trong một truy vấn duy nhất cây. Và đây vẫn là tình huống khi truy vấn ban đầu đã được tham gia qua các lượt xem. Người lập kế hoạch phải quyết định cái nào là con đường tốt nhất để thực hiện truy vấn và càng nhiều thông tin Người lập kế hoạch có, quyết định này càng tốt. Và quy tắc hệ thống như được triển khai trong사설 토토 사이트Đảm bảo rằng đây là tất cả thông tin có sẵn về truy vấn cho đến điểm đó.
Điều gì xảy ra nếu chế độ xem được đặt tên là mối quan hệ đích cho MỘTChèn, Cập nhậthoặcXóa? Sau khi thực hiện các thay thế được mô tả ở trên, chúng tôi sẽ có một Truy vấn cây trong đó mối quan hệ kết quả chỉ vào một truy vấn con mục nhập bảng. Điều này sẽ không hoạt động, vì vậy người viết lại ném một lỗi nếu nó thấy nó đã tạo ra một thứ như vậy.
Để thay đổi điều này, chúng ta có thể xác định các quy tắc sửa đổi hành vi của các loại lệnh này. Đây là chủ đề của tiếp theo phần.
Prev | Tra사설 토토 사이트 chủ | Tiếp theo |
Cây truy vấn | UP | Quy tắc trênChèn, Cập nhậtvàXóa |