Projektarbeit. Einsatz des postrelationalen Datenbankmanagment Systems Caché für die Datenbankausbildung



Ähnliche Dokumente
Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Kleines Handbuch zur Fotogalerie der Pixel AG

OP-LOG

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Installationsanleitung CLX.PayMaker Home

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

SANDBOXIE konfigurieren

Adminer: Installationsanleitung

Artikel Schnittstelle über CSV

Tutorial -

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

How to install freesshd

Netzwerk einrichten unter Windows

Live Update (Auto Update)

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Microsoft Dynamics NAV 2013 R/2 Installationsanleitung. Inhalt: Begleitmaterial des ERP Übungsbuchs:

Installationsanleitung CLX.PayMaker Office

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

TeamSpeak3 Einrichten

Kurzeinführung Excel2App. Version 1.0.0

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Installationsanleitungen

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

MS-SQL Client Installation

Import, Export und Löschung von Zertifikaten mit dem Microsoft Internet Explorer

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Anwenderhandbuch. ipoint - Server

DFÜ-Netzwerk öffnen Neue Verbindung herstellen Rufnummer einstellen bundesweit gültige Zugangsnummer Benutzererkennung und Passwort

Startmenü So einfach richten Sie surfen manuell auf Ihrem PC oder Notebook ein, wenn Sie Windows XP verwenden.

Installationsleitfaden kabelsafe backup professional unter MS Windows

Handbuch. SIS-Handball Setup

Aufklappelemente anlegen

Klicken Sie mit einem Doppelklick auf das Symbol Arbeitsplatz auf Ihrem Desktop. Es öffnet sich das folgende Fenster.

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Einkaufslisten verwalten. Tipps & Tricks

Handbuch B4000+ Preset Manager

ANLEITUNG ONECLICK WEBMEETING BASIC MIT NUR EINEM KLICK IN DIE WEBKONFERENZ.

Einführung... 3 MS Exchange Server MS Exchange Server 2007 Jounraling für Mailboxdatabase... 6 MS Exchange Server 2007 Journaling für

Betriebshandbuch. MyInTouch Import Tool

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Dokumentation IBIS Monitor

2.1 Grundlagen: Anmelden am TYPO3-Backend

Installation SQL- Server 2012 Single Node

Wireless LAN PCMCIA Adapter Installationsanleitung

Signierte s mit Mozilla Thunderbird

Starten der Software unter Windows 7

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Netzwerkinstallation der Lernwerkstatt 7 in der Linux-Musterlösung Bielefeld

unter runtergeladen werden.

Konfiguration Datenbank-Parameter

FastViewer Remote Edition 2.X

HostProfis ISP ADSL-Installation Windows XP 1

Anleitungen zum Publizieren Ihrer Homepage

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Benutzerverwaltung mit Zugriffsrechteverwaltung (optional)

Installationsleitfaden kabelsafe backup home unter MS Windows

I. Travel Master CRM Installieren

Outlook 2000 Thema - Archivierung

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Installationsanleitung INFOPOST

Import des persönlichen Zertifikats in Outlook Express

Verbinden von IBM Informix mit Openoffice mittels JDBC

Shellfire L2TP-IPSec Setup Windows XP

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Installationsanleitung unter Windows

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Bitte melden Sie sich als Administrator des Betriebssystems oder als Benutzer mit ausreichenden Installationsrechten an Ihrem PC an.

Verwendung des IDS Backup Systems unter Windows 2000

Durchführung der Datenübernahme nach Reisekosten 2011

Workflow. Installationsanleitung

Einrichtungsanleitungen Hosted Exchange 2013

Name des Servers auf dem die Produktiv-IL-Datenbank läuft. Name des Servers auf dem die Test-IL- Datenbank läuft

Installation und Sicherung von AdmiCash mit airbackup

ecall sms & fax-portal

System-Update Addendum

Migration NVC 5.x auf NEM/NPro (Migration eines bestehenden, produktiven NVC Verteilservers auf NEM/NPro)

DB2 Kurzeinführung (Windows)

Anleitung Captain Logfex 2013

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme

ClouDesktop 7.0. Support und Unterstützung. Installation der Clientsoftware und Nutzung über Webinterface

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

FTP-Server einrichten mit automatischem Datenupload für

Installation/Einrichtung einer Datenbank für smalldms

Installationsanleitung CLX.PayMaker Office (3PC)

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

Installationsanleitung CLX.NetBanking

etermin Einbindung in Outlook

MailUtilities: Remote Deployment - Einführung

MSDE 2000 mit Service Pack 3a

Transkript:

Einsatz des postrelationalen Datenbankmanagment Systems Caché für die Datenbankausbildung Name: MatrNr.: 013198 Semester: SS 2003

I NHALTSVERZEICHNIS Seite 1 EINLEITUNG...4 1.1 WAS IST CACHÉ...4 2 INSTALLATION...6 2.1 SYSTEMVORAUSSETZUNGEN...6 2.2 SOFTWAREINSTALLATION...6 2.3 JDBC / ODBC UND CACHÉ...11 3 ARBEITEN MIT CACHÉ...13 3.1 CACHE STOPPEN UND STARTEN...13 3.2 DIE DATENTYPEN...15 3.2.1 Arbeiten mit den verschiedenen Datentypen...16 3.3 DER CACHÉ SQL-MANAGER...17 3.3.1 User anlegen und vergeben von Rechten...18 3.3.2 Anmelden und Namespace Wechseln...20 3.3.3 Die erste Tabelle erstellen und verwalten...21 3.3.4 SQL-Anweisungen ausführen...23 3.3.5 Views erstellen und bearbeiten...24 3.3.6 Tabellen und Daten von externen Datenbanken importieren...25 3.3.7 Trigger in Caché...26 3.4 DAS TERMINAL...29 3.4.1 Die Eingabe über die Kommandozeile...30 3.4.2 Importieren von Dateien...32 3.4.2.1 Die Methode Systems.SQL.Oracle()...32 3.4.2.2 Die Methode DDLImport()....34 4 DER KONFIGURATIONSMANAGER...36 4.1 ERWEITERTE SQL EINSTELLUNGEN...37 4.2 EIN SQL-GATEWAY EINRICHTEN...38 Seite 2 von 61

5 SIEGERLISTE MIT ADO...39 6 DER CACHÉ WIZARD IN VISUAL BASIC...40 7 FAZIT...42 8 ANHANG...43 8.1 ÜBUNGSAUFGABEN...43 8.2 AUSGABEN...46 8.3 MUSTERLÖSUNG...51 8.4 IMPORTDATEI...51 8.5 SIEGERLISTE - SOURCECODE...58 Seite 3 von 61

1 E INLEITUNG Diese Projektarbeit soll eine Einführung in das Datenbankmanagmentsystem Caché sein. Ich werde darin verschiedene Tools und Oberflächen von Caché beschreiben. Dadurch soll der Umgang mit, und der Einstieg in Caché erleichtert werden. Caché ist eine objektorientierte Datenbank in der aber auch aus relationaler Sicht heraus mit Datenbanken gearbeitet werden kann. In dieser Projektarbeit befasse ich mich hauptsächlich mit dem relationalen Teil von Caché. Die Aufgabe der Projektarbeit war eine Anleitung für die SQL-Übungsaufgaben, aus der Vorlesung Datenbankmanagmentsysteme (DABS), mit Caché zu erstellen, die bestehende Importdatei und die Musterlösung anzupassen sowie die Ergebnisse bzw. die Bildschirmausgaben zu den Aufgaben zu dokumentieren. Desweiteren habe ich noch ein kurze Installationsanleitung für Caché erstellt und mich kurz mit Triggern in Caché befasst. Zum Abschluss habe ich die Aufgabe von Übungsblatt 4 (Siegerliste) in Visual Basic programmiert, der Datenbankzugriff erfolgt über ADO. 1.1 WAS IST CACHÉ Caché wurde von InterSystems Ende 1997 auf den Markt gebracht und hat seit seiner Einführung diverse Auszeichnungen, unter anderem das Online Database Derby 1997 und 1998 sowie den Informations- Management Award 1998, gewonnen. Laut Aussage von InterSystems ist Caché so konzipiert, dass es die komplexen Anforderungen der realen Welt optimal abbilden kann. Das kann man von relationalen Datenbanken nicht immer sagen kann. Deshalb wird es von InterSystems auch als postrelationales Datenbanksystem bezeichnet. Was bedeutet postrelational? Zunächst einmal ist die Bezeichnung postrelational eine Bezeichnung auf der Zeitachse. Also könnte man alle DBMS die nach den relationalen DBMS entwickelt wurden als postrelational bezeichen. So wird dieser Begriff auch häufig verwendet. Vossen [1994] verwendet den Begriff postrelational als eine Zusammenfassung für alle Datenbanken, die nicht mehr nur auf flachen Tabellen basieren, explizit nennt er verschachtelt-relationale, multidimensionale und objektorientierte DBMS als Beispiele. Alleine die zeitlich Betrachtung würde zu kurz greifen, viel mehr sollte man sich die veränderten Anforderungen vor Augen führen welche heute an ein modernes DBMS gestellt werden. Seite 4 von 61

