Ausarbeitung. Fragenkatalog VSDB. Verteilte Systeme und Datenbanken 5AHITS 2013/14 1/143

Größe: px
Ab Seite anzeigen:

Download "Ausarbeitung. Fragenkatalog VSDB. Verteilte Systeme und Datenbanken 5AHITS 2013/14 1/143"

Transkript

1 Ausarbeitung Fragenkatalog VSDB Verteilte Systeme und Datenbanken 5AHITS 2013/14 1/143

2 Inhalt 1. DBMS 2. Architektur von Datenbanksystemen 3. Datenmodelle 4. Grundlagen des relationalen Datenmodells 5. Normalformen 6. SQL als DDL und DML 7. ER bzw. EER- Modell 8. Prozedurale Erweiterung von SQL-Datenbanken 9. Wartung/Backup/Restore 10. Servlets: Grundstruktur, Lebenszyklus und Web Container 11. Servlets: Kommunikation und Session Tracking 12. Verteilte Anwendungen: Eigenschaften und Architekturmodelle 13. Java Server Pages JSP: Lebenszyklus und Einbettungskonstrukte in JSP (Art und Funktion) 14. XML-RPC 15. J2EE 16. HTTP-Grundstruktur 17. HTTP-Anwendung 18. HTML/XML 19. CGI-Schnittstelle 20. Layout 22. Softwaretechnik 22. Ajax Web Client 23. JavaScript 24. JavaScript - Framework - Asynchronitäten 25. jquery 2/143

3 1. DBMS Was sind die grundlegenden Funktionen eines Datenbankmanagementsystems (DBMS) unabhängig vom unterstützen Datenmodell? Was bedeuten die Begriffe Konsistenz, Redundanz und Integrität? Grenzen sie die Begriffe Datenbank, Datenmodell und Datenbankmanagementsystem voneinander ab. Begriffsdefinitionen Konsistenz Konsistenz bedeutet die Korrektheit der in der Datenbank gespeicherten Daten. Inkonsistenz ist die Widersprüchlichkeit von Daten (z.b. Verknüpfungen zwischen Tabellen sind nicht mehr eindeutig, weil der Primärschlüssel auf keinen oder mehrere Einträge in einer anderen Tabelle verweist). Beispiel Im folgenden Beispiel gibt es in der ersten Tabelle für die Gartenstrasse eine Einschränkung, in der zweiten Tabelle ist bei der selben Straße aber keine Einschränkung eingetragen. Die Datenbank ist nicht konsistent, weil die Einschränkung nicht eindeutig ist. Der Wiederspruch lässt sich verhindern, indem man die Einschränkungen in eineeigene Tabelle auslagert. Redundanz Redundanz bedeutet das mehrfache Abspeichern der gleichen Daten. In einer Datenbank sollten Informationen nicht mehrfach abgespeichert sein, sie sollte also Redundanzfrei sein. Wenn sich die Daten ändern, müssen sie nur an einer Stelle geändert werden. Beispiel In dieser Tabelle sind Abteilung und Fahrzeug redundant gespeichert. Um Redundanz zu vermeiden, könnte man die Werte in eine eigene Tabelle auslagern. 3/143

4 Integrität Eine Datenbank ist Konsistent, wenn alle Integritätbedingungen erfüllt sind. Beispiele für Integritätbedingungen sind, die Beziehung zwischen Primär- und Fremdschlüssel oder die Begrenzung eines Wertes auf Zahlen. Die Integrität wird normalerweise vom DBMS sichergestellt. Integritätsbedingungen Statische Integrität Statische Integritätsbedingungen entsteht durch die im jeweiligen Schema definierten Regeln. Dazu gehören Schlüsselbedingungen (primary key,...), Fremdschlüsselbedingungen, Attributbedingungen (not null, ) und Bereichsbedingungen (check, ). Dynamische Integrität Dynamische Integritätsbedingungen legen Regeln fest, die beim Ändern eines Zustandes erfüllt sein müssen (Gehalt darf erhöht aber nicht verringert werden). Datenmodell Ein Datenmodell (DM) beschreibt die Abbildung von Sachverhalten und Prozessen aus der realen Welt in Computertechnischer Form. Es beschreibt die Datenobjekte und die Operationen die darauf angewendet werden können. Es beschreibt unter anderem folgende Eigenschaften: Objekte/Entitäten und deren Beziehungen (statische Eigenschaften) Operationen und Beziehungen zwischen diesen (dynamische Eiganschaften) Integritätsbedingugen der Objekte und Operationen Konventionen für die Benennung, der physischen Abspeicherung, usw. Datenbank Eine Datenbank (DB) ist eine strukturierte Sammlung von Daten, die für einen bestimmten Zweck entworfen und entwickelt wird. Sie ist eine logische Einheit zusammengehöriger Daten und deren Metadaten. Physikalisch kann die Datenbank in mehrere Einzelteile aufgeteilt werden, die jedoch nur gemeinsam eine Datenbank bilden. Datenbankmanagementsystem Das Datenbankmanagementsystem (DBMS) ist eine Software zum Anlegen, Verwalten und Befüllen von Datenbanken. Es kann auch Funktionen zum regelmäßigen Ausführen von Sicherheits- und Backupstrategien anbieten. Datenbanksystem Ein Datenbanksystem (DS) ist die Kombination aus Datenbank, DBMS und der Hardware. Informationssystem Ein Informationsystem (IS) erweitert die Datenbank um Werkzeuge (software tools) zur Abfrage, Darstellung, Transformation und Analyse der Daten. 4/143

5 Zusammenhang von Datenbank, DMBS, DBS und IS Datenbankmanagementsystem Das Datenbankmanagementsystem (DBMS) ist die Software, die die Datenbank bereitstellt. Das DBMS legt das Datenbankmodell fest, entscheidet maßgeblich über Funktionalität und Geschwindigkeit des Systems und bietet folgende Funktionen. Funktionen Speichern, Ändern und Löschen von Daten Verwalten von Metadaten Vorkehrungen zur Datensicherheit, zum Datenschutz und zur Datenintegrität Ermöglicht den Mehrbenutzerbetrieb (durch Transaktionen) Optimiert Anfragen Ermöglicht Stored Procedures und Triggers 5/143

6 2. Architektur von Datenbanksystemen Was versteht man unter der Drei Schichten Architektur nach ANSI SPARC? Wieso hat man sich überhaupt für mehrere Schichten entschieden? Welche Gründe sprechen für dieses Modell? Welche Schicht hängt vom Betriebssystem ab? Braucht man ein Filesystem wenn ja: Wer stellt es zur Verfügung und inwieweit kann sich dieses auf das Gesamtsystem auswirken? Wo wird die Struktur der abzuspeichernden Informationen hinterlegt? Inwieweit reflektiert sich diese Struktur in den Anwendungsprogrammen? Was versteht man unter Transformationsregeln? Wie können komplexe Strukturen vereinfacht dargestellt werden? Was legt ein Datenbankschema fest? Was versteht man unter den Begriffen DDL/DML? Wie reflektiert sich DDL/DML in der Architektur eines Datenbanksystems? Gehen Sie auf einige Modellierungskonzepte ein, die sich aus der Schichtenarchitektur ergeben. Drei Schichten Architektur nach ANSI SPARC Die Benutzeranwendung und die physikalische Speicherung soll voneinander getrennt werden. Daher gibt es bei dieser Architektur 3 Ebenen bzw. Schemen. Die meisten modernen Datenbank- Systeme besitzen eine Drei-Schichten-Architektur, die dem ANSI/SPARC Datenbank-Modell entspricht. Die in diesem Modell definierten Schichten beschreiben unterschiedliche Abstraktionsebenen für die Daten einer Datenbank. Die drei Schichten nach ANSI/SPARC sind das interne Schema, das konzeptionelle Schema und das externe Schema. Interne Ebene (internes Schema) Die interne Ebene beschreibt wie die physikalischen Speicherstrukturen der Datenbank aussehen. D.h. wie die Daten gespeichert werden und wie man darauf zugreift. Konzeptuelle Ebene (konzeptuelles Schema) Das konzeptionelle Schema beschreibt die logische Struktur der Daten in der Datenbank, also die Art und Menge der gespeicherten Daten, sowie ihre Abhängigkeiten untereinander und Integritätbedingungen für die Datenbank. Diese logische Struktur wird in der Regel von dem jeweiligen Datenbank-Administrator angelegt und verwaltet. Beim Entwurf des konzeptionellen Schemas ist eine Reihe von Rahmenbedingungen zu beachten, die eine effektive und redundanzfreie Speicherung von Daten in der Datenbank sicherstellen sollen, wie zum Beispiel die Normalisierung von relationalen Datenbanken. Das hat zur Folge, dass in der konzeptionellen Sicht in einer Datenbank die Daten häufig nicht so strukturiert sind, wie es den Anforderungen der Benutzer entspricht. In dieser Ebene wird das Datenbankschema festgelegt. Eine Systemunabhängige Datenbeschreibung, d.h. sie ist unabhängig von den eingesetzten Datenbank- und Computersystemen. Diese Ebene verbirgt Details wie die Daten physikalisch abgespeichert sind. 6/143

7 Externe Ebene (View bzw. externes Schema) Unterschiedliche Benutzer haben häufig unterschiedliche Anforderungen an die Strukturierung dieser Daten und in der Regel benötigen einzelne Benutzer jeweils nur Zugriff auf einen Teil der Daten in der Datenbank. Das externe Schema des Drei-Schichten-Modells erlaubt daher die Definition so genannter Benutzersichten auf die Datenbank, um diesen Anforderungen gerecht zu werden. Es wird also nur ein Teil der gesamten Daten gezeigt. Der View sieht wie schon gesagt für jeden Benutzer (einer anderen Benutzergruppe bzw. je nach den Rechten) anders aus. Beispiel: verschiedene Views durch SQL - Statements. Wieso hat man sich überhaupt für mehrere Schichten entschieden? Das Ziel dieser Drei-Schichten-Architektur besteht aus der Trennung von der physischen Datenbank und der Benutzeranwendungen. Die Daten sind nur auf der internen Ebene physisch vorhanden. Die anderen Repräsentationsformen werden bei Bedarf aus dieser internen Ebene berechnet bzw. abgeleitet. Der Grund für mehrere Schichten ist es eine Datenunabhängigkeit zu erreichen. Datenunabhängig selbst bedeutet, dass die arbeitenden Programme und Benutzer weitgehend unabhängig von den physisch gespeicherten Daten sind. Das heißt ein Anwendungsprogramm muss nicht die Daten- und Speicherstruktur kennen. 7/143

8 Datenunabhängigkeit Wird eine Änderung des Schemas vorgenommen, so muss das übergeordnete Schema nicht geändert werden. Physische Datenunabhängigkeit Es ist möglich das interne Schema (Ebene) zu ändern, ohne dabei das konzeptuelle, externe Schema oder Anwendungsprogramme ändern zu müssen. D.h. Änderungen an der physischen Speicher- oder Zugriffstruktur haben keine Auswirkungen auf die logische Struktur der der Datenbasis (= Datenbankschema). Beispiel: Datenbanktuning oder eine Erweiterung der Speicherstrukturen haben keine Auswirkung auf Anwendungsprogramme Logische Datenunabhängigkeit Die logische Datenunabhängigkeit ist die Möglichkeit das konzeptionelle Schema zu ändern ohne dass das externe Schema oder Anwendungsprogramme geändert werden müssen. D.h. Änderungen im konzeptionellen Schema (Datenbankschema) haben keine Auswirkung auf Anwendungen (im View). Welche Gründe sprechen für dieses Modell? Ein wesentlicher Grund für dieses Modell ist die hohe Robustheit gegeben Änderungen. ANSI-SPARC macht logische und physische Datenunabhängigkeit durch die drei Ebenen möglich. Welche Schicht hängt vom Betriebssystem ab? Das interne Schema ist sehr eng mit dem Betriebssystem verbunden. Das interne Schema bildet die internen Datenstrukturen des Datenbanksystems auf das Dateisystem des Betriebssystems ab. Braucht man ein Filesystem wenn ja: Wer stellt es zur Verfügung und inwieweit kann sich dieses auf das Gesamtsystem auswirken? Eine Datenbank speichert seine Daten, also die Tabellen und deren Einträge, in einem Filesystem ab. Dieses Filesystem wird vom Betriebsystem zur Verfügung gestellt. Im ANSI/SPARC - Modell ist das interne Schema verantwortlich, die Datenbank auf dem Dateisystem des Betriebsystems abzubilden. Wo wird die Struktur der abzuspeichernden Informationen hinterlegt? Die Struktur wird beim Export in einer XML-Schema-Datei gespeichert. Das Schema bestimmt gleichzeitig den Aufbau der XML-Datei, die die Daten der exportierten Tabellen aufnimmt. Exportiert werden Name der Tabelle Namen der Spalten Type der Spalten Länge der Spalten Default-Werte der Spalten Primärschlüssel der Tabelle 8/143

9 Indizes der Tabelle Fremdschlüsselbeziehungen zwischen Tabellen Autoinkrement-Festlegungen für Spalten (falls zutreffend) Not-Null-Constraints für Spalten (falls zutreffend) Reaktion auf das Löschen/Ändern eines zu einer Fremdschlüsselbeziehung gehörenden Primärschlüsselwertes Inwieweit reflektiert sich diese Struktur in den Anwendungsprogrammen? Die Struktur der Datenbank hat auf das Modell der Anwendungssoftware Einfluss. Die sogenannten Entity Klassen haben nur die Aufgabe eine ganz bestimmte Information zu speichern. Sie verfügen meist über sehr wenige Funktionen neben den "Set"- und "Get"-Funktionen für die gespeicherten Daten. Alle Funktionen die Sie besitzen haben unmittelbar mit den gespeicherten Daten zu tun. Was versteht man unter Transformationsregeln? Durch Transformationsregeln wird die Verbindung der drei Ebenen definiert. Man muss selbst festlegen, wie die Objekte der verschiedenen Ebenen aufeinander abgebildet werden. Beispiel: Der Anwendungsadministrator muss festlegen, wie die Daten der externen Ebene und Daten aus der konzeptuellen Ebene zusammengesetzt werden. Beispiel Bundesbahn Gesamtheit der Daten (d.h. Streckennetz mit Zugverbindungen) ist beschrieben im konzeptuellen Schema (Kursbuch). Ein externes Schema wäre dann ein Ausschnitt mit den Städteverbindungen Wels-Linz. Wie können komplexe Strukturen vereinfacht dargestellt werden? Komplexe Strukturen können durch ER - Modelle vereinfacht dargestellt werden. Das Entity- Realtionship-Model (ERM) oder ER - Modell ist ein grafisches Hilfswerkzeug zur Erstellung von Datenbanken. In einem solchen Modell werden die realen Zusammenhänge von Objekten, Handlungen und Ereignissen dargestellt. Zwischen jeder einzelnen Instanz eines solchen ER - Modells gibt es eine Beziehung = Relation. Eine Solche Instanz kann auch Attribute haben (z.b. Instanz Person: Attribute: Name, Nachname, ). 9/143

10 Beispiel Was legt ein Datenbankschema fest? Bei allen Datenbankmodellen ist es wichtig, zwischen der Beschreibung der Datenbank und der real implementierten Datenbank zu unterscheiden. Also legt das Datenbankschema die Struktur der speicherbaren Objekte fest. Das Schema selbst sagt also nichts über die individuellen Datenobjekte. Das Datenbankschema sind die Metadaten. Als Datenbankausprägung versteht man den momentan gültigen Zustand, also alle aktuell existierenden Inhalte und Beziehungen und deren Attribute. Das Datenbankschema wird während des Datenbank-Design-Prozesses festgelegt und ändert sich später nur sehr selten und nach Möglichkeit nie. Metadaten Metadaten oder auch Metainformationen bezeichnet, sind allgemeine Daten, die Informationen über andere Daten enthalten. z.b: Der Spaltenname Vorname in einer Tabelle. Diese Spalte oder auch Metainformation beinhaltet dann mehrere Namen Eigenschaften von Objekten, wie sie beschrieben werden sind Metadaten 10/143

11 Konzeptionales Schema Ein konzeptionelles Datenschema ist eine systemunabhängige Datenbeschreibung, d.h. sie ist unabhängig von den eingesetzten Datenbank- und Computersystemen. Logisches Schema Ein logisches Datenschema beschreibt die Daten in der Datenbeschreibungssprache (DDL = Data Definition Language) eines bestimmten Datenbank-Verwaltungssystems. (DBMS) Was versteht man unter den Begriffen DDL/DML? Es gibts zwei Teilsprachen bei Datenmodellen. Die Datendefinitionssprache(DDL) und Datenmanipulationssprache (DML) DDL (Data Definition Language) Wer Daten und Datenstrukturen beschreiben will, benötigt dazu ein geeignetes Beschreibungswerkzeug, die Datenbeschreibungsprache DDL. Diese wird Verwendung um das Datenbankschema zu definieren und zu ändern. Typische DDL-Operationen (mit den entsprechenden Schlüsselwörtern in der relationen Datenbanksprache SQL) sind: Erzeugen von Tabellen und Festlegen der Attribute ( create table. ) Ändern von Tabellen durch Hinzufügen oder Entfernen von Attributen ( alter table ) Löschen einer ganzen Tabelle samt Inhalt ( drop table ) DML (Data Manipulation Languague) Zusätzlich wird eine Sprache für die Beschreibung der Arbeitsmöglichkeiten mit Daten (Speichern, Suchen, Lesen, Ändern), den sogenannten Datenmanipulationen, benötigt. Solche Operationen können mit einer Datenmanipulationssprache durchgeführt werden. Typische DML-Operationen (in SQL) sind: Einfügen von Daten: insert Verändern von Einträgen: update Löschen von Einträgen: delete Datenabfragen: select Häufig aber sind diese zwei Sprachen für Definition und Manipulation von Datenbanken in einer umfassenden Sprache zusammengefasst. Ein gutes Beispiel ist die relationale Anfragesprache SQL. (Structured Query Language) Wie reflektiert sich DDL/DML in der Architektur eines Datenbanksystems? DDL - Data Definition Language: Statements werden verwendet, um die Datenbank-Struktur oder das Datenbankschema zu definieren. DML - Data Manipulation Language: Statements werden zur Verwaltung der Daten innerhalb der Schema-Objekte verwendet. 11/143

