Was ist der Unterschied zwischen einem Schema und einer Tabelle und einer Datenbank?

154

Dies ist wahrscheinlich eine n00blike (oder schlimmer) Frage. Aber ich habe ein Schema immer als Tabellendefinition in einer Datenbank angesehen. Das ist falsch oder nicht ganz richtig. Ich erinnere mich nicht viel an meine Datenbankkurse.

Anbanm
quelle
3
Im Oracle-Schema wird nur auf einen Benutzer verwiesen. Wenn wir einen Benutzer erstellen, wird das Schema erstellt. Jetzt können wir Tabellen, Ansichten,
Indexpakete

Antworten:

241

Schema : Datenbank : Tabelle :: Grundriss : Haus : Raum

MusiGenesis
quelle
80
Ein bisschen kryptisch, aber nicht falsch; aber glaubst du wirklich, ein selbsternannter n00b würde das verstehen?
Stein G. Strindhaug
6
Gute Analogie. Ich würde "Grundriss" in "Blaupausen" ändern, da das Schema mehr als nur Tabellen enthält und Blaupausen die Verkabelung, Heizung und Installation enthalten.
Paul Tomblin
4
"Schema" bedeutet eigentlich nur "Plan". Ich habe gesehen, dass es sich auf die gesamte Datenbank oder nur auf eine Tabelle oder Ansicht bezieht.
MusiGenesis
@ Paul: gute Punkte. Ich habe ursprünglich "Blaupausen" geschrieben, aber es geändert, weil es nicht wirklich "Haus" bedeutet (zumindest nicht für mich).
MusiGenesis
4
Ja, ich neige dazu, ein Schema als Benutzer in Oracle anzuzeigen. Die Definitionen variieren also sogar von Datenbank zu Datenbank: D Wie ärgerlich.
Robert
123

Ein Beziehungsschema ist die logische Definition einer Tabelle. Es definiert den Namen der Tabelle sowie den Namen und den Typ jeder Spalte. Es ist wie ein Plan oder eine Blaupause. Ein Datenbankschema ist die Sammlung von Beziehungsschemata für eine gesamte Datenbank.

Eine Tabelle ist eine Struktur mit einer Reihe von Zeilen (auch als "Tupel" bezeichnet), von denen jede die vom Schema definierten Attribute aufweist. Tabellen können auch Indizes enthalten, um das Nachschlagen von Werten in bestimmten Spalten zu erleichtern.

Eine Datenbank ist formal jede Sammlung von Daten. In diesem Zusammenhang wäre die Datenbank eine Sammlung von Tabellen. Ein DBMS (Database Management System) ist die Software (wie MySQL, SQL Server, Oracle usw.), die eine Datenbank verwaltet und ausführt.

Ian Varley
quelle
1
Ein Datenbankschema enthält auch Indizes, Ansichten usw.
Paul Tomblin
1
das ist doch nicht richtig. Eine Datenbank ist keine Sammlung von Tabellen als solche. Sie können beispielsweise 30 Datenbanken ohne eine Tabelle haben.
Robert
@ Robert - was wäre der Sinn einer Datenbank ohne Tabellen?
Paul Tomblin
16
Auch wenn Sie keine Tabellen haben, ist dies immer noch eine Sammlung von Tabellen - es ist eine leere Sammlung von Tabellen.
Jon Skeet
1
@Ian: Vergessen Sie nicht, dass eine Datenbank auch Einschränkungen aufweist - referenzielle Einschränkungen (Primärschlüssel, Fremdschlüssel), Eindeutigkeitsbeschränkungen und Überprüfungsbeschränkungen. Es kann auch Trigger und Prozeduren enthalten.
Jonathan Leffler
16

Kurz gesagt, ein Schema ist die Definition für die gesamte Datenbank. Es enthält also Tabellen, Ansichten, gespeicherte Prozeduren, Indizes, Primär- und Fremdschlüssel usw.

Graeme Perrow
quelle
12

Es wurde gezeigt, dass sich diese bestimmte Veröffentlichung nur auf Oracle bezieht, und die Definition des Schemas ändert sich im Kontext einer anderen Datenbank.