So schreibt z.b. Vaskevitch [1992] in einem Bericht für das BYTE Magazine: Relational databases still make sense for many kinds of applications that lend themselves to expressions as simple sets of simple tables. However, to build applications that reflect the real world, you will have to find a way to take another two steps forward this time to a postrelational world. In diesem Sinne verstanden, hilft das postrelationale Modell von Caché die Beziehungen der realen Welt ohne unzulässige Vereinfachung abzubilden. Caché wird häufig im Gesundheitswesen eingesetzt so z.b. an der Berliner Charité oder in den Städtischen Kliniken Dortmund. Nach Angaben von InterSystems wird das derzeit größte Client/Server System der Welt mit über 30.000 Nutzern auf einer Caché-Umgebung im Gesundheitswesen ausgeführt. Es wird aber auch in der Logistik wie zum Beispiel beim Container- und Frachtumschlag im Hamburger Hafen eingesetzt. Als Client-Technologien unterstützt Caché u.a. Java, C++, ActivX, XML, Visual Basic und Delphi. Für den SQL Zugriff unterstützt Caché ADO, ODBC und JDBC. Für die Entwicklung von Web-Anwendungen stehen dem Entwickler verschiedene Skriptsprachen unter anderem Basic und Caché ObjektScript zur Verfügung. Caché basierende Anwendungen können ohne Änderung am bestehenden Code auf eine andere Plattform portiert werden. Außerdem können die Anwendungen auf den verschiedensten Plattformen wie zum Beispiel Unix, Linux, OpenVMS und Windows ausgeführt werden. Über die Homepage von InterSystems www.cache.de kann man Caché kostenlos downloaden oder als CD bestellen. Es handelt sich dabei um eine kostenlose Single-User Version die eine umfangreiche Dokumentation und einige Tutorials enthält. Darüber hinaus hat man die Möglichkeit den Support von InterSystems in Anspruch zu nehmen oder sich Informationen aus der Newsgroup von Intersystems zu holen. Allerdings ist die kostenlose Caché Version dahingehend eingeschränkt, dass kein Networking mit anderen Caché-Systemen möglich ist und keine externen Eingabegeräte angeschlossen werden können. Seite 5 von 61

2 I NSTALLATION Wie schon erwähnt kann man Caché auf den verschiedensten Plattformen nutzen. Ich befasse mich in diesem Kapitel mit der Installation von CD unter Windows. Caché arbeitet mit verschiedenen Herstellern von Software der Web- und Frontendprogrammierung zusammen. Möchten Sie Caché zusammen mit anderen Produkten, z.b. mit dem Dreamweaver von Macromedia oder Visual Basic verwenden, dann stellen Sie sicher, dass diese Software installiert ist bevor Sie Caché installieren. Caché erkennt dann die benötigten Verbindungen zu den Frontend und Web-Tools und installiert die erforderlichen Add-Ins bei der Installation gleich mit. 2.1 SYSTEMVORAUSSETZUNGEN Um Caché erfolgreich unter Windows zu installieren sollte Ihr System folgende Voraussetzung erfüllen: Windows 95, 98, 2000 (mit Service Pack 2), NT (mit Service Pack 4, 5 oder 6), XP 64 MB Hauptspeicher 110 MB freie Festplattenkapazität davon 100MB für die Software und 10 MB für die Installation. Einen konfigurierten TCP/IP Stack Bei Installation von CD, natürlich noch ein CD-Rom- Laufwerk 2.2 SOFTWAREINSTALLATION Haben Sie Caché von der Homepage von InsterSystems heruntergeladen starten Sie die installation durch ausführen der Datei CachePCkit.exe. Wenn Sie von CD installieren möchten gehen Sie wie folgt vor: Nach dem Einlegen der CD startet das Installationsprogramm alleine. Ist die Autostart-Funktion für ihr CD-Rom-Laufwerk ausgeschaltet starten Sie die autostart.exe in Ihrem CDRom-Verzeichnis selbst. Ein Browser startet, hier können Sie sich noch einige Informationen anzeigen lassen. Da die CD sowohl die Caché Versionen für Linx und Windows enthält führen Sie nun die setup.exe im Unterverzeichnis Windows auf der CD aus. Seite 6 von 61

Nach dem Sie die install.exe gestartet haben erscheint ein Fenster (Abb. 1), in dem Sie die Sprache auswählen können in der Sie Caché installieren möchten. Die Auswahl hat keinen Einfluss auf die Sprache der Dokumentation, sie ist immer in englisch. Klicken Sie auf <OK> wenn Sie die Auswahl beendet haben. Abb. 1 Danach erscheint das Lizensvertragsfenster (Abb. 2). Lesen Sie alles ;) sorgfältig, wenn Sie mit dem Vertrag einverstanden sind klicken Sie <Ja>. Abb. 2 Seite 7 von 61

Nun werden Sie gefragt in welchen Ordner Caché installiert werden soll (Abb. 3) Abb. 3 Wählen Sie einen Ordner aus oder geben Sie einen neuen Ordner an und bestätigen Sie mit <OK>. Wenn Sie einen Ordner angegeben haben der noch nicht existiert, werden Sie gefragt ob der neue Ordner angelegt werden soll (Abb. 4) Bestätigen Sie wieder mit <OK> wenn die Auswahl richtig ist. Abb. 4 Seite 8 von 61

Nun müssen Sie wählen welcher Character-Support installiert werden soll, Unicode oder 8-Bit (Abb. 5). Wählen Sie 8-Bit aus wenn Sie mit Daten arbeiten bei denen Buchstaben in 8-Bit gespeichert werden, wie z.b. in der deutschen Sprache. Wählen Sie Unicode aus wenn Sie mit einer Sprache arbeiten die ihre Buchstaben im Unicodeformat speichert z.b. japanisch. Abb. 5 Als nächstes zeigt Ihnen das Installationsprogramm die einzelnen Komponenten an die installiert werden (Abb. 6). Abb. 6 Seite 9 von 61

Sind alle Angaben richtig bestätigen Sie mit <Weiter>. Die Installation wird beendet. Nach Beendigung der Installation haben Sie die Möglichkeit sich die Getting-Started-Page anzusehen (Abb. 7). Diese Seite ist Teil der mitgelieferten Dokumentation und beinhaltet unter anderem Anmerkungen zur aktuellen Caché Version, eine kurze Einführung in Caché, eine Installationsanleitung und ein paar Informationen über unterstützte Betriebssysteme, Web-Server, Sprachen und der Kompatibilität zu älteren Caché Versionen. Klicken Sie auf <Beenden> um die Installation zu beenden. Ein Neustart von Windows ist nicht notwendig. Abb. 7 Seite 10 von 61

2.3 JDBC / ODBC UND CACHÉ Der ODBC Treiber von InterSystems wird bei der Installation gleich mit installiert, so dass Sie gleich starten können. Um den Caché ODBC Treiber nach Ihren Wünschen zu konfigurieren, wählen Sie über <Systemsteuerung -> Verwaltung -> Datenquellen -> SystemDSN> den Caché ODBC Treiber aus. In Abb. 7.1 sehen Sie das Caché ODBC Data Source Setup wo Sie folgende Konfigurationen vornehmen können: Name: Spezifiziert den Namen der DSN. Description: Optional können Sie hier noch eine Beschreibung eingeben. Host IP Address: Die IP Adresse des Caché Hosts. Host Port Number: Die Portnummer des Hosts. Standard bei Caché ist Port 1972. Caché Namespace: Spezifiziert den Namespace in dem Sie arbeiten möchten. User Name: Der Username unter dem Sie sich verbinden möchten Standardmäßig ist <_System> eingestellt. Password: Ihr Passwort. Standardmäßig für den User _System ist hier <sys> eingetragen. ODBC Log: Ist die Checkbox aktiviert, wird ein Logfile erzeugt welches die ODBC Client Log s aufzeichnet. Nutzen Sie dies nur zur Fehleranalyse da diese Option die Geschwindigkeit des Zugriffs über ODBC stark vermindert. Static Cursors: Ist die Checkbox aktiviert, ermöglicht dies die Unterstützung von statischen Cursor in Caché. Disable Query Timeout: Ist die Checkbox aktiviert ignoriert der ODBC T reiber die Timeout-Settings der ODBC Query. Unicode SQL Types: Aktivieren Sie diese Option nur wenn Sie mit Multibyte Charactersets arbeiten möchten wie z.b. in chinesisch, hebräisch oder japanisch. Seite 11 von 61