12 DML Anweisungen werden nicht automatisch ausgeführt, d. h. ein Rollback kann ausgeführt werden. Bei DDL Anweisungen ist das nicht möglich, da diese automatisch ausgeführt werden. Der Unterschied ist allerdings durch den Treiber transparent. Gehen Sie auf einige Modellierungskonzepte ein, die sich aus der Schichtenarchitektur ergeben Zur Modellierung der konzeptuellen Ebene verwendet man das Entity-Relationship-Modell, welches einen Ausschnitt der Realwelt unter Verwendung von Entities und Relationships beschreibt: Entity: Gegenstand des Denkens und der Anschauung (z.b. eine konkrete Person, ein bestimmter Ort) Relationship: Beziehung zwischen den Entities (z. B. wohnen in) Entities werden charakterisiert durch eine Menge von Attributen, die gewisse Attributwerte annehmen können. Entities, die durch dieselbe Menge von Attributen charakterisiert sind, können zu einer Klasse, einem Entity-Typ, zusammengefasst werden. Entsprechend entstehen Relationship- Typen. Beispiel Entity-Typ Studenten habe die Attribute Mat-Nr., Name, Hauptfach Entity-Typ Orte habe die Attribute PLZ, Name Relationship-Typ wohnen in setzt Studenten und Orte in Beziehung zueinander Die graphische Darstellung erfolgt durch Entity-Relationship-Diagramme (E-R-Diagramm). Entity- Typen werden durch Rechtecke, Beziehungen durch Rauten und Attribute durch Ovale dargestellt. Das Beispiel würde so aussehen: Zur Formulierung des logischen Schemas stehen je nach zugrundeliegendem Datenbanksystem folgende Möglichkeiten zur Wahl: Netzwerkmodell und Hierarchisches Modell Sie sind Vorgänger des relationalen Modells. Sie bauen auf individuellen Datensätzen auf und können hierarchische Beziehungen oder auch allgemeinere Netzartige Strukturen der Realwelt ausdrücken. Netzwerk und Hierarchisches Datenmodell 12/143

13 Netzwerk und Hierarchisches Datenmodell Relationales Modell Es ist das bekannteste und in heutigen DBMS am weitesten verbreitete Datenbankmodell. Es stellt die Datenbank als eine Sammlung von Tabellen (Relationen) dar, in denen alle Daten angeordnet werden. Dieses Modell befasst sich vorwiegend mit dem relationalen Datenbankmodell und den darauf basierenden Datenbanksystemen. Relationales Datenbankmodell Objektorientiertes Modell Objektorientierte Modelle definieren eine Datenbank als Sammlung von Objekten mit deren Eigenschaften und Methoden. Schematische Darstellung eines objektorientierten Datenbankmodells Objektrelationales Modell Objektorientierte Modelle sind zwar sehr mächtig, aber auch recht komplex. Mit dem relativ neuen objektrelationalen Datenbankmodell wurde das einfache und weit verbreitete relationale Datenbankmodell um einige grundlegende objektorientierte Konzepte erweitert. Schematische Darstellung des objektrelationalen Modells 13/143

14 3. Datenmodelle Was ist ein Datenmodell? Welche Datenmodelle kennen Sie? Zählen Sie mindestens drei auf und gehen Sie kurz auf die Strukturmerkmale ein. Wie werden Sie bei der Auswahl des Datenmodells vorgehen? Erläutern sie an einem Beispiel die Auswahl. Was versteht man unter dem Begriff "ORM"? Was versteht man unter dem Begriff impedance mismatch in Hinblick auf Programmiersprachen und Datenbanken? Was ist ein Datenmodell? Datenbanken sollen Sachverhalte und Prozesse aus der realen Welt in einer computertechnischen Form beschreiben und speichern. Die Abbildung der realen Objekte in computertechnischer Form erfolgt hierbei mit Hilfe von sogenannten Datenmodellen. Es werden sowohl die Datenobjekte, mit Hilfe der Datendefinitionssprache (DDL), als auch die darauf anwendbaren Operationen, mit Hilfe der Datenmanipulationssprache (DML) beschrieben. Man unterscheidet zwischen konzeptuellem Datenmodell, logischem Datenmodell und physischem Datenmodell, wobei wir uns hier auf das logische Datenmodelle konzentrieren werden. Zu konzeptuellen Datenmodellen zählen unter anderem ER-Diagramme oder UML-Diagramme. Zu logischen, die weiter unten erläuterten relationale-, objekt-relationale- Modelle. Welche Datenmodelle kennen Sie? Netzwerkmodell und Hierarchisches Modell Stellen die Vorgänger des relationalen Modells dar. Sie bauen auf individuellen Datensätzen (sogenannten Records) auf, die durch Beziehungen miteinander verknüpft werden. Beim hierarchischen Modell hat jeder Datensatz genau einen Vater-Datensatz, mit Ausnahme des Wurzel- Records, der keinen Vater besitzt und beliebig viele Kinder-Datensätze. Dadurch ist die Abbildung einer n:m-beziehung standardmäßig nicht möglich. Beim Netzwerkmodell kann jeder Datensatz mit n anderen Datensätzen verknüpft sein. Dadurch wird auch die Abbildung von n:m-beziehungen möglich. 14/143

15 Hierarchisches Modell Netzwerkmodell Relationales Modell Das relationale Modell ist das heute am weitesten verbreitete Datenbankmodell. Es stellt die Datenbank als Sammlung von Tabellen (sog. Relationen) dar, in denen alle Daten als Zeilen (Tupel) der Tabellen gespeichert werden. Die verschiedenen Tabellen können über Fremdschlüssel miteinander verknüpft werden. 15/143

16 Objektorientiertes Modell Die Datenbank wird als Sammlung von Objekten im Sinne der Objektorientierung samt deren Attributen und Methoden abgebildet. Es werden auch objektorientierte Konzepte, wie Vererbung und Assoziation, unterstützt. Wird relativ schnell sehr komplex und Zugriffe in weiterer Folge langsam durch die vielen Abhängigkeiten durch Vererbung und Assoziation. Objektrelationales Modell Erweitert das relationale Datenbankmodell um einige grundlegende objektorientierte Ansätze, beispielsweise selbst definierte Datentypen und Vererbung bei Datentypen und Funktionen zu Tabellen. Auch das Auflösen von Verknüpfungen wird so vereinfacht. Beispiel relational SELECT C.firstname C.lastname FROM Customers C JOIN Addresses A ON A.Cust_Id=C.Id WHERE A.city="New York" object-relational SELECT Name(C.Id) FROM Customers C WHERE C.address.city="New York" 16/143

17 Auswahl eines Datenmodells Beispiel Ich verkaufe Elektronikprodukte. Ich möchte Daten zu den Produkten, Kunden und Mitarbeitern speichern. Ich bin ein Einzelhändler und besitze eine Filiale. Die zu erwartende Datenmenge ist eher gering, die Zahl der Beziehung hält sich in Grenzen. Am Markt sind relationale Datenbanken am weitesten verbreitet und wären in diesem Beispiel, wie in wahrscheinlich über 90% der Fälle, zu empfehlen. Andere Datenbankmodelle kommen entweder in ganz speziellen Anwendungsfällen, beispielsweise dem Semantischen Web (Graphen Datenbank (Weiterentwicklung der Netzwerkdatenbank) bzw. eine spezielle Form einer XML-Datenbank) oder Speichern von Koordinaten, die z.b. eine Straße, bilden (Objektorientierte Datenbank, oder erweiterte objektrelationale Datenbank) zum Einsatz, aber auch dort, wo sich der Umstieg auf ein relationales Datenbankmodell nicht lohnen würde, bzw. zu aufwendig wäre. Beispielsweise alte Bankensysteme. Objekt relationales Mapping (ORM) ORM Object-relational Mapping zu Deutsch Objektrelationale Abbildung, bezeichnet eine Technik, mit deren Hilfe eine in einer objektorientierten Sprache geschriebene Anwendungen ihre Objekte in einer relationalen Datenbank speichern, verändern und auslesen kann. Dazu werden zumeist Bibliotheken, wie beispielsweise Hibernate für Java, verwendet. Für Java steht außerdem eine standardisierte API, die Java Persistance API zur Verfügung. Grundlegend werden Klassen zu Tabellen, Objekte zu Zeilen und Attribute zu Spalten. Beziehungen werden mit Hilfe von Fremdschlüsseln realisiert. Für die Abbildung von Vererbung existieren im Wesentlichen drei Strategien. Eine Tabelle pro gesamter Vererbungshierarchie, alle Attribute von Subtypen werden in die Tabelle übernommen, es entstehen Zeilen mit teilweise leeren Spalte Eine Tabelle pro Unterklasse, Jede Klasse, egal ob abstrakt oder konkret, bekommt eine eigene Tabelle, die Beziehungen zwischen den Klassen werden als 1:1 Beziehung realisiert. Eine Tabelle pro konkreter Klasse, die Attribute aus abstrakten Klassen werden in die Implementierungen dieser übernommen Was versteht man unter dem Begriff impedance mismatch? Impedance mismatch bezeichnet ein Problem das Auftritt, wenn Objekte aus einer objektorientierten Programmiersprache in einer relationalen Datenbank gespeichert werden. Das Problem ist dabei, dass Objektorientierung und relationale Datenbanken unterschiedliche Konzepte verwenden. Ein Objekt hat einige grundlegende Eigenschaften: Identität, unabhängig von den Daten: Es können zwei unterschiedliche Objekte mit den exakt gleichen Daten existieren Datenkapselung: die Daten von Objekten sind nicht generell sichtbar, es kann seine Daten durch Modifizierer (private, public, protected) vor Zugriff und Veränderung schützen Struktur: Objektorientierung unterstützt das Konzept der Vererbung 17/143

18 Arbeitsweise: eine Objekt besteht sowohl aus Daten, als auch aus Methoden, die mit diesen Daten arbeiten Diese Konzepte werden von relationalen Datenbanken nicht unterstützt. Deshalb wird häufig auf ein ORM zurückgegriffen. Einige dieser Konzepte können aber auch in einer objekt-relationalen Datenbank realisiert werden. Es ist außerdem vorstellbar generell eine objektorientierte Datenbank einzusetzen, oder die Programmiersprache um SQL-Funktionen zu erweitern. Lazy-Loading Soll ein Objekt aus der Datenbank in das Programm geladen werden, so werden seine Abhängigkeiten nicht sofort aufgelöst, sondern es wird falls diese benötigt werden, ein neue Anfrage an die Datenbank gestellt. Dies ist sinnvoll, wenn die Abhängigkeiten eigentlich nicht benötigt werden. Beispiel: Eine Schule hat zahlreiche Schüler, benötige ich allerdings lediglich die Adresse der Schule ist es nicht sinnvoll alle Schüler der Schule zu laden. Eager-Loading Es werden sofort alle Abhängigkeiten aufgelöst und in die Anwendung geladen. Die ist sinnvoll, wenn man weiß, dass die Abhängigkeiten sicher benötigt werden. 18/143

19 4. Grundlagen des relationalen Datenmodells Auf welchen mathematischen Grundlagen beruht das relationale Datenmodell? Was ist der Unterschied zwischen einer Relation und einer (mathematischen) Funktion? Was bedeuten Attribut, Wertebereich, funktionale Abhängigkeit und voll funktionale Abhängigkeit? Welche Eigenschaften haben Relationen? Was ist ein Primärschlüssel (Synonym: Identifikationsschlüssel), was ein Fremdschlüssel? Was sind die zwei wichtigsten Eigenschaften eines Primärschlüssels? Welche sind die im Relationenmodell verfügbaren relationalen Operatoren und welche sind die Mengenoperatoren. Wie sind diese definiert? Mathematische Grundlagen Mengenlehre Menge: ist eine Zusammenfassung von mehreren unterschiedlichen Elementen (Objekten, Zahlen). Wichtig ist, dass jedes Element nur einmal in der Menge vorkommen darf. Daraus resultiert, dass eine Menge keine Aufzählung ist, sondern eine Klassifizierung von Elementen. Beschreibung von Mengen Aufzählendes Verfahren: M={rot, gelb,lila} Beschreibendes Verfahren: M={x x<=3} (gesprochen: M ist die Menge aller x, für die gilt x ist kleiner gleich 3) Ob ein Element teil von einer Menge ist wird mit dem beziehungsweise dem gekennzeichnet. Bsp: a {a,b,c} Bsp: a {d,e,f} Gleichheit von Mengen Zwei Mengen sind gleich wenn sie die gleichen Elemente enthalten, mehrfach vor kommende Elemente werden nur einmal gezählt(beziehungsweise gibt es in einer Menge keine gleichen Elemente(siehe Definition)): {a,b,c}={c,a,b} Teilmenge A ist eine echte Teilmenge von B, wenn jedes Element von A auch in B vorkommt. B wird auch Obermenge genannt, wichtig ist jedoch dass es mindestens ein Element in B gibt das es nicht in A gibt! Anders gesagt, alle Elemente von A existieren in B, nur B hat Elemente, die in A nicht existieren. 19/143

20 Unterschied echte Teilmenge und Teilmenge Bei der echten Teilmenge hat B noch Elemente die nicht in A enthalten sind, bei der Teilmenge haben A und B genau, die selben Elemente (Gleichheit). Durchschnitt (Schnitt/Schnittmenge) Eine Schnittmenge besteht aus allen Elementen die in beiden Mengen vorkommen, sowohl in Menge A als auch in Menge B: Gesprochen: M3 ist die Menge aller m, für die gilt m ist ein Element von M1 und m ist ein Element von M2 Vereinigung (Vereinigungsmenge) Diese Menge erhält man in dem man alle Elemente der Menge A und der Menge B zusammenfasst. Dies sind die Elemente die sowohl in der einen als auch in der Anderen Menge enthalten sind oder in beiden Mengen enthalten sind. Gesprochen: die Vereinigte Menge ist die Menge aller x, für die gilt x ist ein Element von der Menge A oder x ist ein Element von der Menge B 20/143

21 Differenz zweier Mengen Die Differenz von M1 und M2, sind die Elemente die in der Menge M1 enthalten sind nicht jedoch in der Menge M2: Gesprochen: M3 ist die Menge aller m für die gilt m ist Element von M1 und m ist kein Element von M2. Komplement zweier Mengen Sind die Elemente die in einer der beiden Mengen vorkommen, die jedoch nicht in beiden Mengen vorkommen. Es kann man mit einem XOR vergleichen: Gesprochen: das Komplement ist die vereinigte Menge aus der Differenz von A und B und der Differenz aus B und A Kartesisches Produkt Das Kartesische Produkt, A X B, ist die Menge aller geordneten Paare (m1/m2), für die gilt m1 ist Element von A und m2 ist Element von B. Gesprochen: das kartesische Produkt ist die Menger aller a,b für die gilt a ist Element von A und b ist Element von B. 21/143

22 Beispiel Wichtig: REIHENFOLGE: (a/1) ist ein Element von M1XM2 zulässig, aber (1/a) ist kein Element von M1XM2. (1/a) wäre ein Element von M2XM2 Potenzmenge Eine Potenzmenge P(M) enthält alle möglichen Teilmengen von M, sowie auch die leere Menge: Gesprochen: die Menge P, ist die Menge aller A, für die gilt A ist eine Teilmenge von M. Anmerkung: Leere Menge dargestellt einerseits durch {} und andererseits durch Disjunkte Menge Ist der Durchschnitt zweier Mengen A und B leer so heißen diese Mengen disjunkt. Beispiel A={a,b,c,d} B={1,2,3,4} A B ={} A B nennt man also disjunkte Menge Mächtigkeit Die Mächtigkeit einer Menge ist die Anzahl ihrer Elemente. Wenn M eine Menge mit 3 Elementen ist so gilt: M =3. 22/143

23 Unterschied zwischen Relation und (mathematischen) Funktion? Relation Eine Relation definiert eine Beziehung zwischen Elementen (Dingen), das heißt Elemente von einer Menge werden zu einem oder mehreren Elementen in einer anderen Menge in Beziehung gesetzt. Eine Relation ist somit eine Teilmenge des kartesischen Produktes von zwei Mengen. Beispiel A={0,1,3,4,5} B={3,1,5,8,4} Kartesisches Produkt: { (0/3), (0/1), (0/5), (0/8), (0/4), (1/3), (1/1), (1/5), (1/8), (1/4), (3/3), (3/1), (3/5), (3/8), (3/4), (4/3), (4/1), (4/5), (4/8), (4/4), (5/3), (5/1), (5/5), (5/8), (5/4)} Relation zwischen A und B: ist Teiler von: (1/3), (1/1), (1/5), (1/8), (1/4), (3/3), (4/8), (4/4), (5/5) Relation zwischen A und B: beide Elemente gleich: (1/1), (3/3), (4/4), (5/5) In der Mathematik: einem x werden mehrere y-werte zugeteilt Funktion Eine Funktion ist ein Relation, bei der jedem x-wert genau ein y-wert zugeteilt wird. Beispiel Kartesisches Produkt von oben mit Relation zwischen A und B: beide Elemente gleich: (1/1), (3/3), (4/4), (5/5) ist somit auch eine Funktion, denn es ist immer nur ein Wert aus der ersten Menge der mit einem Wert aus der zweiten kombiniert wird. 23/143

24 Was bedeuten Attribut, Wertebereich, funktionale Abhängigkeit und voll funktionale Abhängigkeit? Attribut Ein Attribut ist eine Eigenschaft einer Entität und wird im relationalen Modell als Spalte einer Tabelle dargestellt. Wertebereich Der Wertebereich wird auch Domäne genannt. Eine Domäne besteht immer aus dem Namen D und einer Menge atomarer, nicht strukturierter Daten. Beispiel Buchstabe={a,b,.z, A,B,.Z} Buchstabe ist der Domänenname und die Klammer ist die Menge atomarer, nicht strukturierter Daten. Eine Domäne kann mit einem Datentyp in einer Programmiersprache verglichen werden!! Funktionale Abhängigkeit Ein Attribut B ist von dem Attribut A funktional Abhängig, wenn zu jedem Wert von A nur ein Wert von B auftreten kann. A->B Das Attribut Name ist funktional abhängig vom Attribut ID! ID->Name Volle funktionale Abhängigkeit A ist Primärschlüssel, B ist ein Nicht-Schlüssel-Attribut. B ist genau dann voll funktional Abhängig von A, wenn B bereits von A funktional Abhängig ist, jedoch unabhängig von Teilen von A. A==>B! Das Attribut Note ist voll funktional Abhängig von IDStudent und IDProfessor, weil es sich weder auf Prof. noch Student bezieht, es bezieht sich jedoch auf beide miteinander. Ein Attribut B heißt voll funktional abhängig vom Schlüssel A, falls B funktional abhängig ist von A, jedoch nicht schon funktional abhängig von einer Teilmenge von A ist. Hinweis: ist ein Primärschlüssel nicht mehrteilig, so ist ein Attribut sofort voll funktionalabhängig vom Primärschlüssel, wenn es funktionalabhängig ist. 24/143