Wahrscheinlich die Art, einfach zu googeln, aber zu Ihrer Information scheinen die Begriffe in ihren Definitionen zu variieren, was die nervigste Sache ist :)

In Oracle ist eine Datenbank eine Datenbank. Stellen Sie sich dies in Ihrem Kopf als die Datendateien und die Redo-Protokolle und die tatsächliche physische Präsenz auf der Festplatte der Datenbank selbst vor (dh nicht die Instanz).

Ein Schema ist effektiv ein Benutzer. Insbesondere handelt es sich um eine Reihe von Tabellen / Prozessen / Indizes usw., die einem Benutzer gehören. Ein anderer Benutzer hat ein anderes Schema (Tabellen, die er / sie besitzt). Der Benutzer kann jedoch auch alle Schemas anzeigen, für die er Berechtigungen ausgewählt hat. Eine Datenbank kann also aus Hunderten von Schemas und jedem Schema aus Hunderten von Tabellen bestehen. Sie können Tabellen mit demselben Namen in verschiedenen Schemas haben, die sich in derselben Datenbank befinden.

Eine Tabelle ist eine Tabelle, eine Reihe von Zeilen und Spalten, die Daten enthalten und in Schemas enthalten sind.

Die Definitionen können beispielsweise in SQL Server unterschiedlich sein. Mir ist das nicht bewusst.

Robert
quelle
11

Das Verhalten eines Schemas scheint in der OOP-Welt wie ein übergeordnetes Objekt zu sein. Es ist also keine Datenbank. Vielleicht ist dieser Link nützlich.

In MySQL sind die beiden jedoch gleichwertig. Das Schlüsselwort DATABASE oder DATABASES kann überall dort durch SCHEMA oder SCHEMAS ersetzt werden. Beispiele:

  • CREATE DATABASE <=> CREATE SCHEMA
  • DATENBANKEN ANZEIGEN <=> SCHEMA ANZEIGEN

Dokumentation von MySQL

SCHEMA & DATABASE-Begriffe sind DBMS-abhängig.

Eine Tabelle ist eine Reihe von Datenelementen (Werten), die mithilfe eines Modells aus vertikalen Spalten (die durch ihren Namen gekennzeichnet sind) und horizontalen Zeilen organisiert sind. Eine Datenbank enthält eine oder mehrere (normalerweise) Tabellen . Und Sie speichern Ihre Daten in diesen Tabellen. Die Tabellen können miteinander verknüpft sein ( siehe hier ).

earthdan
quelle
wertvolle Antwort
sofs1
2

Mehr zu Schemata:

In SQL 2005 ist ein Schema eine Möglichkeit, Objekte zu gruppieren. Es ist ein Container, in den Sie Objekte legen können. Menschen können dieses Objekt besitzen. Sie können Rechte für das Schema gewähren.

Im Jahr 2000 entsprach ein Schema einem Benutzer. Jetzt hat es sich gelöst und ist sehr nützlich. Sie können alle Ihre Benutzerprozesse in ein bestimmtes Schema und Ihre Administratorprozesse in ein anderes Schema werfen. Wenn Sie dem entsprechenden Benutzer / der entsprechenden Rolle EXECUTE gewähren, können Sie EXECUTE für bestimmte Verfahren gewähren. Nett.

Die Punktnotation würde so lauten:

Server.Database.Schema.Object

oder

myserver01.Adventureworks.Accounting.Beans

Sam
quelle
2

A Schemaist eine Sammlung von Datenbankobjekten, die auch logische Strukturen enthält. Es hat den Namen des Benutzers, dem es gehört. A databasekann eine beliebige Anzahl von Schemas haben. Eine Tabelle aus einer Datenbank kann in zwei verschiedenen Schemas mit demselben Namen angezeigt werden. Ein Benutzer kann jedes Schema anzeigen, für das ihm ein Auswahlrecht zugewiesen wurde.

Iswarya
quelle
2

Wie MusiGenesis in den meisten Datenbanken so schön ausgedrückt hat:

Schema: Datenbank: Tabelle :: Grundriss: Haus: Raum

