Uncategorized

Das Datenbankschema

Ihre Informationen in einem Data Warehouse mit Datenbankschema sichern

Der Begriff Datenbankschema beschreibt eine Sammlung von zusammenhängenden Objekten wie Tabellen, Ansichten und Indizes, die ein Nutzer oder eine Anwendung besitzt. In der Actian Data Platform hat jeder Nutzer ein implizites Schema, das für ihn erstellt wurde, es sei denn, er verwendet eine CREATE SCHEMA-Anweisung.

Arten von Datenbankschemata

Die beiden Haupttypen von Schemata sind logische und physische Schemata. Beim Entwurf einer Datenbank zur Speicherung von Anwendungsdaten beginnt ein Anwendungsentwickler in der Regel mit einem Entity-Relationship-Modell, das die Beziehungen zwischen den Geschäftselementen abbildet. Der nächste Schritt besteht darin, ein normalisiertes Datenbankdesign zu erstellen, das Details über jede Entität, ihre Attribute und Schlüssel enthält. Dies bildet die Grundlage für die SQL-Anweisungen, die zur Erstellung von Tabellen mit ihren Spalten, Primär- und Fremdschlüsselbeziehungen und referentiellen Integritätsbeschränkungen verwendet werden.

Zusätzlich zu den logischen Schemata, die Anwendungen unterstützen, gibt es den Begriff des Schemas, das Objekte enthält, die ein Nutzer erstellt. Dies wird gemeinhin als Nutzer bezeichnet. Zum Beispiel ist das Objekt SCOTT.DEPT eine Tabelle namens DEPT im Nutzer SCOTT.

Ein physisches Schema definiert, wie der logische Datenbankentwurf auf physische Geräte wie Solid-State-Speichergeräte (SSD) und Festplatten abgebildet wird. Viele Datenbanken haben den Begriff eines DBSPACE oder TABLESPACE, der einem physischen oder virtuellen Speichergerät zugeordnet ist. Die CREATE TABLE-Anweisung kann optional den DBSPACE oder TABLESPACE angeben, um sicherzustellen, dass die Tabelle auf einem bestimmten Gerät gespeichert wird. Dies wird in der Regel getan, um IO-Konflikte zu minimieren.

Anforderungen an die Schema-Integration

Unter Datenbankschema-Integration versteht man die Integration von zwei oder mehr diskreten Datenbankschemata in ein einziges, einheitliches Schema. Im Folgenden finden Sie einige wichtige Überlegungen zur Integration von Schemata:

  • Datenbankobjekte müssen auf die Geschäftseinheit abgebildet werden, die sie repräsentieren, damit Überschneidungen oder Konflikte erkannt und integriert werden können.
  • Datentypen müssen homogenisiert werden. Ein Schema kann ein festes Zeichenformat verwenden, um die Speicherkapazität zu optimieren, während ein anderes ein variables Format mit Blick auf die Flexibilität standardisiert hat
  • Schlüssel und Einschränkungen können sich von Schema zu Schema unterscheiden, da ihre Anwendungen unterschiedliche Zugriffsmuster erfordern können.
  • Ansichten können sich in verschiedenen Schemata unterscheiden. Performance Tuning führt oft dazu, dass Ansichten materialisiert werden
  • Tabellen können de-normalisiert und vorverknüpft werden, wodurch eine Designentscheidung getroffen wird, die korrigiert werden muss.
  • Redundante Objekte müssen entfernt werden, da die Anwendungsentwicklung dazu führt, dass neuere Objekte verwendet werden und verwaiste Objekte zurückbleiben.
  • Es ist sehr unwahrscheinlich, dass zwei Organisationen die gleichen Benennungsstandards verwenden, daher muss die Benennung abgestimmt werden.

Erstellen eines Schemas in der Actian Data Platform

Die CREATE SCHEMA-Anweisung erstellt eine benannte Sammlung von Datenbankobjekten. Die CREATE SCHEMA-Anweisung hat das folgende Format:

[EXEC SQL] CREATE SCHEMA AUTHORIZATION schema_name

              [object_definition {object_definition}];
schema_name

Gibt den effektiven Nutzer für die Sitzung an, die die CREATE SCHEMA-Anweisung ausführt.

Objekt_Definition

Ist eine CREATE TABLE-, CREATE VIEW- oder GRANT-Anweisung. Jeder Nutzer hat maximal ein Schema pro Datenbank.

Die Anweisungen innerhalb der CREATE SCHEMA-Anweisung müssen nicht durch Semikolon-Trennzeichen getrennt werden; die CREATE SCHEMA-Anweisung muss jedoch durch ein Semikolon nach der letzten Objektdefinitionsanweisung abgeschlossen werden. Wenn Objektdefinitionen weggelassen werden, wird ein leeres Schema erstellt.