25 Primärschlüssel Dient zur Identifikation und Verknüpfung von Datenbeständen, ein Schlüssel muss ein Tupel eindeutig identifizieren. Zwei Schlüssel dürfen nicht den gleichen wert haben! Ein Primärschlüssel kann aus einem oder mehreren Attributen bestehen, es sollten aber so wenig wie möglich Attribute verwendet werden. Es kann auch künstlich ein Primärschlüssel eingefügt werden, beispielsweise eine Kundennummer. Der Primärschlüssel kann nicht nach belieben verändert werden. Die zwei wichtigsten Eigenschaften sind NOT NULL und UNIQUE, das heißt ein Primärschlüssel muss eindeutig/einzigartig sein und darf nicht den Wert Null annehmen, denn er wäre somit nicht mehr eindeutig. Fremdschlüssel Bezieht man sich in einer Tabelle auf Werte einer anderen Tabelle, so kann man den entsprechenden Primärschlüssel als Attribut in die Tabelle einfügen. Wenn man sich auf den Primärschlüssel einer anderen Tabelle, so nennt man dieses Attribut Fremdschlüssel, der Fremdschlüssel darf öfter in der referenzierten Tabelle vorkommen. Es kann sein, dass man den Fremdschlüssel anders bezeichnen muss, wenn man in der aktuellen Tabelle schon einen Primärschlüssel hat der gleich heißt(rekursion). Welche sind die im Relationenmodell verfügbaren relationalen Operatoren und welche sind die Mengenoperatoren? Wie sind diese definiert? Projektion Bei der Projektion wird aus einer Menge von Attributen nur ein Teil angezeigt: SELECT name from Kunde Sonderfall: Anzeigen aller Attribute: SELECT * from Kunde Projektion beeinflussen: order by ASC/DESC oder distinct Die Projektion kann man mit einer Teilmenge in der relationalen Algebra vergleichen. Selektion Man wählt nur bestimmte Tupeln einer Tabelle aus, diese werden aufgrund des Selektionsprädikats bestimmt. Die Selektion beschreibt eine Teilmenge in der Relationen-Algebra. Bsp: SELECT * from R WHERE a1<a2 Union Dieser Befehl verbindet Datensätze aus zwei Relationen. Es werden alle Tupeln ausgegeben, die entweder in der einen Menge oder in der anderen existieren. Union entspricht der vereinigten 25/143

26 Menge. Voraussetzungen: Beide Relationen haben dieselbe Anzahl von Spalten oder man selektiert die Spalten. Die Spalten haben in ihrer Reihenfolge übereinstimmende Domänen. Die Datentypen der einen Tabelle müssen die gleichen sein wie in der anderen Tabelle. Bsp: SELECT * FROM Mitarbeiter UNION SELECT * FROM Kunden Das Statement selektiert alle Mitarbeiter und Kunden. Doppelte Zeilen werden unterdrückt. Intersection Die Intersection entspricht der Schnittmenge in der relationalen Algebra. Der Befehl intersect steht nicht immer zur Verfügung, kann aber mit verschachtelten SELECT Befehlen nachgebaut werden. Es werden immer alle Elemente herausgefiltert die in der einen und in der anderen Menge existieren. Bsp: SELECT * FROM Mitarbeiter INTERSECT SELECT * FROM Kunden Differenz Liefert die Zeilen der ersten Menge, die in der zweiten nicht enthalten sind. Es entspricht der Differenz in der relationen Algebra. Bsp: SELECT * FROM Mitarbeiter MINUS SELECT * FROM Kunden JOIN Mit diesem Befehl kann man mehrere einzelne Tabellen zu einer großen, tatsächlich nicht existierenden Tabelle verbinden. Ein Join entspricht dem kartesischen Produkt, denn es werden alle möglichen Kombinationen gebildet, das heißt es wird jede Zeile der ersten Tabelle mit jeder Zeile der zweiten verknüpft. Beispiel: SELECT * FROM Verlag, Postleitzahl; liefert: Wie man sehen kann wird jede Zeile aus Verlag mit jeder Zeile aus Postleitzahl kombiniert, man kann erkennen, dass hier auch fehlerhafte Einträge gebildet werden. Deshalb kann die Ausgabe beschränkt werden: SELECT *FROM Verlag, Postleitzahl WHERE Verlag.plz = Postleitzahl.plz; 26/143

27 Attribute qualifizieren: Existieren gleichnamige Attribute in beiden Tabellen, so können diese mit Tabellenname.Attribut eindeutig identifiziert werden. Anstelle des obigen Statements kann auch dieses verwendet werden: SELECT * FROM Verlag INNER JOIN Postleitzahl ON Postleitzahl.plz = Verlag.plz; Left Outer Join Mit einem Left Join wird eine sogenannte linke Inklusionsverknüpfung erstellen, diese schließt alle Tupeln aus der linken Seite (erste Tabelle) ein, auch wenn kein passender Eintrag in der rechten Tabelle (Tabelle 2) existiert. Beispiel SELECT * FROM Mitarbeiter LEFT JOIN Projekte ON (Mitarbeiter.Nachname = Projekte.Nachname AND Mitarbeiter.Vorname = Projekte.Vorname) Right Outer Join Mit einem Right Join wird eine sogenannte rechte Inklusionsverknüpfung erstellen, diese schließt alle Tupeln aus der zweiten (rechten) Tabelle ein, auch wenn kein entsprechender Gegeneintrag in der ersten (linken) Tabelle existiert. Beispiel SELECT * FROM Mitarbeiter RIGHT JOIN Projekte ON (Mitarbeiter.Nachname = Projekte.Nachname AND Mitarbeiter.Vorname = Projekte.Vorname) 27/143

28 Full Outer Join Ist eine Kombination von left und right outer Join. Beispiel SELECT * FROM Mitarbeiter FULL JOIN Projekte ON (Mitarbeiter.Nachname = Projekte.Nachname AND Mitarbeiter.Vorname = Projekte.Vorname) 28/143

29 5. Normalformen (Zeilinger) Erläutern Sie die Bedingung für die ersten drei Normalformen (1NF, 2NF, 3NF) und die erforderlichen Schritte zur Transformation in diese Normalformen! Welche Vor bzw. Nachteile ergeben sich, wenn sich ein ER Modell in der 3. NF befindet? Gibt es noch weitere Stufen von Normalformen? Was versteht man in diesem Zusammenhang unter Anomalie? Welche Anomalien kennen Sie Führen Sie dazu Beispiele an! Warum normalisiert man Daten / Tabellen? Die Relationen der Datenbank sind daraufhin zu überprüfen, ob sie unerwünschte Abhängigkeiten der Felder untereinander und somit Redundanzen aufweisen. Dies geschieht indem man schrittweise überprüft, ob die Relationen den Bedingungen der Normalformen (NF) entsprechen und die Relationen bei Bedarf dann entsprechend anpasst. Im Verlauf eines solchen Normalisierungsprozesses kommt es zu einer Reduzierung der Redundanzen, parallel dazu jedoch auch zur Zerlegung und somit zu einer Vermehrung der Anzahl der Relationen. 1. Normalform Jedes Feld (Attributwert) darf nur genau eine Ausprägung des Wertebereichs umfassen (d.h. nur atomare Werte). Beispiel: Die Adresse darf nicht als Attribut verwendet werden, sondern muss sofern es der zugrunde liegende Prozess erfordert in PLZ, Ort, Straße, Hausnummer aufgeteilt werden. Gibt es mehrere Werte für ein Attribut (=Wiederholungsgruppe), so müssen diese in einem eigenen Feld gespeichert werden. (Beispiel: Ein Mitarbeiter kann mehre Vornamen haben, an mehreren Projekten arbeiten, ). Feldgruppen (z. B. das Attribut Name, welches den Vor- und Nachnamen enthält) müssen als eigene Felder dargestellt werden ( Vorname, Nachname ) Beispiel Wiederholungsgruppe: Projekte Feldgruppe: Adresse Für Wiederholungsgruppen wird jeweils eine neue Zeile angelegt. Eine Feldgruppe wird aufgelöst, indem ihre Bestandteile eigene Spalten bilden. 29/143

30 2. Normalform Eine Tabelle/Relation ist in der zweiten Normalform, wenn die erste Normalform vorliegt und kein Nichtschlüsselattribut voll funktional abhängig von einer echten Teilmenge eines Schlüsselkandidaten ist. Einfach gesagt: Jedes nicht-primäre Attribut (Nichtschlüsselattribute, nicht Teil des Schlüssels) ist jeweils von allen Schlüsseln(können mehrere Spalten sein) abhängig, nicht nur von einem Teil des Schlüssels. Wichtig ist, dass die Nichtschlüsselattribute von ALLEN Schlüsseln abhängig sind. Beispiel Die Daten in der Tabelle werden in zwei Tabellen aufgeteilt: Mitarbeiter und Projekt, da der Schlüssel aus 2 Attributen besteht und die Nichtschlüsselattribute nur von einem Teil des Primärschlüssels abhängig sind und so nicht voll funktional abhängig sind. Die Tabelle Mitarbeiter enthält nur noch Felder, die voll funktional von Mitarbeiter# abhängen, hat also Mitarbeiter# als Primärschlüssel. Da keine weiteren (zusammengesetzten) Schlüsselkandidaten existieren, liegt die Tabelle damit automatisch in der 2. Normalform vor. Die Tabelle Projekt enthält schließlich nur noch Felder, die voll funktional von Mitarbeiter# und ProjektNr abhängen, liegt also auch in der 2. Normalform vor. Mit Hilfe dieser verlustfreien Zerlegung sind auch die genannten Redundanzen der Daten beseitigt. 3. Normalform Eine Relation/Tabelle befindet sich in der dritten Normalform, wenn sich die Relation schon in der 2. Normalform befindet jedes Nichtschlüsselattribut nicht transitiv vom Primärschlüssel abhängig ist. 30/143

31 Was heißt Transitiv? Allgemein für die Attribute einer Relation formuliert: Attribut 1 hängt voll funktional vom Primärschlüssel ab; Attribut 2 hängt von Attribut 1 ab; dann wird der Rückschluss gezogen, dass Attribut 2 auch vom Primärschlüssel abhängt ==> Attribut 2 bezeichnet man als transitiv Abhängig vom Primärschlüssel. Schritte zur Transformation in die 3. Normalform 1. Untersuchung, ob aus Nichtschlüsselattributen andere Nichtschlüsselattribute folgen. Falls nicht liegt bereits die 3. NF vor. Falls Abhängigkeiten gefunden werden, dann 2. Neue Relation bilden, die das Nichtschlüsselattribut (wird nun Primärschlüssel der neuen Relation) und die von ihm abhängigen Attribute enthält. 3. Löschen der ausgelagerten Nichtschlüsselattribute mit Ausnahme des Attributes, das in der neuen Relation Primärschlüssel ist. 4. Vorgang ab 2. wiederholen, bis keine Abhängigkeiten mehr bestehen Beispiel Die Attribut Vorname, Nachname und Abteilung sind voll funktional abhängig und mit der Mitarbeiter# indetifizierbar. Der Abteilungsleiter ist von Abteilung abhängig, also von einem Nichtschlüsselattribut abhängig. Also ist der Abteilungsleiter transitiv vom Primärschlüssel abhängig. Das heißt es muss nun mit dem 2. Schritt, welcher oben gelistet ist, fortgefahren werden: eine neue Relation/Tabelle erstellen. Der Abteilungsleiter gehört nun in eine Relation Abteilung mit Abteilung als Primärschlüssel und den Abteilungsleiter als Attribut. In der Relation Mitarbeiter bleibt nur das Attribut Abteilung. Vor- und Nachteile der Normalisierung Vorteile Redundanzfreie Speicherung, d.h. jedes Faktum ist nur einmal in der Datenbank gespeichert. Sicherung der Integrität. Integrität bedeutet, dass keine sich widersprechenden Fakten in der Datenbank gespeichert sind. 31/143

32 Nachteile Zum Teil hoher Normalisierungsaufwand Schlechteres Laufzeitverhalten bei der Zusammenfügung (Join)mehrerer Relationen. Weitere Normalformen Ja es gibt noch weitere Normalformen. Es gibt noch die: Boyce-Codd-Normalform 4. Normalform 5. Normalform Anomalie Beim Erstellen von Datenbanken kann es zu Problemen kommen, wenn die Datenbank nicht normalisiert aufgebaut ist. Diese Probleme nennt man Anomalien. Es gibt drei Arten von Anomalien, die Update-Anomalie, die Insert-Anomalie und die Delete-Anomalie. Update Anomalie Die hellblau hinterlegten Zellen dienen zur Veranschaulichung des Problems: Es gibt zwei Ansprechpartner für die Adresse Hoher Wall 12. Problematisch wird es dann, wenn die ABC GmbH ihren Sitz verlegt. Nun müsste die Anschrift für dieses Unternehmen in zwei verschiedene Zeilen geändert werden. Wird nur eine Zeile falsch aktualisiert, kann das schwere Folgefehler für ein Unternehmen haben. Dieses Problem nennt man die Update-Anomalie. Um diese Anomalie zu umgehen sollte für den Namen und die Anschrift aller Unternehmen eine eigene Tabelle angelegt werden. Das ganze würde so aussehen: 32/143

33 Delete Anomalie Die hellblau hinterlegten Zellen dienen zur Veranschaulichung des Problems: Werden nun in der dritten Zeile die Informationen um Frau Haber gelöscht, kann folgender Fall eintreten, dass jemand mit Hilfe der Datenbank einen Bericht über die Kontakte des letzten Jahres erstellen möchte? Wenn bei dieser Aufteilung der Tabelle Informationen zu Frau Haber gelöscht werden, werden auch alle Daten der IT-AG gelöscht. Dieses Problem wird als Delete-Anomalie bezeichnet. Wenn die Daten jedoch so wie bei der Update-Anomalie getrennt auf zwei Tabellen verteilt sind, kann die Kontaktperson Eva Haber beruhigt gelöscht werden, ohne wichtige Informationen über die IT-AG zu verlieren. Insert Anomalie Die hellblau hinterlegten Zellen dienen zur Veranschaulichung des Problems: Die Beispieltabelle ist für die Daten der Kontaktpersonen gedacht und nicht umbedingt für die Daten der Unternehmen. Wird nun einen weitere Firma in die Datenbank / Tabelle aufgenommen, und es bestehen keine Informationen zu einer Kontaktperson, muss gewartet werden bis eine Kontaktperson vorhanden ist, um einen Datensatz einfügen zu können. Dies nennt man die Insert-Anomalie. 6. SQL als DDL und DML Was besagt ANSI SQL92 halten sich die DB Anbieter daran? SQL (Structured Query Language) ist eine Sprache zum Abfragen, Manipulieren und Löschen von Daten (Data Manipulation Language) sowie zum Erstellen, Manipulieren und Löschen der Datenstrukturen (Data Description Language) einer relationalen Datenbank. Des weiteren können die Zugriffsrechte auf die Datenbank für verschieden Benutzer über SQL festgelegt werden (Data Control Language). Mit SQL 92, der dritten SQL-Version, zweite große Revision, wurden in SQL einige Neuerungen eingeführt. Viele der SQL-92-Funktionen wurden bereits vorher von verschiedenen Datenbanken teilweise unterstützt. Neueinführungen mit SQL 92 waren beispielsweise neue Datentypen wie DATE, TIME, TIMESTAMP oder VARCHAR sowie JOINS (LEFT JOIN, RIGHT JOIN, INNER JOIN) als auch Operationen zur Differenzmenge, Vereinigungsmenge und Schnittmenge. Außerdem wurde das Bearbeiten von Schemadefinitionen ersmals Bestandteil von SQL (ALTER..., DROP ). 33/143

34 Heutzutage unterstützen fast alle Datenbankanbieter die Funktionen aus SQL-92, wobei sich diese in der Umsetzung teilweise leicht unterscheiden. So heißt das Schlüsselwort für die Differenzmenge bei PostgreSQL EXCEPT und bei MySQL MINUS. Auch die Bezeichnung mancher String-Funktionen unterscheiden sich unter manchen Datenbankanbietern, wie auch die Verwendung von und. SQL 92 stellt die letzte SQL-Version dar, die von den meisten Datenbankanbietern umfassend unterstützt wird. Wie sind die relationalen und die Mengenoperatoren in SQL umgesetzt? Vereinigungsmenge SELECT * FROM A UNION SELECT * FROM B; oder SELECT * FROM A FULL OUTER JOIN B ON A.id = B.id; Schnittmenge SELECT * FROM A INTERSECT SELECT * FROM B; oder SELECT * FROM A INNER JOIN B ON A.id = B.id; Differenz SELECT * FROM A MINUS SELECT * FROM B; oder 34/143

35 SELECT * FROM A LEFT OUTER JOIN B ON A.id = B.id WHERE B.id = NULL; Symmetrische Differenz SELECT * FROM A FULL OUTER JOIN B ON A.id = B.id WHERE A.id IS null OR B.id IS null; Wie erfolgt die Gruppen verarbeitung in SQL? Gruppierung erfolgt in SLQ über GROUP BY <spaltenname>[,<spaltenname>]{}. GROUP BY wird in Verbindung mit einer Aggregierungsfunktion verwendet. Die Aggregatfunktion fasst alle gleichen Werte der in GROUP BY definierten Spalte zusammen. Wird beispielsweise in GROUP BY der Nachname einer Person angegeben, so wird für jeden unterschiedlichen Nachnamen eine Zeile als Ausgabe einer Abfrage erzeugt. Aggregierungsfunktionen Aggregierungsfunktionen dienen dazu eine bestimmte Spalte einer Abfrage zu einem aussagekräftigen Wert zusammenzufassen. Funktion AVG MAX MIN SUM COUNT MEDIAN FIRST/LAST Beschreibung Durschnitt der Werte Höchster Wert Kleinster Wert Summe über alle selektierten Werte Zahl der selektierten Werte Median über alle Werte Erster bzw. als letzter selektierter Wert Beispiel Umsatz einzelner Kunden absteigend sortiert: SELECT Kunden.vorname, Kunden.nachname, SUM(Bestellungen.preis) AS Umsatz FROM Bestellungen, Kunden WHERE Bestellung.fk_kunde_id = Kunden.id GROUP BY Kunden.vorname, Kunden.nachname ORDER BY Umsatz DESC; 35/143

