Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

5.10. Schemas#

APostgreSQLCụm cơ sở dữ kèo bóng đá hom nay chứa một hoặc nhiều cơ sở dữ kèo bóng đá hom nay được đặt tên. Vai trò và một vài loại đối tượng khác được chia sẻ trên toàn bộ cụm. Kết nối máy khách đến máy chủ chỉ có thể truy cập dữ kèo bóng đá hom nay trong một cơ sở dữ kèo bóng đá hom nay, một kết nối được chỉ định trong yêu cầu kết nối.

Lưu ý

Người dùng của cụm không nhất thiết phải có đặc quyền truy cập mọi cơ sở dữ kèo bóng đá hom nay trong cụm. Chia sẻ tên vai trò có nghĩa là không thể có các vai trò khác nhau được đặt tên, giả sử,JoeTrong hai cơ sở dữ kèo bóng đá hom nay trong cùng một cụm; Nhưng hệ thống có thể được cấu hình để cho phépJoeChỉ truy cập vào một số cơ sở dữ kèo bóng đá hom nay.

Cơ sở dữ kèo bóng đá hom nay chứa một hoặc nhiều tênSchemas, lần lượt chứa các bảng. Các kèo bóng đá hom nay đồ cũng chứa các loại đối tượng được đặt tên khác, bao gồm các kiểu dữ liệu, chức năng và toán tử. Trong một kèo bóng đá hom nay đồ, hai đối tượng cùng loại không thể có cùng tên. Hơn nữa, các bảng, trình tự, chỉ mục, chế độ xem, chế độ xem được vật chất hóa và các bảng nước ngoài có cùng không gian tên, do đó, ví dụ, một chỉ mục và bảng phải có tên khác nhau nếu chúng ở trong cùng một kèo bóng đá hom nay đồ. Tên đối tượng giống nhau có thể được sử dụng trong các kèo bóng đá hom nay đồ khác nhau mà không có xung đột; Ví dụ, cả haiSchema1MyschemaCó thể chứa các bảng có tênMyTable. Không giống như cơ sở dữ liệu, các kèo bóng đá hom nay đồ không được phân tách một cách cứng nhắc: người dùng có thể truy cập các đối tượng trong bất kỳ kèo bóng đá hom nay đồ nào trong cơ sở dữ liệu mà chúng được kết nối, nếu chúng có đặc quyền làm như vậy.

12603_12665

  • Để cho phép nhiều người dùng sử dụng một cơ sở dữ kèo bóng đá hom nay mà không can thiệp vào nhau.

  • Để tổ chức các đối tượng cơ sở dữ kèo bóng đá hom nay thành các nhóm logic để làm cho chúng dễ quản lý hơn.

  • Các ứng dụng của bên thứ ba có thể được đưa vào các kèo bóng đá hom nay đồ riêng biệt để chúng không va chạm với tên của các đối tượng khác.

Schemas tương tự như các thư mục ở cấp hệ điều hành, ngoại trừ các kèo bóng đá hom nay đồ không thể lồng nhau.

5.10.1. Tạo kèo bóng đá hom nay đồ#

Để tạo kèo bóng đá hom nay đồ, sử dụngTạo kèo bóng đá hom nay đồlệnh. Đặt cho kèo bóng đá hom nay đồ một tên của sự lựa chọn của bạn. Ví dụ:

Tạo kèo bóng đá hom nay đồ MySchema;

Để tạo hoặc truy cập các đối tượng trong kèo bóng đá hom nay đồ, viết ATên đủ điều kiệnBao gồm tên kèo bóng đá hom nay đồ và tên bảng được phân tách bằng một dấu chấm:

kèo bóng đá hom nay đồ.Bảng

Điều này hoạt động ở bất cứ đâu một tên bảng được mong đợi, bao gồm các lệnh sửa đổi bảng và các lệnh truy cập dữ kèo bóng đá hom nay được thảo luận trong các chương sau. .

