Innovator 11 eXcellence DDL importieren Data-Definition-Language-Dateien in HowTo Datenbankschema importieren www.mid.de HowTo DDL importieren Zweck In Innovator Data eXcellence können Sie mit dem DDL-Import Ihr physisches Modell initial befüllen. Dabei können Sie das Datenbankschema Ihrer physischen Datenbank verwenden. Eine Aktualisierung des physischen Modells wird nicht unterstützt. Anforderungen Ihr physisches Modell muss das Profil DB Base importieren (Dialogbox Bearbeiten/Eigenschaften, Register Importierte Profile). Einstieg So gehen Sie vor Um ein Datenbankschema in Innovator zu erstellen und aus einer DDL-Datei initial zu befüllen: » Legen Sie Im Modellbrowser unterhalb des Systemmodells mit dem Menübefehl Element> Neu>Modell>Physisches Modell ein physisches Modell an. » Legen Sie unterhalb des Physischen Modells mit dem Menübefehl Element>Neu>Modell> Datenbankkatalog einen Datenbankkatalog an. » Legen Sie unterhalb des Datenbankkatalogs mit dem Menübefehl Element>Neu>Modell> Datenbankschema eine Datenbankschema an. » Selektieren Sie das Datenbankschema. » Um das Schema aus der DDL-Datei zu befüllen, rufen Sie die Engineering-Aktion DDL importieren auf. » Wählen Sie die zu importierende Datei aus Ihrem Dateisystem aus und bestätigen Sie mit OK. Funktionalität Der Import ignoriert alle Modellelemente, die bereits im Datenbankschema existieren. Das bedeutet, dass keine Beziehungen zwischen den vorhandenen und den importierten Modellelementen erzeugt werden können. Die einzige Ausnahme ist das Datenbankschema, das Sie für den Import ausgewählt haben. Wenn Sie also dieselbe DDL-Datei zweimal in dasselbe Datenbankschema importieren, werden Sie Fehlermeldungen erhalten, weil die Modellelemente bereits existieren. Das komplette physische Datenbankmodell muss in einer DDL-Datei enthalten sein. Alle Datenbankobjekte, die in der DDL-Datei verwendet werden, müssen in einer Datei angelegt werden. Es darf also 1 HowTo DDL importieren z. B. kein Fremdschlüssel auf eine Tabelle angelegt werden, die nicht auch in dieser DDL-Datei angelegt wird. Anpassung Argumente Sie können das Verhalten des Imports verändern, wenn Sie Argumente der Engineering-Aktion setzen. Liste aller verfügbaren Argumente: • DataPrint Ausgabe des geparsten DDL. Standardwert ist "false". • bCombinePrivilege Verschiedene Privilegien derselben Aktion kombinieren. Der Standardwert ist "true". • bIgnoreUnresolved Nicht aufgelöste Referenzen ignorieren. Der Standardwert ist "false". • sCreation Der Name der Spezifikation, die die Stereotype enthält. Der Standardwert ist "". • sDirectory Verzeichnis der DDL Dateien • sCustomerAdapter Siehe Kapitel "Kundenadapter". Der Standardwert ist "de.mid.innovator.ddlimport.DefaultAdapter". • bAbortOnError Bei Auftreten eines Fehlers abbrechen. Der Standardwert ist "false". • bDebug Debugausgaben einschalten. Der Standardwert ist "false". • bDisableAPICache Puffer der Innovator-API ausschalten. Der Standardwert ist "true". • bDisableCache Puffer der Anwendung ausschalten. Der Standardwert ist "false". • bIgnoreSelection Auswahl ignorieren. Der Standardwert ist "false". • bShowDialog Zeige den Dialog. Der Standardwert ist "true". • bShowReport Zeige den Bericht. Der Standardwert ist "true". • bSilent Keine Ausgabe. Der Standardwert ist "false". • iFontsize Schriftgröße. Der Standardwert ist "20". • sInodir absoluter INODIR-Verzeichnisname. Standard ist "$(INODIR)". • sInotmp absoluter INOTMP-Verzeichnisname. Standard ist "$(INOTMP)". • sTitle Titel der Anwendung. Standard ist "DDL importieren". Stereotype für neue Modellelemente Sie können die Stereotype angeben, die für das Anlegen von Modellelementen verwendet werden. Diese müssen in einer Spezifikation am Zielmodell stehen. Sie können den Namen der Spezifikation, in der die Stereotype stehen, als Argument 'sCreation' der Engineering-Aktion mitgeben. Wenn Sie 2 HowTo DDL importieren keinen Namen mitgeben, wird die ausgelieferte Spezifikation aus der Datei INODIR/java/ InoIMInOut/bin/InoIMInOut.jar verwendet. Für jeden Elementtyp gibt es einen Eintrag für den Profilnamen und einen Eintrag für den Stereotypnamen. Drei Felder bestimmen, welche Spezifikation für die Beschreibung der Tabelle, der View und der Spalte verwendet wird. Ein Beispiel der Datei ist <?xml version="1.0" encoding="utf-8"?> <Stereos> <StereotypeRootProfile>Data eXcellence</StereotypeRootProfile> <StereotypeRootName>package</StereotypeRootName> <StereotypeTableProfile>Data eXcellence</StereotypeTableProfile> <StereotypeTableName>table</StereotypeTableName> <StereotypeTableColumnProfile>Data eXcellence</StereotypeTableColumnProfile> <StereotypeTableColumnName>tableColumn</StereotypeTableColumnName> <StereotypePrimaryKeyProfile>Data eXcellence</StereotypePrimaryKeyProfile> <StereotypePrimaryKeyName>dbKey</StereotypePrimaryKeyName> <StereotypeForeignKeyProfile>Data eXcellence</StereotypeForeignKeyProfile> <StereotypeForeignKeyName>dbForeignKey</StereotypeForeignKeyName> <StereotypeIndexedColumnProfile>Data eXcellence</StereotypeIndexedColumnProfile> <StereotypeIndexedColumnName>indexedColumn</StereotypeIndexedColumnName> <StereotypeIndexProfile>Data eXcellence</StereotypeIndexProfile> <StereotypeIndexName>index</StereotypeIndexName> <StereotypeDTDProfile>Data eXcellence</StereotypeDTDProfile> <StereotypeDTDName>datatypeDefinition</StereotypeDTDName> <StereotypeDependencyProfile>Data eXcellence</StereotypeDependencyProfile> <StereotypeDependencyName>depend</StereotypeDependencyName> <StereotypeUniqueKeyFeatureProfile>Data eXcellence </StereotypeUniqueKeyFeatureProfile> <StereotypeUniqueKeyFeatureName>featureUniqueKey</StereotypeUniqueKeyFeatureName> <StereotypeKeyRelationshipFeatureProfile>Data eXcellence </StereotypeKeyRelationshipFeatureProfile> <StereotypeKeyRelationshipFeatureName>featureKeyRelationship </StereotypeKeyRelationshipFeatureName> <StereotypeTableOptionProfile>Data eXcellence</StereotypeTableOptionProfile> <StereotypeTableOptionName>dbOption</StereotypeTableOptionName> <StereotypeTableColumnOptionProfile>Data eXcellence </StereotypeTableColumnOptionProfile> <StereotypeTableColumnOptionName>dbOption</StereotypeTableColumnOptionName> <StereotypePrimaryKeyOptionProfile>Data eXcellence </StereotypePrimaryKeyOptionProfile> <StereotypePrimaryKeyOptionName>dbOption</StereotypePrimaryKeyOptionName> <StereotypeForeignKeyOptionProfile>Data eXcellence </StereotypeForeignKeyOptionProfile> <StereotypeForeignKeyOptionName>dbOption</StereotypeForeignKeyOptionName> <StereotypeIndexOptionProfile>Data eXcellence</StereotypeIndexOptionProfile> <StereotypeIndexOptionName>dbOption</StereotypeIndexOptionName> <StereotypeIndexedColumnOptionProfile>Data eXcellence </StereotypeIndexedColumnOptionProfile> <StereotypeIndexedColumnOptionName>dbOption</StereotypeIndexedColumnOptionName> <DescriptionTable>DDL COMMENT</DescriptionTable> <DescriptionColumn>DDL COMMENT</DescriptionColumn> <StereotypeDBUserProfile>Data eXcellence</StereotypeDBUserProfile> <StereotypeDBUserName>user</StereotypeDBUserName> <StereotypeDBRoleProfile>Data eXcellence</StereotypeDBRoleProfile> <StereotypeDBRoleName>role</StereotypeDBRoleName> 3 HowTo DDL importieren <StereotypeDBRoleAuthorizationProfile>Data eXcellence </StereotypeDBRoleAuthorizationProfile> <StereotypeDBRoleAuthorizationName>roleAuthorization </StereotypeDBRoleAuthorizationName> <StereotypeViewProfile>Data eXcellence</StereotypeViewProfile> <StereotypeViewName>view</StereotypeViewName> <DescriptionView>ViewText</DescriptionView> <StereotypeViewColumnProfile>Data eXcellence</StereotypeViewColumnProfile> <StereotypeViewColumnName>viewColumn</StereotypeViewColumnName> </Stereos> Kundenadapter Sie können während des Imports von DDL-Dateien weitere Aktionen durchführen, die im Standard nicht durchgeführt werden. Dazu können Sie mit der Programmiersprache Java Methoden erstellen, die während des Imports aufgerufen werden. Die Methoden müssen sich in einer Klasse befinden, deren qualifizierten Namen Sie der Engineering-Aktion per Argument sCustomerAdapter bekannt machen. Desweiteren muss die Klasse die Schnittstelle de.mid.innovator.ddlimport.AdapterInterface implementieren. Es gibt zwei Methoden, die Sie implementieren können: • precommit wird aufgerufen, bevor die Modellelemente erzeugt werden • postcommit wird aufgerufen, nachdem die Modellelemente erzeugt wurden Außerdem müssen Sie die kompilierte Klasse im Klassenpfad der Engineering-Aktion bereitstellen. Beispiel: Die Methode soll für jede Tabelle, die angelegt wurde, einen Zähler am Schema erhöhen. Zusätzliches Argument der Engineering-Aktion sCustomerAdapter="de.mid.example.Counter" Quelltext der Java-Klasse Counter.java package de.mid.example; import java.util.List; import de.mid.innovator.srv.excellence.InoSrvObject; public class Counter implements AdapterInterface{ public void precommit(InoSrvObject pack, List<SQLCommand> listCommand) { return; } public void postcommit(InoSrvObject pack, List<SQLCommand> listCommand) { int iCount = 0; for (SQLCommand command:listCommand){ if (SQLCommand.CMD.CREATE_TABLE.equals(command.CMD)){ iCount++; } } pack.setLabel("counter", String.valueOf(iCount)); return; } } 4 HowTo DDL importieren Begriffe Konzeptionelles Modell auch bekannt als logisches Datenmodell oder ER-Modell. Es beschreibt die Datenstrukturen in ihrer abstrakten Form. Das konzeptionelle Modell muss in der dritten Normalform (3NF) normalisiert sein. Physisches Modell auch bekannt als physikalisches Datenmodell oder Datenbankmodell. Es hält die präzise Spezifikation für ein bestimmtes Datenbankdesign in einer bestimmten Konfiguration. Das physische Modell ist nicht die Datenbank, aber es kann verwendet werden, um die DDL-Datei zu generieren. Ableitung der Vorgang des Anlegens und Änderns eines Modells aus einem anderen Modell anhand der Abbildungsvorschrift. Abbildung die Abbildungsvorschrift beschreibt, welches Modellelement von welchem Modellelement abgeleitet werden soll. DDL ist ein Akronym für Database Definition Language (englisch für Datenbankdefinitionssprache). Es beschreibt das Datenbankschema einschließlich der Tabellen, Views, Schlüssel, Indizes, Prozedurem, Trigger, Benutzer, Rollen, etc. Sie können mit Hilfe dieser Sprache das Modell verändern. Die Sprache ist eine Untermenge von SQL. SQL ist ein Akronym für Structured Query Language (englisch für strukturierte Abfragesprache). Es ist eine Obermenge von DDL. Außer Operationen auf dem Schema, können Sie damit auch die Inhalte lesen und verändern. Copyright © 2010 MID GmbH Bei Fragen wenden Sie sich bitte an unsere Hotline. Telefon: +49 (0)911 96836-222, E-Mail: [email protected]. Dieses Dokument finden Sie neben anderen auch im exklusiven Login-Download-Bereich für Innovator-Wartungskunden unter http://www.mid.de/support/. Ihre MID Innovator 11.3 HowTo DDL Import 101015.doc MID GmbH, Kressengartenstraße 10, 90402 Nürnberg Telefon: +49 (0)911 96836-0, Fax: +49 (0)911 96836-100, E-Mail: [email protected], Internet: http://www.mid.de 5