36 Beispielausgabe Kunden.Vorname Kunden.Nachname Umsatz Franz Kafka Max Mustermann Dorian Gray 23.1 Was versteht man unter einem Outer Join, was unter einem Self Join? Bei einem Outer Join unterscheidet man prinzipiell zwischen einem FULL OUTER JOIN, LEFT OUTER JOIN und einem RIGTH OUTER JOIN. Bei einem FULL OUTER JOIN werden alle Zeilen aus Tabelle A und aus Tabelle B selektiert, unabhängig davon ob A in B oder B in A enthalten ist. Werte die nicht enthalten sind, werden NULL gesetzt. Bei einem LEFT OUT JOIN werden alle Tupel aus A selektiert und mit den zughörigen Zeilen aus B kombiniert. Auch hier werden bei Zeilen aus A, die in B nicht referenziert sind, die enstprechende Spalten auf Null-Werte gesetzt. Der RIGHT OUTER JOIN funktioniert wie der LEFT OUTER JOIN, mit dem Unterschied, dass alle Zeilen aus B aber nicht aus A selektiert werden. FULL OUTER JOIN Beispiel CustomerID CustomerName ContactName Address City PostalCode Country 1 Alfreds Futterkiste Maria Anders Obere Str. Berlin German 57 y 2 Ana Trujillo Ana Trujillo Avda. de la México Mexico Emparedados y helados Constitució D.F. n Antonio Moreno Antonio Mataderos México Mexico Taquería Moreno 2312 D.F. OrderID CustomerID EmployeeID OrderDate ShipperID SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders 36/143

37 ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName; ergibt folgende Tabelle: CustomerName Alfreds Futterkiste OrderID Ana Trujillo Emparedados y helados Antonio Moreno Taquería LEFT OUTER JOIN Self Join Von einem Self-Join spricht man, wenn man in einer Tabelle Datensätze aus der selben Tabelle referenziert und diese selektiert. Als klassisches Beispiel kann hier eine Tabelle Mitarbeiter gesehen werden, wobei ein Mitarbeiter einen anderen Mitarbeiter als Vorgesetzten haben kann. Beispiel Tabelle Employee EmployeeID FirstName LastName Supervisor Victor Frankenstein Vanessa Ives Sir Malcolm Murray Evan Chandler SELECT E1.FirstName, E1.LastName, E2.LastName AS SupervisorName FROM Employee E1 LEFT OUTER JOIN Employee E2 ON E1.EmployeeID = E2.Supervisor; Ergebnis: FirstName LastName SupervisorName Victor Frankenstein Ives Vanessa Ives Murray 37/143

38 Sir Malcolm Murray Evan Chandler Murray Unterabfragen ( Subquerys ) Ein Subquery stellt in SQL eine Abfrage in einer Abfrage dar. Beispiel alle Personen die in diesem Jahr 18 werden und keinen Führerschein haben: SELECT firstname, lastname, DATEDIFF(YEAR, dateofbirth, CURDATE()) AS age FROM Person WHERE age >= 18 AND personid NOT IN (SELECT fkpersonid FROM License); //subselect Integritätsbedingungen Integritätsbedingungen sorgen für konsistente Daten in der Datenbank. Sie umfassen das Beschreiben von Beziehungen, Schlüssel sowie das Einschränken des Wertebereichs. Tabellenebene (hier müssen die Spaltennamen angegeben werden) Name PRIMARY_KEY(Spaltenname(n)) FOREIGN_KEY(Spaltenname) REFERENCES tabellenname(spaltenname2) UNIQUE(Spaltenname) CHECK(Bedingung) Beschreibung Primärschlüssel -> NOT NULL und UNIQUE Fremdschlüssel, wobei die Spalte Spaltenname eine Spalte Spaltenname2 in der zu referenzierenden Tabelle referenziert muss einen eindeutigen Wert in der Tabelle habe, d.h. derselbe Wert kann nicht zweimal vorkommen die Bedingung muss erfüllt sein, Beispiel: CHECK(gender in ( m, f )) -> Geschlecht als einzelnen Character m oder f speichern Spaltenebene Name PRIMARY_KEY REFERENCES tabellenname(spaltenname) UNIQUE NOT NULL Beschreibung Primärschlüssel -> NOT NULL und UNIQUE Fremdschlüssel, wobei die Spalte Spaltenname in der Tabelle tabellenname referenziert wird muss einen eindeutigen Wert in der Tabelle habe, d.h. derselbe Wert kann nicht zweimal vorkommen darf nicht null sein 38/143

39 CHECK(Bedingung) die Bedingung muss erfüllt sein, Beispiel: CHECK(gender in ( m, f )) -> Geschlecht als einzelnen Character m oder f speichern Constraints Constraints (Beschränkungen) sind Bedingungen, die Werte und Operationen auf Tabellen und Spalten einschränken. In SQL gibt es dabei zahlreiche Möglichkeiten, wobei einige im vorhergehenden Punkt beschrieben wurden. Zusätzliche Constraints sind die Referenzierungs-Constraints, wie ON DELETE UPDATE RESTRICT und ON DELETE UPDATE CASCADE. DDL-Data Definition Language: Daten Definitionssprache : Zum Erstellen/Löschen/Ändern der Tabellenstruktur und der Beziehungen zwischen den einzelnen Tabelle; Beispiel: CREATE TABLE, ALTER TABLE, DROP TABLE,... DML-Data Manipulation Language: Datenmanipulationssprache, dient zur Veränderung des Datenbestandes in einer Tabelle. Beispiel: Einfügen neuer Tupel, Ändern von Attributen oder Löschen von Datensätzen. DCL-Data Control Language: zur Bestimmung der Berechtigungen(wer darf in diese Tabelle schreiben, wer hat einsicht in die Daten, wer nicht.) Welche Beziehungen (Kardinalitäten) können unmittelbar mit Hilfe von SQL und den Integritätsbedingungen in einem relationalem DBMS umgesetzt werden? Beziehung Überführung in SQL 1:1 zu einer Tabelle zusammenfassen oder Primärschlüssel der einen wandert als Fremdschlüssel zur anderen der beiden Tabellen mit UNIQUE und NOT NULL 1:m Primärschlüssel der 1-Tabelle wandert zu als Fremdschlüssel NOT NULL zur m-tabelle mc:nc neue Tabelle mit den Primärschlüsseln beider Tabellen als Fremdschlüssel 1:c wie 1:1 nur ohne NOT NULL, wobei der Primärschlüssel der c-tabelle als Fremdschlüssel zur 1-Tabelle wandert 1:mc wie 1:m nur ohne NOT NULL 39/143

40 Bei welchen ist eine Zusatzprogrammierung erforderlich? Um m:n bzw. m:nc muss ich selbst garantieren, dass jeder m-datensatz auch einen zusätzlichen n- Datensatz und bei der m:n-beziehung auch in umgekehrte Richtung hat. Dies kann beispielsweise über eine Stored Procedure realisiert werden, die gleich beide Datensätze hinzufügt, falls noch nicht vorhanden und die Verknüpfung erstellt. Was versteht man unter statischen/dynamischen SQL Statements und wie werden diese realisiert? Statische SQL-Statements sind Statements, die keine Variablen enthalten. Diese werden vor erstmaliger Ausführung übersetzt und anschließend gecached. Bei nächstmaliger Ausführung greift die Datenbank auf den Cache zurück. Bei dynamischen SQL-Statements werden Variablen verwendet. Diese Anweisung wird von der Datenbank vor jeder Ausführung mit neuen Variablen neu übersetzt und ist dementsprechend langsamer. Dafür wird aber eine höhere Flexibilität erreicht. Die Variablen werden über? markiert. Beispiel EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?,?);"; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE mystmt FROM :stmt;... EXEC SQL EXECUTE mystmt USING 42, 'foobar'; //erstes? mit 42 zweites mit foobar ersetzen Was versteht man unter einer Transaktion? Transaktionen sind ein mit SQL92 eingeführter Mechanismus um mehrere SQL-Statements zusammenzufsassen und im Fehlerfall rückgängig machen zu können. Standardmäßig ist häufig die Auto-Commit Funktion aktiviert, die jedes ausgeführtes Statements sofort permanent macht. Eine Transaktion wird mit BEGIN [TRANSACTION] bzw. START TRANSACTION gestartet und COMMIT bestätigt. Um die bislang durchgeführten Änderungen Rückgängig zu machen steht ROLLBACK zur Verfügung. Beispiel BEGIN; UPDATE accounts SET balance = balance WHERE name = 'Alice'; SAVEPOINT my_savepoint; UPDATE accounts SET balance = balance WHERE name = 'Bob'; -- oops... forget that and use Wally's account ROLLBACK TO my_savepoint; UPDATE accounts SET balance = balance WHERE name = 'Wally'; COMMIT; 40/143

41 7. ER bzw. EER- Modell (Friedl) Was ist eine Entität? Was ist ein Entitätstyp? Was ist eine Beziehung ( Relationship ), was ein Beziehungstyp? Welche Beziehungen können Entitäten eingehen? Was versteht man unter einer schwachen Entität? Was unter Spezialisierung/Generalisierung? Erklären sie die Uminterpretation eines Beziehungstyps an Hand eines Beispiels. Was ist die Connection Trap bei redundanden zyklischen Beziehungen? Erklären sie einstufige und mehrstufige rekursive Datenstrukturen im ER Modell. Welche Beziehungen (Kardinalitäten!) können unmittelbar als Relationenschema (im Relationenmodell) dargestellt werden? Wie können schwache Entitäten als ER Diagramm bzw. als Tabellenschema modelliert werden? Warum dürfen/sollen Beziehungen nicht in Beziehung zu anderen Beziehungen stehen? Was versteht man in diesem Zusammenhang unter Uminterpretation? Fehlt noch: Erklären sie einstufige- und mehrstufige rekursive Datenstrukturen im ER-Modell. Warum dürfen/sollen Beziehungen nicht in Beziehung zu anderen Beziehungen stehen? Das ER-Modell Das ER-Modell ist ein Konzeptionelles Modell. Es wird zur abstrakten Modellierung der Daten der realen Welt verwendet. Zur Modellierung der konzeptuellen Ebene verwendet man das Entity-Relationship-Modell, welches einen Ausschnitt der Realwelt unter Verwendung von Entities und Relationships beschreibt. Das ER-Modell besteht einfach gesagt aus Entitäten (Entities), welche Attribute (Eigenschaften) und Relationships (also den Beziehungen) haben können. Beispiel Hier haben wir die Entitäten Rhetorik und Sokrates und die Beziehung liest, welche die beiden Entitäten verbindet. Gelesen wird das ganze wie folgt: Eine Vorlesung wird von einem Professor gelesen. Ein Professor liest eine Vorlesung. 41/143

42 Was ist also ein Entitätstyp? Wir kennen nun bereits die Entitäten. In unserem Beispiel Rhetorik und Sokrates. Der Entitätstyp stellt einfach eine Typisierung dieser dar. In unserem Beispiel würde das wie folgt aussehen: Rhetorik ist vom Typ Vorlesung und Sokrates ist vom Typ Professor. Im ER-Diagramm werden immer nur die Entitätstypen dargestellt, welche auch einfach nur als Entitäten bezeichnet werden. Wie bereits erwähnt können Entitäten auch Attribute haben. Diese beschreiben die Entität genauer. Beziehungen von Entitäten Prinzipiell unterscheiden wir zwischen 1:1, 1:N und N:M Beziehungen. Die 1:1 Beziehung Ein Mitarbeiter kann eine Abteilung leiten, eine Abteilung wird von einem Mitarbeiter geleitet. Die 1:N bzw N:1 Beziehung Jeder Mitarbeiter gehört zu einer Abteilung. Eine Abteilung kann mehrere Mitarbeiter 42/143

43 haben. Die N:M Beziehung Autoren können mehrere (M) Bücher schreiben. Bücher können mehrere (N) Autoren haben. Natürlich gibt es auch noch andere Notationen, wie zum Beispiel die MC-Notation: Wobei das C hier für 0 oder 1 steht. Schwache Entitäten (Weak Entities) Unter schwache Entitäten versteht man Entitäten, die ohne andere Entitäten nicht bestehen können. Weak Entities sind also von einer anderen Entität abhängig. Sie sind oft nur in Kombination mit dem Schlüssel der übergordneten Entität eindeutig identifizierbar. Schwache Entitäten werden im ER-Diagramm doppelt umrandet und haben keinen eigenen Schlüssel. Damit der Raum eindeutig identifiziert werden kann ist auch die Gebäudenummer nötig. Die Tabellenauflösung würde wie folgt aussehen: Räume{[Gebäude_Nr, Raum_Nr]} Der Schlüssel des Raumes besteht also aus 2 Attributen. Spezialisierung/Generalisierung Die Generalisierung wird zur weiteren Strukturierung der Entitätstypen eingesetzt. Hierbei werden Eigenschaften von ähnlichen Entitäten einem gemeinsamen Obertyp zugeordnet. Bei dem jeweiligen Untertyp verbleiben nur die nicht faktorisierbaren Attribute. Somit stellt der Untertyp eine Spezialisierung des Obertyps dar. 43/143

44 Connection Trap Die Connection Trap ist eine Falle in die man leicht hineintritt. Die Beziehung "besucht Vorlesung" ist redundant da die Verbindung zwischen Student und Professor schon durch die Beziehungen "besucht" und "hält" über die Vorlesung gegeben sind. Man sollte also redundante Beziehungen vermeiden. Warum dürfen/sollen Beziehungen nicht in Beziehung zu anderen Beziehungen stehen? Weil diese Modellierung nicht ideal ist und Probleme mit den Schlüssel auftreten können. 44/143

45 Um dies zu vermeiden sollten die Beziehungen in Beziehungstypen mit eigenem PK uminterpretiert werden. (Anforderung an Entitäten ist, diese hat einen Primärschlüssel der für sich alleine existiert) Das Relationale Modell: Um das ER-Modell in ein Relationales Modell umzuwandeln gibt es mehrere Regeln. Zu Beginn werden alle Entitäten in Tabellen umgeschrieben. Der Schlüssel bei Kadinalität 1 wandert dabei zum N. Für N:M Beziehungen werden neue Tabellen angelegt, die den Schlüssel beider Entitäten beinhalten. Warum dürfen/sollen Beziehungen nicht in Beziehung zu anderen Beziehungen stehen? Was versteht man in diesem Zusammenhang unter Uminterpretation? Laut Chen dürfen Beziehungen nicht mit Beziehungen in Beziehung stehen. Deshalb kann es sein, dass man eine Relation in eine Entität uminterpretieren muss. 8. Prozedurale Erweiterung von SQL-Datenbanken Was versteht man unter Prozedurale Erweiterung einer SQL Datenbank? Wo werden diese gespeichert und welche Vor bzw. Nachteile hat PL/pgSQL? Kann eine JDBC Anwendung eine PL/pgSQL Funktion nutzen; wenn ja: wie wird eine Nutzung ausschauen? Was versteht man unter einem View? Welche Operationen können darauf ausgeführt werden? Welche Befehle stehen für das Einfügen/Updaten von Daten unter SQL zur Verfügung? Grenzen sie Trigger, Stored Procedures und Functions voneinander ab. Welche unterschiedlichen Parameter gibt es und wie können diese verwendet werden. Was versteht man unter SQL Injection und wie kann man sich davor schützen? Was ist der Unterschied zwischen PreparedStatement, Stored Procedures und Stored Function? Wie kann aus einer objektorientierten Sprache wie Java PL/SQL genutzt werden (Beispiel)? Was ist ein Cursor (wofür wird dieser eingesetzt, wie schaut die Struktur aus)? Welche einsetzbaren Tools gibt es? Gibt es Debugger für PL/SQL Systeme? Auf welcher Ebene laufen PL/SQL Funktionen/Prozeduren und wo sind diese gespeichert? Kompatibilität von PL/SQL (z.b. Oracle PL/SQL ist kompatible zu pgsql von Postgres?) Die prozedurale Erweiterung einer SQL-Datenbank wird verwendet um zum Beispiel oft genutzte Abfrage mit einer Stored Procedure zu übernehmen. Weiters können Datenbanktrigger mittels prozeduraler Erweiterung erstellt werden. Als Programmiersprache wird PL/SQL (Procedural Language/SQL) von Oracle benutzt. Wo werden diese gespeichert und welche Vor- bzw. Nachteile hat PL/pgSQL? Gespeichert werden diese direkt im DBMS, wo sie auch ausgeführt werden. 45/143

