Sự khác biệt giữa cơ sở dữ liệu so với người dùng và lược đồ


78

Tôi thực sự bối rối với các điều khoản cơ sở dữ liệu, người dùng và lược đồ. Bất cứ ai có thể giải thích làm thế nào họ khác nhau (nếu họ)?

Nếu chúng giống nhau thì điểm tương đồng giữa chúng là gì? Làm thế nào để chúng ta sử dụng chúng? Và làm thế nào để chúng ta tạo ra chúng?


Hy vọng điều này sẽ cung cấp cho các ý tưởng cơ bản: answers.com/Q/Difference_between_user_and_schema_oracle
Sandun Madola

Câu trả lời:


77

Trong Oracle, người dùng và lược đồ về cơ bản là giống nhau. Bạn có thể xem xét rằng người dùng là tài khoản bạn sử dụng để kết nối với cơ sở dữ liệu và lược đồ là tập hợp các đối tượng (bảng, dạng xem, v.v.) thuộc về tài khoản đó.

Xem bài đăng này trên Stack Overflow: sự khác biệt giữa Người dùng và Lược đồ trong Oracle? để biết thêm chi tiết và liên kết thêm.

Bạn tạo người dùng với create usertuyên bố. Điều này cũng "tạo ra" lược đồ (ban đầu trống) - bạn không thể tạo một lược đồ như vậy, nó được gắn với người dùng. Khi người dùng được tạo, quản trị viên có thể cấp đặc quyền cho người dùng, điều này sẽ cho phép người dùng tạo bảng, thực hiện selecttruy vấn insertvà mọi thứ khác.

Cơ sở dữ liệu là thứ chứa tất cả người dùng bạn đã tạo và dữ liệu của họ (và một nhóm người dùng hệ thống, bảng, dạng xem, được xác định trước, làm cho toàn bộ hoạt động). Bạn nên xem tài liệu Kiến trúc cơ sở dữ liệu Oracle trong Hướng dẫn về khái niệm (thực ra, toàn bộ trang đó đáng để đọc - có một phần về người dùng và lược đồ cao hơn trong trang đó) để có phần giới thiệu về cơ sở dữ liệu là gì và cơ sở dữ liệu ví dụ là - hai khái niệm quan trọng.

Bạn có thể tạo cơ sở dữ liệu bằng create databasecâu lệnh, sau khi bạn đã cài đặt ngăn xếp phần mềm Oracle. Nhưng sử dụng dbca(trợ lý tạo cơ sở dữ liệu) sẽ dễ dàng hơn để bắt đầu.


2

Theo cách thuật ngữ đôi khi được sử dụng , a USERvà a SCHEMAcó phần giống nhau. Nhưng đó cũng là một sự khác biệt lớn. A USERcó thể được gọi là SCHEMAnếu " USER" sở hữu bất kỳ đối tượng nào, nếu không nó sẽ chỉ là " USER". Khi đã USERsở hữu ít nhất một đối tượng thì nhờ tất cả các định nghĩa của bạn ở trên ... USERgiờ đây có thể được gọi là a SCHEMA.


Tôi nghĩ điều bạn đang chỉ ra ở đây là thuật ngữ 'SCHema' là đa diện. Nó là một không gian tên cho các đối tượng cơ sở dữ liệu trên một mặt. Ngoài ra, trong Oracle (và những người khác?) Nhưng không phải PostgreSQL, nó là một không gian tên đối tượng cơ sở dữ liệu chứa chính xác các đối tượng được tạo bởi người dùng chia sẻ tên của lược đồ. Từ góc độ khác, đó là mối quan hệ và cấu trúc của các đối tượng trong cơ sở dữ liệu, thường bỏ qua cả quyền sở hữu và không gian tên.
Andrew Wolfe

2

Để bắt đầu hiểu sự khác biệt tôi nghĩ chúng ta phải bắt đầu nói rằng danh pháp này là một sai lầm từ Oracle.

Tôi giả sử rằng nếu bạn có một ERP có tên TRITON, bạn muốn cơ sở dữ liệu của mình được đặt tên là TRITON hoặc nếu công ty của tôi có tên là JENNY XUẤT KHẨU, tôi có thể quyết định cơ sở dữ liệu của mình được gọi là JENNYEXP hoặc một cái gì đó tương tự, không cần bất kỳ người dùng nào có cùng tên .

Trong Oracle, bạn cần tạo NGƯỜI DÙNG trước khi tạo các bảng và đủ kỳ lạ, bộ sưu tập BẢNG này được gọi là SCHema.

Sau đó, bạn có thể tạo người dùng thực tế và cấp quyền thích hợp để làm việc với cơ sở dữ liệu như TRITON theo ví dụ này, bằng cách này, nếu bạn kết nối thông qua SQL DevelopER, bạn phải TÊN MỘT KẾT NỐI.

Tôi biết tôi nghe có vẻ thất vọng nhưng nó có ý nghĩa hơn đối với tôi về quy ước đặt tên MS SQL SERVER và tôi có thể thêm rằng tôi đã làm việc với Oracle sớm hơn SQL SERVER.


1

Cơ sở dữ liệu.