In Oracle ist es jedoch möglicherweise einfacher, sich Folgendes vorzustellen:

Schema: Datenbank: Tabelle :: Eigentümer: Haus: Raum

cmrust
quelle
2

Im Gegensatz zu einigen der oben genannten Antworten basiert mein Verständnis auf der Erfahrung mit jedem von ihnen:

  • MySQL: database/schema :: table
  • SQL Server: database :: (schema/namespace ::) table
  • Orakel: database/schema/user :: (tablespace ::) table

Bitte korrigieren Sie mich, ob der Tablespace bei Oracle optional ist oder nicht. Es ist lange her, seit ich mich daran erinnere, sie verwendet zu haben.

Sridhar Sarnobat
quelle
1

In Oracle Schema ist ein Benutzer unter einer Datenbank. Beispielsweise ist Scott ein Schema in der Datenbank orcl. In einer Datenbank haben wir möglicherweise viele Schemata wie Scott

prasadj
quelle
1

Eine Datenbank enthält ein oder mehrere benannte Schemas, die wiederum Tabellen enthalten. Schemata enthalten auch andere Arten von benannten Objekten, einschließlich Datentypen, Funktionen und Operatoren. Der gleiche Objektname kann ohne Konflikte in verschiedenen Schemas verwendet werden. Beispielsweise können sowohl schema1 als auch myschema Tabellen mit dem Namen mytable enthalten. Im Gegensatz zu Datenbanken sind Schemas nicht starr voneinander getrennt: Ein Benutzer kann auf Objekte in jedem der Schemas in der Datenbank zugreifen, mit der er verbunden ist, sofern er dazu berechtigt ist.

Es gibt mehrere Gründe, warum man Schemata verwenden möchte:

Damit viele Benutzer eine Datenbank verwenden können, ohne sich gegenseitig zu stören.

So organisieren Sie Datenbankobjekte in logischen Gruppen, um sie übersichtlicher zu gestalten.

Anwendungen von Drittanbietern können in separate Schemas eingefügt werden, damit sie nicht mit den Namen anderer Objekte kollidieren.

Schemas sind analog zu Verzeichnissen auf Betriebssystemebene, außer dass Schemas nicht verschachtelt werden können.

Offizielle Unterlagen finden Sie unter https://www.postgresql.org/docs/9.1/ddl-schemas.html

Siddharth Kumar
quelle
0

Schemata enthalten Datenbanken.

Datenbanken sind Teil eines Schemas.

Also, Schemata> Datenbanken.

Schemas enthalten Ansichten, gespeicherte Prozeduren, Datenbanken, Trigger usw.

Rafael Lopes
quelle
0

Ein Schema ist kein Plan für die gesamte Datenbank. Es ist ein Plan / Container für eine Teilmenge von Objekten (ex.tables) in einer Datenbank.

Dies bedeutet, dass Sie mehrere Objekte (z. B. Tabellen) in einer Datenbank haben können, die nicht unbedingt unter dieselbe Funktionskategorie fallen. Sie können sie also unter verschiedenen Schemas gruppieren und ihnen unterschiedliche Benutzerzugriffsberechtigungen erteilen.

Trotzdem bin ich mir nicht sicher, ob Sie eine Tabelle unter mehreren Schemata haben können. Die Management Studio-Benutzeroberfläche bietet eine Dropdown-Liste zum Zuweisen eines Schemas zu einer Tabelle, sodass nur ein Schema ausgewählt werden kann. Ich denke, wenn Sie es mit TSQL tun, können 2 (oder mehrere) verschiedene Objekte mit unterschiedlichen Objekt-IDs erstellt werden.

Gadam
quelle
0

Ein Datenbank - Schema ist ein Weg , um logisch Gruppenobjekte wie Tabellen, Views, Stored Procedures usw. Denken Sie an einem Schema als Container von Objekten. Und Tabellen sind Sammlungen von Zeilen und Spalten. Kombination aller Tabellen ergibt eine Datenbank.

Vivek Kronleuchter
quelle
1
Diese ersten Sätze sind genau die gleichen .... stackoverflow.com/a/29042133/2308683
OneCricketeer