46 Vorteile Weniger Netzwerkverkehr Schneller Sicherer Nachteile Höherer Aufwand Auftrennung der Programmlogik PL/pgSQL mit JDBC Beispielcode: Setzen eines Wertes in einer Tabelle: try { } int age = 111; String poetname = "hutterer thomas"; CallableStatement proc = connection.preparecall("{ call set_death_age(?,?) }"); proc.setstring(1, poetname); proc.setint(2, age); cs.execute(); catch (SQLException e) { //... } Was versteht man unter einem View? Views können als virtuelle Tabellen angesehen werden. Allgemein kann man sagen, dass eine Tabelle über einen Satz von Definitionen verfügt und Daten physikalisch abspeichert. Eine Ansicht verfügt ebenfalls über einen Satz von Definitionen, die auf einer oder mehreren Tabellen oder anderen Ansichten aufbauen, speichert die Daten aber nicht physikalisch ab. CREATE VIEW "VIEW_NAME" AS "SQL-Anweisung" Welche Operationen können darauf ausgeführt werden? Grundsätzlich alle lesenden, aber keine schreibenden, da dies zu Anomalien führen kann. Diese Abfrage kann durchaus gemacht werden: SELECT * FROM "VIEW_NAME" 46/143

47 Welche Befehle stehen für das Einfügen/Updaten von Daten unter SQL zur Verfügung? Insert Einfügen einer ganzen Zeile in eine bestehende Tabelle: INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2",...) VALUES ("Wert1", "Wert2",...) Konkret: INSERT INTO Store_Information (store_name, Sales, Date) VALUES ('Los Angeles', 900, '10.Jan.1999') Update einer bestehenden Zeile einer bestehenden Tabelle: UPDATE "Tabellen_Name" SET "Spalte1" = [Wert] WHERE {Bedingung} Konkret: UPDATE Store_Information SET Sales = 500 WHERE store_name = "Los Angeles" AND Date = "08.Jan.1999" Grenzen sie Trigger, Stored Procedures und Functions voneinander ab? Trigger wird ausgelöst wenn irgendetwas z.b. unter/über einen Wert oder gelöscht usw wird, dann passiert dies und dies... Function hat immer einen Return- Wert und führt eine Menge an Befehlen aus. Stored Procedure gibt eine Menge zurück. Welche unterschiedlichen Parameter gibt es und wie können diese verwendet werden? IN Parameter Ist das selbe wie Übergabeparameter bei Programmiersprachen. CREATE [OR REPLACE] PROCEDURE procedure_name ( param_name1 IN datatype, param_name12 IN datatype... ) OUT Parameter Dieser Typ von Parametern wird genutzt um Ergebnisse zu bekommen. Das selbe wie ein Return Wert. 47/143

48 CREATE [OR REPLACE] PROCEDURE proc2 (param_name OUT datatype) INOUT Parameter Ist das selbe wie IN & OUT zusammen. -> verwendet um Werte zus enden und zu bekommen. CREATE [OR REPLACE] PROCEDURE proc3 (param_name IN OUT datatype) Was versteht man unter SQL Injection und wie kann man sich davor schützen? Normaler Aufruf Aufruf : SQL: SELECT author, subject, text FROM artikel WHERE ID=42; SQL Injection Aufruf: SQL: SELECT author, subject, text FROM artikel WHERE ID=42; UPDATE USER SET TYPE="admin" WHERE ID=23; Schutz Ausfiltern oder Maskieren (sogenanntem Escapen) von Metazeichen in Benutzereingaben Mittels Prepared Statements können SQL-Injections effektiv verhindert werden, da das Datenbanksystem die Gültigkeit von Parametern prüft, bevor diese verarbeitet werden. Was ist der Unterschied zwischen PreparedStatement, Stored Procedures und Stored Function? Prepared Statement Ein Prepared Statement ist eine sogenannte vorbereitete Anweisung für ein Datenbanksystem. Im Gegensatz zu gewöhnlichen Statements enthält es noch keine Parameterwerte. Stattdessen werden dem Datenbanksystem Platzhalter übergeben. Stored Procedure Mittels gespeicherter Prozeduren können häufiger verwendete Abläufe, die sonst durch viele einzelne Befehle vom Client ausgeführt werden würden, auf das Datenbanksystem ausgelagert und durch einen einzigen Aufruf (CALL oder EXECUTE) ausgeführt werden. 48/143

49 Stored Function Nicht viel Unterschied zu Stored Procedure, aber die Funktion gibt immer ein Result zurück. Kann in einem SQL Statement aufgerufen werden wie eine normale SQL Anweisung. Wie kann aus einer objektorientierten Sprache wie Java PL/SQL genutzt werden? Siehe Frage 3 (Kann eine JDBC-Anwendung eine PL/pgSQL -Funktion nutzen; wenn ja: wie wird eine Nutzung ausschauen?) Was ist ein Cursor? Cursor sind Zeiger. Ein Cursor stellt einen definierten Umfang von Daten temporär zur Verfügung. Cursor und Schleifen Wir wollen nicht immer nur eine Zeile aus der Ergebnismenge eines Cursors bearbeiten, sondern immer alle Zeilen abarbeiten. Hierfür werden Schleifen genutzt. CREATE OR REPLACE Function TotalIncome ( name_in IN varchar2 ) RETURN varchar2 IS total_val number(6); cursor c1 is SELECT monthly_income FROM employees WHERE name = name_in; BEGIN total_val := 0; END; FOR employee_rec in c1 LOOP total_val := total_val + employee_rec.monthly_income; END LOOP; RETURN total_val; Welche einsetzbaren Tools gibt es? Gibt es Debugger für PL/SQL Systeme? PL/SQL Beautifier Command Window 49/143

50 MYSQL Workbench Oracle PL/SQL Debugger ist ein Debugger. Auf welcher Ebene laufen PL/SQL Funktionen/Prozeduren und wo sind diese gespeichert? Sind auf der Datenbank gespeichert und können dort ausgeführt werden. Kompatibilität von PL/SQL (z.b. Oracle PL/SQL ist kompatible zu pgsql von Postgres? Ja ist es. 50/143

51 9. Wartung/Backup/Restore Wie kann eine DBank gesichert bzw. wiederhergestellt werden? Was passiert, wenn man von einer in Betrieb befindlichen DBank einen Snapshot erzeugt wo liegen die Gefahren? Was ist die Aufgabe eines DB Managers? Kann der DB Hersteller bei einer bestehenden DBank beliebig ausgetauscht werden (Welche Möglichkeiten der Migration stehen zu Verfügung)? Was versteht man unter einer Reorganisation der DBank welche Vorsichtsmaßnahmen wirst du hier ergreifen? Wie erzeugt man unter MySQL ein Backup und wie kann es wieder eingespielt werden? Wie kann eine DBank gesichert bzw. wiederhergestellt werden Eine Datenbank wird grundsätzlich in einen Dump gespeichert. Dieser Dump enthält die Daten und die Struktur der Tabellen. (Kann auch geändert werden. Nur Daten. Nur Struktur). Ein Dump kann wie im letzten Punkt beschrieben mit einem Tool (phpmyadmin) einfach erstellet werden. Es besteht auch die Möglichkeit einen Dump über die Konsole zu erstellen. Export mysqldump name_ihrer_datenbank > dateiname.sql -u datenbankbenutzer -p Import mysql name_ihrer_datenbank < dateiname.sql -u name_des_datenbankbenutzers - p Wie erzeugt man unter MySQL ein Backup und wie kann es wieder eingespielt werden? Nach Auswahl der Datenbank kann in der Leiste oben Exportieren bzw. Importieren ausgewählt werden. Im Exportieren Reiter befinden sich 2 Optionen. Eine zum schnell Exportieren und eine wo Einstellungen vorgenommen werden können. Bei den Einstellungen können die zu sicherenden Tabellen, Name, Zeichencodierung, Komprimierung, Format, Daten, Struktur oder beides und einige weitere eingestellt werden. Um eine Sicherung wieder einzuspielen muss im Reiter Importieren lediglich das File wieder ausgewählt werden und mit OK bestätigt werden. 51/143

52 Was passiert, wenn man von einer in Betrieb befindlichen DBank einen Snapshot erzeugt, wo liegen die Gefahren? Die Gefahr besteht darin, dass nach Erstellen der Sicherung noch Daten verändert werden und die Datenbank so inkonsistent wird. Was ist die Aufgabe eines DB Managers? Datenbankmanager/innen sind in Unternehmen, Behörden, Institutionen und Einrichtungen beschäftigt, die Datenbanken als Basis moderner betrieblicher Informationssysteme einsetzen und anwenden. Sie managen, administrieren und betreuen konkrete Datenbanken. In diesem Rahmen ersetzen sie ältere Software durch neue Versionen (Update) und überwachen die Performance (Leistungsfähigkeit) von Computern oder Netzwerken. Zu ihren Aufgaben zählt zudem die Betreuung des Datenbank-Designs. Dabei geht es darum, dass Programme oder Bildschirm-Masken optisch und sachlich richtig gestaltet sind, und der Datenzugriffsschutz gewährleistet ist. Im Interesse der Leistungsfähigkeit der Datenbank sollten auch doppelte Datenhaltung sowie unnötige Platzverschwendung vermieden werden. Außerdem unterstützen Datenbankmanager/innen die Anwendungsabteilungen und das Rechenzentrum, beispielsweise hinsichtlich der Programmierstandards und qualitätssichernder Grundlagen. Weiterhin integrieren sie SAP-Systeme in die Logistikprozesse und -systeme von Kunden oder implementieren Internet-Vertriebslösungen. Bei Eilaufträgen von Kunden müssen Datenbankmanager/innen ihre Aufgaben häufig unter Zeit- und Erfolgsdruck bewältigen. Kann der DB Hersteller bei einer bestehenden DBank beliebig ausgetauscht werden? Es ist möglich einen Datenbankdump in die Datenbank einens anderen Herstellers zu laden. Jedoch muss dieser umkonvertiert werden und dies kann nur mit kostenpflichtigen Programmen, oder durch umschreiben des Dumps erledigt werden. Der PostgreSQL to MySQL Converter erledigt dies für Datenbanken mit bis zu 4 Tabellen kostenlos. Was versteht man unter einer Reorganisation der DBank (welche Vorsichtsmaßnahmen)? Es wird empfohlen eine Datenbank regelmäßig zu reorganisieren. Eine Datenbank reorganisieren heißt, diese "aufzuräumen" bzw. neu aufzubauen. Eine nicht aufgeräumte Datenbank hat an den unterschiedlichsten Stellen freien Speicher, denn wenn Daten gelöscht werden, werden an dieser Stelle keine neuen Daten hineingeschrieben. Sie werden stattdessen an das Ende der Datenbankdatei angehängt, sodass diese Datei immer größer wird. Ein Neuaufbau bewirkt, dass die Daten wieder zusammengefasst werden und der Speicherplatz neu strukturiert wird. Die Datenbank wird dadurch i.d.r. kleiner und die Verarbeitungsgeschwindigkeit der Anwendung wieder erhöht. Vor einer Reorganisation sollte immer Sicherung gemacht werden um bei auftretenden Fehlern oder Unterbrechungen (z.b. Stromausfall) eine Rückversicherung hat. 52/143

53 10. Servlets: Grundstruktur, Lebenszyklus und Web Container Kommunikationsablauf bei Java Servlets: (Reihenfolge, beteiligte Klassen mit Funktionen, beteiligte Dateitypen mit Beschreibung, Lebenszyklus eines Java Servlets, Was ist ein Deployment Descriptor? Wie wird er verwendet? Kann der Deployment Descriptor ersetzt werden? Wie kann ich die Bearbeitung auf mehrere Servlets aufteilen? Wie verarbeite ich Benutzereingaben in einer HTML Seite? Unterschiede zu JSP? Welche Konsequenzen hat die Multithreading Eigenschaft eines Servlets (wer kümmert sich um die Ressourcen, start/stop des Threads)? Was versteht man unter einem Redirect, wie kann dies via Servlets realisiert werden und wozu setzt man dies ein? Wie kann ein Servlet parametrisiert werden und wie werden Ressourcen (z.b. DB Connection) angefordert bzw. wieder frei gegeben (Multithreading!). Wie können Annotations eingesetzt werden (Beispiel)? Wie werden Techniken wie DI (Dependency Injection) in Servlets unterstützt (Beispiel)? Wozu braucht man bei Servlets einen Kontext? Wodurch unterscheidet sich ein Servlet und ein normales Java Programm? Können Servlets parametrisiert werden Beispiele). Aufbau einer URL für den Aufruf eines Servlets (Beispiel). Kommunikation und Lebenszyklus 1. Der Benutzer sendet ein ausgefülltes Formular im Browser ab. 2. Der Browser löst die damit verbundene Aktion aus, indem er die Formulardaten an den Webserver sendet. 3. Der Webserver übersetzt den Aktionsnamen des Formulars in den Namen einer Servletklasse. Er verwendet dazu Informationen aus dem Deployment-Deskriptor, einer Datei namens web.xml. 4. Der Webserver ruft die Methode dopost, doget oder service() des Servlets auf und übergibt dabei die Anfragedaten ( request ) als Parameter. Die Methode request erzeugt eine Ausgabe, die der Webserver an den Browser sendet. 5. Der Browser nimmt die Antwort entgegen und stellt sie dar. 6. Der Benutzer liest die Antwort im Browser. Das folgende Ablaufdiagramm zeigt einen typischen Ablauf beim Aufruf eines Servlets. 53/143

54 Lebenszyklus eines Servlets 1. Laden und instantiieren (Entweder beim starten des Containers (Tomcat) oder der ersten Anfrage) 2. Initialisieren ( init -Methode wird aufgerufen, DB Verbindung herstellen, Konfigurationsdatei einlesen) 3. Anfragen bearbeiten ( service -Methode wird aufgerufen, diese soll nicht überschrieben werden, da sie den Anfragetyp überprüft und an die jeweilige Methode weiterleitet (doget, dopost, ) 4. Entladen der Servlet Klasse (Container (Tomcat) entscheidet, wann die Servlet Instanz entfernt wird. Die Methode destroy wird aufgerufen) Beteiligte Klassen HttpServlet Alle Servlets erben von dieser Klasse. Sie stellt Methoden wie dopost, doget, service(), init, zur Verfügung HttpServletResponse Das Response Objekt wird den Methoden dopost, doget automatisch übergeben. In dieses Objekt wird die Antwort des Servlets über einen PrintWriter (res.getwriter()) hineingeschrieben. 54/143

55 HttpServletRequest Auch dieses Objekt wird automatisch übergeben. Es enthält alle Anfragedaten des Clients wie zum Beispiel Formulardaten. PrintWriter Mit dem PrintWriter kann das Servlet Antworten in das Response Objekt schreiben. Was der PrintWriter ausgibt wird später auf dem Client angezeigt. HttpSession Diese Klasse wird von der Servlet-API zur Verwaltung von Sitzungen zur Verfügung gestellt. Im Objekt können Attribute abgespeichert werden. Cookie Diese Java Klasse stellt ein Cookie dar, welches später auf dem Client gespeichert wird. Man kann Werte hineinschreiben und die Lebensdauer bestimmen. Deployment descriptor Die Struktur jeder Webapplikation unter Tomcat wird mit Hilfe der XML-Datei WEB-INF/web.xml beschrieben. Zwei wichtige Elemente beim Arbeiten mit Servlets sind servlet servlet-mapping Annotations Ersetzen des Deployment Descriptors durch = { "/ShakespeareServl" } public class ShakespeareServl extends HttpServlet { } 55/143

56 @WebServlet("/my address") public class MyServlet extends HttpServlet { } Aufteilen der Bearbeitung auf mehrere Servlets Mithilfe des Request-Dispatchers kann die Anfrage an ein ein weiteres Servlet weitergeleitet werden. Forward Methode Die Kontrolle wird vollständig an ein anderes Servlet übergeben, es dürfen von aktuellen Servlet noch keine Daten gesendet worden sein. Die Response wird vom nächsten Servlet erstellt! getservletcontext().getrequestdispatcher("/servlet/errorservlet").forward(req, res); Include Methode Das Resultat eines Weiteren Servlets wird eingebunden (wrapping), die Kontrolle bleibt beim aktuellen Servlet. Die Response wird vom aktuellen Servlet erstellt! getservletcontext().getrequestdispatcher("/servlet/item?item="+item).include(req, res); Benutzereingaben Vom Benutzer in HTML Formulare eingegebene Daten, werden an das im action -Parameter angegebene Servlet weitergegeben. Entweder mit der Methode GET oder POST. Im Servlet sind diese Argumente dann im Request Objekt gespeichert und können via getparameter abgerufen werden. Der Parametername entspricht hierbei dem Namen des Inputfeldes im HTML File. HTML: <input name="adresse" type="text"> Servlet: String adr = request.getparameter("adresse"); Mit den aus den Formularen gewonnenen Daten, kann nun eine Antwort generiert werden. Unterschiede zu JSP JSPs nutzen Servlets als zugrundeliegende Technologie. Der wesentliche Unterschied gegenüber herkömmlichen Servlets besteht darin, dass Java-Quellcode direkt in einer HTML-Seite eingebunden werden kann, ähnlich wie bei der Skriptsprache PHP. Da bei Servlets der gesamte HTML-Code mittels Methodenaufrufen ausgegeben werden muss, geht bei der Erzeugung der Webseite schnell die Übersicht verloren. Aus den JSP-Seiten werden bei der ersten Client-Anforferung Servlets generiert. Die Servlets werden dann im Servlet-Container ausgeführt. 56/143

57 Multithreading Servlets sind automatisch multithreaded. Jede HTTP Verbindung wird durch einen eigenen Thread des Servlets bedient. Die Eigenschaft, dass Servlets automatisch in mehreren Threads ablaufen zwingt den Entwickler dazu, seinen Code Threadsafe zu gestalten. out.println( Deine UID ist: + idcount++); // NICHT Threadsafe (idcount) synchronized(this){ out.println( Deine UID ist: + idcount++); // Threadsafe (idcount) } Lokale Variablen sind immer Threadsafe weil jeder Thread einen eigenen Stack hat = eigene Werte. Membervariablen oder statische Variablen sollten möglichst nicht manipuliert / Verwendet werden. Wer kümmert sich um die Ressourcen, start/stop des Threads? Die HTTP Requests, die von einem Client kommen, werden vom Server zum Servlet Container (Tomcat) weitergeleitet, dieser lädt beim ersten Aufruf das Servlet und ruft dessen init Methode auf. Nun wird vom Container ein neuer Thread gestartet, welcher auf die Instanz des Servlets zugreift und dessen service Methode aufruft. Jeder Thread ruft die gleiche Instanz des Servlets auf Redirect Unterschied Redirect / Forward Redirect Die Web Applikation weißt den Browser an, eine andere URL zu laden Ein Refresh im Browser lädt wieder die zweite URL, nicht die Erste response.sendredirect("/demo.jsp"); Forward 57/143

58 Die Web Applikation lädt ein anderes Servlet, der Client bekommt nichts davon mit (die URL bleibt wie sie ist) Ein Refresh im Browser lädt die erste URL neu, also das erste Servlet request.getrequestdispatcher("demo.jsp").forward(req, res); Da bei einem Redirect und anschließendem Refresh eine neue URL geladen wird, sollte Redirect für ändernde SQL Anweisungen wie INSERT, UPDATE, DELETE verwendet werden. Ein Forward sollte nur verwendet werden, wenn keine Daten verändert werden (SELECT). Parameterisierung und Ressourcen Anforderung Parameterisierung über Deployment Descriptor (web.xml) Definieren Außerhalb des servlet Elements in der web.xml <context-param> <param-name>param1</param-name> <param-value>hello param1</param-value> </context-param> Zugreifen Über Servlet Context getinitparameter getservletcontext().getinitparameter("param1") Parameterisierung über Annotationen Definieren In = { "/ShakespeareServl" }, initparams = = "param1", value = "Hello param1") }) Zugreifen Über Servlet Context getinitparameter getservletcontext().getinitparameter("param1"); Anfordern und Freigeben von Ressourcen Es gibt bei Servlets mehrere Möglichkeiten eine DB Verbindung herzustellen. Die erste Möglichkeit ist eine manuelle Erstellung mittels DriverManager: 58/143