Cơ sở dữ liệu là một tập hợp dữ liệu, trong đó dữ liệu thực sự được lưu trữ. Thành phần bộ nhớ vật lý được kết nối với máy tính được cài đặt bằng phần mềm DBMS để thao tác dữ liệu trong thành phần Bộ nhớ đó, máy tính được cài đặt phần mềm dbms được gọi là Máy chủ hoặc Máy chủ cơ sở dữ liệu. Cả Máy chủ (Máy tính) và Cơ sở dữ liệu (thành phần bộ nhớ) đều khác nhau nhưng Hầu hết các lần được giới thiệu là Giống nhau dựa trên tình huống.

NGƯỜI DÙNG và SCHema

Cả hai từ, người dùng và lược đồ, có thể hoán đổi cho nhau, đó là lý do tại sao hầu hết mọi người nhầm lẫn về những từ này.

Người dùng

Người dùng là tài khoản để kết nối cơ sở dữ liệu (Máy chủ). chúng ta có thể tạo người dùng bằng cách sử dụng CREATE USER IDENTifyED BY.

Lược đồ

Trên thực tế Cơ sở dữ liệu Oracle chứa cấu trúc logic và vật lý để xử lý dữ liệu. Lược đồ cũng cấu trúc logic để xử lý dữ liệu trong Cơ sở dữ liệu (Thành phần bộ nhớ). Nó được tạo tự động bởi Oracle khi người dùng tạo. Nó chứa tất cả các đối tượng được tạo bởi người dùng được liên kết với lược đồ đó. Ví dụ: nếu tôi tạo một người dùng có tên santhoshthì oracle tạo một lược đồ có tên santhosh, Oracle lưu trữ tất cả các đối tượng được tạo bởi người dùng santhoshtrong santhoshlược đồ.

Chúng ta có thể tạo lược đồ bằng cách sử dụng CREATE SCHEMAcâu lệnh, nhưng Oracle sẽ tự động tạo một người dùng cho lược đồ đó.

Chúng ta có thể loại bỏ lược đồ bằng cách sử dụng DROP SCHEMA <name> RESTRICTcâu lệnh, nhưng nó không thể xóa các đối tượng chứa lược đồ, vì vậy để loại bỏ lược đồ, nó phải trống. ở đây từ hạn chế buộc bạn phải xác định lược đồ đó với các đối tượng bên ngoài.

Nếu chúng tôi cố gắng thả người dùng chứa các đối tượng trong lược đồ của mình, chúng tôi phải chỉ định CASCADEtừ vì Oracle không cho phép bạn xóa người dùng chứa các đối tượng.

DROP USER <name> CASCADE

Vì vậy, Oracle xóa các đối tượng trong lược đồ và sau đó nó tự động loại bỏ người dùng, Các đối tượng được tham chiếu đến các đối tượng lược đồ này từ các lược đồ khác như các khung nhìn và các từ đồng nghĩa riêng đi đến trạng thái không hợp lệ.


-2

Tôi sẽ thêm rằng các câu lệnh trên áp dụng cho việc triển khai của Oracle nhưng các cơ sở dữ liệu khác bao gồm SQL Server và PostgreQuery sử dụng lược đồ như một không gian tên, tức là một cách để nhóm các đối tượng. Ví dụ: lược đồ Staging có thể nhóm tất cả các đối tượng được sử dụng trong dữ liệu dàn, lược đồ Kế toán có thể nhóm tất cả các đối tượng liên quan đến Kế toán.


Không chắc chắn về những gì bạn giới thiệu khi bạn nói "các câu lệnh ở trên" nhưng lược đồ trong SQL và trong Oracle là một nhóm quyền. Nói cách khác, nó không chỉ là một cách để nhóm các đối tượng lại với nhau, mà là một cách để nhóm các đối tượng sẽ dễ dàng quản lý các quyền vì bạn có thể cấp quyền cho một lược đồ và do đó tránh phải cấp quyền cho từng đối tượng trong lược đồ.
Thronk

-4

Người dùng! = Lược đồ, Người dùng và Lược đồ không giống nhau nhưng chúng được sử dụng thay thế cho nhau


2
Vui lòng thêm chi tiết về cách chúng khác nhau.
Erik

-4

Tôi đang nói với bạn theo các khái niệm không dựa trên bất kỳ loại hệ thống quản lý cơ sở dữ liệu nào bạn đang sử dụng.

Về mặt khái niệm: Cơ sở dữ liệu: Chỉ là một đống dữ liệu, chủ yếu là dữ liệu không liên quan hoặc không liên quan .

Lược đồ: Lược đồ đề cập đến việc cấu trúc chính thức dữ liệu liên quan / không liên quan không được quản lý để có thể được quản lý bởi một số hệ thống quản lý hiểu định nghĩa chính thức được cung cấp bởi lược đồ. Schema về cơ bản là một kế hoạch để cung cấp tổng quan. Ví dụ: bạn có XSD xác định lược đồ để tạo XML. Bạn có RDBMS xác định các lược đồ riêng dựa trên Quy tắc Codd , về cơ bản xác định các lược đồ để tạo RDBMS.

Bây giờ nếu bạn muốn biết thêm về hãy tham khảo Liên kết này .

Người dùng sử dụng ngôn ngữ chính thức được chỉ định bởi lược đồ để truy cập Cơ sở dữ liệu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.