387 Stimmen

Unterschied zwischen Schema / Datenbank in MySQL

Gibt es einen Unterschied zwischen einem Schema und einer Datenbank in MySQL? In SQL Server ist eine Datenbank ein Container auf höherer Ebene in Bezug auf ein Schema.

Ich habe gelesen, dass Create Schema und Create Database im Wesentlichen dasselbe in MySQL tun, was mich glauben lässt, dass Schemas und Datenbanken verschiedene Bezeichnungen für dieselben Objekte sind.

0 Stimmen

Eigentlich würde ich sagen, dass Schema besser ist als Datenbank, da MySQL eine Art von Datenbank ist und mehrere Datenbanken enthält, und manchmal verwendet man eine Datenbank, was dazu führt, dass viele Suchvorgänge das Ziel verfehlen.

452voto

eggyal Punkte 117991

Wie im MySQL Glossar definiert:

In MySQL ist ein Schema physisch mit einer Datenbank gleichbedeutend. Sie können das Schlüsselwort SCHEMA anstelle von DATABASE in der MySQL SQL-Syntax verwenden, z.B. CREATE SCHEMA anstelle von CREATE DATABASE.

Einige andere Datenbankprodukte ziehen einen Unterschied. Zum Beispiel repräsentiert in der Oracle-Datenbank ein Schema nur einen Teil einer Datenbank: die Tabellen und anderen Objekte, die einem einzigen Benutzer gehören.

119 Stimmen

Ich denke, dass "einige andere Datenbankprodukte" wirklich ein Euphemismus für fast jede andere Datenbank ist (vielleicht mit Ausnahme von SQLite, aber das ist verständlich).

7 Stimmen

Das Bezeichnen von Schema als gleichbedeutend mit Datenbank ist interessant - ich habe es immer mit Benutzerobjekten verbunden. Und eine freundliche Erwähnung von SQLServer, der das Benutzer/Schema-Konzept getrennt hat, was eine Menge Flexibilität und interessante Möglichkeiten für dynamische Abfragen ermöglicht.

2 Stimmen

Das Ärgerliche an der Definition von "Schema" als Gruppierung von Datenbankobjekten ist, dass es die ältere Bedeutung des Wortes überlastet, z. B. de.wikipedia.org/wiki/Datenbankschema.

97voto

user2631022 Punkte 901

Je nach Datenbankserver. MySQL ist es egal, es ist im Grunde dasselbe.

Oracle, DB2 und andere Unternehmensdatenbanklösungen machen einen Unterschied. Normalerweise ist ein Schema eine Sammlung von Tabellen und eine Datenbank eine Sammlung von Schemas.

8 Stimmen

Selbst Microsoft SQL Server hat eine sehr ähnliche Unterscheidung wie Oracle und DB2 für diesen Fall.

7 Stimmen

In MySQL ist "Datenbank" und "Schema" im Grunde genommen nicht dasselbe; es ist genau dasselbe (zum Beispiel sind create database und create schema Synonyme). In Oracle ist Schema gleichbedeutend mit Benutzer (vielleicht genauer gesagt ist ein Schema eine Liste aller unter einem Benutzer erstellten Objekte). MSSQL unterscheidet alle drei voneinander (und daher muss beim Zugriff auf eine Tabelle aus einer anderen Datenbank der Name sowohl nach Datenbank als auch nach Schema qualifiziert werden, z.B. database1.dbo.table2)

0 Stimmen

In älteren Versionen von SQL Server war ein Schema praktisch ein Benutzer. Zum Glück ist das heute nicht mehr der Fall.

23voto

Akash KC Punkte 15481

Bezugnehmend auf die MySql-Dokumentation,

CREATE DATABASE erstellt eine Datenbank mit dem angegebenen Namen. Um diese Anweisung zu verwenden, benötigen Sie das CREATE-Privileg für die Datenbank. CREATE SCHEMA ist ab MySQL 5.0.2 ein Synonym für CREATE DATABASE.

21voto

Jean-Michel P. Punkte 189

PostgreSQL unterstützt Schemata, die eine Untermenge einer Datenbank darstellen: https://www.postgresql.org/docs/current/static/ddl-schemas.html

Ein Datenbank enthält ein oder mehrere benannte Schemata, die wiederum Tabellen enthalten. Schemata enthalten auch andere Arten von benannten Objekten, einschließlich Datentypen, Funktionen und Operatoren. Derselbe Objektname kann in verschiedenen Schemata ohne Konflikt verwendet werden; zum Beispiel können sowohl schema1 als auch myschema Tabellen mit dem Namen mytable enthalten. Im Gegensatz zu Datenbanken sind Schemata nicht starr voneinander getrennt: Ein Benutzer kann auf Objekte in einem beliebigen Schema in der Datenbank, mit der er verbunden ist, zugreifen, wenn er die Berechtigungen dazu hat.

Schemata sind auf Betriebssystemebene analog zu Verzeichnissen, mit der Ausnahme, dass Schemata nicht geschachtelt werden können.

Meiner bescheidenen Meinung nach ist MySQL keine Referenzdatenbank. Man sollte niemals MySQL für eine Erklärung zitieren. MySQL implementiert nicht standardmäßiges SQL und beansprucht manchmal Features, die es nicht unterstützt. Zum Beispiel erstellt der Befehl CREATE SCHEMA in MySQL nur eine DATENBANK. Das führt Benutzer wirklich in die Irre.

Diese Art von Vokabular wird von DBAs als "MySQLismus" bezeichnet.

4 Stimmen

Und dann gibt es auch noch "Schemata", um Anfänger zu verwirren :)

0 Stimmen

@Zeni, was genau ist ein Schema in MySQL? Alles, was ich finden konnte, sind Verweise auf die information_schema Schemata Tabelle, aber keine prägnante Definition, was es eigentlich bedeutet

1 Stimmen

@Alf47 "Schemata" ist nur die Mehrzahlform des Wortes "Schema". "Schemas" ist auch akzeptabel, aber nicht so fancy :)

11voto

Riz Punkte 101

In MySQL Schema ist ein Synonym für Datenbank. Es ist ziemlich verwirrend für Anfänger, die zu MySQL wechseln und am allerersten Tag das Wort Schema finden, also Leute macht euch keine Sorgen, da beide dasselbe sind.

Wenn Sie MySQL zum ersten Mal starten, müssen Sie eine Datenbank erstellen (wie bei jedem anderen Datenbanksystem), damit Sie damit arbeiten können, also können Sie CREATE SCHEMA verwenden, was nichts anderes als CREATE DATABASE ist.

In einigen anderen Datenbanksystemen repräsentiert Schema einen Teil der Datenbank oder eine Sammlung von Tabellen, und die Sammlung von Schema ist eine Datenbank.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X