59 Connection con = DriverManager.getConnection(URL, USER, PASS); //Arbeiten mit Connection con.close(); Diese Variante ist allerdings sehr Ressourcenhungrig, da eine DB Verbindung herzustellen sehr viel zeit benötigt. Für jeden Thread wird hiermit eine neue Verbindung hergestellt, es gibt keinen Connection Pool. DataSource Die zweite Möglichkeit ist die Verwendung des DataSource Interfaces. Die Implementierung dieses Interfaces wird vom Servlet Container (Tomcat) zur Verfügung gestellt und kann Connection-Pooling unterstützen oder nicht. Dies liegt in der Hand des Herstellers. Die Datasource liefert, wie auch der DriverManager, eine Verbindung zur Datenbank. Allerdings kommt diese Verbindung aus einem Pool von Verbindungen, ist also schon hergestellt (Ressourcenschonend). Jeder Thread bekommt seine eigene Verbindung aus dem Pool. Dieser hält immer bereits aufgebaute Verbindungen bereit, damit er diese an ein Servlet weitergeben kann. DataSource ds; Connection con = ds.getconnection(); //Arbeiten mit Connection con.close(); //Connection wandert zurück in den Pool Ein DataSource Objekt registriert sich im JNDI Naming Service. Sobald es dort registriert ist, kann es über diesen Naming Service abgerufen werden. Registrierung in JNDI über META-INF/context.xml <Context crosscontext="true"> <Resource name="jdbc/shakespeare" auth="container" type="javax.sql.datasource" maxactive="11" maxidle="11" maxwait="10000" username="benutzer" password="passwort" driverclassname="com.mysql.jdbc.driver" url="jdbc:mysql:// /shakespearedb"/> </Context> Abrufen der = "jdbc/shakespeare") DataSource ds; Annotations und Dependency Injection bei Servlets Siehe dazu: VSDB Frage 22 - Softwaretechnik 59/143

60 Kontext Jede Webapplikation in einem Container (Tomcat) besitzt einen eigenen Kontext. Alle Servlets dieser Webapplikation können auf diesen Kontext zugreifen. Ein Servlet-context kann also dazu verwendet werden, Daten unter Servlets in der selben Web-App auszutauschen. Eine Web Applikation wäre in Eclipse ein gesamtes Web-Projekt mit alles Servlets und Daten. Daten können mit Methoden in den Kontext geschrieben, aus dem Kontext gelesen und gelöscht werden. setattribute(string name, Object o); getattribute(string name); removeattribute(string name); Mit dem Kontext kann auch der absolute Pfad zur Web Applikation bezogen werden: getservletcontext().getrealpath("/"); Ebenfalls im Kontext befinden sich Metadaten zur Web Applikation. Datenaustausch zwischen Servlets Obwohl der Datenaustausch über den Context möglich ist, sollte diese Herangehensweise möglichst vermieden werden, da der Context Webapplikationsweit verfügbar ist. Der Datenaustausch sollte über ein Session Objekt realisiert werden. Dadurch ist für jeden verbundenen Client ein eigenes Datenobjekt verfügbar. Die Servlet-API bietet mit der Klasse HttpSession einen Mechanismus zur Sitzungsverwaltung. Attribute können in das Session Objekt gespeichert und ausgelesen werden. Die Methoden heißen gleich wie diejenigen, die auch zur Attributverwaltung im Servlet Context verwendet werden. request.getsession().setattribute( Name, Wert ); request.getsession().getattribute( Name ); request.getsession().revmoveattribute( Name ); Die Servlet-API verwendet für Session Tracking Cookies oder URL Rewriting, natürlich könnte ein Datenaustausch auch vom Entwickler explizit über Cookies realisiert werden. Es können auch die in Request und Response gespeicherten Daten über den RequestDispatcher an ein anderes Servlet weitergegeben werden. Unterschied Servlet Entwicklung- Java Entwicklung In einem normalen Java Programm entscheidet allein der Programmierer welche Methode aufgerufen wird. In einem Servlet entscheidet der Servlet Container (Tomcat) aufgrund der Anfrage des Clients welche Methode aufgerufen wird. Ein normales Java Programm läuft innerhalb der Java virtual machine (JVM), ein Servlet benötigt einen Container in dem es ausgeführt wird. 60/143

61 Aufbau einer URL für den Aufruf eines Servlets Beispiel Die WebApp wäre zum Beispiel konkret ein exportiertes Projekt in Eclipse. Eine Webapplikation kann aber auch in PHP oder ASP erstellt werden. 61/143

62 11. Servlets: Kommunikation und Session Tracking Session Tracking, Möglichkeiten, Servlet API und Session Tracking, Überblick Session Variablen (implizite Objekte), Request Dispatcher, Methoden, Redirect, Synchronisieren oder nicht?, Cookies: Definition, Eigenschaften, Lebensdauer, Erzeugen, Löschen, Sicherheit Multithreading / Kontext Zugriffe auf den Server von mehreren Clients gleichzeitig: Ein Thread pro Client Synchronisierung beim Zugriff auf gemeinsam verwendete Objekte, z.b. static- Variablen Synchronisation laut J2EE Blueprint nicht nötig Bei AJAX Verwendung lieber auf nummer sicher: Synchronisieren auf das Session Objekt Servlet Variablen sind nicht im Client Kontext: Nur ein Servlet Objekt für alle Clients in der Servlet-Engine Aber: jeder Client hat sein 'eigenes' Request, Response, Session Objekt Daher: Instanzvariablen im Servlet vermeiden => Objekte zu Session oder Request Speichern Wenn vom Nutzer mehrere Formulare mit Daten nacheinander an den Server geschickt werden, kann nicht festgestellt werden, welche Datenpakete vom gleichen Nutzer stammen. Es können ja viele Nutzer quasi gleichzeitig Daten schicken, so dass die verschiedenen Datenpakete der Nutzer ohne feste Reihenfolge eintreffen. Jedes Abschicken eines Formulars ist eine neue Verbindung, ohne dass die Identität des Absenders erkennbar ist. Es gibt viele Lösungen des Problems. Einige Lösungen haben aber eklatante Nachteile. Zum Beispiel kann man die IP-Nummer des Absenders abfragen. Aber es können mehrere Absender hinter einer IP-Nummer verborgen sein, z.b. hinter einer Firewall. Man kann auch Cookies benutzen. Dann werden kleine Datenpakete beim Nutzer gespeichert, und in diesen Cookies kann man Daten speichern, die den Nutzer eindeutig identifizieren (z.b. Namen oder Kundennummer). Cookies haben den Vorteil, dass sie über längere Zeit gespeichert werden und eine Identifizierung über mehrere Sitzungen ermöglichen. Eine sichere Lösung liegt darin, dass man eine Information, die den Nutzer identifiziert, mit jedem vom Servlet erzeugten Formular in einem verborgenen Feld zurückschickt. Session Tracking Problem: Zustandslosigkeit von HTTP (state-less) es gibt keine "Sessions", d.h., jeder Request wird individuell und unabhängig von den anderen betrachtet Client Kontext in Anwendungen notwendig Verschiedene Varianten um Zustandsinformation einem Request (Client) zuzuordnen: Versteckte Felder in Formularen Zustandsinformation in Link kodieren HTTP Cookies 62/143

63 Java Servlet Session Tracking API Session Tracking API Ab Java Servlets 2.0 Unterstützung hängt vom verwendeten Server ab, z.b. werden Cookies verwendet, oder URL-Kodierung (falls Cookies nicht verfügbar sind) URL-Kodierung mittels response.encodeurl(url) Jeder Benutzer eines Servers hat genau ein Session Objekt: HttpSession session = request.getsession(); if (session.isnew()) false: ein neues Session-Objekt mit Session ID wird erzeugt und im Servlet Container gespeichert, Session ID wird im Response mitgeschickt true: falls mit dem Request eine gültige Session ID mitgeschickt wurde Session IDs als Cookies Alternativ kann die Session ID in URLs als Parameter kodiert werden Im Session-Objekt können sessionspezifische Daten gespeichert werden, z.b. Benutzername, temporäre Daten, etc. Eine Session hat eine begrenzte Gültigkeitsdauer Explizite Invalidierung, z.b. beim Logout, mit session.invalidate() Automatisch nach einer bestimmten Zeit, Default ist 30 min.: session.setmaxinactiveinterval(int seconds) Arten von Servlet-Variablen ServletContext-Element Stellt Informationen über die Webapplikation zur Verfügung und mit Hilfe dieses Objektes können alle Servlets der Webapplikation gemeinsame Daten speichern. Request Dispacher Das Interface RequestDispatcher stellt zwei Methoden zum Weiterleiten auf bzw. zum Includieren von Ressourcen zur Verfügung: forward Leitet den Request auf eine andere Ressource weiter, das den Response generiert. 63/143

64 include Arbeitet wie forward(), aber der Request wird nur temporär auf die neue Ressource übertragen und das aufrufende Servlet commited den Response Redirect Mit der Methode sendredirect(string) kann man auf eine neue Seite verweisen. response.sendredirect("http://www.google.de/"); Cookies Cookies speichern Informationen auf der Client Seite. Diese Information wird mit jeder Anfrage an den Server übertragen. Über einen Cookiewert ( Session ID ) kann der Server erkennen, wer die Anfrage gestellt hat. Setzen von Cookies Cookie cookie = new Cookie( "key", "value" ); response.addcookie( cookie ); Auslesen von Cookie Cookie cookies[] = request.getcookies(); if (thecookie.getname().equals(summe)) { String cookiewert = thecookie.getvalue(); } Langlebige Cookies Für Cookies, die länger als eine Sitzung halten sollen, lässt sich mit setmaxage() eine Zeit setzen, zu der sie gültig sein sollen. 12. Verteilte Anwendungen: Eigenschaften und Architekturmodelle Abgrenzung der Begriffe: Verteiltes System, Verteilte Anwendungen, Middleware, Vorteile und Eigenschaften von Verteilung, Beispiele Verteilter Systeme, Arten von Middleware, Transparenzarten, Synchrone und asynchrone Kommunikation, Architekturmodelle: Client Server Modell, n Tier Modell, 64/143

65 P2P Modell, Erläutern Sie den Aufbau und Einsatz der 3 Tier Architektur näher, (Ultra) Thin und Fat Client Architektur, Was ist Unterschied zwischen zustandsbehafteter und loser Kommunikation? Verteiltes System Definition Ein verteiltes System ist ein System, in dem Hardware- und Softwarekomponenten, die sich auf miteinander vernetzten Computern befinden, miteinander kommunizieren und ihre Aktionen koordinieren, indem sie Nachrichten austauschen. Anforderungen Knoten (Computer) sind durch ein Netzwerk verbunden Jeder Knoten kann unabhängig von den anderen Knoten arbeiten Darum hat jeder Knoten eine eigene CPU und eigenen Speicher Die Knoten dürfen keinen gemeinsamen Speicher haben Kein single point of failure Keine zentrale Einheit, die für die Arbeit der Knoten notwendig ist Verteilungstransparenz Ziele Benutzer und Ressourcen verbinden Transparenz Offenheit Skalierbarkeit Vorteile Offenheit Die Offenheit bestimmt, wie gut sich ein System auf verschiedenen Wegen erweitern lässt, ohne bereits existierende Dienste zu unterbrechen. Das wird durch die Veröffentlichung der Schnittstellen erreicht. Beispiel: UNIX als offenes Betriebsystem Nebenläufigkeit (Concurrency) Nebenläufigkeit bedeutet, dass innerhalb eines Systems mehrere Prozesse gleichzeitig existieren können. Wenn es nur einen Prozessor gibt, wird dies mit Verzahnung (Interleaving) erreicht. Wenn es mehrere Prozessoren gibt, können die Prozesse parallel ausgeführt werden. Ein wichtiges Thema dabei ist die Synchronisation zwischen den Prozessen. Skalierbarkeit Skalierbarkeit bedeutet, das Algorithmen, Protokolle und Prozeduren mit wenigen sowie mit vielen Systemkomponenten funktionieren. Zwar ist es in wegen der höheren Komplexität in verteilten Systemen teilweise schwerer, Skalierbarkeit zu garantieren, allerdings können Ressourcen auch leichter hinzugefügt werden. 65/143

66 Sicherheit Die Sicherheit in verteilten Systemen hat mehrere Aspekte und gehört zu den wichtigsten Themen bei der Entwicklung von verteilten Systemen. Vertraulichkeit: Daten können nur vom gewünschten Empfänger gelesen werden Integrität: Die Daten wurden während der Übertragung nicht verändert Authentizität: Die Daten wurden tatsächlich von der Person gesendet, die behauptet, der Sender zu sein Fehlertoleranz Fehlertoleranz bedeutet, dass beim Auftreten eines Fehlers bereits eine Lösung existiert um das Problem zu beheben. Beispiele: Hardware Redundanz - doppelte Komponenten, Standby Maschinen Sofware Recovery - Nach einem Fehler wieder in einen sicheren Zustand zurückkehren Transparenz Unter Transparenz versteht man, dass die Benutzer eines verteilten Systems sich nicht zu sehr der Tatsache bewusst sind, dass es sich um ein verteilten Systemhandelt. Das System wird als einheitliches System wahrgenommen. Nachteile Das Gesamtsystem ist normalerweise komplexer Der Aufwand für die Erstellung ist größer als für ein zentrales System Beispiele für Verteilte Systeme Gemeinsames Dateisystem Benutzer, die an physisch verteilten Rechnern arbeiten können auf gemeinsame Verzeichnisse in einem gemeinsamen Dateisystem zugreifen. Verteilte Datenbanken Daten werden transparent für den Benutzer in unterschiedlichen Datenbanken abgelegt. Der Zugriff darauf erfolgt ebenfalls transparent. Beispiel LDAP und ADS World Wide Web Ermöglicht Zugriff auf verteilte Dokumente. Jedes Dokument erhält einen logischen Namen über den es angesprochen werden kann. Verteilte Anwendung Definition Eine verteilte Anwendung ist eine Anwendung, die ein verteiltes System zur Lösung eines Anwendungsproblems nutzt. Sie besteht aus verschiedenen Komponenten, die mit den Komponenten des verteilten Systems sowie den Anwendern kommuniziert. Eine Verteilte Anwendung wird also dezentral auf mehreren Rechnern ausgeführt und nutzt das verteilte System um die Aufgabe auf verschiedene Knoten aufzuteilen und Informationen 66/143

67 auszutauschen. Zwischen den Komponenten müssen definierte Schnittstellen bestehen, um die Kommunikation zu ermöglichen. Middleware Definition Middleware bezeichnet Programme, die die Vermittlung zwischen Anwendungen übernehmen, um die Komplexität dieser Anwendungen und der Infrastruktur zu verbergen. Vorteile Entkopplung von Anwendungen von der Systemplattform Vorhandene Systeme könnne über eine Middleware leichter an neue Systeme angeschlossen werden Plattformübergreifend Standardisierte Schnittstellen und Protokolle Arten von Middleware Anwendungsorientierte Middleware Im Mittelpunkt steht neben der Kommunikation vor allem die Unterstützung verteilter Anwendungen. Beispiele: JEE,.NET. Kommunikationsorientierte Middleware Hierbei liegt der Schwerpunkt in der Abstraktion von der Netzwerkprogrammierung. Beispiele sind RPC, RMI, Web Services. Nachrichtenorientierte Middleware Nachrichtenorientierte Middleware arbeitet nicht mit Methoden- oder Funktionsaufrufen, sondern über den Austausch von Nachrichten. Message Oriented Middleware (MOM) ist teil der Kommunikationsorientierten Middleware Beispiele für Middleware Printmanager Datenbankmanagementsystem Remote Procedure Call (RPC), Remote Methode Invocation (RMI) 67/143

68 Transparenzarten Ein transparentes System präsentiert sich dem Benutzer, den Anwendungen, also würde es sich um ein einziges, gesamtes System handeln, obwohl die Ressourcen und Anwendungen über mehrere Computer verteilt sind. Zugriffstransparenz Verbirgt die Unterschiede zwischen lokalen und entfernten Ressourcen und Unterschiede in der Darstellung der Daten. Ortstransparenz Verbirgt den Ort einer Ressource, d.h. Benutzer und Programme wissen nicht wo sich eine Ressource genau befindent (z.b. durch logische Namen, URLs). Migrations- und Relokationstransparenz Verbirgt das Verschieben von Ressourcen an eine andere Position, d.h. eine Ressource kann verschoben werden, ohne dass Benutzer oder Programme beeinflusst werden. Und das Migrieren kann auch das Ändern auf eine neuere Version bedeuten. (von älterem auf neueres System umstellen) Persistenztransparenz Verbirgt, ob sich eine (Software-) Ressource im Speicher oder auf der Festplatte befindet. Replikationstransparenz Verbirgt, dass eine Ressource mehrmals im System vorhanden ist, d.h. es ist für Benutzern und Programme nicht ersichtlich, dass die Ressource repliziert ist, um Verfügbarkeit und Performanz zu erhöhen. Fehler- und Ausfalltransparenz Verbirgt den Ausfall und die Wiederherstellung einer Komponente, d.h. Benutzer und Programme können ihre Aufgaben trotz eines Fehlers beenden. Nebenläufigkeitstransparenz Verbirgt, dass eine Ressource von mehreren Benutzern oder Programmen gleichzeitig genutzt wird, d.h. alle Benutzer bzw. Programme haben dann den Eindruck, sie seien alleine im System. Skalierungstransparenz Verbirgt Änderungen (Erweiterung, Austausch von Komponenten) des verteilten Systems, d.h. das System soll einfach erweitert/verändert werden können, ohne dass Benutzer oder Programme es bemerken. Prozesstransparenz Verbirgt auf welchem Knoten des verteilten Systems ein Prozess ausgeführt wird. Im Idealfall sorgt das System selbst für die Verteilung der Prozesse. Fragmentierungstransparenz Verbirgt, dass eine Ressource in verschiedene Teile an verschiedenen Orten gespeichert ist. 68/143

69 Architekturmodelle Client Server Modell Das Client-Server Modell bezeichnet die Beziehung zwischen zwei Programmen. Der Client Stellt die Anfragen und der Server beantwortet sie. P2P Modell Im Peer-to-Peer Modell sind alle Computer gleichberechtigt, so gibt also keine vordefinierten Clientund Server-Rollen. Jeder Computer kann Dienste anbietet und gleichzeitig welche zur Verfügung stellen. In diesem Modell wird z.b. die Rechenlast auf mehrere Computer verteilt und bei einem Ausfall eines Knotens kann das Netzwerk noch weiterarbeiten. Achtung: es gibt aber sehr wohl lokale Server, der Informationen über die Nachbaren beinhaltet. n -Tier Modell In einem n-tier Modell (auch Multi Tier Modell) ist ein Programm, dass über mindestens 3 Schichten aufgeteilt. Dieses Modell wird häufig für die Strukturierung von Anwendungen verwendet. Dabei werden einzelne Aspekte des Softwaresystems einer Schicht (tier) zugeordnet. Jede Schicht kann nur mit der jeweils angrenzenden Schicht kommunizieren, das heißt es dürfen keine Schichten übersprungen werden. Anwendungen die eine Middleware verwenden fallen auch in diesen Bereich. Beispiele für verschiedene Schichten sind Präsentation, Steuerung, Verarbeitung, Datenzugriff, Datenhaltung. Die am häufigsten verwendete Form ist jedoch die 3-Tier Architektur (mit 3 Schichten). 69/143