Trên thực tế, cú pháp thậm chí còn chung hơn

Cơ sở dữ kèo bóng đá hom nay.kèo bóng đá hom nay đồ.Bảng

cũng có thể được sử dụng, nhưng hiện tại đây chỉ là để tuân thủ pro forma với tiêu chuẩn SQL. Nếu bạn viết tên cơ sở dữ kèo bóng đá hom nay, nó phải giống như cơ sở dữ kèo bóng đá hom nay bạn được kết nối.

Vì vậy, để tạo một bảng trong kèo bóng đá hom nay đồ mới, sử dụng:

Tạo bảng myschema.mytable (
 ...
);

Để thả một kèo bóng đá hom nay đồ nếu nó trống (tất cả các đối tượng trong đó đã bị hủy), sử dụng:

Drop Schema myschema;

Để bỏ một kèo bóng đá hom nay đồ bao gồm tất cả các đối tượng chứa, sử dụng:

Drop Schema MySchema Cascade;

xemPhần 5.15Để biết mô tả về cơ chế chung đằng sau điều này.

Thường thì bạn sẽ muốn tạo một kèo bóng đá hom nay đồ thuộc sở hữu của người khác (vì đây là một trong những cách để hạn chế các hoạt động của người dùng của bạn đối với các không gian tên được xác định rõ). Cú pháp cho đó là:

Tạo kèo bóng đá hom nay đồSchema_nameủy quyềnuser_name;

Bạn thậm chí có thể bỏ qua tên kèo bóng đá hom nay đồ, trong trường hợp đó, tên kèo bóng đá hom nay đồ sẽ giống như tên người dùng. Nhìn thấyPhần 5.10.6Vì làm thế nào điều này có thể hữu ích.

Tên kèo bóng đá hom nay đồ bắt đầu bằngpg_được dành riêng cho mục đích hệ thống và không thể được tạo bởi người dùng.

5.10.2. kèo bóng đá hom nay đồ công khai#

Trong các phần trước, chúng tôi đã tạo các bảng mà không chỉ định bất kỳ tên kèo bóng đá hom nay đồ nào. Theo mặc định, các bảng như vậy (và các đối tượng khác) được tự động đưa vào một kèo bóng đá hom nay đồ có têncông khaiHồi. Mỗi cơ sở dữ liệu mới đều chứa một kèo bóng đá hom nay đồ như vậy. Do đó, những điều sau đây tương đương:

Tạo sản phẩm bảng (...);

và:

17382_17423

5.10.3. Đường dẫn tìm kiếm kèo bóng đá hom nay đồ#

17907_18072Tên không đủ tiêu chuẩn, chỉ bao gồm tên bảng. Hệ thống xác định bảng nào có nghĩa bằng cách theo dõiĐường dẫn tìm kiếm, đây là danh sách các kèo bóng đá hom nay đồ để xem xét. Bảng phù hợp đầu tiên trong đường dẫn tìm kiếm được coi là người bị truy nã. Nếu không có khớp trong đường dẫn tìm kiếm, một lỗi được báo cáo, ngay cả khi các tên bảng khớp tồn tại trong các kèo bóng đá hom nay đồ khác trong cơ sở dữ liệu.

Khả năng tạo các đối tượng giống như có tên trong các kèo bóng đá hom nay đồ khác nhau làm phức tạp việc viết một truy vấn tham khảo chính xác cùng một đối tượng mỗi lần. Nó cũng mở ra tiềm năng cho người dùng thay đổi hành vi của các truy vấn của người dùng khác, một cách độc hại hoặc vô tình. Do sự phổ biến của các tên không đủ tiêu chuẩn trong các truy vấn và việc sử dụng chúng trongPostgreSQLbên trong, thêm một kèo bóng đá hom nay đồ vàosearch_pathTin tưởng hiệu quả tất cả người dùng cóTạo19029_19243

