Unterschied zwischen Datenbank und Benutzer und Schema

78

Ich bin wirklich verwirrt mit den Begriffen Datenbank, Benutzer und Schema. Kann jemand erklären, wie sie sich voneinander unterscheiden (wenn sie es sind)?

Wenn sie dann gleich sind, was sind die Ähnlichkeiten zwischen ihnen? Wie benutzen wir sie? Und wie schaffen wir sie?

Ravi
quelle
Hoffe, dies wird die Grundidee geben: answers.com/Q/Difference_between_user_and_schema_oracle
Sandun Madola

Antworten:

77

In Oracle sind Benutzer und Schemas im Wesentlichen dasselbe. Sie können davon ausgehen, dass ein Benutzer das Konto ist, mit dem Sie eine Verbindung zu einer Datenbank herstellen. Ein Schema ist die Gruppe von Objekten (Tabellen, Ansichten usw.), die zu diesem Konto gehören.

Siehe diesen Beitrag zum Stapelüberlauf: Unterschied zwischen einem Benutzer und einem Schema in Oracle? Für weitere Details und zusätzliche Links.

Mit der create userAnweisung legen Sie Benutzer an . Dadurch wird auch das Schema "erstellt" (anfangs leer) - Sie können kein Schema als solches erstellen, es ist an den Benutzer gebunden. Sobald der Benutzer erstellt wurde, kann ein Administrator dem Benutzer Berechtigungen erteilen, mit denen er Tabellen erstellen, selectAbfragen ausführen insertund alles andere ausführen kann.

Die Datenbank enthält alle von Ihnen erstellten Benutzer und deren Daten (sowie eine Reihe vordefinierter Systembenutzer, Tabellen, Ansichten usw., die das Ganze zum Funktionieren bringen). Sie sollten sich die Oracle Database Architecture- Dokumentation im Concepts Guide ansehen (eigentlich ist diese ganze Seite einen Besuch wert - es gibt einen Abschnitt über Benutzer und Schemata weiter oben auf dieser Seite), um eine Einführung zu erhalten, was eine Datenbank ist und was eine Datenbank - Instanz ist - zwei wichtige Konzepte.

Sie können mit der create databaseAnweisung eine Datenbank erstellen , nachdem Sie den Oracle-Software-Stack installiert haben. Die Verwendung von dbca(Assistent zur Datenbankerstellung) ist jedoch einfacher.

Matte
quelle
2

Entsprechend der Art und Weise, wie die Terminologie manchmal verwendet wird , sind a USERund a SCHEMAetwas ähnlich. Es gibt aber auch einen großen Unterschied. A USERkann als SCHEMA" USER" bezeichnet werden, wenn der " " ein Objekt besitzt, sonst bleibt es nur ein " USER". Sobald der USERmindestens ein Objekt besitzt, kann es aufgrund all Ihrer obigen Definitionen USERals a bezeichnet werden SCHEMA.

JOHNNIE
quelle
Ich denke, Sie weisen darauf hin, dass der Begriff "SCHEMA" vielfältig ist. Es ist einerseits ein Namespace für Datenbankobjekte. In Oracle (und anderen?), Jedoch nicht in PostgreSQL, handelt es sich um einen Datenbankobjekt-Namespace, der genau die Objekte enthält, die vom Benutzer erstellt wurden und den Namen des Schemas gemeinsam verwenden. Aus einer anderen Perspektive betrachtet handelt es sich um die Beziehungen und Struktur von Objekten in einer Datenbank, die häufig sowohl den Besitz als auch den Namespace ignorieren.
Andrew Wolfe
2

Um den Unterschied zu verstehen, müssen wir zunächst sagen, dass diese Nomenklatur ein Fehler von Oracle war.

Ich gehe davon aus, dass Sie, wenn Sie ein ERP mit dem Namen TRITON haben, möchten, dass Ihre Datenbank den Namen TRITON trägt, oder wenn meine Firma den Namen JENNY EXPORT trägt, ich möglicherweise den Namen JENNYEXP für meine Datenbank entscheide und keinen Benutzer mit demselben Namen benötige .

In Oracle müssen Sie einen USER erstellen, bevor Sie die Tabellen erstellen, und seltsamerweise heißt diese TABLES-Auflistung SCHEMA.

Dann können Sie die tatsächlichen Benutzer erstellen und die entsprechenden Berechtigungen für die Arbeit mit einer Datenbank wie TRITON gemäß diesem Beispiel erteilen. Wenn Sie eine Verbindung über SQL DEVELOPER herstellen, müssen Sie übrigens EINE VERBINDUNG NAMEN.

Ich weiß, dass ich irgendwie frustriert klinge, aber es ist sinnvoller für mich, die MS SQL SERVER-Namenskonvention zu verwenden, und ich könnte hinzufügen, dass ich früher mit Oracle gearbeitet habe als mit SQL SERVER.

Glauco Guerrero
quelle
1

Datenbank.

