E-Business E-Business E-Business und Electronic Marketing 1. Einführung 2. Online-Marktforschung / Überblick 3. Online-Marktforschung / Webserver-Logfiles 4. Online-Marktforschung / Adaptive Conjointanalyse 5. Online-Werbung 6. Software-Agenten / Einführung 7. Software-Agenten / Agentenbasierte Marktplätze 8. Datenbanken / Relationale Datenbanken 9. Datenbanken / Data Warehousing Dr. Lars Schmidt-Thieme: Tel. 0721/608-8941 Email [email protected] Sprechstunde Montag 11-12 Uhr, Zimmer 101.4, Bau III. Einführung ER-Modell Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ [11.06.2002 11:27:22] Datenmodell Datenmodell Schema und Zustand: l Schema (Intension): bechreibt die Struktur einer Datenbank mittels sogenannter Schema-Konstrukte. Das Schema wird oft graphisch als Diagramm veranschaulicht. l Zustand (Extension): beschreibt den Inhalt einer Datenbank zu einem bestimmten Zeitpunkt (snapshot). Der Zustand kann durch eine Menge von Vorkommen oder Instantiierungen von Schema-Konstrukten beschrieben werden. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/datamodel.xml [11.06.2002 11:27:22] Einführung ER-Modell Relationales Schema SQL Datenmodell Datenmodell Datenmodell: l Unter dem Datenmodell versteht man eine Menge von Begriffen, mit denen das Schema (d.h. die Struktur) einer Datenbank beschrieben werden kann. l Konzeptuelle Datenmodelle (High Level-Datenmodelle): beschreiben Datenstrukturen mittels Begriffen, die nahe an den Vorstellungen der Benutzer sind. m Entitiy Relationship-Modell (ER-Modell): beschreibt Daten als Entitäten mit Attributen und Relationen. m Objekt-Datenmodell: beschreibt Daten als Objekte, die Instanzen von Klassen sind, die wiederum Eigenschaften und Methoden besitzen können; die Klassen sind in eine Vererbungshierarchie eingeordnet. l repräsentierende Datenmodelle (Implementations-Datenmodelle): beschreiben Datenstrukturen mittels Begriffen, die relativ direkt in Software umgesetzt werden können. m relationales Datenmodell: Datenstrukturen werden mittels Tabellen (Relationen) beschrieben. m Netzwerk-Datenmodell: Datenstrukturen werden mittels Records und Mengen beschrieben. m hierarchisches Datenmodell: Datenstrukturen werden mittels Records und Hierarchien beschrieben. Netzwerk- und hierarchische Datenmodelle werden nur noch in älteren Datenbanken verwendet (legacy systems). physikalische Datenmodelle (Low Level-Datenmodelle): beschreiben die Art und Weise der Speicherung, d.h. die Organisation der Daten in einem Computer im Detail. Einführung ER-Modell Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/datamodel2.xml [11.06.2002 11:27:23] Datenmodell Datenmodell Analog zu den drei verschiedenen Ebenen von Datenmodellen unterscheidet man i.d.R. drei verschiedene Schemata (Drei-Schema-Architektur): l internes Schema: beschreibt die physikalischen Strukturen, die die Daten halten. l konzeptuelles Schema: beschreibt die Struktur einer Datenbank für die Nutzer. l externes Schema (oder user view): beschreibt einen Teil der Struktur einer Datenbank für einen bestimmten Nutzer/Nutzergruppe. Die Daten werden in Strukturen, die gemäß dem internen Schema organisiert sind, gehalten; zwischen internem Schema und höheren Schemata vermitteln sogenannte Abbildungen (mappings). http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/datamodel3.xml [11.06.2002 11:27:23] Einführung ER-Modell Relationales Schema SQL Klassifizierung von Datenbanken Klassifizierung von Datenbanken Datenbanken können nach verschiedenen Kriterien eingeteilt werden: l Datenmodell: relational oder objektorientiert (ältere auch: hierarchisch, Netzwerk-Datenmodell). l Anzahl von Nutzern: Einplatz- und Mehrplatzsysteme. l Lokalisierung: Zentralisierte Systeme, die auf einem Rechner leben, oder verteilte Systeme, die auf mehrere Rechner verteilt sind. Bei den verteilten Systemen unterscheidet man weiter in homogene Systeme, die auf allen Rechnern die gleiche Datenbanksoftware einsetzen, und heterogenen Systemen, die auf verschiedenen Rechnern unterschiedliche Datenbanksoftware einsetzen. l Anwendbarkeit: Allgemein anwendbare Systeme und spezielle Systeme. l Kosten: i.d.R. zwischen Hersteller IBM Produkt DB2 Typ Website RDBMS http://www-4.ibm.com/software/data/db2/ Oracle Oracle9i RDBMS http://www.oracle.com/database/oracle8i/ Informix MySQL PostgreSQL Software AG Microsoft Object Design Informix RDBMS http://www.informix.com MySQL RDBMS http://www.mysql.com PostgreSQL RDBMS http://www.postgresql.org Poet Versant Exoffice Verfügbarkeit Evaluation Personal Einführung Edition open source open source Personal Adabas RDBMS http://www.adabas.com Edition Access RDBMS http://www.microsoft.com/office/access/default.htm Personal ObjectStore ODBMS http://www.exceloncorp.com Edition Object ODBMS http://www.poet.de Evaluation Server Versant ODBMS http://www.verdant.com Evaluation Ozone ODBMS http://www.ozone-db.org open source Tab. 1: Datenbank-Software http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/klassifikation.xml (1 von 2) [11.06.2002 11:27:24] Klassifizierung von Datenbanken $10.000 und $100.000. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/klassifikation.xml (2 von 2) [11.06.2002 11:27:24] ER-Modell Relationales Schema SQL ER-Modell ER-Modell Das Entity-Relationship-Modell wurde 1976 von P. Chen eingeführt. Bestandteile des ER-Modells sind: l Entität: modelliert einen Gegenstand. Eine Entität besitzt Attribute. l Attribut: modelliert eine Eigenschaft eines Gegenstandes. Jede Instanz einer Entität besitzt zu jedem Attribut einen Wert. l Relation: modelliert eine Beziehung zwischen zwei Gegenständen. Name Entität Attribut Relation modelliert Gegenstand Eigenschaft eines Gegenstandes Beziehung zwischen Gegenständen Diagramm-Darstellung Rechteck Oval Raute Einführung ER-Modell Tab. 1: Bestandteile des ER-Modells Relationales Schema SQL Abb. 1: Beispiel: Eine Entität Kunde mit gewöhnlichen Attributen (Name, Geschlecht), einem zusammengesetzten Attribut (Adresse), einem mehrwertige Attribut (Vorname) und einem abgeleiteten Attribut (Anrede). http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell.xml [11.06.2002 11:27:25] ER-Modell ER-Modell Attribute: l einfach-zusammengesetzt: einfache (oder atomare) Attribute können nicht weiter in Bestandteile zerlegt werden; zusammengesetzte Attribute hingegen bestehen aus anderen Attributen. l einwertig-mehrwertig: einwertige Attribute besitzten für jede Instanz genau einen Wert, mehrwertige Attribute können für eine Instanz mehrere Werte besitzen. l gespeichert-abgeleitet: gespeicherte Attribute werden in der Datenbank abgelegt, abgeleitete Attribute können aus anderen Informationen erschlossen werden. Einführung ER-Modell Relationales Schema SQL Abb. 1: Beispiel: Eine Entität Kunde mit gewöhnlichen Attributen (Name, Geschlecht), einem zusammengesetzten Attribut (Adresse), einem mehrwertige Attribut (Vorname) und einem abgeleiteten Attribut (Anrede). l Wertebereich: Die Werte eines Attributes für eine Instanz stammen aus einem zuvor festgelegten Bereich (z.B. ganze Zahlen, Daten, Zeichenketten bestimmter Maximallänge etc.). l null-Wert: Der Wert null als Wert eines Attributes für eine Instanz bezeichnet einen fehlenden Wert oder ein nicht-zutreffendes Attribut. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell1b.xml [11.06.2002 11:27:25] ER-Modell: Entitäten ER-Modell: Entitäten Entitäten: Gegenstände vom gleichen Typ, d.h. solche, die durch die gleichen Attribute und Relationen beschrieben werden können, modelliert man als Instanzen einer Entität. l Schlüsselattribut: ein Attribut, dessen Wert unter allen Instanzen einer Entität höchstens einmal vorkommen darf, d.h. die Entität eindeutig bestimmt, nennt man Schlüssel. Eine Entität besitzt meistens einen Schlüssel, kann aber auch keinen oder mehrere Schlüssel besitzen. Schlüsselattribute werden durch Unterstreichung gekennzeichnet. l regulär-schwach: eine Entität mit mindestens einem Schlüssel heißt regulär, eine Entität ohne Schlüssel nennt man schwach. Einführung ER-Modell Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell2.xml [11.06.2002 11:27:25] ER-Modell: Relationen ER-Modell: Relationen Relationen: Relationen dienen zur Modellierung von Beziehungen zwischen Gegenständen, d.h. sie setzen verschiedene Entitäten zueinander in Beziehung; diese heißen partizipierende Entitäten. l Wertigkeit: die Anzahl der Entitäten, die über eine Relation in Beziehung zueinander gesetzt werden, bezeichnet man als Wertigkeit der Relation. Oft sind Relationen zweiwertig (binär), etwa [Kunde] erteilt [Auftrag] Eine dreiwertige Relation wäre etwa: [Kunde] erteilt [Auftrag] bei [Mitarbeiter] Einführung Abb. 1: Zweiwertige (binäre) Relation. ER-Modell Relationales Schema SQL l Abb. 2: Dreiwertige (ternäre) Relation. Rollennamen: die Stellen, an denen Instanzen von Entitäten in eine Relation eingesetzt werden können, bezeichnet man als Rollen. Im obigen Beispiel könnte man die Rollen als Auftragserteiler, Auftrag und Auftragsbearbeiter bezeichnen. Rollen sind wichtig, wenn Instanzen von Entitäten in mehreren Rollen gleichzeitig vorkommen können. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell2b.xml [11.06.2002 11:27:26] ER-Modell: Relationen ER-Modell: Relationen Kardinalitäts-Nebenbedingung: eine optionale Kardinalitäts-Nebenbedingung bei einer binären Relation gibt an, wie oft eine bestimmte Instanz einer Entität mit einer anderen Instanz in der Relation vorkommen darf. l 1:1: jede Instanz einer Entität darf mit höchstens einer anderen Instanz in Beziehung gesetzt werden. Bsp.: l [Rechnung] erstellt für [Auftrag]. (Jeder Auftrag besitzt höchstens eine Rechnung und jede Rechnung bezieht sich auf höchstens einen Auftrag.) 1:n (oder n:1): Instanzen in der ersten Rolle dürfen mit bis zu n verschiedenen Instanzen in der zweiten Rolle in Beziehung gesetzt werden, aber Instanzen in der zweiten Rolle mit höchstens einer in der ersten Rolle (bzw. umgekehrt). Bsp.: Einführung ER-Modell Abb. 1: Kardinalitätsnebenbedingung 1:1. SQL Abb. 2: Kardinalitätsnebenbedingung 1:n. Abb. 3: Kardinalitätsnebenbedingung n:m. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell3.xml (1 von 2) [11.06.2002 11:27:27] ER-Modell: Relationen l Relationales Schema [Kunde] erteilt [Auftrag]. (Ein Kunde kann mehrere Aufträge erteilen aber derselbe Auftrag kann nicht von mehreren Kunden erteilt werden.) n:m: Instanzen in der ersten Rolle dürfen mit höchstens m Instanzen in der zweiten und Instanzen in der zweiten Rolle mit höchstens n Instanzen in der ersten Rolle in Beziehung gesetzt werden. Bsp: [Auftrag] enthält [Produkt]. (Ein Auftrag kann mehrere Produkte enthalten und ein Produkt in mehreren Aufträgen enthalten sein.) http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell3.xml (2 von 2) [11.06.2002 11:27:27] ER-Modell: Relationen ER-Modell: Relationen partielle und vollständige Partizipation: Muß jede Instanz einer Entität (in einer bestimmten Rolle) in einer bestimmten Relation in Beziehung gesetzt sein, spricht man von vollständiger Partizipation der Entität an der Relation (in der gegebenen Rolle); falls eine solche Nebenbedingung nicht besteht, spricht man von partieller Partizipation. Bsp.: Einführung ER-Modell Abb. 1: Vollständige und partielle Partizipation. [Kunde] erteilt [Auftrag]. Die Entität Auftrag partizipiert vollständig an der Relation, da kein Auftrag ohne erteilenden Kunden existiert; die Entität http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell3b.xml (1 von 2) [11.06.2002 11:27:27] ER-Modell: Relationen Kunde partizipiert nur partiell, da es Kunden ohne bisherige Aufträge geben kann. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell3b.xml (2 von 2) [11.06.2002 11:27:27] Relationales Schema SQL ER-Modell: Entitäten & Relationen ER-Modell: Entitäten & Relationen Relationen: l Attribute: Wie Entitäten können Relationen Attribute besitzen. Jede Instanz der Relation (d.h. jedes Tupel von in der entsprechenden Beziehung stehenden Instanzen von Entitäten) besitzt zu jedem Attribut einer Relation einen Wert. Einführung ER-Modell Relationales Schema SQL Abb. 1: Relation mit Attribut. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell4.xml [11.06.2002 11:27:28] ER-Modell: Entitäten & Relationen ER-Modell: Entitäten & Relationen Schwache Entitäten: l Unter schwachen Entitäten versteht man Entitäten ohne Schlüssel. l Schwache Entitäten werden stets über eine Relation identifiziert. Unter allen mit einer bestimmten anderen Instanz einer Entität in dieser Relation in Beziehung stehenden Instanzen der schwachen Entität wird eine Instanz der schwachen Entität durch ein Attribut (oder eine Menge von Attributen) eindeutig gekennzeichnet. - Man nennt diese Relation die identifizierende Relation, die andere Entität Einführung ER-Modell Relationales Schema SQL Abb. 1: Schwache Entität Auftrag mit identifizierender Relation erteilt, identifizierender Entität Kunde und partiellem Schlüssel Bestelldatum. Abb. 2: Durch Einführung eines Schlüssels Auftragsnr entsteht eine reguläre Entität Auftrag. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell4b.xml (1 von 2) [11.06.2002 11:27:30] ER-Modell: Entitäten & Relationen l die identifizierende Entität (oder Besitzer-Entität) und das Attribut den partiellen Schlüssel. Schwache Entitäten partizipieren an ihrer identifizierenden Relation stets vollständig. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell4b.xml (2 von 2) [11.06.2002 11:27:30] ER-Modell: Beispiel ER-Modell: Beispiel Einführung ER-Modell Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ermodell5.xml [11.06.2002 11:27:31] Relationales Datenmodell Relationales Datenmodell Das relationale Datenmodell wurde 1970 von Ted Codd (IBM Research) eingeführt. Es basiert auf Tabellen. Man nennt: l Attribut: der Name einer Spalte. l Bereich: Wertebereich für die Inhalte einer Spalte. l Tupel: eine Zeile. l Relation: die ganze Tabelle. l null-Wert: Zellen ohne Eintrag besitzen den speziellen Wert null (fehlende Werte, unzutreffende Attribute). l Schlüssel: jede minimale Menge von Attributen, die die Tupel einer Relation eindeutig kennzeichnet. I.d.R. wird einer dieser Schlüssel als Primärschlüssel hervorgehoben (in den Diagrammen unterstrichen). Einführung ER-Modell Abb. 1: Beispiel für eine Relation mit Primärschlüssel Kundennr. Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/relationalmodel.xml [11.06.2002 11:27:32] Relationales Datenmodell Relationales Datenmodell l Fremdschlüssel: unter einem Fremdschlüssel versteht man ein Attribut (oder eine Menge von Attributen), in denen der Schlüsselwert einer anderen Relation gehalten wird, d.h.: m das Fremdschlüssel-Attribut muß den gleichen Wertebereich haben wie das Schlüsselattribut der referenzierten Relation, m für jedes Tupel der referenzierenden Relation muß der Wert des Fremdschlüssels sich entweder als Abb. 1: Beispiel für einen Fremdschlüssel. Der Fremdschlüssel Kundennr Schlüsselwert eines der referenzierende Relation Bestellung verweist auf den Schlüssel Tupels der Kundennr der referenzierten Relation Kunde. - Die letzte Zeile verletzt die referenzierten Relation referentielle Integrität (es gibt keinen Kunden mit Kundennumer 5). finden oder null sein (referentielle Integrität). Im ersten Fall sagt man, das Tupel der referenzierenden Relation referenziert das Tupel der referenzierten Relation. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/relationalmodel1a.xml [11.06.2002 11:27:33] Einführung ER-Modell Relationales Schema SQL Abbildung ER -> Relational Abbildung ER -> Relational Aus einem ER-Modell kann man durch einfache Umformungen ein relationales Modell gewinnen: 1. reguläre Entität: Relation mit allen einfachen Attributen als Attribute; von zusammengesetzten Attributen werden nur die einfachen Bestandteile übernommen (und die Struktur vernachlässigt). Ein Schlüsselattribut wird als Primärschlüssel ausgewählt (im Fall eines zusammengesetzten Schlüsselattributes bildet die Menge dessen einfacher Bestandteile den Primärschlüssel). 2. schwache Entität: Relation mit allen einfachen Attributen sowie allen einfachen Bestandteilen zusammengesetzter Attribute als Attribute; zusätzlich werden die Attribute des Primärschlüssels der identifizierenden Entität als Fremdschlüssel aufgenommen. Diese bilden zusammen mit den Attributen des partiellen Schlüssels den Primärschlüssel. 3. binäre 1:1-Relation: Nehme in eine der beiden partizipierenden Entitäten die Attribute des Primärschlüssels der anderen partizipierenden Entität als Fremdschlüssel sowie alle Attribute der Relation als Attribute auf. 4. binäre 1:n-Relation: Nehme in die partizipierende Entität auf der n-Seite die Attribute des Primärschlüssels der partizipierenden Entität auf der 1-Seite als ER-Modell Entität Relation binär 1:1 Relation binär 1:n Relation binär n:m Relation n-wertig Einfaches Attribut Zusammengesetztes Attribut Mehrwertiges Attribut Schlüssel http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ertorel.xml (1 von 2) [11.06.2002 11:27:33] Abbildung ER -> Relational Fremdschlüssel sowie alle Attribute der Relation als Attribute auf. 5. binäre n:m-Relation: Erzeuge eine neue Relation ("relationship relation" im Gegensatz zu "entity relation") mit den Attributen der Primärschlüssel der beiden partizipierenden Entitäten als Fremdschlüssel sowie allen Attributen der Relation als weiteren Attributen; die beiden Fremdschlüssel bilden gemeinsam den Primärschlüssel. 6. mehrwertige Relation: Erzeuge eine neue Relation ("relationship relation") mit den Attributen der Primärschlüssel der partizipierenden Entitäten als Fremdschlüssel sowie allen Attributen der Relation als weiteren Attributen; die Fremdschlüssel bilden gemeinsam den Primärschlüssel. 7. mehrwertiges Attribut: Erzeuge eine neue Relation mit den einfachen Attributen als Attributen sowie den Attributen des Primärschlüssels der Entität oder Relation, zu der das Attribut gehört, als Fremdschlüssel. Die Attribute plus der Fremdschlüssel bilden den Primärschlüssel. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ertorel.xml (2 von 2) [11.06.2002 11:27:33] Relationales Modell Relation ("entity relation") Fremdschlüssel in Relation zu einer der beiden Entitäten Fremdschlüssel in Relation zu der Entität auf n-Seite Relation ("relationship relation") mit 2 Fremdschlüsseln Relation ("relationship relation") mit n Fremdschlüsseln Attribut Menge von Attributen der einfachen Bestandteile Relation mit Fremdschlüssel Primär- bzw. Sekundärschlüssel Tab. 1: Einführung ER-Modell Relationales Schema SQL Abbildung ER -> Relational Abbildung ER -> Relational Einführung ER-Modell Relationales Schema Abb. 2: Relationales Modell der Entität. SQL Abb. 1: ER-Modell: Entität mit verschiedenen Arten von Attributen. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ertorel2.xml [11.06.2002 11:27:34] Abbildung ER -> Relational Abbildung ER -> Relational Einführung ER-Modell Relationales Schema Abb. 3: Relationales Modell der Entität. SQL Abb. 1: ER-Modell: binäre Relation 1:n. Abb. 2: ER-Modell: Variante der obigen Relation mit Attribut an der Relation. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ertorel3.xml [11.06.2002 11:27:35] Abbildung ER -> Relational Abbildung ER -> Relational Einführung ER-Modell Relationales Schema Abb. 2: Relationales Modell der Entität. SQL Abb. 1: ER-Modell: schwache Entität. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ertorel4.xml [11.06.2002 11:27:35] Abbildung ER -> Relational Abbildung ER -> Relational Einführung ER-Modell Relationales Schema SQL Abb. 2: Relationales Modell der Entität. Abb. 1: ER-Modell: binäre Relation n:m. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/ertorel5.xml [11.06.2002 11:27:36] Relationales Datenmodell Relationales Datenmodell Einführung ER-Modell Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/relationalmodel2.xml (1 von 2) [11.06.2002 11:27:38] Relationales Datenmodell Abb. 1: Beispiel für ein relationales Schema. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/relationalmodel2.xml (2 von 2) [11.06.2002 11:27:38] SQL SQL SQL (Standard Query Language) ist der Industriestandard zur l Definition relationaler Schemata (data definition language (DDL)) und l Manipulation der Inhalte relationaler Datenbanken (data manipulation language (DML)). SQL ist ein ISO/ANSI-Standard: l Die Grundlage von SQL war SEQUEL (Structured English Query Language) von IBM. l 1986 wurde SQL von ISO/ANSI normiert (SQL/1, SQL-86). l 1992 Update des Standards zu SQL/2, SQL-92. l Seitdem wird an einem zweiten Update des Standards gearbeitet (SQL/3). SQL wird von nahezu allen relationalen Datenbanksystemen unterstützt. l Bei vielen einfacherern DBMS (etwa mysql) ist die Umsetzung des Standards unvollständig. l Fast alle DBMS bieten eine Fülle nicht-Standard-konformer Erweiterungen. SQL ist ein Textformat, in dem Anfragen an die Datenbank direkt formuliert werden können. Das Ergebnis einer Anfrage kann eine Fehlercode oder eine Ergebnismenge (result set) sein. Der Zugriff auf die Datenbank kann über verschiedene Schnittstellen erfolgen: l direkter Zugriff: der Benutzer kann selbst SQL anfragen formulieren und bekommt die Fehlermeldungen bzw. das Resultset als Tabelle angezeigt. m einfache standalone-Clients als Konsolenanwendung oder mit GUI (Bestandteil der Datenbank, für mysql etwa mysql und kmysql). m WWW-Clients (realisert mittels CGI, Servlet, JSP, XSP etc.). l indirekter Zugriff: der Benutzer editiert Daten im GUI einer Anwendung, die die Veränderungen in geeignete SQL-Statements formuliert und die Resultsets von Anfragen entsprechend darstellt. Einführung ER-Modell Relationales Schema SQL http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql.xml [11.06.2002 11:27:39] SQL - DDL SQL - DDL Datenbanken: Bezeichnung DBMS können i.d.R. mit mehreren Datenbanken int gleichzeitig verwalten. Das Anlegen einer solchen smallint Datenbank geschieht oft nicht selbst in SQL, sondern mittels eines Tools (durch Aufruf einer float(p) Methode des DBMS-APIs). In mysql beispielsweise kann wie folgt eine neue Datenbank auch via SQL angelegt und ausgewählt werden: decimal(p,q) create database database-name; use database-name; Alle Folgeoperationen beziehen sich auf die ausgewählte Datenbank. Mit drop database database-name; kann eine Datenbank wieder zerstört werden. Tabellen: Jede Datenbank besitzt ein Schema in Form einer Menge von Tabellen. Eine Tabelle kann mit create table table-name ({ table-spec }) ; erzeugt werden, wobei table-spec eine durch Kommata getrennte Liste von Tabellenangaben ist, d.h. von l Spaltenangaben: column-name column-type [not null] [primary key] [references table-name [(column-commalist)] ] char(n) varchar(n) bit(n) varbit(n) date, time, timestamp blob clob, nclob bfile http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql2.xml (1 von 2) [11.06.2002 11:27:39] Beschreibung ganze Zahl (4 Byte) ganze Zahl (2 Byte) Fließkommazahl (Genauigkeit p: Anzahl gültiger Ziffern) formatierte Fließkommazahl (Genauigkeit p: Anzahl gültiger Ziffern, Skala q: Anzahl der Nachkommastellen) Zeichenkette der (festen) Länge n Zeichenkette mit maximaler Länge n Bitfolge der (festen) Länge n Bitfolge mit maximaler Länge n Datum, Uhrzeit bzw. kombinierte Angabe von Datum und Uhrzeit binary large object character large object (variabler bzw. konstanter Länge) binary file (außerhalb der Datenbank gespeichert) Tab. 1: Datentypen in SQL. Einführung ER-Modell Relationales Schema SQL SQL - DDL l Angabe des Primärschlüssels: l primary key (column-commalist) Angabe eines Fremdschlüssels: foreign key (column-commalist) references table-name [(column-commalist)] Mit drop table table-name; kann eine Tabelle wieder gelöscht werden. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql2.xml (2 von 2) [11.06.2002 11:27:39] SQL - DDL SQL - DDL create table kunde (kundennr integer not null primary key, name varchar(30)) ; Einführung create table bestellung (rechnungsnr integer not null primary key, rechnungsdatum date, rechnungsbetrag integer, kundennr integer references kunde); create table produkt (bezeichnung varchar(30) not null primary key, stueckkosten integer); create table posten (rechnungsnr integer not null references bestellung, produktbezeichnung varchar(30) not null references produkt (bezeichnung), stueckzahl integer, primary key (rechnungsnr, produktbezeichnung) ); Abb. 2: Erzeugung des Beispiel-Schemas mittels SQL. Abb. 1: Beispiel für ein relationales Schema. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql3.xml [11.06.2002 11:27:40] ER-Modell Relationales Schema SQL SQL - DML SQL - DML Tabelleninhalte modifizieren: Zur Modifikation von Tabelleninhalten stehen drei SQL-Befehle zur Verfügung: Mit insert into table-name { [column-commalist] table-expr }; können Zeilen in eine Tabelle eingefügt werden, wobei die Ausdrücke table-expr im einfachsten Fall die Gestalt values (scalar-expr-commalist) besitzen. Mit insert insert insert insert into into into into kunde values (1, "Frank Mueller"); produkt values ("Spark II", 400); bestellung values (2001, "2000-06-31", 2000, 1); posten values (2001, "Spark II", 1); Einführung ER-Modell Abb. 1: Einfügen von Daten. Relationales Schema SQL delete from kunde where kundennr = 2000; delete from bestellung where rechnungsdatum < "2000-07-01"; Abb. 2: Löschen von Daten. update produkt set stueckkosten = 1.2 * stueckkosten ; Abb. 3: Verändern von Daten. delete from table-name [where cond-expr]; können Zeilen aus einer Tabelle wieder entfernt werden, wobei die Ausdrücke cond-expr im einfachsten Fall die Gestalt column-name comparision-operator value http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql4.xml (1 von 2) [11.06.2002 11:27:40] SQL - DML besitzen oder eine Kombination solcher Ausdrücke mittels der boolschen Operatoren and, or und not. Mit update table-name set column-name = scalar-expr [where cond-expr]; können Zeilen einer Tabelle verändert werden. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql4.xml (2 von 2) [11.06.2002 11:27:40] SQL - Querys SQL - Querys Anfragen: select * from bestellung; rechnungsnr rechnungsdatum rechnungsbetrag 2001 2000-06-31 2000 2002 2000-07-01 6000 2003 2000-07-04 1600 select select-item-commalist from table-ref-commalist [where cond-expr] [group by column-ref-commalist] [having cond-expr] wobei die Ausdrücke select-item von der Gestalt scalar-expr [as column-name] | [range-variable .] * sind. Die Ausdrücke table-ref sind wie folgt aufgebaut: kundennr 1 3 1 Einführung ER-Modell Relationales Schema Abb. 1: Einfache Anfrage (vollständige Tabelle). SQL table-name [AS range-variable [(column-commalist)]] | table-expr [AS range-variable [(column-commalist)]] | join-table-expr select kundennr as knr, rechnungsbetrag from bestellung; knr rechnungsbetrag 1 2000 3 6000 1 1600 Abb. 2: Einfache Anfrage (Auswahl und Umbennung von Feldern). http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql5.xml [11.06.2002 11:27:41] SQL - Querys SQL - Querys Anfragen: select Einfache Anfragen richten sich an eine Tabelle (Abb. 1 und 2 letzte Folie), komplexere Anfragen select verbinden mehrere Tabellen des Schemas: l Der join-Operator select (dargestellt als Komma oder mittels join) bildet das kartesische Produkt beider Tabellen. l I.d.R. möchte man nicht alle Kombinationsmöglichkeiten der Zeilen zweier Tabellen, sondern lediglich die Kombination von durch einen foreign key miteinander verbundenen Zeilen. Dies erreicht man entweder durch m eine nachgeschaltete where-Klausel, m einen left join oder right join-Operator mit Angabe einer on-Klausel oder m einen natural left join- bzw. natural right join-Operator (ein join auf allen Attributen mit gleichen Namen). Siehe Abb. 3. name,rechnungsbetrag from kunde,bestellung where kunde.kundennr = bestellung.kundennr; Einführung name,rechnungsbetrag from bestellung left join kunde on kunde.kundennr = bestellung.kundennr; name,rechnungsbetrag from bestellung natural left join kunde; name rechnungsbetrag Frank Mueller 2000 Heribert Mayer 6000 Frank Mueller 1600 Abb. 1: Anfrage (Verbindung zweier Tabellen). http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql5b.xml [11.06.2002 11:27:41] ER-Modell Relationales Schema SQL SQL - Querys SQL - Querys Aggregation: Man kann über die Werte einer Spalte aller zu einer bestimmten Gruppe gehörigen Zeilen aggregieren, indem man: l in einer group by-Klausel Spaltennamen angibt, die eine Gruppierung der Zeilen definieren, l in einem select-expr eine Aggregierungsfunktion auf einer der Spalten angibt. Zulässige Aggregierungsfunktionen sind: sum, count, max, min, avg Siehe Abb. 1. select name,sum(rechnungsbetrag) from bestellung natural left join kunde group by name; name sum(rechnungsbetrag) Frank Mueller 3600 Heribert Mayer 6000 Einführung ER-Modell Relationales Schema Abb. 1: Anfrage (Aggregation). SQL select name,sum(rechnungsbetrag) from bestellung natural left join kunde group by name having count(*) > 1; name sum(rechnungsbetrag) Frank Mueller 3600 Abb. 2: Anfrage (Aggregation). Mittels einer having-Klausel kann man aus den aggregierten select kundennr,rechnungsbetrag from bestellung order by rechnungsbetrag desc; Zeilen noch mal solche kundennr rechnungsbetrag auswählen, die zu 3 6000 spezifizierenden Kriterien 1 2000 genügen (Abb. 2). 1 1600 Sortierung: Durch Angabe einer order Abb. 3: Anfrage (Sortierung). by-Klausel kann man die Zeilen des Resultsets sortieren. Man gibt die Spaltennamen an, nach denen sortiert werden soll, sowie asc oder desc für aufbzw. absteigende Sortierung (Abb. 3). http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql6.xml [11.06.2002 11:27:41] SQL - Querys SQL - Querys Schachtelung: select-Ausdrücke select name from posten natural left join bestellung können als natural left join kunde Bestandteil in where produktbezeichnung in where-Klauseln (select produktbezeichnung erscheinen, from posten natural left join bestellung insbesondere also natural left join kunde geschachtelt where name="Frank Mueller"); werden. Abb. 1 name etwa zeigt ein SQL-Statement, Heribert Mayer mithilfe dessen man folgende Anfrage Abb. 1: Anfrage (Schachtelung). formuliert: Finde die Namen aller Kunden, die ein Produkt gekauft haben, das auch Frank Mueller gekauft hat. (Geschachtelte select-Ausdrücke werden derzeit von http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql7.xml (1 von 2) [11.06.2002 11:27:42] Einführung ER-Modell Relationales Schema SQL SQL - Querys mysql noch nicht unterstützt.) http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql7.xml (2 von 2) [11.06.2002 11:27:42] SQL - Querys SQL - Querys Weitere SQL-Konzepte: l Transaktionen. l Definition und Verwendung von Views. l Verwaltung von Zugriffsrechten. l Verwendung von Triggern. l Verwendung von Cursorn. l Stored Procedures. http://viror.wiwi.uni-karlsruhe.de/ebusiness/script/8/sql8.xml [11.06.2002 11:27:42] Einführung ER-Modell Relationales Schema SQL