70 Vorteile Reduktion der Komplexität und der Abhängigkeiten (durch mehrere Schichten) Bei Änderungen/Erweiterungen muss nicht die gesamte Anwendung ausgetauscht werden Eine einzelne Schicht kann ausgetauscht werden Höhere Wiederverwendbarkeit (der einzelnen Schichten) Geringere Abhängigkeiten zwischen den Teilen der Anwendung (Schichten) Nachteile Applikation könnte langsamer werden (Weiterleitungen/Verarbeitungen über mehrere Schichten) 3 -Tier Architektur Die 3- Tier- Architektur ist eine spezielle Art des n- Tier- Modells. Mehrschichtige Systemarchitekturen wie die dreischichtige Architektur sind gut skalierbar, da die einzelnen Schichten logisch voneinander getrennt sind. So kann z. B. bei verteilten Systemarchitekturen die Datenschicht auf einem zentralen Datenbank-Server laufen, die Logikschicht auf Workgroup-Servern, und die Präsentationsschicht befindet sich auf der jeweiligen Workstation des Benutzers. Häufig wird die Anwendung in die Präsentationsschicht, die Verarbeitungsschicht und die Datenschicht unterteilt. 3-Tier Architektur in der Software Entwicklung Die Architektur lässt sich auch innerhalb eines Software-Systems umsetzen, indem die Software- Module, welche für Präsentation, Anwendungslogik und Speicherung von Daten zuständig sind, den einzelnen Schichten zugeordnet werden und voneinander entkoppelt werden. Neben einer Strukturierung gemäß dem Model- View- Controller-Architekturmuster stellt eine solche Drei- Schichten-Architektur in der modernen Software-Entwicklung das Mindestmaß an architektonischer Strukturierung dar, insofern keine nachhaltigen Gründe für andere Architekturentscheidungen vorliegen. 70/143

71 ThinClient Als Thin Client wird ein Client im 3-Tier Modell genannt, wenn er nur die Präsentationsschicht übernimmt. Die gesamte Verarbeitung und Speicherung der Daten wird dabei am Server ausgeführt. Ein Vorteil von Thin Clients ist der einfache Betrieb, denn am Client läuft nur die Software, die für den Zugriff auf den Server notwendig ist. Nachteile sind eine hohe Last am Server und für das Netzwerk. Diese Art des Clients wird hauptsächlich bei Anwendungen eingesetzt, bei denen Anwendungs- und Datenschicht stark verflechtet sind oder wenn auf den Clients nicht genügend Rechenleistung zur Verfügung steht. Ein Beispiel wäre ein Webbrowser, denn er muss die Daten nur anzeigen, die gesamte Aufbereitung und die Datenhaltung laufen am Server ab. Fat Client Im Gegensatz zum Thin Client wird am Fat Client die Präsentation und die Verarbeitung der Daten ausgeführt. Nur das Datenmanagement wird auf den Server ausgelagert. Ein Vorteilt dieses Modells ist, dass die Last auf die Clients verteilt wird. Ein Nachteil von Fat Clients ist die komplexe Verwaltung solcher Systeme, da die Anwendungslogik bei Änderungen auf allen Clients angepasst werden muss. Hier muss man öfters die Software am Client updaten(bei schwerwiegenderen Änderungen)!! Kommunikation Synchrone / Asynchrone Kommunikation Synchrone Kommunikation Bei einer synchronen Kommunikation sendet der Client eine Anfrage an den Server und wartet dann auf die Antwort. Während dieser Zeit arbeitet der Client nicht. Asynchrone Kommunikation Bei einer asynchronen Kommunikation sendet der Client eine Anfrage an den Server und arbeitet danach weiter. Wenn der Server die Antwort zurücksendet, verarbeitet sie der Client. 71/143

72 Zustandslose Kommunikation Bei einem zustandslosen Protokoll (stateless protocol) wird jede Anfrage des Clients als einzelne Anfrage bearbeitet. Also auch wenn der selbe Client mehrere Anfragen sendet, werden alle unabhängig voneinander beantwortet. Das bedeutet auch, dass keine Sitzungsinformationen (z.b. bei Logins) gespeichert werden. Beispiele HTTP Sitzungsinformationen werden erst in den Anwendung verwaltet (z.b. Cookies) IP Vorteile/Nachteile Vorteile der zustandslosen Kommunikation sind das einfachere Server Design und der geringere Speicherverbrauch (keine Sitzungsinformationen am Server). Ein Nachteil ist, dass eventuell zusätzliche Informationen in jeder Anfrage übertragen werden müssen. Zustandsbehaftete Kommunikation Im Gegensatz zur zustandslosen Kommunikation wird bei zustandsbehafteten Protokollen (stateful protocol) Information über den Client auf dem Server gespeichert (z.b. Anmeldeinformationen, Arbeitsverzeichnis, ). Beispiele FTP Am Anfang einer Verbindung wird eine Authentifizierung durchgeführt. Die Login- Informationen und weitere Variablen (Arbeitsverzeichnis, Übertragungsmodus,...) werden am Server gespeichert. TCP Vorteile/Nachteile Ein Vorteil ist, dass z.b. Authentifizierung bereits im Protokoll vorgesehen ist und nicht bei jeder Übertragung zusätzliche Information gesendet werden muss. Nachteile sind, das im Gegensatz zur zustandslosen Kommunikation das Server Design etwas komplexer ist und der Server wegen der Speicherung der Benutzerdaten eventuell mehr Ressourcen benötigt. 72/143

73 13. Java Server Pages JSP: Lebenszyklus und Einbettungskonstrukte in JSP (Art und Funktion) Besonderheiten von JSP? Vorteile/Nachteile JSP, Unterschiede zu Servlets, Lebenszyklus, Einbettungskonstrukte, Direktiven, Scopes, implizite Objekte, Aktionen, JavaBean in einer JSP verwenden; Was versteht man unter der JSP Standard Tag Library (JSTL)? Wofür kann diese verwendet werden? Besonderheiten von JSP JSP ist eine serverseitige Skritsprache, so wie ASP und PHP und wird direkt in HTML-Seiten eingebettet. Hierbei werden die dynamischen Teile von statischen Code durch gesonderte Tags getrennt. Die meisten dieser Tags beginnen mit <% und enden mit %>. Dies hat den großen Vorteil, dass die Logik (also der Java-Code) unabhängig vom Design implementiert werden kann. Beispiel JSP-Seiten müssen nicht vom Entwickler kompiliert werden. Sie werden bei der ersten Client- Anforderung übersetzt. Desweitereen werden JavaServer Pages unter Verwendung eines speziellen JSP-Compiler in Java-Quellcode (Servlet) umgewandelt. Dies hat eine leichte Verzögerung beim ersten Aufruf zu folge. Um das zu verhindern können JSP-Seiten auf Wunsch auch kompiliert werden. Kurz gesagt sind JSP-Seiten normale HTML-Seiten (statischer Teil), vermischt mit ein wenig Java (dynamischer Teil). Der Java Teil kommt in <%. %> Tags. JSP-Dateien müssen die Endung.jsp haben. JSP wird in ein Java-Servlet übersetzt, welches dann kompiliert wird. Vorteile Man kann die volle Vielfalt von Java nutzen Normales HTML ist in JSP bequemer zu schreiben 73/143

74 Und ist somit auf andere Systeme portable Viele API s vorhanden Wenn man Java kann muss man nicht noch eine neue Sprache erlernen. JSP ist absolut serverseitig (zugleich Nachteil: wenn dynamische Informationen von der Client Umgebung benötigt werden) Nachteile Weißt kaum Nachteile auf Unterschiede zu Servlets JSPs nutzen Servlets als zugrundeliegende Technologie. Der wesentliche Unterschied gegenüber herkömmlichen Servlets besteht darin, dass Java-Quellcode direkt in einer HTML-Seite eingebunden werden kann, ähnlich wie bei der Skriptsprache PHP. Da bei Servlets der gesamte HTML-Code mittels Methodenaufrufen ausgegeben werden muss, geht bei der zu erzeugenden Webseite schnell die Übersicht verloren. Aus den JSP-Seiten werden bei der ersten Client-Anforferung Servlets generiert. Die Servlets werden dann im Servlet-Container ausgeführt. Der wesentliche Unterschied zwischen Servlets und JSP-Seiten ist der, dass bei JSP Java in HTML eingebunden wird (eben mit dem <%. %> Tag) und bei Servlets wird HTML in Java eingebunden. Dies funktioniert mittels dem PrintWriter Objekt wie wir es schon kennen. Lebenszyklus von JSP-Seiten Der Lebenszyklus von JSP-Seiten entspricht dem Zyklus von Servlets. Der Body einer JSP-Seite wird in eine _jspservice-methode umgesetzt die von der service-methode des Servlets aufgerufen wird. In einer JSP-Seite definierte jspinit bzw. jspdestory-methoden werden von dem init bzw. destroy- Methoden des Servlets aufgerufen. Bei jeder Änderung der JSP-Seite wird der Quellcode des Servlets generiert (Generierung). 74/143

75 Bei jeder Änderung der JSP-Seite wird der Quellcode des Servlets in das Servlet übersetzt (Übersetzung). Bei jeder Anfrage wird das Servlet ausgeführt welches in HTML dargestellt wird (Ausführung). Einbettungskonstrukte Neben dem regulären HTML gibt es noch drei weitere wichtige JSP-Konstrukte, die Sie in eine Seite einbetten: Skriptingelemente Damit kann man Java Code spezifizieren, der Teil des resultierenden Servlets werden soll. Man unterscheidet: Ausdrücke, Scriptlets und Deklarationen Direktiven Damit kann man die Gesamtstruktur des Servlets kontrollieren. Aktionen Damit kann man spezifizieren, welche bestehenden Komponenten benutzt werden sollen, sowie das Verhalten der JSP-Engine steuern. Direktiven Die page Direktive gibt an: Welche Klassen importiert werden Von welcher Klasse geerbt wird MIME Type der geniert wird Multithreading Ob das Servlet einer Session angehört Welche Seite unerwartete Fehler behandelt Das import Attribut <% page import= KLASSENNAME.class %> Es können mittels Beistrich getrennt auch mehrere Klassen aufeinmal importiert werden. Dies bewirkt die Generierung des Import Statements am Anfang des Servlets. Wichtig: Klassen die von JSP Seiten genutzt werden, müssen im classes Ordner sein. z.b.:.../web-inf/classes 75/143

76 Beispiel Content-Type und Page-Encoding Legt den MIME type der generierten Seite fest. page contenttype= MIME-TYPE %> page pageencoding= Character-Set %> ContentType auf Exelformat festlegen: page contenttype= application/vnd.ms-excel %> Der ContentType kann leider nicht bedingungsabhängig gesetzt werden. Session Attribute page session= true %> page session= false %> Standardmäßig auf true. Macht die Seite teil einer Session. Alle abhängigen Seiten müssen es verwenden damit es sinnvoll ist. errorpage Attribut page errorpage= Relative URL %> Gibt eine JSP Seite an, die Ausnahmen behandeln sollte, die geworfen aber auf der aktuellen Seite nicht behandelt werden. Die Ausnahme wird automatisch auf der Fehlerseite durch die "exception Variable zugreifbar. In der web.xml Datei kann man applikationsspezifische Fehlerseiten definieren, wenn bestimmte Fehler oder HTTP Status Codes auftreten. Das errorpage Attribut ist für seitenspezifische Fehler. 76/143

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen:

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen: 1 Einführung in Datenbanksysteme Fast jeder kennt Excel und hat damit in seinem Leben schon einmal gearbeitet. In Excel gibt es Arbeitsblätter, die aus vielen Zellen bestehen, in die man verschiedene Werte

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen C3: Structured Query Language Lernziele: Nach der Bearbeitung dieser Lektion haben Sie folgende Kenntnisse erworben: Sie können elementaren

Mehr

Datenadminstrator, Datenbankdesigner, Systemanalytiker (für die logische Sicht zuständig)

Datenadminstrator, Datenbankdesigner, Systemanalytiker (für die logische Sicht zuständig) 1 Grundlagen Begriffe Daten bekannte zutreffende Tatsachen über die Domäne/Miniwelt DBS Einsatz eines DBMS für eine Datenbank, DBS besteht aus folgenden Komponenten: 1. DBMS 2. Datenbank DBMS Software

Mehr

Relationale Datenbanken Datenbankgrundlagen

Relationale Datenbanken Datenbankgrundlagen Datenbanksystem Ein Datenbanksystem (DBS) 1 ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 8 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 12.01. 2004 Integritätsbedingungen

Mehr

Themenblock: Erstellung eines Cube

Themenblock: Erstellung eines Cube Themenblock: Erstellung eines Cube Praktikum: Data Warehousing und Data Mining Einführung relationale Datenbanken Problem Verwaltung großer Mengen von Daten Idee Speicherung der Daten in Form von Tabellen

Mehr

IBM Informix SQL. Seminarunterlage. Version 11.04 vom

IBM Informix SQL. Seminarunterlage. Version 11.04 vom Seminarunterlage Version: 11.04 Version 11.04 vom 27. April 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

DBSP. Vorlesung. Prof. Dr. rer. nat. Nane Kratzke. Unit. Praktische Informatik und betriebliche Informationssysteme

DBSP. Vorlesung. Prof. Dr. rer. nat. Nane Kratzke. Unit. Praktische Informatik und betriebliche Informationssysteme Handout zur Vorlesung Vorlesung DBSP Unit Datenmodellierung 1 Prof. Dr. rer. nat. Nane Kratzke Praktische Informatik und betriebliche Informationssysteme Raum: 17-0.10 Tel.: 0451 300 5549 Email: kratzke@fh-luebeck.de

Mehr

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Einstieg in relationale Datenbanken mit MySQL. Dr. Kerstin Puschke September 2009

Einstieg in relationale Datenbanken mit MySQL. Dr. Kerstin Puschke September 2009 Einstieg in relationale Datenbanken mit MySQL Dr. Kerstin Puschke September 2009 1 Lizenz Lizenz Dieser Text steht unter einer Creative Commons Attribution-Share Alike 3.0 Germany Lizenz, siehe http://creativecommons.org/licenses/by-sa/3.0/de/

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

SQL- & NoSQL-Datenbanken - Speichern und Analysen von großen Datenmengen

SQL- & NoSQL-Datenbanken - Speichern und Analysen von großen Datenmengen SQL- & NoSQL-Datenbanken - Speichern und Analysen von großen Datenmengen Lennart Leist Inhaltsverzeichnis 1 Einführung 2 1.1 Aufgaben einer Datenbank...................... 2 1.2 Geschichtliche Entwicklung

Mehr

PostgreSQL im praktischen Einsatz. Stefan Schumacher

PostgreSQL im praktischen Einsatz. Stefan Schumacher PostgreSQL im praktischen Einsatz 2. Brandenburger Linux Infotag 2005 Stefan Schumacher , PGP Key http:/// $Header: /home/daten/cvs/postgresql/folien.tex,v 1.11 2005/04/25

Mehr

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt DBS ::: SERIE 5 Die Relation produkt enthält Hersteller, Modellnummer und Produktgattung (pc, laptop oder drucker aller Produkte. Die Modellnummer ist (der Einfachheit halber eindeutig für alle Hersteller

Mehr

Relationale Datenbanken Kursziele

Relationale Datenbanken Kursziele Relationale Datenbanken Kursziele DB Grundlagen Daten-Modellierung Relationales Modell und DB => Praxis: Mit SQL als Anfragesprache Mit MySQL als DB RDB 1-1 Kursinhalt (Tage) 1. DB Einleitung / Entity-Relationship

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

StructuredQueryLanguage(SQL)

StructuredQueryLanguage(SQL) StructuredQueryLanguage(SQL) Themen: ErstelenundÄndernvonTabelen AbfragenvonDaten Einfügen,ÄndernundLöschenvonDaten Erstelennutzerde niertersichten(views) 2012Claßen,Kempa,Morcinek 1/23 SQL Historie System

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

Software-Engineering Einführung

Software-Engineering Einführung Software-Engineering Einführung 7. Übung (04.12.2014) Dr. Gergely Varró, gergely.varro@es.tu-darmstadt.de Erhan Leblebici, erhan.leblebici@es.tu-darmstadt.de Tel.+49 6151 16 4388 ES Real-Time Systems Lab

Mehr

Datenmodellierung und Datenbanksysteme. Vorlesung. Informationswissenschaft und Informationssysteme. Hans Uszkoreit & Brigi1e Jörg

Datenmodellierung und Datenbanksysteme. Vorlesung. Informationswissenschaft und Informationssysteme. Hans Uszkoreit & Brigi1e Jörg Vorlesung Informationswissenschaft und Informationssysteme Hans Uszkoreit & Brigi1e Jörg Definitionen Data modeling in software engineering is the process of creating a data model by applying formal data

Mehr

5. SQL: Erstellen von Tabellen. Erzeugen und Löschen von Tabellen. Umgang mit Bedingungen (Constraints) Einfügen und Löschen von Daten

5. SQL: Erstellen von Tabellen. Erzeugen und Löschen von Tabellen. Umgang mit Bedingungen (Constraints) Einfügen und Löschen von Daten 5. SQL: Erstellen von Tabellen Erzeugen und Löschen von Tabellen Umgang mit Bedingungen (Constraints) Einfügen und Löschen von Daten 106 SQL Structured Query Language Historie: Anfänge ca. 1974 als SEQUEL

Mehr

Fundamentals of Software Engineering 1

Fundamentals of Software Engineering 1 Folie a: Name Fundamentals of Software Engineering 1 Grundlagen der Programmentwurfstechnik 1 Sommersemester 2012 Dr.-Ing. Stefan Werner Fakultät für Ingenieurwissenschaften Folie 1 Inhaltsverzeichnis

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2 SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R IV-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

3. Spezielle ER-Modelle und Tabellenableitung. Transformation von ER-Diagrammen in Relationen

3. Spezielle ER-Modelle und Tabellenableitung. Transformation von ER-Diagrammen in Relationen 3. Spezielle ER-Modelle und Tabellenableitung Spezialfälle von ER-Modellen Grundlage, was sind Relationen Transformation von ER-Diagrammen in Relationen 56 Lesebeispiel Access (Realisierungmodell!) 57

Mehr

Taschenbuch der Wirtschaftsinformatik und Wirtschaftsmathematik

Taschenbuch der Wirtschaftsinformatik und Wirtschaftsmathematik Taschenbuch der Wirtschaftsinformatik und Wirtschaftsmathematik von Wolfgang König, Heinrich Rommelfanger, Dietrich Ohse, Oliver Wendt, Markus Hofmann, Michael Schwind, Klaus Schäfer, Helmut Kuhnle, Andreas

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 29. April 2013 - MySQL 2 Sebastian Cuy sebastian.cuy@uni-koeln.de Aufgaben Anmerkungen Best practice: SQL Befehle

Mehr

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

Mehr

1 Grundbegriffe...1. 2 Datenbanksysteme...7. 3 Entwicklung von Datenbanksystemen...15. Inhaltsverzeichnis. 1.1 Information und Daten...

1 Grundbegriffe...1. 2 Datenbanksysteme...7. 3 Entwicklung von Datenbanksystemen...15. Inhaltsverzeichnis. 1.1 Information und Daten... Inhaltsverzeichnis 1 Grundbegriffe...1 1.1 Information und Daten...2 1.2 Datenorganisation...3 1.3 Dateikonzept...5 1.4 Kontroll- und Vertiefungsfragen...6 2 Datenbanksysteme...7 2.1 Datenintegration...7

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus: Einführung in MySQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine relationale Datenbank kann man sich als eine

Mehr

Software-Engineering und Datenbanken

Software-Engineering und Datenbanken Software-Engineering und Datenbanken Prof. Dr. Bernhard Schiefer bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Prof. Dr. Bernhard Schiefer 1-1 Wesentliche Inhalte Begriff DBS Datenbankmodelle

Mehr

Einleitung. Literatur. Pierre Fierz. Architektur von Datenbanksystemen. Physische Datenunabhängigkeit. Der Datenbank Administrator (DBA) 1.

Einleitung. Literatur. Pierre Fierz. Architektur von Datenbanksystemen. Physische Datenunabhängigkeit. Der Datenbank Administrator (DBA) 1. Inhalt der Vorlesung Literatur 1 Datenmodellierung (Entity-Relationship Modell) 2 Das relationale Modell 3 Relationenalgebra 4 Datenbanksprache (SQL) 5 Normalisierung 6 Vom ERM zum Datenbankschema 7 Routinen

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL )

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL ) Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 6 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 1.12.2003 SQL-DDL und SQL-Anfragen

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