Nachdem Sie die ODBC Datenquelle konfiguriert haben können Sie mit dem Button <Test Connection> die Verbindung testen und prüfen ob die Datenquelle richtig funktioniert. Abb. 7.1 Der JDBC Treiber, CacheDB.jar, befindet sich nach der Installation im Verzeichnis C:\CacheSys\Dev\java\lib\. Wie eine Verbindung von einem Java-Client, zu Caché aufgebaut wird zeigt folgendes Beispiel: String url="jdbc:cache: String username="_system"; String password="sys"; //localhost:1972/user"; // oder Ihr eigener Username // oder Ihr eigenes Passwort dbconnection = CacheDatabase.getDatabase(url, username, password); Seite 12 von 61

3 A RBEITEN MIT C ACHÉ In Caché gibt es grundsätzlich zwei Möglichkeiten, mit SQL-Anweisungen und relationalen Datenbanken zu arbeiten. Ich werde beide, den SQL-Manager und das Caché Terminal beschreiben. Zumindest werde ich die Teile beschreiben, die man zum Lösen der SQL-Aufgaben aus der Vorlesung DABS benötigt, denn besonders das Terminal bietet eine große Auswahl an Funktionen und Methoden um mit Caché zu arbeiten. Zum Lösen der Aufgaben reicht eines der beiden Programme. Beide haben ihre Vor.- und Nachteile bzw. Eigenheiten, auf die ich in den entsprechenden Kapiteln hinweisen werde. In Kapitel 5 werde ich kurz auf Caché Studio eingehen, damit kann man dann in Visual Basic und dem intergrierte Cache-Wizard schnell eine kleine Anwendung erstellen. Zuerst jedoch zu den Grundlagen. 3.1 CACHE STOPPEN UND STARTEN Nach der Installation erscheint in der Taskleiste ein kleiner Würfel (Abb. 8), der Caché Cube. Abb. 8 Caché startet nach der Installation automatisch. Das Caché bereits läuft erkennt man am Caché Cube in der Taskleiste, ist der Cube wie in Abb. 8 dargestellt (dunkel) dann ist Caché bereits gestartet. Um Caché zu stoppen klicken Sie mit der Maus auf den Cube, es öffnet sich das Caché-Menu (Abb. 9), wählen Sie hier <Caché stoppen>. Seite 13 von 61

Abb. 9 Cache wird gestoppt (Abb. 10). Abb. 10 Der Cube in der Taskleiste ist nun hellgrau (Abb. 11). Abb. 11 Zum Starten klicken Sie einfach wieder auf den Cube in der Taskleiste und wählen Sie den Menupunkt <Caché starten>. Es erscheint der Startbildschirm von Caché (Abb. 12). Abb. 12 Seite 14 von 61

3.2 DIE DATENTYPEN Hier einige der Datentypen die Cache im Umgang mit SQL-Anweisungen unterstützt. BINARY MONEY, SMALLMONEY DATE DOUBLE, FLOAT, REAL BIT, INT, INTEGER, SMALLINT, TINYINT DEC, DECIMAL, NUMBER, NUMERIC CHAR, CHARACTER, VARCHAR, VARCHAR2 TIME DATETIME, TIMESTAMP Die interne Typendarstellung in Caché weicht bei einigen von den oben genannten Datentypen ab, da Caché die verschieden Datentypen umwandelt. So werden alle CHAR-Typen als Typ der Klasse %Library.String dargestellt. Aus Datetime wird %Library.TimeStamp und Number wird als %Library.Numeric. dargestellt. Die Details der internen Darstellung kann man sich im SQL-Manager anschauen. Bleibt noch zu erwähnen das Caché die Attribute NULL, NOT NULL, DEFAULT und PRIMARY KEY unterstützt. AUTO_INCREMENT kann man nur in Verbindung mit Caché Objects benutzen. Hinweis: Im Gegensatz zu MySQL unterstützt Caché auch Constraints. Man kann aber nicht in einer SQL-Anweisung eine Tabelle um eine Spalte erweitern und gleichzeitig der Spalte ein Constraint hinzufügen. Dazu benötigt man zwei Anweisungen. Beispiel: alter table Neu add (ID varchar2 (5)) alter table Neu add (constraint fk_neu foreign key (ID) references tabelle_x (ID_x)) Seite 15 von 61

3.2.1 ARBEITEN MIT DEN VERSCHIEDENEN DATENTYPEN Hier möchte ich ein paar Beispiele für das Arbeiten mit verschiedenen Datentypen aufführen. Besonders der Datentyp Date und Timestamp können in unterschiedlicher Weise abgefragt und in Tabellen eingefügt werden. Unter anderem werden für den Date-Typ folgende Werte unterstützt: insert into (, { d '1970-05-15' }, ) insert into (, '01/14/2003', ) insert into (, TO_DATE('1976.05.23', 'YYYY.MM.DD'), ) insert into (, TO_DATE('05.06.76', 'DD.MM.YY'), ) insert into (, TO_DATE('Tuesday May 30, 2000', 'DAY MONTH DD, YYYY'), ) insert into (, TO_DATE('30 May 2000'), ) zusätzlich über das Terminal noch Integer, insert into (, 51266, ) die Zählung beginnt am 31.12.1840, gezählt werden die Tage. Die Formatelemente sind hierbei: DD Wert zwischen 0-31 MM Wert zwischen 0-12 Mon Der Name des Monats in abgekürzter Schreibweise, Jan, Feb... MONTH Der Name des Monats in ungekürzter Schreibweise, January... YY Die zwei letzten Ziffern des Jahres YYYY Alle Ziffern des Jahres Der TimeStamp-Typ unterstützt folgende Werte: insert into (..., {ts '2002-10-24 08:01:00'},...) insert into (..., {ts '2002-10-24 08:01:'},...) insert into (..., '1996-08-22 15:00:00',...) Bei Numeric Datentypen wird die Anzahl der Stellen vor und nach dem Komma durch zwei mit Komma getrennt Zahlen in Klammer definiert. Bsp. Create table (..., nummer numeric(9,2),...) Für eine Zahl mit 9 Stellen vor dem Komma und 2 danach. Führende Nullen werden nicht dargestellt nachfolgende schon. Bei Integer und Numeric kann man sowohl mit als auch ohne Hochkommas arbeiten. Stringtypen, also alle Chartypen, werden in einfachen Hochkommas eingegeben. Seite 16 von 61

3.3 DER CACHÉ SQL-MANAGER Der SQL-Manager bietet Ihnen die Möglichkeit über eine grafische Oberfläche mit Ihren Tabellen zu arbeiten. Er bietet eine relationale Ansicht der Datenbank. Im SQL-Manager können Sie folgende Aktionen durchführen: Benutzer anlegen, verwalten Rechte zuweisen und verwalten SQL-Anweisungen durchführen Views anlegen und ändern Import und Export von Daten aus bzw. in ASCII-Dateien Tabellen und deren Daten anschauen Importieren von Tabellen und Daten aus anderen Datenbanksystemen Hinweis: Der SQL-Manager unterstützt aber nicht den Import von SQL-Skript-Dateien um Tabellen anzulegen oder Daten in Tabellen einzufügen. Starten Sie den SQL-Manager durch einen Klick auf den Caché Cube und die Auswahl des Menupunktes <SQL-Manager>. Wenn Sie den SQL Manager das erste Mal starten werden Sie automatisch als User: _Sytem angemeldet. Der User: _System wird bei der Installation von Caché automatisch angelegt und hat hier kein Password. Nach dem Starten erscheint folgendes Fenster (Abb. 13). In der linken Hälfte des Fensters sieht man oben den Server (hier Server) mit dem man verbunden ist und die Ordner für Rollen und die Benutzer die auf diesem Server eingerichtet sind. Darunter folgt der Namespace (hier USER) unter dem man angemeldet ist und die Ordner für die Tabellen und Views usw. Haben Sie noch keine Tabellen erstellt fehlen die Ordner unterhalb von <USER>. Abb. 13 Seite 17 von 61

