Bài viết này chúng ta sẽ xem xét ngắn gọn về mối quan hệ giữa cơ sở dữ liệu (database), lược đồ (schema) và bảng (table) trong PostgreSQL.
#1/3: Cơ sở dữ liệu (database)
PostgreSQL có thể quản lý nhiều cơ sở dữ liệu. Ngay sau khi cài đặt hoàn thành PostgreSQL, template0 và template1 là 2 cơ sở dữ liệu mẫu (template) và cơ sở dữ liệu có tên postgres được tạo mặc định.
Một bộ sưu tập các cơ sở dữ liệu này còn được gọi là cụm cơ sở dữ liệu (database cluster).
Bạn có thể thêm một cơ sở dữ liệu mới, chẳng hạn như mydb nếu bạn có quyền tạo ra nó.
#2/3: Lược đồ (schema)
Trong PostgreSQL dữ liệu thực tế được lưu trữ trong các bảng (table). Bạn có thể tạo nhiều bảng tùy theo mục đích và cơ sở dữ liệu là tập hợp của chúng. Ngoài ra, trong PostgreSQL, một số cơ sở dữ liệu còn được gọi là schema.
Schema là một nhóm các đối tượng như bảng (table), hàm (function),… được tạo trong cơ sở dữ liệu. Nếu schema khác nhau, bạn có thể tạo một bảng có cùng tên bảng ngay cả trong cùng một cơ sở dữ liệu. Khi tạo một cơ sở dữ liệu thì mặc định sẽ tự động tạo ra một schema đặc biệt gọi là public.
Theo mặc định, schema public có quyền truy cập và đặc quyền CREATE cho tất cả các vai trò và bất kỳ vai trò nào trong schema public đều có thể tạo các bảng.
Bạn có thể tạo một schema tùy ý trong cơ sở dữ liệu tách biệt với schema public. Các hệ thống cơ sở dữ liệu khác chỉ có thể tạo các schema có cùng tên schema với tên người dùng (user name), nhưng PostgreSQL cho phép bạn tạo một schema với bất kỳ tên nào.
#3/3: Bảng (table)
Tạo bảng trong schema. Nếu schema khác nhau, bạn có thể tạo một bảng có cùng tên bảng. Bạn cũng có thể đặt quyền để tạo các đối tượng như bảng cho mỗi schema.
Nếu bạn không chỉ định tên schema khi tạo bảng bằng lệnh CREATE TABLE thì bảng sẽ được tạo cho schema public theo mặc định (trừ khi cùng một lược đồ như tên vai trò được tạo).