Vorlesung. Informationssysteme. Prof. Dr. Hans Czap. Lehrstuhl für Wirtschaftsinformatik I. Email: Hans.Czap@uni-trier.de

Vorlesung. Informationssysteme. Prof. Dr. Hans Czap. Lehrstuhl für Wirtschaftsinformatik I. Email: Hans.Czap@uni-trier.de Vorlesung Grundlagen betrieblicher Informationssysteme Prof. Dr. Hans Czap Email: Hans.Czap@uni-trier.de - II - 1 - Inhalt Kap. 1 Ziele der Datenbanktheorie Kap. 2 Datenmodellierung und Datenbankentwurf

Mehr

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de Innovator 11 excellence DDL importieren Data-Definition-Language-Dateien in Datenbankschema importieren HowTo www.mid.de Zweck In Innovator Data excellence können Sie mit dem DDL-Import Ihr physisches

Mehr

Relationale Datenbanken Kursziele

Relationale Datenbanken Kursziele Relationale Datenbanken Kursziele DB Grundlagen Daten-Modellierung Relationales Modell und DB => Praxis: Mit SQL als Anfragesprache Mit MySQL als DB RDB 1-1 Kursinhalt (Tage) 1. Einleitung / Entity-Relationship

Mehr

Geordnete Form...36 Erfassung und Speicherung...37 Relationale Datenbanken...37 Einfache Tabellen...37 Objekte und Begriffe relationaler

Geordnete Form...36 Erfassung und Speicherung...37 Relationale Datenbanken...37 Einfache Tabellen...37 Objekte und Begriffe relationaler Inhaltsverzeichnis Einleitung...13 SQL: Die Abfragesprache für Datenbanken...17 Kennzeichnende Merkmale von SQL...17 SQL-Dialekte...18 Kurze Entwicklungsgeschichte...18 SQL/86 oder SQL/1...19 SQL/89 oder

Mehr

Datenbanken und SQL. Kapitel 1. Übersicht über Datenbanken. Edwin Schicker: Datenbanken und SQL (1)

Datenbanken und SQL. Kapitel 1. Übersicht über Datenbanken. Edwin Schicker: Datenbanken und SQL (1) Datenbanken und SQL Kapitel 1 Übersicht über Datenbanken Übersicht über Datenbanken Vergleich: Datenorganisation versus Datenbank Definition einer Datenbank Bierdepot: Eine Mini-Beispiel-Datenbank Anforderungen

Mehr

Datenbankmodelle 1. Das Entity-Relationship-Modell. Prof. Dr. Bernhard Schiefer 2-1

Datenbankmodelle 1. Das Entity-Relationship-Modell. Prof. Dr. Bernhard Schiefer 2-1 Datenbankmodelle 1 Das Entity-Relationship-Modell Prof. Dr. Bernhard Schiefer 2-1 Datenbankmodelle ER-Modell hierarchisches Modell Netzwerkmodell relationales Modell objektorientierte Modelle Prof. Dr.

Mehr

Structured Query Language (SQL) 1

Structured Query Language (SQL) 1 Structured Query Language (SQL) 1 1. Grundlagen und Hilfsmittel Structured Query Language, kurz SQL, wurde in den 70er Jahren bei IBM entwickelt, als eine Arbeitsgruppe die erste relationale Datenbank

Mehr

Datendefinition und Datenmanipulation in SQL

Datendefinition und Datenmanipulation in SQL SQL Datendefinition und Datenmanipulation in SQL 2002 Prof. Dr. Rainer Manthey Informationssysteme 1 SQL: Geschichte SQL (Structured Query Language) ist heute die bei weitestem populärste und verbreitetste

Mehr

Zusammenfassung Modul 104

Zusammenfassung Modul 104 JanikvonRotz Zusammenfassung Modul 104 Datenmodell implementieren Copyright by Janik von Rotz Version: 01.00 Freigabe: 20.05.11 Janik von Rotz Hoheneich 4, 6064 Kerns Internet www.janikvonrotz.ch Email

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Vorlesungsteil SQL Grundlagen - 1 / 8 - SQL SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Auf einem Server (Rechner im Netz, der Dienste

Mehr

Agenda. Themenblock: Data Warehousing (I) Referenzarchitektur. Eigenschaften eines Data Warehouse. Einführung Data Warehouse Data Access mit SQL

Agenda. Themenblock: Data Warehousing (I) Referenzarchitektur. Eigenschaften eines Data Warehouse. Einführung Data Warehouse Data Access mit SQL Themenblock: Data Warehousing (I) Praktikum: Data Warehousing und Data Mining 2 Eigenschaften eines Data Warehouse Referenzarchitektur Integrierte Sicht auf beliebige Daten aus verschieden Datenbanken

Mehr

Datenbanken / Datenbankmanagementsystem

Datenbanken / Datenbankmanagementsystem Datenbanken / Datenbankmanagementsystem 1.Einführung Daten, Informationen; Datenbank, Datenbanksystem; Relationale Datenbanksysteme; Beispiel Access 2.Aufbau von Datenbanken Datenanalyse; Entitäten-Beziehungsmodell;

Mehr

Michaela Weiss 01. April 2015. Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

Michaela Weiss 01. April 2015. Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL Michaela Weiss 01. April 2015 Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL Seite 2 Datenbanken Allgemeines: Datenbank(management)systeme ermöglichen die Speicherung großer Datenmengen Kennzeichen

Mehr

Gliederung und Einordnung

Gliederung und Einordnung Gliederung und Einordnung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Erste Schritte, um selber ConfigMgr Reports zu erstellen Thomas Kurth CONSULTANT/ MCSE Netree AG thomas.kurth@netree.ch netecm.ch/blog @ ThomasKurth_CH Erste Schritte, um selber ConfigMgr Reports zu erstellen Configuration Manager Ziel Jeder soll nach dieser

Mehr

Referenzielle Integrität SQL

Referenzielle Integrität SQL Referenzielle Integrität in SQL aus Referential Integrity Is Important For Databases von Michael Blaha (Modelsoft Consulting Corp) VII-45 Referenzielle Integrität Definition: Referenzielle Integrität bedeutet

Mehr

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0 Wirtschaftsinformatik SQL Abfragen und QBE Unterrichtsskript Version: 2.0 Autor: Jonas Lanz Datum: 02.06.2006 FHNW Hochschule für Wirtschaft 2 / 29 Inhaltsverzeichnis 1. Einführung 3 1.1 Relationale Operationen

Mehr

DBS= DB + DBMS (Datenbank + Datenbankmanagementsystem)

DBS= DB + DBMS (Datenbank + Datenbankmanagementsystem) 1. Einleitung Datenbanksysteme (DBS) DBS ermöglicht die anwendungsübergreifende Nutzung von Daten. DBS isoliert Anwendungen von Hardware und Betriebssystem DBS= DB + DBMS (Datenbank + Datenbankmanagementsystem)

Mehr

Klausur Datenbanksysteme

Klausur Datenbanksysteme Prüfung Datenbanksysteme, 31.Jan. 2003 S. 1 Klausur Datenbanksysteme Name: Matrikel-Nr.: Studiengang: Aufgabenblatt nicht vor Beginn der Prüfung umdrehen! Prüfer: Prof. Dr. Martin Hulin Dauer: 90 Minuten

Mehr

Kapitel DB:III. III. Konzeptueller Datenbankentwurf

Kapitel DB:III. III. Konzeptueller Datenbankentwurf Kapitel DB:III III. Konzeptueller Datenbankentwurf Einführung in das Entity-Relationship-Modell ER-Konzepte und ihre Semantik Charakterisierung von Beziehungstypen Existenzabhängige Entity-Typen Abstraktionskonzepte

Mehr

Übung 1: Ein Website News-System mit MySQL

Übung 1: Ein Website News-System mit MySQL Übung 1: Ein Website News-System mit MySQL In der Vorübung haben wir bereits mit Hilfe eines ERMs den Datenbankentwurf erstellt und daraus die folgenden Tabellen abgeleitet: Nun muss diese Datenbank in

Mehr

Logische Modellierung von Data Warehouses

Logische Modellierung von Data Warehouses Logische Modellierung von Data Warehouses Vertiefungsarbeit von Karin Schäuble Gliederung. Einführung. Abgrenzung und Grundlagen. Anforderungen. Logische Modellierung. Methoden.. Star Schema.. Galaxy-Schema..

Mehr

Definition Informationssystem

Definition Informationssystem Definition Informationssystem Informationssysteme (IS) sind soziotechnische Systeme, die menschliche und maschinelle Komponenten umfassen. Sie unterstützen die Sammlung, Verarbeitung, Bereitstellung, Kommunikation

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Herbstsemester 2009. Datenbanken mit Übungen Kapitel 4: SQL. H. Schuldt. Inhalt

Herbstsemester 2009. Datenbanken mit Übungen Kapitel 4: SQL. H. Schuldt. Inhalt Herbstsemester 2009 Datenbanken mit Übungen Kapitel 4: SQL H. Schuldt Inhalt Datenmanipulationssprache SQL: SQL (Structured Query Language) ist die Standardsprache für die Datendefinition und Datenmanipulation

Mehr

2 Datenbanksysteme. 2.1 Grundlegende Begriffe. Datenbank Management System. Schemata und Instanzen

2 Datenbanksysteme. 2.1 Grundlegende Begriffe. Datenbank Management System. Schemata und Instanzen 2 Datenbanksysteme Im Folgenden werden wir einige grundlegende Eigenschaften von Datenbanksystemen kennen lernen Datenbanken sind Bestandteil vieler Anwendungssysteme; sie stellen die dort benötigten Daten

Mehr

7 Projektarbeit Fahrradverleih

7 Projektarbeit Fahrradverleih Kapitel 7 Projekt Fahrradverleih Seite 1 7 Projektarbeit Fahrradverleih 7.1 Aufgabenstellung In einem Geschäft, das Fahrräder vermietet, sollen die Aktionen, die beim Verleih dieser Fahrräder ablaufen,

Mehr

SQL-Anweisungen. SELECT (SQL Data Query Language)

SQL-Anweisungen. SELECT (SQL Data Query Language) SQL-Anweisungen SELECT (SQL Data Query Language) SELECT * SELECT * FROM "meine Tabelle"; SELECT feldname1, feldname2 SELECT feldname1, feldname2 FROM meinetabelle ORDER BY feldname2, feldname1 DESC; WHERE

Mehr

Begleitskript. zum PHP/MySQL. Kurs

Begleitskript. zum PHP/MySQL. Kurs Begleitskript zum PHP/MySQL Kurs http://www.online-platform.net Dieser Text unterliegt der GNU General Public License. Er darf als ganzes oder in Auszügen kopiert werden, vorausgesetzt, dass sich dieser

Mehr

Kapitel. 7: Datenmanagement. Wirtschaftsinformatik Eine Einführung. Detlef Schoder Folie 7.1. Laudon/Laudon/Schoder:

Kapitel. 7: Datenmanagement. Wirtschaftsinformatik Eine Einführung. Detlef Schoder Folie 7.1. Laudon/Laudon/Schoder: Laudon/Laudon/Schoder: Wirtschaftsinformatik Eine Einführung Kapitel 7: Datenmanagement Wirtschaftsinformatik Eine Einführung Folie 7.1 Gegenstand Anforderungen, die die Datenverwaltung an die Unternehmensführung

Mehr

Einführung in SQL mit Oracle

Einführung in SQL mit Oracle Seminar Einführung in SQL mit Oracle von Prof. Dr. Rainer Schwenkert Hochschule München c Vervielfältigung nur mit Zustimmung des Autors Themenbereiche SQL-Historie Wichtige DDL- und DML-Anweisungen Der

Mehr

3 Indizes. 3.1 Indexarchitektur von SQL Server. SQL Server 2008: Datenbankentwicklung

3 Indizes. 3.1 Indexarchitektur von SQL Server. SQL Server 2008: Datenbankentwicklung 3 Indizes 3.1 Indexarchitektur von SQL Server Die folgende Abbildung zeigt die Organisationsstruktur einer Tabelle. Eine Tabelle befindet sich in einer oder mehreren Partitionen, und jede Partition enthält

Mehr

Einführung in das Entity-Relationship-Modell

Einführung in das Entity-Relationship-Modell Einführung in das Entity-Relationship-Modell Historie Entity-Relationship-Modell kurz: ER-Modell bzw. ERM 1976 von Peter Chen vorgeschlagen Standardmodell für frühe Entwurfsphasen in der Datenbankentwicklung

Mehr

zwei verschiedene Darstellungsformen derselben Abfrage.

zwei verschiedene Darstellungsformen derselben Abfrage. SQL Sprache Die strukturierte Abfragesprache SQL (englisch: Structured Query Language) bildet einen Standard zur Formulierung von Abfragen. Das SQL und das Abfragefenster bilden zwei verschiedene Darstellungsformen

Mehr

Datenbanken: ER-Modell

Datenbanken: ER-Modell Beispiel: Lastenheft: Für eine Hochschule soll eine Verwaltungssoftware geschrieben werden, die alle relevanten Daten in einem relationalen Datenbanksystem speichert. Zu diesen Daten zählen die Stamm-

Mehr

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken 2 7 Erweiterungen 7 Erweiterungen 7.1 Prozess-Kommunikation mit Datenbanken Im Buch Einstieg in das Programmieren mit MATLAB wird im Abschnitt 4.8 das Thema Prozess-Kommunikation am Beispiel von MS-Excel

Mehr

Probabilistische Datenbanken

Probabilistische Datenbanken Probabilistische Datenbanken Seminar Intelligente Datenbanken AG Intelligente Datenbanken Prof. Dr. Rainer Manthey 26.04.05 Maarten van Hoek - 1 - Inhaltsverzeichnis 1.0 Einleitung...3 2.0 Modell probabilistischer

Mehr

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 531 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services Im zweiten Teil dieses Buches haben wir die Eigenschaften der Transact-SQL- Sprache in Bezug auf die Bearbeitung von operativen Daten gezeigt.

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

SQL, MySQL und FileMaker

SQL, MySQL und FileMaker SQL, MySQL und FileMaker Eine kurze Einführung in SQL Vorstellung von MySQL & phpmyadmin Datenimport von MySQL in FileMaker Autor: Hans Peter Schläpfer Was ist SQL? «Structured Query Language» Sprache

Mehr

Entwicklung einer MySQL Datenbank

Entwicklung einer MySQL Datenbank Fachoberschule am Beruflichen Schulzentrum e.o. Plauen Facharbeit in der Fachrichtung Technik im Fach Informatik Entwicklung einer MySQL Datenbank von Max Epperlein FOSTLA04 Betreuer: Herr Taschik Ort,

Mehr

Whitepaper. Produkt: combit Relationship Manager 7, address manager 17. Import von Adressen nach Firmen und Kontakte

Whitepaper. Produkt: combit Relationship Manager 7, address manager 17. Import von Adressen nach Firmen und Kontakte combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager 7, address manager 17 Import von Adressen nach Firmen und Kontakte Import von Adressen nach Firmen und Kontakte

Mehr

SQL (Structured Query Language) Schemata Datentypen

SQL (Structured Query Language) Schemata Datentypen 2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente

Mehr

4.1 SQL. Wichtige skalare Datentypen

4.1 SQL. Wichtige skalare Datentypen 4. Basierend auf dem Tupelkalkül und der relationalen Algebra wurden mit dem Aufkommen relationaler DBMS auch spezielle Sprachen entwickelt. SQL ist die derzeit am weitesten verbreitete Anfragesprache

Mehr

SQL Performance - Tips Do's & Don'ts

SQL Performance - Tips Do's & Don'ts SQL Performance - Tips Do's & Don'ts S.K. Consulting GmbH, München DB2_SQL_PERF - 1 - Inhaltsverzeichnis I. Richtlinien bei der Verwendung von SQL 1.1. In Programmen "verbotene" SQL- Anweisungen 1.2 SQL

Mehr

Einführung Datenbank

Einführung Datenbank Einführung Datenbank Einführung Datenbank Seite 2 Einführung in die Arbeit mit einer Datenbank Grundbegriffe: Datenbank - Datenbankmanagementsystem Eine Datenbank ist eine systematische strukturierte Sammlung

Mehr

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12 Prof. Dr. Lutz Wegner, Dipl.-Math. Kai Schweinsberg 21.03.2012 Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12 Name:... Vorname:... Matr.Nr.:... Studiengang:... Hinweis: Bearbeiten Sie alle

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr