Virtabs: Datenbank-Voraussetzungen

Der von ER2SQL erzeugte SQL-Code muss auf dem Datenbankserver mit einer Oberfläche wie SQL*Plus übersetzt werden, damit die definierten Datenobjekte Teil der Datenbank werden.

Anforderungen an die Datenbank

Damit Virtabs eingesetzt werden können, muss die zugrunde liegende Datenbank folgende Bedingungen erfüllen:

  1. in der Datenbank kommen nur 1:n- und 1:1-Beziehungen vor, 1:1-Beziehungen müssen über einen Fremdschlüssel in einer der beiden Tabellen realisiert sein.
  2. jede Tabelle hat einen Primärschlüssel (nicht zusammengesetzt).
  3. für jeden Primärschlüssel muss eine Sequenz mit Namen 'seq_'<primarykeyname> vorhanden sein. Als Folge davon müssen die Primärschlüssel-Spalten der verschiedenen Tabellen einzigartige Namen tragen. (Schlüsselwort PRIMARYKEY im er2sqlo - Definitionsdatei).
  4. jede Tabelle kann einen aus mehreren Spalten bestehenden Zweitschlüssel haben (Schlüsselwort IDENTIFYING im er2sqlo - Definitionsdatei), von denen ggf. auch Spalten NULL sein können (Schlüsselwort NULL in der ER2SQL-Definitionsdatei).
  5. Auf die Kombination der Zweitschlüssel-Spalten sollte ein UNIQUE-Constraint gesetzt werden.
  6. Fremdschlüssel sollten immer die Constraints NOT NULL und REFERENCES haben.
  7. Generell darf in der Datenbank kein Objekt mit einem Namen exisiteren, der mit Virtab-SQL-Objekten kollidiert (siehe Namenschema).
  8. Die erzeugten Prozeduren werden im SYSTEM-Tablespace abgelegt, der SYSTEM-Tablespace muss also ausreichend gross sein.
  9. auf jeden Fremdschlüssel sollte ein INDEX gesetzt sein.
  10. Der User, der den Code unter Oracle kompiliert, muss Zugriff auf alle in der Definitionsdatei erwähnten Datenbank-Tabellen haben. Die Teilobjekte der Virtab (Views, Prozeduren, Tables, Trigger) gehören dann diesem Benutzer, er muss sie ggf. freigeben/exportieren.

 

[Referenz] [ER2SQL cmdline] [DB-Voraussetzungen] [Definitionsfile-Aufbau] [Syntax: TABLE und LINK] [Syntax: VIRTUALTABLE] [Syntax: TABLE] [Syntax: COLUMN] [Syntax: CONSTRAINT] [Syntax: USES, MODIFY, ...] [Fehler von ER2SQL] [Laufzeitfehler] [Syntax-Hervorhebung] [SQL-Objekt-Namen]