Um Grant-Anweisungen in einer CREATE SCHEMA-Anweisung ausgeben zu können, müssen Sie über die erforderlichen Berechtigungen verfügen. Um ein Privileg auf ein Objekt zu gewähren, dessen Eigentümer Sie nicht sind, müssen Sie das Privileg WITH GRANT OPTION erhalten haben (siehe GRANT OPTION-Klausel).

Wenn eine CREATE SCHEMA-Anweisung ein bestehendes Schema (schema_name) angibt, gibt Actian Data Platform einen Fehler aus. Um Objekte zu einem bestehenden Schema hinzuzufügen, geben Sie die erforderlichen CREATE-Anweisungen außerhalb einer CREATE SCHEMA-Anweisung aus.

Wenn kein Schema für den effektiven Nutzer existiert, wird eines implizit erstellt, wenn ein Datenbankobjekt erstellt wird. Wenn anschließend eine CREATE SCHEMA-Anweisung für den Nutzer ausgegeben wird, gibt Actian Data Platform einen Fehler zurück.

Wenn innerhalb einer CREATE SCHEMA-Anweisung Tabellen erstellt werden, die referentielle Beschränkungen haben, ist die Reihenfolge der CREATE TABLE-Anweisungen nicht von Bedeutung. Dies unterscheidet sich von den Anforderungen für die Erstellung von Tabellen mit referentiellen Beschränkungen außerhalb einer CREATE SCHEMA-Anweisung, wo die referenzierte Tabelle existieren muss, bevor eine Beschränkung erstellt wird, die auf sie verweist. Weitere Informationen über referentielle Beschränkungen finden Sie unter CREATE TABLE.

Andere Benutzer können auf Objekte in Ihrem Schema verweisen, wenn Sie ihnen die erforderlichen Berechtigungen erteilt haben. Um auf ein Objekt in einem anderen Schema als dem Schema für den effektiven Nutzer der Sitzung zuzugreifen, geben Sie den Objektnamen wie folgt an:

schema.objekt

Nutzer Harry kann zum Beispiel Daten aus der Tabelle "Mitarbeiter" der Gruppe "Buchhaltung" auswählen (wenn die Buchhaltung Harry die Berechtigung "select" erteilt hat). Harry kann die folgende SELECT-Anweisung eingeben:

SELECT lname, fname from buchhaltung.mitarbeiter

Verriegelung

Die CREATE SCHEMA-Anweisung nimmt eine exklusive Sperre auf eine Seite im iischema-Katalog ein. Sperren werden von den einzelnen CREATE-Anweisungen innerhalb der CREATE SCHEMA-Anweisung erworben, aber erst freigegeben, wenn die CREATE SCHEMA-Anweisung selbst committed wird. Wenn die CREATE SCHEMA-Anweisung CREATE-Anweisungen enthält, die Sperren erwerben, die über das für Actian Data Platform konfigurierte Maximum hinausgehen, wird die CREATE SCHEMA-Anweisung abgebrochen.

Das folgende Beispiel zeigt, wie die Erstellung eines Actian-Schemas für den Nutzer Kontext für Unterobjekte liefert:

CREATE SCHEMA AUTHORIZATION buchhaltung
       CREATE TABLE mitarbeiter (lname CHAR(30) NOT NULL,
              fname CHAR(30) NOT NULL,
              gehalt MONEY,
              dname CHAR(10)
                     REFERENCES dept(deptname),
              PRIMARY KEY (lname, fname))

       CREATE TABLE dept(abtname CHAR(10) NOT NULL UNIQUE,
       ort CHAR(15),
       budget MONEY,
       Ausgaben MONEY DEFAULT 0)

       CREATE VIEW mgr(mlname, mfname, mdname) AS
         SELECT lname, fname, abtname FROM mitarbeiter,abteilung
           WHERE dname = abtname

       GRANT REFERENCES(lname, fname)
         ON TABLE employees TO harry;

Vorteile von Datenbankschemata

Die Verwendung von Datenbankschemata bietet viele Vorteile, darunter auch die unten aufgeführten:

  • Stellt den logischen Datenbankentwurf einer Anwendung dem physischen Entwurf gegenüber.
  • Bietet die Möglichkeit, Benutzer den von ihnen erstellten Objekten zuzuordnen.
  • Trennt Systemkataloge von Nutzer oder anwendungsspezifischen Datenbankobjekten.
  • Isoliert Anwendungen, die aus Sicherheitsgründen dieselbe Datenbankinstanz verwenden.
  • Gruppiert eine einzelne Anwendung oder Abteilungsdatenbank, damit sie als logische Einheit gesichert werden können.
  • Bietet die Möglichkeit, verwandte Objekte bestimmten Speicherpools oder Geräten der zweiten Ebene zuzuordnen.