MultiAugustinum E2A/E3A SQL Relationale Datenbanksysteme Mag. Christian Gürtler 2009 Inhaltsverzeichnis I Allgemeines 5 1 Vergleich Datenbankysteme – Dateisystem 7 2 Architektur eines DBMS 11 2.1 Konkrete Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 Arten von Datenbanksystemen 3.1 Hierarchische Datenbanksysteme . . 3.2 Netzwerkmodell . . . . . . . . . . . . 3.3 Objektorientierte Datenbanksysteme 3.4 Relationale Datenbanksysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II Datenbankdesign 4 Entity-Relationship-Modell 4.1 Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Grundlagen des Entity-Relationship-Modells (ER-Modell) 4.3 Eigenschaften von Beziehungen . . . . . . . . . . . . . . . 4.3.1 Stelligkeit . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Kardinalität – Konnektivität . . . . . . . . . . . . 4.3.3 Stärke der Beziehung . . . . . . . . . . . . . . . . . 4.3.4 Optionalität . . . . . . . . . . . . . . . . . . . . . . 4.3.5 Abhängige Entity-Typen, IST-Beziehung . . . . . . III SQL-Abfragen 15 15 15 16 16 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 22 22 23 25 25 26 29 3 Teil I Allgemeines 5 1 Vergleich Datenbankysteme – Dateisystem Bis in die 1960er-Jahre wurden die Daten in einem Dateisystem gespeichert, im schlimmsten Fall verwaltet jedes Anwendungsprogramm seine eigenen Daten und mitunter auch noch in eigenen Dateiformaten (Excel als xls, Access als mdb usw.) • Die Buchhaltung speichert Daten über Artikel und Adressen. • Die Auftragsverwaltung bearbeitet Daten über Aufträge, Adressen und Kunden • Die Kundenbetreuung bearbeitet Daten der Kunden (Adressen,...) Anwendung 1 Datei 1 Anwendung 2 Datei 2 Datei 3 Abbildung 1.1: Zugriff auf Dateien Problem der Datenredundanz In diesem Szenario sind die Daten mehrfach (redundant) gespeichert, in der Folge kommt es einerseits zu unnötig belegtem Speicherplatz und andererseits (was noch gravierender ist) zu Dateninkonsistenzen: ändert die Kundenbetreuung die Daten eines Kunden – zum Beispiel von Herrn Müller, dann müssen auch die Buchhaltung und die Auftragsverwaltung ihre Daten ändern. Geschieht dies nicht, so haben alle Abteilungen unterschiedliche Datensätze, also inkonsistente Daten. Der Müller aus der Kundenbetreuung ist nicht mehr der Kunde Müller aus der Auftragsverwaltung. 7 1 Vergleich Datenbankysteme – Dateisystem Weitere Problemfelder Um diese Daten zu verwalten, werden in den Betrieben oft zusätzlich spezielle Anwendungsprogramme entwickelt. Die Entwickler solcher Programme müssen jedoch wissen, wie die Daten intern gespeichert werden (um die Daten in einem speziellen Format zu speichern). Dieser Punkt wird als fehlende Datenunabhängigkeit bezeichnet. Ein weiterer Punkt der Speicherung von Daten in einem Dateisystem betrifft fehlende Zugriffskontrolle und Datensicherheit. Meist können in einem Dateisystem die Rechte nur bis auf Dateiebene vergeben werden, nicht jedoch auf einzelne Inhalte einer Datei. Zusätzlich existieren kaum Möglichkeiten, Dateien so zu sperren, dass sich mehrere Benutzer beim Bearbeiten nicht gegenseitig behindern bzw. Daten gegenseitig überschreiben (was zu Datenverlust führen kann). Ende der 1960er-Jahre wurden Dateiverwaltungssysteme eingeführt. Zwischen Datei und Anwendung liegt eine Dateiverwaltungsschicht (z. B ISAM – Indexed Sequential Access Method ). Anwendung 1 Anwendung 2 Dateiverwaltungssystem I Datei 1 Dateiverwaltungssystem II Datei 2 Datei 3 Abbildung 1.2: Zugriff auf Dateien Mit der Verwendung von (I)SAM wurde Geräteunabhängigkeit erreicht, die Daten waren aber immer noch redundant gespeichert. Die Lösung dieser Probleme wurden in den 1970er-Jahren durch den Einsatz von Datenbanksystemen erreicht, hier ist insbesonders das von Codd entwickelte Relationenmodell zu nennen. Die Daten sind in einer Datenbank gespeichert, wo die Daten physisch liegen wird vom Datenbankmanagementsystem (DBMS) verwaltet, die Anwender und Programmiererer brauchen sich in der Regel nicht darum zu kümmern. Der Zugriff erfolgt sozusagen gefiltert“ (abstrahiert) durch das DBMS. ” 8 Anwendung 1 Anwendung 2 DBMS Datenbank Abbildung 1.3: Zugriff auf Datenbank Zusammengefasst: Datenbanksysteme zeichnen sich durch folgende Prinzipien aus: • Die Daten werden zentral und nicht-redundant gespeichert. • Mehrere Benutzer können gleichzeitig (parallel) auf die Daten zugreifen. Transaktionen verhindern unerwünschte Nebeneffekte. Konkurrierende Transaktionen müssen synchronisiert werden (greifen mehrere Transaktionen auf einen Datensatz zu, so müssen sie aufeinander abgestimmt werden). 1 • Datenunabhängigkeit gewährleistet die Unabhängigkeit der Programme von den Daten und umgekehrt. Wie die Daten organisiert bzw. gespeichert werden spielt für ein Programm keine Rolle; ein bestimmtes Programm oder eine Applikation darf wiederum die Organisation der Daten nicht beeinflussen. • Datenbanksysteme gewährleisten feiner abgestimmte Zugriffskontrollen und Rechte. Sichten (eingeschränkte Sicht auf die Daten) und Rechte auf einzelne Datensätze (Zeilen) sind möglich (views). • Ein Datenbanksystem bietet Operationen zum Suchen, Ändern und Anlegen von Datensätzen. Dazu sind deskriptive Sprachen vorhanden. • Ein Katalog, auch Data Dictionary genannt, ermöglicht Zugriffe auf die Beschreibungen (Metadaten) der Daten und Datenbanken (um zum Beispiel zu erfahren, wer einen bestimmten Datensatz angelegt oder geändert hat, oder welche Tabellen eine bestimmte Datenbank besitzt). • Das Datenbanksystem gewährleistet die Datenintegrität (Konsistenz). • Datensicherung muss die Wiederherstellung von Daten nach Fehlern gewährleisten. 1 Unter einer Transaktion versteht man eine Zusammenfassung von Datenbankprozessen, die als gesamtes (atomar) ausgeführt werden. Nach einer Transaktion befindet sich die Datenbank in einem konsistenten (consistent) Zustand. Mehrere Transaktionen laufen isoliert voneinander ab. Bei Erfolg sind die Daten dauerhaft speichert – ACID. 9 1 Vergleich Datenbankysteme – Dateisystem Im Zusammenhang mit Datenbanken sind verschiedene Begriffe üblich. Folgende Tabelle erläutert die Unterschiede: Kürzel Begriff Erläuterung DB Datenbank Datenbestand DBMS Datenbankmanagementsystem verwaltet Datenbestand DBS Datenbanksystem DB + DBMS Tabelle 1.1: Begriffe 10 2 Architektur eines DBMS Es werden drei Ebenen unterschieden, die den Zugriff auf die Daten gewährleisten: • die externe Ebene beschreibt, wie Anwendungen (Masken, Einbettung in Programmiersprachen wie PHP), die Daten sehen. Da dies je nach Anwendung unterschiedlich ist, existiert eine • konzeptuelle Ebene, die eine logische Sicht auf die Daten bietet. Eine Stufe tiefer existiert eine • interne Ebene, die sich um die physische Speicherung auf Platten- bzw. Betriebssystemebene kümmert. Dieses Schema gewährleistet einen wichtigen Punkt, nämlich den der Datenunabhängigkeit mit ihren zwei Teilaspekten (Implementierungsunabhängigkeit, physische Datenunabhängigkeit – wie die Daten gespeichert werden, ist für die Sicht auf die Daten egal – und Anwendungsunabhängigkeit, logische Unabhängigkeit – Änderungen auf eine Anwendung dürfen sich nicht auf die Daten auswirken). Modell für die konzeptuelle Ebene: Relationenmodell Die Grundlage des Relationenmodells liefert die Relation. Eine Tabelle wird durch ein sog. Relationenschema beschrieben. Dieses Schema gibt an, aus wievielen Spalten die Tabelle besteht und wie die Spalten benannt sind. Die Einträge in der Tabelle werden als Relation zu diesem Schema bezeichnet. Ein Tupel bezeichnet eine Zeile in einer Tabelle. Die Spaltenüberschriften werden als Attribute bezeichnet. Relationenname Weine Tupel Attribute Name La Rose Grand Cru Zinfandel Chardonnay Farbe Rot Rot Weiß Jahrgang 1998 2003 1999 Weingut Creek Helena Müller Relationenschema Relation Tabelle 2.1: Begriffsbildung 11 2 Architektur eines DBMS 2.1 Konkrete Architekturen Die relationalen DBMS sind die Systeme, die den Markt dominieren. Vertreter sind IBM (DB2, Informix), Oracle (Oracle 11g), Microsoft (SQL Server), PostgreSQL, SUN (MySQL). Die beiden letztgenannten sind Open-Source-Systeme. Gemeinsame Merkmale sind • die Drei-Ebenen-Architektur • einheitliche Sprache (SQL) • Einbettung in Programmiersprachen wie C/C ++, PHP, Java • kontrollierter Mehrbenutzerbetrieb, Zugriffskontrolle Mit Ausnahme von SQL Server (läuft nur auf Microsoft-Servern) gibt es für die oben genannten Datenbanksysteme Versionen für die gängigsten Betriebssysteme (Windows, UNIX, Linux). Aus der Sicht einer Anwendung ist ein DBMS ein Client-Server-System. Der Client läuft meist auf einem PC (Mysql-Query-Browser, PHPMyAdmin, . . . ), der eine Anfrage an den Server stellt. Dieser nimmt die Anfrage auf, führt eine Bearbeitung durch und gibt die Ergebnisse dem Client zurück. Client Server 3 Anfrage Antwort Bearbeitung 1 2 Abbildung 2.1: Client-Server-System Oft sind diese Systeme reine sog. Zwei-Schichtensysteme (reine Client-Server-Systeme), wo sowohl Benutzerschnittstelle als auch die Anwendungslogik im Client integriert sind. Bei manchen Systemen gibt es allerdings drei Schichten, wie beispielsweise Apache/PHP-MySQL. Streng genommen kann der Apache mit PHP und der entsprechenden Schnittstelle zur Datenbank als eigener Applikationsserver betrachtet werden. Solche Drei-Schichtensysteme gibt es auch bei Oracle, IBM (WebSphere), RedHat (JBoss), Java Beans. . . . Bei diesen Beispielen ist es oft problematisch, wenn ein Datenbanksystem durch ein anderes ersetzt werden soll (beispielsweise MySQL durch Oracle). Dann müssen in 12 2.1 Konkrete Architekturen sämtlichen Anwendungsprogrammen die Schnittstellen geändert werden (Risiko, Zeitaufwand). Um diese Probleme zu umgehen, wurden sog. Middleware-Lösungen wie CORBA oder ODBC entwickelt. Diese zusätzliche Schicht enthält nur die Information (Treiber) über die darunterliegende Datenbank, das Anwendungsprogramm braucht sich darum nicht zu kümmern. Änderungen sind daher nur einmal notwendig und nicht in allen Programmen. (a) Zwei-Schichten-System (b) Drei-Schichten-System Benutzerschnittstelle Benutzerschnittstelle Anwendungslogik DB-Schnittstelle Anwendungslogik DB-Schnittstelle Datenbank Datenbank Abbildung 2.2: Anwendungsarchitekturen 13 3 Arten von Datenbanksystemen 3.1 Hierarchische Datenbanksysteme In den 1960er-Jahren wurde das sogenannte hierarchische Datenbankmodell entwickelt. Die Daten werden in einer Baumstruktur mit einem Root-Knoten, Ästen (vertikal) und Blättern (horizontal) gespeichert. Firma Vorstand Müller Produktion Huber Dorfer Meier Vertrieb Hauser Berger Abbildung 3.1: Hierarchisches Modell In diesem Modell sind nur 1 : 1 und 1 : N -Beziehungen darstellbar, M : N Beziehungen sind nur mit zusätzlichem Aufwand (virtuelle Zeiger) darstellbar. Ein ähnliches System existiert in LDAP, einem modernen plattformübergreifenden Userverwaltungssystem. 3.2 Netzwerkmodell In diesem System, das auch als CODASYL-System, bekannt ist, sind auch M : N Beziehungen darstellbar, allerdings fehlt hier der wesentliche Punkt der Datenunabhängigkeit; als Programmiersprache ist weitgehend COBOL und keine eigene Abfragesprache wie SQL im Einsatz. Diese Datenbanken werden hauptsächlich noch auf 15 3 Arten von Datenbanksystemen Großsrechnern eingesetzt. Der Datenbestand besteht hier aus netzwerkartig verketteten Datensätzen (Records). 3.3 Objektorientierte Datenbanksysteme Diese Systeme entstanden bereits in den 1980er-Jahren und wollen prinzipiell die objektorientierte Ausrichtung von Programmiersprachen wie C ++, Smalltalk oder Java auf Datenbanken abbilden. Erst 1993 bildete sich so etwas wie ein gemeinsamer Standard (Kompromiss). 3.4 Relationale Datenbanksysteme Im folgenden wird hauptsächlich dieses Modell mit Tabellen, Entities, Relationen etc. besprochen. 16 Teil II Datenbankdesign 17 4 Entity-Relationship-Modell 4.1 Modelle Modelle dienen zum Erfassen der Daten und nicht der daraus gewonnen Informationen. Daten sind zum Beispiel Schüler mit ihrem Namen, Geburtsdatum und Noten, Informationen werden daraus gewonnen (Notendurchschnitt, Alter). Um ein Modell zu entwickeln, sind Informationen über 1. statische Eigenschaften von Objekten und Beziehungen, 2. dynamische Eigenschaften wie Operationen und Beziehungen zwischen Operationen, 3. Integritätsbedingungen von Objekten und Operationen zu sammeln. Objekte sind zum Beispiel Artikel mit statischen Eigenschaften Bezeichnung, Preis etc. Beziehungen wären beispielsweise: 1 Erzeugern produziert einen Artikel, oder Schüler x geht in die Klasse y. Dynamische Eigenschaften (Operationen) wären die Berechnung des Endpreises mit Skonto. Eine Beziehung zwischen Operationen könnte sein, dass ein Artikel erst dann bestellt werden darf, wenn er produziert wurde, oder ein Schüler erst dann in den Aufbaulehrgang kommen darf, wenn er eine Fachschule absolviert hat. Integritätsbedingungen legen zum Beispiel fest, dass ein Artikel eine eindeutige Nummer aufweisen muss (Schlüsselbedingung) und dass es zu jedem Artikel einen Erzeuger geben muss (referentielle Integrität). Im Relationenmodell sind sie Daten in ungeschachtelten Tabellen gespeichert (SQLDatenbanken), die Beziehungen werden durch Wertevergleich ausgedrückt. Eine Erweiterung dieses Modells ist das Modell der geschachtelteten oder Non-First-Normal-Form (N F 2 ), in der Attribute Relationen als Werte haben dürfen, sonst dürfen nur einfache Strings (keine Arrays, . . . ) gespeichert werden. Als Vorstufe des Relationenmodells wird das Entity-Relationship-Modell angesehen, das eine abstrakte Sicht auf die Daten liefert und für einen Entwurf einer Datenbank unerläßlich ist. Hier werden die Daten mit ihren Attributen und Beziehungen grafisch dargestellt. 19 4 Entity-Relationship-Modell 4.2 Grundlagen des Entity-Relationship-Modells (ER-Modell) Das ER-Modell geht zurück auf eine Arbeit von P. P. Chen im Jahre 1976 und ist heute faktisch Standard bei der Datenbankentwicklung. Zum ER-Modell gehört eine grafische Notation (ER-Diagramm oder ERD , die die Datenbank mit ihren Daten und Beziehungen abstrakt darstellt. Zum ER-Modell gehören drei Begriffe: 1. Entity: ein Objekt aus der reellen Welt (Artikel, Kunden, Lieferanten,. . . ). 2. Relationship: gibt die Beziehung zwischen den Entities wider (Lieferant produziert Artikel, Kunde kauft Artikel,. . . ) 3. Attribut: entspricht einer Eigenschaft von Entities oder auch Beziehungen (Farbe eines Weines, Bezeichnung eines Artikels, Name von Kunden,. . . ). Um diese Attribute speichern zu können, sind entsprechende Datentypen notwendig (integer für ganze Zahlen, date für Datumswerte, char für Strings, . . . ) Entity-Typen Entities sind Einheiten, in denen Objekte mit gleichen Eigenschaften gespeichert werden. Die einzelnen Zeilen (Tupel) werden nicht als eigene Einheit gespeichert, sondern werden beispielsweise alle Artikel, die eine Nummer, eine Bezeichnung und einen Preis aufweisen in einem Entity-Typ Artikel gespeichert. In der grafischen Notation werden diese Entity-Typen als Rechteck (bei Oracle mit gerundeten Ecken) dargestellt und der Name des Typs im Rechteck eingetragen. (a) klassische Darstellung (b) Darstellung Oracle Artikel Artikel Abbildung 4.1: Grafische Darstellung eines Entity-Typs Beziehungstypen Beziehungen zwischen Entities werden nicht für jede Ausprägung modelliert, sondern zu Beziehungstypen zusammengefasst, also nicht, dass Artikel Feinkristallzucker von der Firma Agrana stammt, sondern dass ein Artikel von einem Produzenten erzeugt wird. Beziehungstypen werden als Raute dargestellt. Die Beziehungen können Zweistellig (binär) oder n-stellig sein: 20 4.2 Grundlagen des Entity-Relationship-Modells (ER-Modell) (a) binärer Beziehungstyp Artikel produziert Produzent Kritiker empfiehlt Wein Speise (b) n-stelliger Beziehungstyp Abbildung 4.2: Grafische Darstellung von Beziehungstypen Attribute modellieren Eigenschaften von Entities oder Beziehungen, alle Entities eines Typs haben die selben Arten von Eigenschaften. Attribute werden als Oval dargestellt und einem Entity-Typ zugeordnet. Preis Nummer Artikel Bezeichnung Abbildung 4.3: Attributnotation eines Entity-Typs Neben Entities können auch Beziehungen Attribute aufweisen. Anteil Wein hergestellt aus Rebsorte Abbildung 4.4: Attributnotation für Beziehungen 21 4 Entity-Relationship-Modell In dieser Abbildung ist die Beziehung zweier Tabellen (Entities) dargestellt, das Attribut Anteil ist weder der Entity Wein noch der Entity Rebsorte zugeordnet. Identifizierung durch Schlüssel Für jede Entity gibt es den Effekt, dass einige Attribute mit ihren Werten für eine eindeutige Identifizierung der Entity sorgen. Ein Wein kann zum Beispiel durch die Kombination aus Namen, Jahrgang und Weingut identifiziert werden, ein Mitarbeiter in einer Firma durch seine Sozialversicherungsnummer oder ein Buch durch seine ISBNNummer. Diese Attribute werden Schlüsselattribute genannt. Oft tritt der Fall ein, dass es mehrere Kandidaten gibt – ein Wein kann durch die Kombination aus Namen, Jahrgang und Weingut, aber auch durch ein künstliches Merkmal (interne Nummer) eindeutig gekennzeichnet werden. Aus diesen Kandidaten wird einer gewählt, dieser wird dann der sog. Primärschlüssel . 4.3 Eigenschaften von Beziehungen Beziehungen lassen sich durch zwei Eigenschaften charakterisieren: • die Stelligkeit gibt an, wie viele Entities an einer Beziehung beteiligt sind • die Kardinalität gibt an, wie viele Instanzen eines Entity-Typs an einer Beziehung beteiligt sind. 4.3.1 Stelligkeit Sie beschreibt die Anzahl der beteiligten Entities. Die Mehrzahl der Beziehungen ist zweistellig (binär), es gibt aber auch ternäre (dreistellige) und n-stellige Beziehungen. Dazu folgendes Beispiel: (a) ternärer Beziehungstyp Wein empfiehlt Speise Kritiker (b) Drei binäre Beziehungstypen Kritiker K-S K-W Speise Wein S-W Abbildung 4.5: Beziehungstypen im ER-Modell 22 4.3 Eigenschaften von Beziehungen Es ist aber nicht immer möglich, eine n-stellige Beziehung in mehrere binäre aufzuteilen. Angenommen der Kritiker Huber empfiehlt zur Speise Schnitzel den Wein Grüner Veltliner und zum Henderl einen Eiswein, so entstehen folgende binäre Beziehungen: • Huber – Schnitzel • Huber – Henderl • Schnitzel – Veltliner • Henderl – Eiswein Es geht aber Information verloren, dass Huber nur zum Schnitzel einen Veltliner empfiehlt (Verlustlosigkeit ). 4.3.2 Kardinalität – Konnektivität Neben der Anzahl der Entitäten ist auch die Anzahl der Instanzen entscheidend. So kann für die hergestellt-aus-Beziehung festgelegt werden, dass ein Wein aus mindestens einer Rebsorte hergestellt werden muss, oder auf der Rechnung eines Kunden mehrere Artikel enthalten sein dürfen, oder zu einem Mitarbeiter nur ein Foto gespeichert werden darf. Solche Kriterien werden als Kardinalität bezeichnet. Es gibt 3 Formen: • 1 : 1-Beziehung: ein Mitarbeiter hat nur ein Foto, ein bestimmtes Foto gehört nur zu einem Kunden. • 1 : N -Beziehung: eine Mutter kann mehrere Kinder haben, ein Kind hat jedoch nur eine (biologische) Mutter. • M : N -Beziehung: ein Autor kann mehrere Bücher schreiben, an einem Buch können mehrere Autoren beteiligt sein. Achtung!! Es kommt auf die richtige Fragestellung an. Eine falsche und für die Sache nicht logische Fragestellung wäre: Mehrere Autoren schreiben mehrere Bücher Denn dieser Satz sagt nichts darüber aus, wie viele Bücher ein einzelner Autor schreibt, bzw. wie viele Autoren an einem bestimmten Buch schreiben. Notationen Für Kardinalitäten gibt es unterschiedliche Methoden der Darstellung. 23 4 Entity-Relationship-Modell Autor [0, ∗] [1, 1] schreibt Buch (a) [min, max]-Notation bei 1 : N Autor 1 N schreibt Buch (b) Chen-Notation schreibt Autor Buch (c) Krähenfuß-Notation Abbildung 4.6: Notationen für Kardinalitäten Von der Kardinalität wird oft die Konnektivität unterschieden, die die tatsächliche Anzahl der beteiligten Entities angibt. Dies ist im ER-Modell insofern wichtig, da daraus Informationen für Applikationen und Programme gewonnen werden. In einer Datenbank ist es unmöglich, Konnektivität darzustellen, außer es werden sog. Trigger eingesetzt. Beispiele für Konnektivität sind: In einer Firma betreut 1 Berater mindestens 1, maximal aber 3 Kunden, 1 Kunde wird von mindestens 1 Berater, maximal aber von 3 beraten. Die Kardinalität ist hier M : N , die Konnektivität ist (1,5), bzw. (1,3) – je nach Seite. Üblicherweise wird nur im Chen-Modell die Konnektivität angegeben, und zwar in runden Klammern. M : N -Beziehungen sind in relationalen Datenbanken nicht abbildbar, daher müssen diese in 1 : N -Beziehungen überführt werden. schreibt Autor Autor 1 N schreibt Buch N 1 Buch Abbildung 4.7: Abbildung M : N -Beziehung 24 4.3 Eigenschaften von Beziehungen 4.3.3 Stärke der Beziehung Von einer schwachen Beziehung spricht man, wenn zwei Entitäten voneinander unabhängig existieren können. Umgekehrt wird von einer starken Beziehung gesprochen, wenn zwei Entitäten voneinander abhängig sind. Beispiel für eine schwache Beziehung – unterstrichene Wörter markieren Primärschlüssel: KUNDENKATEGORIE (KATEG ID, Bez) KUNDE (KUND ID, KATEG ID, NAME, ADRESSE) In der Tabelle KUNDE existiert ein Fremdschlüssel (KATEG ID), dieser ist jedoch nicht Teil des Primärschlüssels, daher ist die Beziehung schwach. Beispiel für eine starke Beziehung – unterstrichene Wörter markieren Primärschlüssel: RECHNUNG (RECHNUNG ID, DATUM, KUNDE ID) RECHNUNGPOSTEN (POS ID, RECHNUNG ID, ARTIKEL, ANZAHL, PREIS) In der Tabelle RECHNUNGPOSTEN existiert ein Fremdschlüssel (RECHNUNG ID), der zusätzlich Teil des Primärschlüssels ist. Daher liegt hier eine starke Beziehung vor. Starke Beziehungen werden im Krähenfuß-Diagramm mit durchgezogenen Linien dargestellt, schwache mit strichlierten Linien. (a) schwache Beziehung (b) starke Beziehung Abbildung 4.8: Notation für Stärke der Beziehung 4.3.4 Optionalität Bei einer optionalen Beziehung ist die minimale Kardinalität 0, bei einer nicht-optionalen mindestens 1. Optionale Beziehungen werden im Krähenfußmodell durch einen kleinen Kreis auf der optionalen Seite gekennzeichnet, nicht-optionale durch einen senkrechten Strich. 25 4 Entity-Relationship-Modell Autor schreibt Buch Abbildung 4.9: (Nicht)optionale Beziehung Ein Autor muß nicht unbedingt ein Buch geschrieben haben, aber ein Buch ist ohne Autor nicht denkbar. 4.3.5 Abhängige Entity-Typen, IST-Beziehung Dieser Spezialfall tritt häufig auf, ein Beispiel ist die Beziehung Wein – Schaumwein. Jeder Wein weist gewisse Eigenschafen auf (Jahrgang, Restsüße, Farbe), ein Spezialwein wie ein Schaumwein weist zusätzliche Eigenschaften (Art der Erzeugung, Gehalt an CO2 , . . . ) auf, die die übrigen Weine nicht besitzen. • Jeder Schaumwein ist ein Wein, aber • nicht jeder Wein ist ein Schaumwein Die Attribute von Wein werden aber zusätzlich an Schaumwein vererbt (und nicht umgekehrt). 26 4.3 Eigenschaften von Beziehungen Zusammenfassend eine Übersicht der Begriffe: Begriff Bedeutung Entity Objekt der Realität (Zinfandel, Jahrgang 2004, Alkohol 12%) Entity-Typ Gruppierung von Entities mit gleichen Eigenschaften (Weine) Beziehungstyp Gruppierung von Beziehungen zwischen Entities (Produzent erzeugt Wein) Attribut Eigenschaft einer Entity oder Beziehung (Name, Jahrgang, . . . ) Schlüssel identifizierende Eigenschaft (Nummer) Kardinalität wie oft nimmt Entity an Beziehung teil (1 : 1, 1 : N, M : N ) Konnektivität wie viele Entities minimal/maximal beteiligt sind Stärke Entity abhängig (stark)/nicht abhängig (schwach) von anderer Entity Stelligkeit Anzahl der beteiligten Entity-Typen (binär, ternär) abhängige Entities z.B IST-Beziehung Optionalität ein Weinanbaugebiet kann oder muss in einer Region liegen Tabelle 4.1: Begriffe des ER-Modells 27 Teil III SQL-Abfragen 29 Index Symbols 1:1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1:N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 A ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Applikationsserver . . . . . . . . . . . . . . . . . 12 atomar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Attribut . . . . . . . . . . . . . . . . . . . . . . . . 11, 20 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . 21 DB, Datenbank . . . . . . . . . . . . . . . . . . . . 10 DB2, Informix . . . . . . . . . . . . . . . . . . . . . 12 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Drei-Ebenen-Architektur . . . . . . . . . . . 12 Dreischichtensysteme . . . . . . . . . . . . . . .12 E Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 f. Entity-Typ . . . . . . . . . . . . . . . . . . . . . . . . .20 ER-Diagramm . . . . . . . . . . . . . . . . . . . . . 20 ER-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 19 externe Ebene. . . . . . . . . . . . . . . . . . . . . .11 B H Baumstruktur . . . . . . . . . . . . . . . . . . . . . . 15 Beziehung 1:1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1:N . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 M:N . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 schwache . . . . . . . . . . . . . . . . . . . . . . 24 starke . . . . . . . . . . . . . . . . . . . . . . . . . 24 Beziehungstypen . . . . . . . . . . . . . . . . . . . 20 C C ++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 C/C ++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Client-Server . . . . . . . . . . . . . . . . . . . . . . . 12 Hierarchische Datenbanken . . . . . . . . . 15 Hierarchisches Modell . . . . . . . . . . . . . . 15 I Informationen . . . . . . . . . . . . . . . . . . . . . . 19 Inkonsistenz . . . . . . . . . . . . . . . . . . . . . . . . . 7 Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Integrität . . . . . . . . . . . . . . . . . . . . . . . . . . 19 interne Ebene . . . . . . . . . . . . . . . . . . . . . . 11 ISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 isoliert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 IST-Beziehung . . . . . . . . . . . . . . . . . . . . . 25 D J Data Dictionary . . . . . . . . . . . . . . . . . . . . . 9 Dateiverwaltungssystem . . . . . . . . . . . . . 8 Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Datenbankmanagementsystem . . . 8, 10 Datenbanksystem. . . . . . . . . . . . . . . .8, 10 Datenredundanz . . . . . . . . . . . . . . . . . . . . 7 Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . 20 char . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 date . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 integer, int . . . . . . . . . . . . . . . . . . . . 20 dauerhaft . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . .12, 16 K Kandidaten . . . . . . . . . . . . . . . . . . . . . . . . 22 Kardinalität . . . . . . . . . . . . . . . . . . . . . . . 22 Katalog, Data Dictionary . . . . . . . . . . . 9 Konnektivität . . . . . . . . . . . . . . . . . . . . . . 24 konsistent . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Konsistenz . . . . . . . . . . . . . . . . . . . . . . . . . . 9 konzeptuelle Ebene. . . . . . . . . . . . . . . . .11 31 Index L LINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 M M:N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Microsoft, SQL SERVER. . . . . . . . . . .12 Middleware . . . . . . . . . . . . . . . . . . . . . . . . 13 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 MySQL Query Browser . . . . . . . . . . . . 12 MySQL, SUN . . . . . . . . . . . . . . . . . . . . . . 12 N Netzwerkmodell . . . . . . . . . . . . . . . . . . . . 15 Non-First-Normal-Form, NF2 . . . . . . 19 O Objektorientierte DBS . . . . . . . . . . . . . 16 ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Open Source . . . . . . . . . . . . . . . . . . . . . . . 12 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 P PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . 12 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . 12 Primärschlüssel . . . . . . . . . . . . . . . . . . . . 22 Primary Key . . . . . . . . . . . . . . . . . . . . . . . 22 R Rechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 f. redundant . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 redundant, nicht-redundant . . . . . . . . . 9 referentielle Integrität . . . . . . . . . . . . . . 19 Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Relationale DBS . . . . . . . . . . . . . . . . . . . 16 Relationenmodell . . . . . . . . . . . . 8, 11, 19 Relationenschema . . . . . . . . . . . . . . . . . . 11 Relationship . . . . . . . . . . . . . . . . . . . . . . . 20 S Schlüssel, Schlüsselbedingung . . . . . . 19 32 Sichten, views . . . . . . . . . . . . . . . . . . . . . . . 9 Smalltalk . . . . . . . . . . . . . . . . . . . . . . . . . . 16 sperren, Sperre . . . . . . . . . . . . . . . . . . . . . . 8 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 SQL Server, Microsoft. . . . . . . . . . . . . .12 Stelligkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 22 T Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . 9 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Tupel . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 20 U UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 V Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . 25 Verlustlosigkeit. . . . . . . . . . . . . . . . . . . . .23 Z Zweischichtensystem . . . . . . . . . . . . . . . 12