Die Datenbank ist eine Sammlung von Daten, in denen tatsächlich Daten gespeichert sind. Es handelt sich um eine physische Speicherkomponente, die mit einem Computer verbunden ist, auf dem DBMS-Software installiert ist, um die Daten in dieser Speicherkomponente zu manipulieren. Der Computer, auf dem die dbms-Software installiert ist, heißt Server oder Datenbankserver. Sowohl Server (Computer) als auch Datenbank (Speicherkomponente) unterscheiden sich jedoch In den meisten Fällen als "Gleich" bezeichnet, je nach Situation.

USER und SCHEMA

Die beiden Wörter "Benutzer" und "Schema" sind austauschbar. Deshalb sind die meisten Leute mit diesen Wörtern verwirrt.

Benutzer

Benutzer ist ein Konto zum Verbinden der Datenbank (Server). Wir können Benutzer mit CREATE USER IDENTIFIED BY erstellen.

Schema

Tatsächlich enthält Oracle Database eine logische und physikalische Struktur zur Verarbeitung der Daten. Das Schema auch logische Struktur zur Verarbeitung der Daten in der Datenbank (Memory Component). Es wird automatisch von Oracle erstellt, wenn der Benutzer es erstellt. Es enthält alle Objekte, die vom diesem Schema zugeordneten Benutzer erstellt wurden. Wenn ich beispielsweise einen Benutzer mit dem Namen santhosherstellt habe santhosh, erstellt Oracle ein genanntes Schema. Oracle speichert alle vom Benutzer erstellten Objekte santhoshim santhoshSchema.

Wir können mithilfe der CREATE SCHEMAAnweisung ein Schema erstellen , aber Oracle erstellt automatisch einen Benutzer für dieses Schema.

Wir können das Schema mithilfe der DROP SCHEMA <name> RESTRICTAnweisung löschen, aber es kann keine im Schema enthaltenen Objekte löschen. Um das Schema zu löschen, muss es leer sein. hier zwingt Sie das einschränkende Wort, dieses Schema ohne Objekte anzugeben.

Wenn wir versuchen, einen Benutzer mit Objekten in seinem Schema CASCADEzu löschen, müssen wir word angeben, da Oracle das Löschen eines Benutzers mit Objekten nicht zulässt.

DROP USER <name> CASCADE

Damit löscht Oracle die Objekte im Schema und löscht den Benutzer dann automatisch. Objekte, die auf diese Schemaobjekte aus anderen Schema-Ansichten und privaten Synonymen verweisen, werden ungültig.

SanthoshReddy
quelle
-2

Ich möchte hinzufügen, dass die obigen Anweisungen für die Implementierung von Oracle gelten, aber andere Datenbanken, einschließlich SQL Server und PostgreSQL, das Schema nur als Namespace verwenden, dh als Methode zum Gruppieren von Objekten. Das Staging-Schema könnte beispielsweise alle in Staging-Daten verwendeten Objekte gruppieren, das Accounting-Schema könnte alle Objekte gruppieren, die sich auf das Accounting beziehen.

user3869678
quelle
Sie sind sich nicht sicher, worauf Sie sich beziehen, wenn Sie "Anweisungen oben" sagen, aber das Schema in SQL und Oracle ist eine Berechtigungsgruppierung. Mit anderen Worten, es ist nicht nur eine Möglichkeit, ähnliche Objekte zu gruppieren, sondern auch eine Möglichkeit, Objekte zu gruppieren, wodurch die Verwaltung von Berechtigungen vereinfacht wird, da Sie einem Schema Berechtigungen erteilen können und daher nicht jedem Objekt innerhalb des Schemas Berechtigungen erteilen müssen.
Thronk
-4

User! = Schema, User und Schema sind nicht identisch, werden jedoch synonym verwendet

user24990
quelle
2
Bitte füge Details hinzu, wie sie sich unterscheiden.
Erik
-4

Ich sage Ihnen nach Konzepten, die nicht auf einem von Ihnen verwendeten Datenbankverwaltungssystem basieren.

Konzeptionell: Datenbank: Ist nur ein Stapel von Daten, meist nicht verwaltete verwandte oder nicht verwandte Daten.

Schema: Schema bezieht sich auf die formale Strukturierung der nicht verwalteten verwandten / nicht verwandten Daten, damit sie von einem Verwaltungssystem verwaltet werden können, das die vom Schema bereitgestellte formale Definition versteht. Schema ist grundsätzlich ein Schema zur Übersicht. Zum Beispiel haben Sie XSD, das das Schema zum Erstellen von XML definiert. Sie haben RDBMS, das seine eigenen Schemata definiert, die auf Codd Rules basieren, die im Grunde Schemata zum Erstellen von RDBMS definieren.

Wenn Sie mehr darüber wissen möchten, klicken Sie auf diesen Link .

Der Benutzer verwendet die vom Schema angegebene formale Sprache, um auf die Datenbank zuzugreifen

Ajay Bhojak
quelle