Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mối quan hệ giữa danh mục, lược đồ, người dùng và phiên bản cơ sở dữ liệu

Trong Oracle:

  • phiên bản máy chủ ==cơ sở dữ liệu ==danh mục ==tất cả dữ liệu được quản lý bởi cùng một công cụ thực thi
  • không gian tên schema ==trong cơ sở dữ liệu, giống với tài khoản người dùng
  • người dùng ==chủ sở hữu lược đồ ==tài khoản được đặt tên, giống với giản đồ, người có thể kết nối với cơ sở dữ liệu, người sở hữu lược đồ và sử dụng các đối tượng có thể trong các lược đồ khác
  • để xác định bất kỳ đối tượng nào trong máy chủ đang chạy, bạn cần (tên giản đồ + tên đối tượng)

Trong PostgreSQL:

  • phiên bản máy chủ ==db cluster ==tất cả dữ liệu được quản lý bởi cùng một công cụ thực thi
  • cơ sở dữ liệu ==danh mục ==cơ sở dữ liệu duy nhất trong cụm db, được cách ly với các cơ sở dữ liệu khác trong cùng một cụm db
  • schema ==không gian tên trong cơ sở dữ liệu
  • người dùng ==tài khoản được đặt tên, người có thể kết nối với cơ sở dữ liệu, sở hữu và sử dụng các đối tượng trong từng cơ sở dữ liệu được phép riêng biệt
  • để xác định bất kỳ đối tượng nào trong máy chủ đang chạy, bạn cần (tên cơ sở dữ liệu + tên lược đồ + tên đối tượng)

Trong MySQL:

  • phiên bản máy chủ ==không được xác định với danh mục, chỉ là một tập hợp cơ sở dữ liệu
  • cơ sở dữ liệu ==schema ==catalog ==một không gian tên trong máy chủ.
  • người dùng ==tài khoản được đặt tên, người có thể kết nối với máy chủ và sử dụng (nhưng không thể sở hữu - không có khái niệm về quyền sở hữu) các đối tượng trong một hoặc nhiều cơ sở dữ liệu
  • để xác định bất kỳ đối tượng nào trong máy chủ đang chạy, bạn cần (tên cơ sở dữ liệu + tên đối tượng)

Trong Microsoft SQL Server:

  • phiên bản máy chủ ==tập hợp các cơ sở dữ liệu được quản lý
  • cơ sở dữ liệu ==bộ định nghĩa không gian tên trong máy chủ, hiếm khi được gọi là danh mục
  • schema ==owner ==không gian tên trong cơ sở dữ liệu, được liên kết với các vai trò của cơ sở dữ liệu, theo mặc định chỉ dbo được sử dụng
  • người dùng ==tài khoản được đặt tên, người có thể kết nối với máy chủ và sử dụng (nhưng không thể sở hữu - schema hoạt động với tư cách là chủ sở hữu) các đối tượng trong một hoặc nhiều cơ sở dữ liệu
  • để xác định bất kỳ đối tượng nào trong máy chủ đang chạy, bạn cần (tên cơ sở dữ liệu + chủ sở hữu + tên đối tượng)

Vì vậy, tôi nghĩ câu trả lời cho câu hỏi của bạn là:

  1. Nó phụ thuộc vào việc thực hiện, liệu tên danh mục có cần thiết để xác định các đối tượng hay không. Ý nghĩa của "danh mục", "lược đồ" và "cơ sở dữ liệu" khác nhau giữa các triển khai.

  2. Đúng vậy, một danh mục là một bản lưu trữ dữ liệu trừu tượng. Tôi nghĩ rằng nó cũng nên được định nghĩa là một không gian tên cô lập độc lập, nhưng không phải tất cả các công cụ SQL đều làm điều đó.

  3. Cơ sở dữ liệu lược đồ được xác định khá tốt bởi tất cả các nhà cung cấp. Danh mục đôi khi đồng nghĩa với "cơ sở dữ liệu" (ít nhất là trong Oracle và Postgres), đôi khi đồng nghĩa với "lược đồ", và đôi khi đồng nghĩa với cả hai. Thuật ngữ danh mục cũng thường có nghĩa là thu thập siêu dữ liệu (hay còn gọi là bảng hệ thống).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xử lý phân mảnh cột ID auto_increment trong MySQL

  2. DROP TABLE NẾU TỒN TẠI trong MySQL

  3. Vòng lặp qua các tập kết quả trong MySQL

  4. Sự khác biệt giữa VARCHAR và TEXT trong MySQL

  5. Sử dụng HHVM với WordPress