kèo bóng đá hom nay đồ đầu tiên có tên trong đường dẫn tìm kiếm được gọi là kèo bóng đá hom nay đồ hiện tại. Bên cạnh việc tìm kiếm kèo bóng đá hom nay đồ đầu tiên được tìm kiếm, nó còn là kèo bóng đá hom nay đồ trong đó các bảng mới sẽ được tạo nếuTạo bảngLệnh không chỉ định tên kèo bóng đá hom nay đồ.

Để hiển thị đường dẫn tìm kiếm hiện tại, hãy sử dụng lệnh sau:

show search_path;

Trong thiết lập mặc định này trả về:

search_path
--------------
 "$ user", công khai

Phần tử đầu tiên chỉ định rằng một kèo bóng đá hom nay đồ có cùng tên với người dùng hiện tại sẽ được tìm kiếm. Nếu không có kèo bóng đá hom nay đồ như vậy tồn tại, mục nhập bị bỏ qua. Phần tử thứ hai đề cập đến kèo bóng đá hom nay đồ công khai mà chúng ta đã thấy.

20150_20633

Để đặt kèo bóng đá hom nay đồ mới của chúng tôi vào đường dẫn, chúng tôi sử dụng:

Đặt search_path thành myschema, công khai;

(Chúng tôi bỏ qua$ user20820_20933

BẢNG BẢNG MyTable;

21003_21017Myschemalà phần tử đầu tiên trong đường dẫn, các đối tượng mới theo mặc định sẽ được tạo trong đó.

Chúng tôi cũng có thể đã viết:

Đặt search_path thành myschema;

Sau đó, chúng tôi không còn có quyền truy cập vào kèo bóng đá hom nay đồ công khai mà không có trình độ rõ ràng. Không có gì đặc biệt về kèo bóng đá hom nay đồ công khai ngoại trừ nó tồn tại theo mặc định. Nó cũng có thể được bỏ.

Xem thêm21568_21587Đối với các cách khác để thao túng đường dẫn tìm kiếm kèo bóng đá hom nay đồ.

Đường dẫn tìm kiếm hoạt động theo cùng một cách cho tên kiểu dữ kèo bóng đá hom nay, tên chức năng và tên toán tử như đối với tên bảng. Kiểu dữ kèo bóng đá hom nay và tên chức năng có thể đủ điều kiện theo cách tương tự như tên bảng. Nếu bạn cần viết một tên toán tử có trình độ trong một biểu thức, có một điều khoản đặc biệt: bạn phải viết

toán tử (kèo bóng đá hom nay đồ.Nhà điều hành)

Điều này là cần thiết để tránh sự mơ hồ của cú pháp. Một ví dụ là:

Chọn 3 toán tử (pg_catalog.+) 4;

Trong thực tế, người ta thường dựa vào đường dẫn tìm kiếm cho các toán tử, để không phải viết bất cứ điều gì xấu xí như vậy.

5.10.4. Các kèo bóng đá hom nay đồ và đặc quyền#

Theo mặc định, người dùng không thể truy cập bất kỳ đối tượng nào trong các kèo bóng đá hom nay đồ mà họ không sở hữu. Để cho phép điều đó, chủ sở hữu của kèo bóng đá hom nay đồ phải cấpsử dụngĐặc quyền trên kèo bóng đá hom nay đồ. Theo mặc định, mọi người đều có đặc quyền đó trên kèo bóng đá hom nay đồcông khai. Để cho phép người dùng sử dụng các đối tượng trong kèo bóng đá hom nay đồ, các đặc quyền bổ sung có thể cần phải được cấp, khi thích hợp cho đối tượng.

Người dùng cũng có thể được phép tạo các đối tượng trong kèo bóng đá hom nay đồ của người khác. Để cho phép điều đó,TạoĐặc quyền về kèo bóng đá hom nay đồ cần được cấp. Trong cơ sở dữ liệu được nâng cấp từPostgreSQL14 hoặc sớm hơn, mọi người đều có đặc quyền đó trên kèo bóng đá hom nay đồcông khai. Một sốmẫu sử dụngGọi cho việc thu hồi đặc quyền đó:

Thu hồi Creat trên kèo bóng đá hom nay đồ công khai từ công khai;

(lần đầu tiêncông khailà kèo bóng đá hom nay đồ, thứ haicông khaicó nghĩa làMạnhMỗi người dùng. Theo nghĩa đầu tiên, nó là một định danh, theo nghĩa thứ hai, nó là một từ khóa, do đó vốn hóa khác nhau; Nhớ lại các hướng dẫn từPhần 4.1.1.)

5.10.5. kèo bóng đá hom nay đồ danh mục hệ thống#

Ngoàicông khaivà các kèo bóng đá hom nay đồ do người dùng tạo, mỗi cơ sở dữ liệu chứa mộtpg_catalogkèo bóng đá hom nay đồ, chứa các bảng hệ thống và tất cả các loại dữ liệu, chức năng và toán tử tích hợp.pg_catalogluôn là một phần hiệu quả của đường dẫn tìm kiếm. Nếu nó không được đặt tên rõ ràng trong đường dẫn thì nó được tìm kiếm ngầmTrướcTìm kiếm các kèo bóng đá hom nay đồ của đường dẫn. Điều này đảm bảo rằng các tên tích hợp sẽ luôn luôn có thể tìm thấy. Tuy nhiên, bạn có thể đặt rõ ràngpg_catalog25317_25416

Vì tên bảng hệ thống bắt đầu bằngpg_, Tốt nhất là tránh những cái tên như vậy để đảm bảo rằng bạn sẽ không bị xung đột nếu một số phiên bản trong tương lai định nghĩa một bảng hệ thống có tên giống như bảng của bạn. (Với đường dẫn tìm kiếm mặc định, một tham chiếu không đủ tiêu chuẩn cho tên bảng của bạn sau đó sẽ được giải quyết dưới dạng bảng hệ thống.)PG_25890_25986pg_tiền tố.

5.10.6. Mẫu sử dụng#

Các kèo bóng đá hom nay đồ có thể được sử dụng để sắp xếp dữ liệu của bạn theo nhiều cách. MỘTmẫu sử dụng kèo bóng đá hom nay đồ an toànNgăn chặn người dùng không tin tưởng thay đổi hành vi của các truy vấn của người dùng khác. Khi cơ sở dữ liệu không sử dụng mẫu sử dụng kèo bóng đá hom nay đồ an toàn, người dùng muốn truy vấn an toàn rằng cơ sở dữ liệu sẽ có hành động bảo vệ ở đầu mỗi phiên. Cụ thể, họ sẽ bắt đầu mỗi phiên bằng cách đặtsearch_path26755_26849search_path. Có một vài mẫu sử dụng dễ dàng được hỗ trợ bởi cấu hình mặc định:

  • 27108_27228TạoĐặc quyền. Sau đó, đối với mọi người dùng cần tạo các đối tượng phi ngữ nghĩa, hãy tạo một kèo bóng đá hom nay đồ có cùng tên với người dùng đó, ví dụTạo kèo bóng đá hom nay đồ Alice Authorization Alice. (Nhớ lại rằng đường dẫn tìm kiếm mặc định bắt đầu bằng$ user, giải quyết cho tên người dùng. Do đó, nếu mỗi người dùng có một kèo bóng đá hom nay đồ riêng biệt, họ sẽ truy cập các kèo bóng đá hom nay đồ của riêng họ theo mặc định.) Mẫu này là mẫu sử dụng kèo bóng đá hom nay đồ an toàn trừ khi người dùng không tin tưởng là chủ sở hữu cơ sở dữ liệu hoặc đã được cấpTùy chọn quản trịVề vai trò có liên quan, trong trường hợp đó không có mẫu sử dụng kèo bóng đá hom nay đồ an toàn nào tồn tại.

    inPostgreSQL15 trở lên, cấu hình mặc định hỗ trợ mẫu sử dụng này. Trong các phiên bản trước hoặc khi sử dụng cơ sở dữ kèo bóng đá hom nay đã được nâng cấp từ phiên bản trước, bạn sẽ cần phải xóa công khaiTạoĐặc quyền từcông khaikèo bóng đá hom nay đồ (sốThu hồi Creat trên kèo bóng đá hom nay đồ công khai từ công khai). Sau đó xem xét kiểm toáncông khaikèo bóng đá hom nay đồ cho các đối tượng có tên giống như các đối tượng trong kèo bóng đá hom nay đồpg_catalog.

  • Xóa kèo bóng đá hom nay đồ công khai khỏi đường dẫn tìm kiếm mặc định, bằng cách sửa đổiPostgreSql.confhoặc bằng cách phát hànhVai trò thay đổi tất cả các set search_path = "$ user". Sau đó, cấp đặc quyền để tạo trong kèo bóng đá hom nay đồ công khai. Chỉ có tên đủ điều kiện sẽ chọn các đối tượng kèo bóng đá hom nay đồ công khai. Trong khi các tài liệu tham khảo bảng đủ điều kiện là tốt, các cuộc gọi đến các chức năng trong kèo bóng đá hom nay đồ công khaiPostgresql: Tài liệu: 1 |7: kèo chấp bóng đá hôm nay. Nếu bạn tạo các chức năng hoặc tiện ích mở rộng trong kèo bóng đá hom nay đồ công khai, hãy sử dụng mẫu đầu tiên thay thế. Mặt khác, giống như mẫu đầu tiên, điều này là an toàn trừ khi người dùng không tin tưởng là chủ sở hữu cơ sở dữ liệu hoặc đã được cấpTùy chọn quản trịVề vai trò có liên quan.

  • Giữ đường dẫn tìm kiếm mặc định và cấp đặc quyền để tạo trong kèo bóng đá hom nay đồ công khai. Tất cả người dùng truy cập vào kèo bóng đá hom nay đồ công khai ngầm. Điều này mô phỏng tình huống mà các kèo bóng đá hom nay đồ hoàn toàn không có sẵn, tạo ra một sự chuyển đổi suôn sẻ từ thế giới không nhận thức được. Tuy nhiên, đây không bao giờ là một mô hình an toàn. Chỉ chấp nhận được khi cơ sở dữ liệu có một người dùng hoặc một vài người dùng tin tưởng lẫn nhau. Trong cơ sở dữ liệu được nâng cấp từPostgreSQL14 hoặc sớm hơn, đây là mặc định.

Đối với bất kỳ mẫu nào, để cài đặt các ứng dụng được chia sẻ (bảng được sử dụng bởi mọi người, các chức năng bổ sung được cung cấp bởi các bên thứ ba, v.v.), đưa chúng vào các kèo bóng đá hom nay đồ riêng biệt. Hãy nhớ cấp các đặc quyền thích hợp để cho phép người dùng khác truy cập họ. Sau đó, người dùng có thể tham khảo các đối tượng bổ sung này bằng cách đủ điều kiện các tên với tên kèo bóng đá hom nay đồ hoặc họ có thể đặt các kèo bóng đá hom nay đồ bổ sung vào đường dẫn tìm kiếm của họ, khi họ chọn.

5.10.7. Tính di động#

30779_31226user_name.Table_Name. Đây là cáchPostgreSQLsẽ hoạt động hiệu quả nếu bạn tạo kèo bóng đá hom nay đồ trên mỗi người dùng cho mọi người dùng.

Ngoài ra, không có khái niệm về Acông khaikèo bóng đá hom nay đồ trong tiêu chuẩn SQL. Để phù hợp tối đa với tiêu chuẩn, bạn không nên sử dụngcông khaikèo bóng đá hom nay đồ.

31712_31981

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài kèo bóng đá hom nay không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài kèo bóng đá hom nay.