3.3.1 USER ANLEGEN UND VERGEBEN VON RECHTEN Um sich einen eigenen Benutzer anzulegen klicken Sie mit der rechten Maustaste auf den Ordner <Benutzer> in der linken Hälfte des Fensters. Es erscheint folgendes Fenster (Abb. 14). Abb. 14 Geben Sie hier alle relevanten Daten an (Name, Kennwort und Kennwort bestätigen) und klicken Sie dann auf <OK> um den Benutzer anzulegen. Nach dem ein neuer Benutzer angelegt ist, kann man diesem im SQL-Manager Rechte zuweisen. Doppelklicken Sie hierzu auf den Ordner des neu angelegten Users. Unter <Recht> können sie dem User verschiedene Rechte, z.b. Benutzer anzulegen, zu ändern oder zu löschen, zuweisen (Abb. 15). Um Userrechte zu verwalten müssen Sie als USER: _SYSTEM angemeldet sein oder Ihrem zuvor erstellten User die Rechte vergeben. Seite 18 von 61

Abb. 15 Unter Zugriff sehen Sie ob des entsprechende Recht gewährt ist oder nicht. Unter <Objekt> werden die gewährten Rechte des USERS für Tabellen dargestellt. Hier gibt es drei Möglichkeiten : 1. Nicht gewährt 2. Gewährt 3. Gewährt mit Gewähroption (erlaubt es dem User Rechte zu vergeben Seite 19 von 61

3.3.2 ANMELDEN UND NAMESPACE WECHSELN Wenn Sie sich unter einem anderen Username anmelden möchten wählen Sie aus dem Menu <Datei> den Menupunkt <Change Namespace>. Es erscheint der Cache Connection Manager (Abb. 16). Abb. 16 Melden Sie sich hier mit Ihrem neuen Benutzernamen und Passwort an, damit ist sichergestellt, dass Tabellen die Sie anlegen auch Ihrem Benutzer zugeordnet werden und Sie die Rechte besitzen den Zugriff auf ihre Tabellen zu verwalten. Hier können Sie auch in einen anderen Namespace wechseln z.b. <SAMPLES> um sich die mitgelieferten Beispiele anzuschauen. Um mit den Samples zu arbeiten müssen Sie sich als User <_System> anmelden. Seite 20 von 61

3.3.3 DIE ERSTE TABELLE ERSTELLEN UND VERWALTEN Wenn Sie die erste Tabelle erstellen möchten wählen Sie aus dem Menu <Objekt> auf den Menupunkt <Abfrage>, es erscheint folgendes Fenster (Abb. 17). SQL-Anweisung ausführen Abb. 17 Beachten Sie, dass der Caché SQL-Manager kein <;> als Endekennung einer Anweisung benötigt. Geben Sie nun die entsprechende SQL-Anweisung ein. Ausgeführt wird die Anweisung durch drücken des obersten Buttons auf der rechten Seite des Fensters. War die Ausführung erfolgreich erhalten Sie eine Fertigmeldung in der unteren Hälfte des Fensters. Fehlermeldungen werden in einem Popupfenster angezeigt (Abb. 17.1). Abb. 17.1 Nachdem Sie erfolgreich die erste Tabelle erzeugt haben können Sie im SQL-Manager durch einen Doppelklick auf den Ordner <Tabellen> die Details der Tabelle anschauen (Abb. 18). Seite 21 von 61

Abb. 18 Unter <Allgemein> können Sie sich die Einzelheiten der Tabelle anschauen (Datentypen, benötigte und eindeutige Felder...). Wenn Sie nun die Spalten ihrer Tabelle sehen, werden Sie Spalten entdecken, die nicht mit der Create-Anweisung erzeugt worden sind. Diese Spalten (in diesem Fall ID und x_classname) werden von Caché automatisch erzeugt und intern von Caché verwendet und müssen nicht bei SQL-Anweisungen berücksichtigt werden Das Register Indizes zeigt z.b. den Primary Key. Die Register Trigger und Constraints zeigen, wie die Namen schon sagen, die zu der Tabelle gehörigen Trigger und Constraints an (das Thema Trigger wird später noch genauer erläutert). Unter gespeicherte Abfragen kann man sich bereits ausgeführte SQL-Anweisungen Anzeigen lassen. Nachdem Sie die erste Tabelle, wie oben beschrieben, erstellt haben können sie weitere Tabellen auch über das Register <Abfrage> erstellen (siehe nächstes Kapitel), genau so wie bereits bei Abb. 17 beschrieben. Seite 22 von 61

3.3.4 SQL-ANWEISUNGEN AUSFÜHREN Wenn SQL-Anweisungen mit dem SQL-Manager ausführen möchten klicken Sie, wie unter 3.3.3 beschrieben, auf den Ordner Tabellen und geben Sie die SQL-Anweisung im Register <Abfrage ausführen> ein. Starten Sie die Anweisung durch klicken auf den oberen Button auf der rechten Seite des Fensters. Die entsprechenden Abfrageergebnisse werden in der unteren Hälfte des Fenster angezeigt (Abb. 19). Fehlermeldungen werden wie in Abb. 17.1 dargestellt. SQL-Anweisung ausführen Bereits ausgeführte Anweisung durchblättern Abb. 19 Um bereits gespeicherte Anweisungen nochmals durchzuführen benutzen Sie den nach oben / nach unten Pfeil auf der rechten Seite des Fensters. Wie lange ausgeführte Anweisungen gespeichert werden, können Sie im Konfigurationsmanager einstellen, voreingestellt sind 7 Tage. Sollten Sie mit Tabellen arbeiten die viele Daten enthalten, werden nicht alle Ergebnisse bei Abfragen und nicht alle Daten beim Öffnen einer Tabelle angezeigt. Um alle Daten anzuzeigen, wählen Sie aus dem Menu <Optionen> den Menupunkt <Voreinstellungen> und ändern die Werte für Abfragen und Tabelle öffnen entsprechend ab. Seite 23 von 61

3.3.5 VIEWS ERSTELLEN UND BEARBEITEN Natürlich kann man in Caché Views auch mit SQL-Anweisungen erstellen, trotzdem möchte ich eine weitere Methode zeigen wie man im SQL-Manager Views erstellen und bearbeiten kann. Wählen Sie dazu den Ordner <Views> aus dem Verzeichnis SQLUser mit einem rechten Mausklick aus und wählen Sie den Menupunkt <neuer View>. Der View-Wizard wird gestartet (Abb. 19.1) Abb. 19.1 Geben Sie unter<name> den Namen der View ein und unter <View Text> die View-Anweisungen ohne den <create view...as...> Teil. Durch bestätigen mit <OK> wird die View erstellt. Der View Text kann jederzeit bearbeitet werden, indem man die View durch einen Doppelklick im Ordner View auswählt und den Button <Ansicht bearbeiten> wählt. Es öffnet sich, wie in Abb. 19.1, ein Fenster, in dem Sie den View Text genauso ändern können wie Sie ihn erstellt haben. Den Namen der View kann man nachträglich nicht mehr ändern. Seite 24 von 61

3.3.6 TABELLEN UND DATEN VON EXTERNEN DATENBANKEN IMPORTIEREN Der SQL-Manager bietet die Möglichkeit Tabellen und Daten von externen Datenbanken zu importieren. Dazu muss man im Konfigurationsmanager zuerst ein SQL-Gateway einrichten (siehe Kapitel 4). Ist das Gateway eingerichtet müssen Sie sich als User _System einloggen, ein Password ist hier nicht notwendig. Wählen Sie <Datenmigration> im Menu <Datei>, der Datenmigrations-Wizard wird gestartet. Klicken Sie auf <Weiter> und wählen Sie im nächsten Fenster die Verbindung aus, die Sie vorher im Konfigurationmanager eingerichtet haben. Es erscheint das in Abb. 19.2 dargestellte Fenster. Abb. 19.2 Hier können Sie die, in der externen Datenbank, enthaltenen Tabellen auswählen. Um die Daten und Tabellen zu importieren bestätigen Sie die Auswahl im nächsten Fenster mit <Fertigstellen>. Die Tabellen sind nun im SQL-Manager sichtbar. Damit andere User auf die Daten zugreifen können, müssen natürlich noch die entsprechenden Rechte vergeben werden. Seite 25 von 61

3.3.7 TRIGGER IN CACHÉ Für Trigger gibt es im SQL-Manager keinen Wizard. Um einen Trigger zu erstellen, geben Sie die SQL-Anweisung ein wie in wie in Kapitel 3.3.4 beschrieben,. Ein wesentlicher Unterschied zu den Triggern in Oracle ist, dass Trigger in Caché nur für ein Ereignis definiert werden können. Möchte man nun insert und update Ereignisse einer Tabelle überwachen benötigt man für jedes Ereignis einen eigenen Trigger. Die Syntax für das <CREATE TRIGGER...> Kommando ist in Caché wie folgt definiert: CREATE TRIGGER Name BEFORE/AFTER Event ORDER Integer ON Table REFERENCING Alias Action Name: Der Name des zu erstellenden Triggers. Event: Gibt den Typ des Trigger-Events an. Mögliche Werte sind, INSERT, DELETE oder UPDATE. Bei UPDATE Triggern können Sie nach UPDATE noch das Schlüsselwort OF verwenden um Spalten anzugeben die der Trigger berücksichtigen soll. Integer: Dieser Parameter ist optional. Wenn Sie mehrere Trigger definiert haben die auf der selben Tabelle zum selben Zeitpunkt und zum gleichen Ereignis arbeiten sollen gibt dieser Parameter die Reihenfolge an in der die Trigger ausgeführt werden sollen. Wird dieser Parameter nicht gesetzt werden die Trigger in der Reihenfolge ausgeführt in der sie erstellt worden sind. Table: Gibt die Tabelle an für die der Trigger erzeugt wurde. Alias: Dieser Parameter ist Optional. Er ermöglicht es Ihnen eine Referenz auf die vorhandenen (old) Werte einer Tabelle bzw. auf die neuen (new) Werte, die eingefügt werden sollen, zu erhalten. Action: Hier folgt der Programmcode des Triggers. Sie haben die Möglichkeit, am Anfang des Programmcodes anzugeben ob Sie SQL oder COS (Caché Object Skript) als Sprache für den Programmcode des Triggers verwenden möchten. Verwenden Sie dazu die Schlüsselwörter LAN- GUAGE SQL oder LANGUAGE COS. Wenn Sie die Definition der Sprache weglassen, wird standardmäßig SQL verwendet. Es folgt ein Beispiel zum Aufgabenblatt 5, Aufgabe 3 der Vorlesung DABS, bei der die Auslastung einer Arena korrigiert werden soll wenn eine neue Veranstaltung eingetragen, gelöscht bzw. ein Update auf die Tabelle Veranstaltung gemacht wird. Seite 26 von 61

CREATE TRIGGER auslastung AFTER INSERT ON Veranstaltung REFERENCING NEW as NewRow BEGIN UPDATE Arena set Arena.Auslastung = Arena.Auslastung + NewRow.Dauer where Arena.Auslastung > 0 and Arena.AID = NewRow.AID; UPDATE Arena set Arena.Auslastung = 0 + NewRow.Dauer where Arena.Auslastung IS NULL and Arena.AID = NewRow.AID; END Das kleine Beispiel zeigt die etwas veränderte Syntax im Vergleich zu den Triggern in Oracle. Hinweis: Man benötigt zusätzlich noch 2 weitere Trigger für das Löschen und für den Update der Daten. Caché wandelt die <Create Trigger...> Anweisung in Caché ObjectScript Code um. Ein Beispiel von Caché ObjectScript Code zu diesem Beispiel sieht wie folgt aus: New SQLCODE,%ROWID,%ROWCOUNT &sql(update Arena set Arena.Auslastung = Arena.Auslastung + :{Dauer*N} where Arena.Auslastung > 0 and Arena.AID = :{AID*N}) If SQLCODE<0 Set %ok=0 Quit &sql(update Arena set Arena.Auslastung = 0 + :{Dauer*N} where Arena.Auslastung IS NULL and Arena.AID = :{AID*N}) If SQLCODE<0 Set %ok=0 Quit Wenn Sie Trigger benutzen möchten, die nicht wie in dem oben genannten Beispiel einfach ein UPDATE auf einer Tabelle ausführen, wenn in eine andere Tabelle etwas eingefügt wird, sondern die, wie in Triggeraufgabe 1 gefordert, Tabellen abfragen um festzustellen ob eine Arena zu einer neuen Veranstaltung passt, müssen Sie den Trigger in Cache ObjectScript programmieren. Seite 27 von 61

Folgendes Beispiel zeigt den Trigger zu Aufgabe 1 Übungsblatt 5: CREATE TRIGGER arena_passt_zu_veranst before insert on Veranstaltung LANGUAGE COS { new aid,sid,count,sqlcode set aid = {aid} //Zugriff auf die Veranstaltungs AID set sid = {sid} //Zugriff auf die Veranstaltungs SID set count = 0 &sql(select count(*) into :count from Arena_fuer_Sport where Arena_fuer_Sport.AID = :aid and Arena_fuer_Sport.SID = :sid) if (count = 0 ) { set %ok=0 //Fehlermeldung durch Messagebox set %msg="arena ungeeignet fuer Sportart der Veranstaltung" } } Um auf die neu einzufügenden bzw. die bereits vorhandenen Werte einer Tabelle zuzugreifen haben Sie folgende Möglichkeiten: Bei Insert Triggern: Bei Update Triggern: Bei Delete Triggern: {Spaltenname*O} (*O referenziert Old Values) {Spaltenname*O} {Spaltenname*N} (*N referenziert New Values) {Spaltenname*O} Seite 28 von 61

3.4 DAS TERMINAL Das Terminal bietet im Wesentlichen die Möglichkeiten des SQL-Managers nur ohne grafische Oberfläche. Es gibt aber auch Einschränkungen z.b. werden Revoke Kommandos vom Terminal nicht unterstützt. Sinnvollerweise aber Grant Kommandos???. Ein Vorteil im Vergleich zum SQL-Manager ist, dass man Dateien importieren kann um Tabellen zu erstellen und um Daten in Tabellen einzufügen. Starten Sie das Terminal durch einen Klick auf den Caché Cube und die Auswahl des Menupunktes <Terminal>. Es erscheint das Fenster aus Abb. 20 Abb.20 Im Terminal haben Sie mehrere Möglichkeiten SQL-Anweisungen einzugeben bzw. Dateien zu importieren. Um den Namespace zu wechseln, um zum Beispiel die mitgelieferten Beispiele von Caché zu bearbeiten oder anzuschauen, geben Sie an der Eingabeaufforderung <ZN Namespacename> ein. In welchem Namespace Sie sich gerade befinden, wird Ihnen an der Eingabeaufforderung angezeigt (in Abb. 20 also der Namespace USER). Hinweis: Im Terminal können Sie im Menu <Edit> den Menupunkt <User Keys...> auswählen um Shortcuts für häufig von Ihnen verwendete Eingaben zu definieren. Die bietet sich besonders dann an, wenn Sie viel mit dem Terminal arbeiten, da die Eingaben über die Kommandozeile oft lang sind. Seite 29 von 61

3.4.1 DIE EINGABE ÜBER DIE KOMMANDOZEILE Um mit SQL-Anweisungen über die Kommandozeile arbeiten zu können geben Sie an der Eingabeaufforderung <Do $System.SQL.Shell()> ein (siehe Abb. 21). Das Sie an der Shell angemeldet sind erkennen Sie an dem doppelten >> am Zeilenanfang. Abb. 21 Nun können Sie SQL-Anweisungen eingeben (ohne <;> als Endekennung). Bestätigen Sie mit der Returntaste und geben Sie <GO> ein um die Anweisung zu auszuführen (Abb. 21.1). Das Datum wird in der Shell standardmäßig als Integer dargestellt. Die Zählung beginnt am 31.12.1840 (in Tagen), 49805 entspricht also dem Datum 12.05.1977. Wie man die Datumsdarstellung ändert wird weiter unten erläutert. Die Shell bietet folgende Möglichkeiten: Abb. 21.1 Eingabe einer SQL-Anweisung. Nach Bestätigen mit der Returntaste wird die SQL-Anweisung in einen SQL-Buffer geschrieben. Es erscheint wieder die Eingabeaufforderung, die Zahl vor der Eingabeaufforderung gibt die Anzahl der gespeicherten SQL-Anweisungen an. Mit *SHOW kann man sich die eingegebenen Anweisungen anzeigen lassen.*clear löscht den SQL-Buffer. Wenn Sie GO eingeben werden die gespeicherten Anweisungen ausgeführt. Geben Sie EXIT ein um die Shell wieder zu verlassen und den SQL-Buffer zu löschen. Seite 30 von 61

Um die Datumsanzeige zu ändern, standardmäßig wird in Caché das Datum als Integer angegeben, geben Sie SELECTMODE ODBC ein um die Datumsdarstellung in die gewohnte Form (ODBC Mode) bringen. Geben Sie LOGICAL an wenn Sie lieber mit Integer arbeiten. SELECTMODE ohne weitere Angaben gibt den aktuellen Modus aus. Mit SETUSER Username Password können Sie sich einloggen, wenn Sie Username und Password weglassen wird ihnen der aktuelle User angezeigt Fehlermeldungen werden Ihnen über die Shell angezeigt (Abb. 21.2) Abb. 21.2 Seite 31 von 61

3.4.2 IMPORTIEREN VON DATEIEN Es gibt mehrere Möglichkeiten Dateien zu importieren. Ich werde zwei Methoden der Klasse $Sytems.SQL erläutern die den Import von Dateien ermöglichen. 3.4.2.1 Die Methode Systems.SQL.Oracle() Um DDL Scripts von der Kommandozeile aus zu laden gehen Sie bitte wie in Abb. 22 dargestellt vor und geben an der Eingabeaufforderung <Do $System.SQL.Oracle()> ein. Dieses Beispiel bezieht sich auf Oracle DDL Scripts, Caché unterstützt den Import weiterer DDL Scripts schauen Sie hierzu bitte im Manual unter %System.SQL für die Details nach. Abb. 22 Nachdem Sie mit Return bestätigt haben erscheint auf dem Bildschirm eine Information welche Kommandos unterstützt werden: CREATE TABLE CREATE VIEW CREATE USER CREATE ROLL ALTER TABLE CREATE [ UNIQUE ] INDEX DROP TABLE DROP INDEX DROP VIEW INSERT UPDATE DELETE SET OPTION GRANT { ALTER SELECT INSERT UPDATE DELETE REFERENCES ALL PRIVILEGES } Außerdem werden Sie darauf hingewiesen, dass keine Delimited Identifiers unterstützt werden. Wie Sie die Unterstützung für Delimited Identifiers einschalten können Sie im Kapitel Konfigurationsmanager nachlesen. Um fortzufahren drücken Sie <y> und bestätigen Sie mit <Return>. Seite 32 von 61

Im weiteren Verlauf werden Sie aufgefordert Ihren Benutzernamen und Ihr Passwort einzugeben. Danach werden Sie nach dem Pfad der Importdatei und dem Pfad der Datei gefragt in welcher eventuelle Fehlermeldungen gespeichert werden sollen. Als Parameter geben Sie bei der Importdatei <R> ein, bei der Fehlerdatei <WNS>. Leider habe ich in der Dokumentation nichts über diese Parameter gefunden. Nun werden Sie noch gefragt ob nicht unterstützte Anweisungen in ein Logfile geschrieben werden sollen und mit welchem Begrenzerzeichen (z.b. <;>) die SQL-Anweisungen abgeschlossen sind. Als letztes müssen Sie angeben wie viele Sekunden nach einem Fehler gewartet bevor das nächste Statement ausgeführt wird. Im Fehlerfall hat man dann die Möglichkeit das Einlesen weiterer Statements mit <Q> zu unterbinden. Wenn alle Angaben und die SQL-Anweisungen fehlerlos waren sollten Sie folgenden, bzw. einen ähnlichen, Bildschirm (Abb. 22.1) nach dem importieren einer Datei erhalten. Wichtig ist hier der Returnwert des SQLCODE, 0 bedeutet wie unschwer zu erkennen ist das die Ausführung erfolgreich war. Abb. 22.1 Eine weitere Methode um DDL-Scripts zu importieren können Sie im folgenden Kapitel nachlesen. Seite 33 von 61

3.4.2.2 Die Methode DDLImport(). Die Methode DDLImport() ist wie die Methode Oracle() für den Import von DDL-Scripts zuständig. Sie benötigt einige Parameter beim Aufruf. Ein Aufruf mit allen Parametern sieht wie folgt aus: DDLImport(DDLMode, SQLUser, infile, outfile, nosup, nosupfile, deos, errpause) Die einzelnen Parameter: DDLMode: Hersteller der die zu importierende Datei generiert hat, bzw. dessen Syntax benutzt wurde. Dieser Parameter wird benötigt. Unterstützt werden: FDBMS Informix Interbase MSSQLServer Oracle Sybase SQLUser: Infile: Outfile: Nosup: Nosupfile: Deos: Caché SQL Benutzername, unter welchem der Import durchgeführt werden soll. Dieser Parameter wird benötigt. Der komplette Pfad und Namen der Datei die importiert werden soll. Dieser Parameter wird benötigt Der komplette Pfad und Namen der Datei in der Fehler gespeichert werden soll. Standardmäßig wird der gleiche Pfad und Name des Infiles verwendet, an die Endung des Infiles wird _Errors.log angehängt. Dieser Parameter ist optional. Ein Flag, es kann entweder den Wert True oder False annehmen. Ist es auf True gesetzt werden nicht unterstütze Anweisungen in die Datei Nosupfile geschrieben. Dieser Parameter ist optional. Wenn das Nosup Flag auf True gesetzt wird bestimmt der Parameter Nosupfile den Dateinamen der Datei in welche die Anweisungen gespeichert werden die nicht unterstützt werden. Standardmäßig wird der gleiche Pfad und Name des Infiles verwendet an die Endung des Infiles wird _Unsupported.log angehängt. Dieser Parameter ist optional. Ist der Begrenzer des Endes der Anweisung. Standardmäßig wird der Begrenzer gewählt der entsprechend dem in DDLMode angegebenen Herstellers genommen. Dieser Parameter ist optional. Seite 34 von 61

Errpause: Anzahl an Sekunden die nach einem Fehler gewartet werden soll, bevor die nächste Anweisung ausgeführt wird. Standardmäßig sind 5 Sekunden eingestellt. Dieser Parameter ist optional. Ein Beispiel für den Import eines Oracle-DDL-Scripts sehen Sie in Abb. 23. Sie erhalten eine Fertigmeldung nachdem die Datei importiert wurde. Nach dem Import des DDL-Scripts zur Aufgabe 1 (Aufgabenblatt 3) sollte Ihnen das Terminal die in Abb. 24 dargestellte Meldung ausgeben. Abb. 23 Abb. 24 Seite 35 von 61

4 D ER K ONFIGURATIONSMANAGER Starten Sie den Konfigurationsmanager durch einen Klick auf den Caché Cube und die Auswahl des Menupunktes <Konfigurationsmanager>. Es erscheint das Fenster aus Abb. 25. Abb. 25 Im Konfigurationsmanager können Sie unterschiedliche Einstellungen vornehmen. Unter <Allgemein> kann man festlegen ob Caché automatisch beim Systemstart gestartet werden soll oder nicht. Im Weiteren werden einige Einstellungen erläutert, die unter <Erweitert> vorgenommen werden können. Seite 36 von 61

4.1 ERWEITERTE SQL EINSTELLUNGEN Wählen Sie den Ordner SQL um verschiedene Einstellungen vorzunehmen (Abb. 26). Man kann hier zum Beispiel die Unterstützung von Delimited Identifiers einstellen, nach welcher Zeit SQL Anweisungen im SQL-Manager gelöscht werden sollen, ob das Löschen nicht vorhandener Tabellen mit drop... zu einem Fehler führen soll oder nicht usw. Abb. 26 Seite 37 von 61

4.2 EIN SQL-GATEWAY EINRICHTEN Wählen Sie den Ordner SQL Gateway und dort <Hinzufügen> um ein neues SQL-Gateway einzurichten (Abb. 27). Abb. 27 Nun werden Sie aufgefordert einen Namen für die Verbindung einzugeben. Danach müssen Sie noch den Data Source Name, den Benutzernamen und das Passwort eingeben. Nachdem Sie alle Angaben gemacht haben klicken Sie auf <OK> um den Konfigurationsmanager zu beenden. Um die Änderungen ohne Neustart von Caché zu aktivieren wählen Sie im folgendem Dialog (Abb. 28) <Aktivieren>. Abb. 28 Seite 38 von 61

5 S IEGERLISTE MIT ADO Für das Programm habe ich nicht den, von Caché, installierten Wizard verwendet. Wenn man den Caché Wizard in Visual Basic verwenden möchte, sollte man Caché Studio, wie in Kapitel 6 erwähnt, verwenden. Caché Studio ist ein Tool, um objektorientiert mit Datenbanken zu arbeiten. Man kann dort z.b. SQL-Anweisungen als Methoden definieren, die dann später in Visual Basic zur Verfügung stehen. Nun zu dem von mir erstellten Programm, zur Ausgabe einer Siegerliste. Es werden die ersten drei Sieger ausgegeben. Das Programm liest zuerst alle Veranstaltungen aus bei denen es ein Finale gibt und die bereits stattgefunden hat (es sind Einnahmen vorhanden). Wenn eine Veranstaltung gewählt wurde, wird überprüft, in welcher Einheit (s oder m) die Ergebnisse gemessen werden. Handelt es sich um Sportarten die nach Sekunden gemessen wird, werden die ersten drei Sportler, der nach dem Ergebnis sortierten Liste, ausgegeben. Werden die Ergebnisse in Metern gemessen, wird die Liste absteigend sortiert, danach die ersten drei Sportler ausgegeben. Den Sourcecode finden Sie im Anhang. Seite 39 von 61

6 D ER C ACHÉ W IZARD IN V ISUAL B ASIC Wenn Sie mit dem Caché Wizard in Visual Basic arbeiten möchten, empfiehlt es sich, Caché Studio zu verwenden. In Visual Basic kann man später die SQL-Abfragen, die man vorher in Cache Studio als Methoden definiert hat, nutzen. Ich werde hier beschreiben wie man mit Visual Basic eine Oberfläche erstellt mit der man die Tabelle Sportler verwalten kann. Starten Sie Caché Studio durch Auswahl des Menupunktes <Studio> im Caché Cube Menu. Das Studio wird gestartet (Abb.29). Projektfenster Wenn Sie die Tabelle Sportler im SQL-Manager erstellt haben gehen Sie bitte wie folgt vor: Wählen Sie mit dem einem rechten Mausklick im Projektfenster den Ordner <Klassen> aus. Wählen Sie <Hinzufügen>. In dem Auswahlfenster wählen Sie den Namespace USER und dort die Tabelle Sportler aus. Bestätigen Sie mit <Hinzufügen>. Sie können nun im Ordner <Klassen> die Klasse Sportler sehen. Abb. 29 Klicken Sie auf Sportler, wählen Sie im Menu <Klasse> den Menupunkt <Hinzufügen> und dort <Neue Abfrage>. Der Wizard wird gestartet. Seite 40 von 61

Geben Sie nun den Namen (für das Beispiel: Suche) der Anweisung an. Klicken Sie <Weiter>. Im nächsten Fenster machen Sie keine Angaben. Nun werden Sie aufgefordert Spalten auszuwählen. Wählen Sie alle Spalten aus, auch die interne ID von Caché. Bestätigen Sie mit <Fertig stellen>. Die SQL-Anweisung wird erstellt. Wählen Sie nun aus dem Menu <Erstellen> den Menupunkt <Kompilieren>. Starten Sie nun Visual Basic. Wählen Sie im Menu <Add-Ins> den Caché Form Wizard. Der Wizard begrüßt Sie. Sie müssen sich im nächsten Fenster an Caché anmelden. Nach erfolgreicher Anmeldung wählen Sie im nächsten Fenster die Klasse Sportler aus und bestätigen Sie mit <Weiter>. Nun übernehmen Sie alle Eigenschaften in das Formular. (Für das Beispiel wählen Sie die Reihenfolge: PID, PName, GebDat, Geschlecht und Nation). Bestätigen Sie mit <Fertig> um die Anwendung fertig zu stellen. Wenn Sie das Programm starten müssen Sie sich zunächst wieder an Caché anmelden. Nach der Anmeldung erscheint das in Abb. 30 dargestellt Fenster. Abb. 30 Alle Button s, auch das Menu, sind voll funktionsfähig. Sie können neue Sportler eintragen und Sportler suchen um die Daten zu ändern oder zu löschen. Wenn Sie <Suche...> wählen öffnet sich ein neues Fenster. Dort können Sie unter Query Name, die vorher erstellte Abfrage, <Suche> auswählen. Mit dem Button <Query> führen Sie die Abfrage aus. Es müssten alle Sportler angezeigt werden. Durch die Auswahl eines Sportlers kehren Sie wieder zum ersten Fenster zurück um die Sportlerdaten zu bearbeiten. Seite 41 von 61

7 F AZIT Das ist nun das Ende der Projektarbeit und wenn man die vorangegangen Seiten gelesen hat könnte man meinen, dass das eigentlich nicht so schwierig gewesen sein kann. Ich kann Ihnen aber versichern, dass das Einarbeiten in Caché nicht so einfach war wie es vielleicht den Anschein hat. Das lag zum einen daran, dass es derzeit keine verfügbare Literatur, zum Thema Caché der aktuellen Version, gibt. Genauer gesagt gibt es überhaupt nur ein Buch dessen Auflage derzeit vergriffen und die neue Auflage noch nicht erschienen ist. (Hinweis: Inzwischen gibt es die Neuauflage des Buches, siehe Literatur.) Zum anderen lag es daran, dass die meisten Entwickler objektorientiert mit Caché arbeiten und natürlich auch die Dokumentation zu Caché auch mehr für objektorientierte Anwendungsentwicklung geschrieben ist. Am meisten hat mir die Unterstützung durch die Newsgroup von InterSystems geholfen. Dort habe ich schnelle und kompetente Hilfe bekommen. Manch einer schien mir aber ziemlich verwundert, dass ich mit Caché nur für rein relationale Datenbanken nutzte. Nach der Einarbeitung bleibt zu sagen, dass Caché mit dem SQL-Manager ein gutes Tool mit grafischer Oberfläche zum Arbeiten mit relationalen Datenbanken bietet. Hier habe ich nur vermisst, dass man keine SQL-Scripte importieren kann. Aus diesem Grund ist das Terminal unerlässlich; die beiden in Kapitel 3.4.2 beschriebenen Methoden ermöglichen das Importieren von Dateien. Seite 42 von 61

8 A NHANG 8.1 ÜBUNGSAUFGABEN 8.1.1 AUFGABENBLATT 2: ERSTELLE RELATIONALES DB-SCHEMA AUS ER-DIAGRAMM 8.1.2 AUFGABENBLATT 3: DIVERSE SQL-BEFEHLE Schreiben Sie interaktive SQL-Anweisungen für folgende Aufgaben: Die Ausgaben zu den verschiedenen Aufgaben für die Beispieldatenbank finden Sie in der Datei Ausgaben.pdf auf der CD. 1. Löschen Sie Ihre Tabellen. Kopieren Sie stattdessen meine Tabellen, indem Sie das SQL-Script import_cache.sql von CD ausführen. Benutzen Sie dazu die Methoden aus Kapitel 3.4.2 (Importieren von Dateien). Es gibt folgende Tabellen: Sportler, Sportart, Sportler_macht_Sport, Arena, Arena_fuer_Sport, Veranstaltung, Sportler_nimmtteil_Veranst. 2. Wegen feuerpolizeilichen Auflagen müssen die Plätze in allen Arenen um 7% reduziert werden. Führen Sie diese Änderung mit einem SQL-Kommando durch. 3. Wegen politischen Schwierigkeiten darf das Land Nari nicht an den Olympischen Spielen teilnehmen. Löschen Sie alle Sportler und Sportlerinnen dieses Landes. Achten Sie auf abhängige Datensätze in Verbindungstabellen. Zum Löschen der abhängigen Datensätze brauchen Sie Unterabfragen. 4. Ausgabe aller Daten aller Sportler und Sportlerinnen. 5. Name und Geburtsdatum aller Sportler und Sportlerinnen. 6. Name und Geschlecht aller Sportler und Sportlerinnen aus Deutschland sollen angezeigt werden. 7. Alle Namen von Sportlerinnen aus Deutschland sollen angezeigt werden. 8. Alle Veranstaltungen (Nr. und Bezeichnung) sollen angezeigt werden, die in der Arena, die "Am Rosenweg" liegt, stattfinden. Verwenden Sie einen JOIN, keine Unterabfragen. Seite 43 von 61

9. Ausgabe aller verschiedenen (Hinweis: DISTINCT) Sportarten, die von Sportlern und Sportlerinnen mit der Nationalität Jamaica ausgeübt werden. Verwenden Sie einen JOIN, keine Unterabfragen. 10. Wieviele Sitzplätze hat die Arena in der die Veranstaltung "Finale 100 m Lauf Damen" stattfindet? Verwenden Sie einen JOIN, keine Unterabfragen. 11. Ausgabe aller Daten aller Sportler und Sportlerinnen (Hinweis: DISTINCT), die an einer Veranstaltung in der Arena, die "Am Rosenweg" liegt, teilnehmen. Verwenden Sie einen JOIN, keine Unterabfragen. 12. Ausgabe aller Arenen (Name, Plätze) mit den dazugehörigen Veranstaltungen (Bezeichnung), geordnet nach Beginn und Dauer (absteigend). 13. Für jede Arena soll die Zahl der Veranstaltungen die in ihr stattfinden, die Summe der Einnahmen, die durchschnittlichen, die minimalen und die maximalen Einnahmen ermittelt werden. 14. Wiederholen Sie Aufgabe 14 aber zeigen Sie nur Arenen an, in denen mindestens fünf Veranstaltungen stattfinden. (Hinweis: HAVING) 15. Nutzen Sie reguläre Ausdrücke und den Operator LIKE, um alle Sportarten zu finden, die mit einem 100 m Lauf zu tun haben, z. B. der "100 m Lauf Herren" oder der "100 m Lauf Damen ". 16. Unterabfragen: Suchen Sie nach den Namen aller Sportler und Sportlerinnen, die aus dem gleichen Land kommen wie Frau Mbenko Buri. 17. Geben Sie alle Arenen aus, die mehr Plätze bieten als der Durchschnitt der Arenen. 18. Die korrekte Verteilung der Veranstaltungen auf Arenen soll überprüft werden. Geben Sie alle Veranstaltungen aus, die in einer Arena stattfinden, die für die Sportart der Veranstaltung nicht geeignet ist. 19. Geben Sie lesendes Zugriffsrecht für Ihre Tabelle Sportler an alle anderen Caché-Benutzer. Testen Sie! Ziehen Sie es wieder zurück. Testen Sie! (Hinweis: GRANT und REVOKE) Legen Sie hierzu einen oder mehrere User im SQL-Manager an (Kap. 3.3.1). Melden Sie sich dann unter anderem Usernamen, zum Testen, an und überprüfen Sie die Zugriffsrechte. 20. Legen Sie eine Tabelle Sportlerin_tab und einen View Sportlerin_view, in denen nur Sportlerinnen enthalten sind, aufgrund der bestehenden Tabelle Sportler an. (Hinweis: in Caché kann man keine Tabelle mit create table...as select... erstellen) Tragen Sie eine neue Sportlerin in die Tabelle Sportler ein. Prüfen Sie, ob die neuen Daten in Sportlerin_tab und Sportlerin_view Seite 44 von 61

übernommen wurden. Löschen Sie die Tabelle Sportlerin_tab und aus der Tabelle Sportler die neu eingefügte Sportlerin. 21. Geben Sie die Namen aller Sportlerinnen aus, die Leichtathletik betreiben. Nutzen Sie dazu den View Sportlerin-view (Hinweis distinct). 22. Wie speichern Sie Mannschaften mit mehreren Sportlern? 23. Gegeben ist die Relation: Veranstaltung a "ist Folgeveranstaltung von" Veranstaltung b Veranstaltung Veranstaltung. Dabei hat jede Veranstaltung maximal eine Folgeveranstaltung. Beispiel: Der 100 m Zwischenlauf 1 ist Folgeveranstaltung der 100 m Vorläufe 1, 2 und 3 Zeichnen Sie diese Relation in das ER-Modell ein. Realisieren Sie die Relation in der Datenbank. 24. Geben die Bezeichnung aller Veranstaltungen zusammen mit der Bezeichnung einer evtl. vorhandenen Folgeveranstaltung aus. (Hinweis: left join) Seite 45 von 61

8.2 AUSGABEN Aufgabe 2: (nur zur Überprüfung mit: select * from Arena) AID Aname Ort Plaetze 1 Olympiastadion Am Olympiapark 65100 2 Schwimmhalle Horst Buchmann Weg 2790 3 Leichtathletikstadion Am Rosenweg 27900 4 Sprinthalle Horst Buchmann Weg 9300 Aufgabe 4: SID SName GebDat Nation Geschlecht 1 Mueller 05/12/1977 Deutschland w 2 Meier 05/11/1977 Deutschland m 3 Mbenko Buri 05/10/1977 Luxembourg w 4 Mendouse 05/22/1977 Luxembourg m 5 Ruder 05/12/1979 Luxembourg w 8 Hulb 05/11/1977 Deutschland w 9 Kropp 05/11/1977 Deutschland w 10 Ballet 05/11/1977 England w 11 Lebeque 05/11/1977 Frankreich w 12 Jao Dong 06/12/1978 China m 13 Jones 06/05/1976 Jamaica w 14 Miles 11/10/1977 Jamaica m 15 Davis 08/07/1977 Jamaica w Aufgabe 5: PName GebDa t Mueller 05/12/1977 Meier 05/11/1977 Mbenko Buri 05/10/1977 Mendouse 05/22/1977 Ruder 05/12/1979 Hulb 05/11/1977 Kropp 05/11/1977 Ballet 05/11/1977 Lebeque 05/11/1977 Jao Dong 06/12/1978 Jones 06/05/1976 Miles 11/10/1977 Davis 08/07/1977 Seite 46 von 61

Aufgabe 6: Pname Mueller Meier Hulb Kropp Geschlecht w m w w Aufgabe 7: Pname Mueller Hulb Kropp Aufgabe 8: Bezeichnung VID Finale Speerwurf Herren 13 Finale Weitsprung Herren 14 Finale Speerwurf Damen 15 Finale Weitsprung Damen 16 Aufgabe 9: SName 100 m Lauf Herren 200 m Lauf Damen Aufgabe 10: Plaetze 9300 Aufgabe 11: SID PName GebDat Nation Geschlecht 2 Meier 05/11/1977 Deutschland m 4 Mendouse 05/22/1977 Luxembourg m 12 Jao Dong 06/12/1978 China m 1 Mueller 05/12/1977 Deutschland w 3 Mbenko Buri 05/10/1977 Luxembourg w 5 Ruder 05/12/1979 Luxembourg w 8 Hulb 05/11/1977 Deutschland w 9 Kropp 05/11/1977 Deutschland w 10 Ballet 05/11/1977 England w 11 Lebeque 05/11/1977 Frankreich w Seite 47 von 61

Aufgabe 12: Aname Plaetze Bezeichnung Sprinthalle 9300 Vorlauf 1 100 m Lauf Herren Sprinthalle 9300 Vorlauf 2 100 m Lauf Herren Sprinthalle 9300 Halbfinale 100 m Lauf Herren Sprinthalle 9300 Halbfinale 100 m Lauf Damen Sprinthalle 9300 Finale 100 m Lauf Herren Sprinthalle 9300 Finale 100 m Lauf Damen Olympiastadion 65100 Halbfinale 200 m Lauf Herren Olympiastadion 65100 Halbfinale 400 m Lauf Herren Olympiastadion 65100 Finale 200 m Lauf Herren Olympiastadion 65100 Finale 400 m Lauf Herren Olympiastadion 65100 Halbfinale 200 m Lauf Damen Olympiastadion 65100 Halbfinale 400 m Lauf Damen Olympiastadion 65100 Finale 200 m Lauf Damen Olympiastadion 65100 Finale 400 m Lauf Damen Leichtathletikstadion 27900 Finale Speerwurf Herren Leichtathletikstadion 27900 Finale Weitsprung Herren Leichtathletikstadion 27900 Finale Speerwurf Damen Leichtathletikstadion 27900 Finale Weitsprung Damen Schwimmhalle 2790 Finale 100 m Delphin Herren Schwimmhalle 2790 Finale 100 m Delphin Damen Aufgabe 13: Für die Spalten 2-6 wird im SQL-Manager die Spaltenüberschrift Aggregat_2 bis Aggregate_6 verwendet. (Ein = Einnahme) Aname COUNT(VID) SUM(EIN) AVG(EIN) MIN(EIN) MAX(EIN) Olympiastadion 8 162000.8 20250.1 10000.1 25000.1 Schwimmhalle 4 33000.2 16500.1 15000.1 18000.1 Leichtathletikstadion 4 39000.2 19500.1 18000.1 21000.1 Sprinthalle 4 33000.2 16500.1 15000.1 18000.1 Aufgabe 14: Aname COUNT(VID) SUM(EIN) AVG(EIN) MIN(EIN) MAX(EIN) Olympiastadion 8 162000.8 20250.1 10000.1 25000.1 Aufgabe 15: SID SName Sportklasse einzel_mann Weltrekord 1 100 m Lauf Herren Leichtathletik E 9,8 s 7 100 m Lauf Damen Leichtathletik E 10,8 s Aufgabe 16: PName Mbenko Buri Mendouse Ruder Seite 48 von 61