Informatik & Praxis. Edwin Schicker Datenbanken und SQL

Informatik & Praxis Edwin Schicker Datenbanken und SQL Informatik & Praxis Herausgegeben von Prof. Dr. Helmut Eirund, Fachhochschule Harz Prof. Dr. ...
1 downloads 2 Views 715KB Size
Informatik & Praxis Edwin Schicker Datenbanken und SQL

Informatik & Praxis Herausgegeben von Prof. Dr. Helmut Eirund, Fachhochschule Harz Prof. Dr. Herbert Kopp, Fachhochschule Regensburg Prof. Dr. Axel Viereck, Hochschule Bremen

Anwendungsorientiertes Informatik-Wissen ist heute in vielen Arbeitszusammenhängen nötig, um in konkreten Problemstellungen Lösungsansätze erarbeiten und umsetzen zu können. In den Ausbildungsgängen an Universitäten und vor allem an Fachhochschulen wurde dieser Entwicklung durch eine Integration von Informatik-Inhalten in sozial-, wirtschafts- und ingenieurwissenschaftliche Studiengänge und durch Bildung neuer Studiengänge - z. B. Wirtschaftsinformatik, Ingenieurinformatik oder Medieninformatik - Rechnung getragen. Die Bände der Reihe wenden sich insbesondere an die Studierenden in diesen Studiengängen, aber auch an Studierende der Informatik, und stellen Informatik-Themen didaktisch durchdacht, anschaulich und ohne zu großen "Theorie-Ballast" vor. Die Bände der Reihe richten sich aber gleichermaßen an den Praktiker im Betrieb und sollen ihn in die Lage versetzen, sich selbständig in ein in seinem Arbeitszusammenhang relevantes Informatik-Thema einzuarbeiten, grundlegende Konzepte zu verstehen, geeignete Methoden anzuwenden und Werkzeuge einzusetzen, um eine seiner Problemstellung angemessene Lösung zu erreichen.

Datenb·anken und SQL Eine praxisorientierte Einführung Von Prof. Dr. Edwin Schicker Fachhochschule Regensburg

m

B. G. Teubner Stuttgart 1996

Prof. Dr. Edwin Schicker Geboren 1954 in Thanhausen (Ostbayern). Von 1972 bis 1973 Studium der Elektrotechnik an der Fachhochschule Regensburg, von 1973 bis 1979 Mathematikstudium mit Nebenfach Informatik an der Technischen Universität Berlin. 1984 Promotion zum Dr. rer. nato an der Universität Karlsruhe über "Apriori-Abschätzungen zu partiellen Differentialgleichungen vom gemischten Typ". Von 1985 bis 1990 Mitarbeiter bei der Siemens AG in München-Perlach in der Entwicklung des Betriebssystems BS2000. Seit 1990 Professor für Informatik am Fachbereich Informatik und Mathematik der Fachhochschule Regensburg.

Die Deutsche Bibliothek - CIP-Einheitsaufnahme

Schicker, Edwin: Datenbanken und SOL: eine praxisorientierte Einführung / von Edwin Schicker. - Stuttgart : Teubner, 1996 (Informatik & Praxis) ISBN 978-3-519-02991-5 ISBN 978-3-322-94772-7 (eBook) DOI 10.1007/978-3-322-94772-7 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt besonders für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen © B. G. Teubner Stuttgart 1996

Vorwort Datenbanken entstanden ab etwa 1960 aus der Notwendigkeit, die logischen Zugriffe auf die immer größer werdenden Datenmengen zu vereinfachen und zu normieren. Wurden diese Datenbanken über mehr als zwei Jahrzehnte hinweg ausschließlich auf Großrechnern eingesetzt, so haben sie inzwischen ihren Siegeszug auch auf Kleinrechnern angetreten. Ermöglicht wurde dies aus dreierlei Gründen: erstens durch die enorm gestiegene Rechnerleistung der letzten Jahre, zweitens durch die Verwendung relationaler Datenbanken und drittens durch die Einführung grafischer Oberflächen. Die Anfang der 70er Jahre entwickelten relationalen Datenbanken ermöglichen eine einfache Erstellung und Programmierung. Grafische Oberflächen unterstützen den Anwender und Datenbankdesigner dank einer leichten Benutzerführung und anschaulichen Musterbeispielen, so daß auch dem interessierten Laien diese Form der Datenhaltung mit all ihren Möglichkeiten offen steht. Der Laie sei aber davor gewarnt, größere Datenbanken ohne theoretische Grundkenntnisse selbst zu erstellen. Denn hier leitet sich der Datenbankentwurf in der Regel nicht mehr direkt aus der AufgabensteIlung ab. Doch nur ein guter Entwurf garantiert übersichtliche und optimale Zugriffe und ermöglicht je nach Bedarf Ergänzungen und Erweiterungen der Datenbank. Auch wird nur dadurch die Konsistenz und Integrität der Datenbank ermöglicht, so daß fehlerhafte, widersprüchliche und nicht mehr zugreifbare Datenbestände verhindert werden. Grundlagen zu Datenbankentwurf und -programmierung sollten für den Datenbankprogrammierer daher selbstverständlich sein. Dieses Buch entstand aus mehreren Vorlesungen zu Datenbanken, die ich an der Fachhochschule Regensburg für Informatiker gelesen habe. Doch ich will auch den Nicht-Informatiker und interessierten Laien gezielt ansprechen. Dazu wird mit zahlreichen Beispielen die Theorie direkt in die Praxis umgesetzt. Regelmäßige Zusammenfassungen erleichtern die Wiederholung und Reflektion des behandelten Stoffes. Als Lernzielkontrolle dienen dem Autodidakten die zahlreichen Aufgaben und deren Lösungen. Der Praxisbezug wird unterstützt durch eine im Buch regelmäßig verwendete Beispieldatenbank, die im Anhang ausführlich vorgestellt wird.

6

Vorwort

Dieses Buch wendet sich vor allem an Anwendungsprogrammierer, die mit Hilfe von SQL auf Datenbanken zugreifen, und an alle, die Datenbanken neu entwerfen, erweitern oder abändern wollen. Da viele Kapitel voneinander unabhängig sind, ist es aber auch als Nachschlagewerk empfehlenswert. Mittels der hier vermittelten Kenntnisse ist es relativ leicht, sich auch in die Datenbankprogrammierung mit grafischen Oberflächen einzuarbeiten. Ganz grob läßt sich dieses Buch in vier Teile gliedern. Die Kapitel 1 und 2 geben einen Überblick und können bei Vorkenntnissen zur Datenorganisation und Datenbanken ohne weiteres übersprungen werden. Die Kapitel 3 und 5 beschäftigen sich intensiv mit dem Aufbau und dem Design von relationalen Datenbanken. Dieser Stoff wird durch die in den Kapiteln 4, 6 und 10 behandelte Datenbanksprache SQL noch vertieft. Die Kapitel 8 und 9 stellen Spezialthemen wie Schutz vor Datenverlusten oder unberechtigten Zugriffen, Korrektheit der gespeicherten Daten und Möglichkeiten zum parallelen Datenzugriff vor. Die Kapitel 7 und 11 geben schließlich einen Überblick über nichtrelationale, verteilte und objektorientierte Datenbanken. Im einzelnen gibt das erste Kapitel eine Zusammenfassung über die Datenorganisation. Dieser Überblick ist für das tiefere Verständnis einiger Datenbankkonzepte erforderlich. Er zeigt auch die Abgrenzung zwischen der reinen physischen Speicherung von Daten und dem logischen Datenaufbau in Datenbanken auf. Kapitel 2 bespricht zum einen die Vorzüge von Datenbanken gegenüber selbstverwalteten Datenbeständen, erklärt zum anderen die wichtigsten Datenbankbegriffe und gibt zum dritten einen kleinen Überblick über die Leistungsfähigkeiten und Möglichkeiten von Datenbanken. Als Übersicht zu Datenbanken sei dieses Kapitel verstanden und daher insbesondere auch dem Anfänger empfohlen. Das dritte und fünfte Kapitel sind den relationalen Datenbanken gewidmet. Sie sind die zentralen Kapitel dieses Buches. Hier lernen wir die Methoden zum Aufbau einer relationalen Datenbank im einzelnen kennen. Der Aufbau von Relationen wird erklärt, die bei den Integritätsregeln werden vorgestellt, und die Normalformen von Relationen und das Entity-Relationship-Modell als Werkzeug zum Design von Datenbanken werden ausführlich behandelt. Begleitend und praxisorientiert führen die Kapitel 4, 6 und 10 in die Sprache SQL (insbesondere SQL-2) ein, wobei anhand von Beispielen der Stoff der Kapitel 3 und 5 noch vertieft wird. In Kapitel 4 lernen wir die Zugriffsmöglichkeiten auf Datenbanken mittels SQL genau kennen. In Kapitel 6 deklarieren wir Datenbanken mittels SQL. In Kapitel 10 betten wir schließlich

Vorwort

7

die Sprache SQL in die Programmiersprache C ein, um auch umfangreichere Programme zu erstellen. Da die einzelnen Hersteller von der SQL-Norm geringfügig abweichen, wird auf entsprechende Unterschiede in Oracle und dBase regelmäßig hingewiesen. Viele ältere Datenbanken sind nicht-relational aufgebaut. So führt das siebte Kapitel auch in deren Organisation ein. In einem groben Überblick werden die hierarchischen und netzwerkartigen Datenbanken vorgestellt und anhand der Datenbanken IMS und UDS etwas näher beleuchtet. Weiter sei auf die in der Praxis sehr wichtigen Kapitel 8 und 9 verwiesen. Die hier behandelten Themen sind nacheinander Recovery, Concurrency, Sicherheit und Integrität. Es werden ausführlich die erforderlichen Maßnahmen beschrieben, um einem Rechnerausfall mit Gelassenheit entgegenzusehen, um Parallelzugriffe ohne Beeinträchtigung zuzulassen, um für Sicherheit auch im Netzbetrieb zu sorgen und die Integrität der Daten schon beim Deklarieren der Datenbank so weit wie möglich zu garantieren. Zuletzt zeigt Kapitel 11 im Überblick, welche Grundregeln verteilte Datenbanken erfüllen müssen, und wie sich ein objektorientierter von einem relationalen Datenbankaufbau unterscheidet. Am Ende der meisten Kapitel finden wir eine Zusammenfassung und Übungsaufgaben. Lösungen zu den Aufgaben sind in Anhang C aufgeführt. Anhang A enthält eine Beispieldatenbank, genannt Radi, auf die im Buch regelmäßig Bezug genommen wird. An diesem nicht trivialen Beispiel wird eindrucksvoll das Arbeiten mit einer Datenbank aufgezeigt. Programme zum automatischen Erstellen dieser Datenbank können über das Internet kostenlos bezogen werden. Hinweise hierzu finden wir im Anhang D. Anhang B rundet schließlich das Buch mit der Angabe der Syntax der im Buch verwendeten SQL-Befehle ab. Mein besonderer Dank gilt Herrn Holderried, der mir bei der Erstellung der ersten maschinengeschriebenen Form behilflich war und damit den Stein ins Rollen brachte, Frau Hörbrand mit der Ausarbeitung der Beispieldatenbank Radi und insbesondere meiner Frau Ingrid und meinen Töchtern Kerstin und Sabine, deren Rücksicht und Verständnis dieses Buch erst ermöglichten. Regensburg, im Mai 1996

Inhaltsverzeichnis

1 1.1

1.2 1.3 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5

1.5 1.6 1.7 1.8 1.9

Datenorganisation Überblick . . . . . . Speicherung von Daten . . . . . . . . . . . Speicherung auf adressierbarem Speicher. Direktadressierung . . . . . . . . . . . . . Geordnete Speicherung mit Suchschlüssel Einstufige physische Datenstrukturen . Listen auf sequentiellem Speicher . . . .. Tabellen auf adressierbarem Speicher. . . Geordnete Listen auf adressierbarem Speicher Geordnete verkettete Listen Zusammenfassung . . . . . . Mehrstufige Datenstrukturen . Index Sequentielle Dateien. . Hash-Verfahren . . . . . . . . Primär- und Sekundärschlüssel Übungsaufgaben . . . . . . . .

Übersicht über Datenbanken Definition einer Datenbank .. 2.2 Anforderungen an eine Datenbank 2.3 Der Datenbank-Administrator 2.4 Datenbankmodelle . . . . . . . . . 2.4.1 Relationale Datenbanken . . . . . . 2.4.2 Hierarchische und netzwerkartige Datenbanken 2.5 Transaktionen . . . . . . 2.6 Übungsaufgaben .. . . . . . . . . . 2 2.1

3 3.1

3.2

3.3

Das Relationenmodell Beispiel zu relationalen Datenbanken Relationale Datenstrukturen Relationale Integritätsregeln . . . . .

13 13 16 18 18

19 21 21

22 23 23 24 25

28

35 39 42

44 44 50 55

56 57 57 59 61

63 64

65

72

10

Inhaltsverzeichnis

3.3.1 3.3.2 3.4 3.4.1 3.4.2 3.5 3.6

Entitäts-Integritätsregel Referenz-Integritätsregel . Relationale Algebra '" Relationale Operatoren . . Eigenschaften der relationalen Operatoren Zusammenfassung . . . . . . . . . . . Übungsaufgaben . . . . . . . . . . . .

74 76 81 82 86

4

Die Datenbankzugriffssprache SQL Der Abfragebefehl Select . . . Der Aufbau des Select-Befehls Die Select- und From-Klausel . Die Where-Klausel . . . . . . . Die Group-By- und Having-Klausel . Union, Except und Intersect Die Order-By-Klausel . . . . Manipulationsbefehle in SQL Relationale Algebra und SQL Zusammenfassung ..... . Übungsaufgaben

90

4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.2 4.3 4.4 4.5

5 5.1 5.1.1 5.1.2 5.1.3

5.2

5.2.1 5.2.2 5.3 5.4 6

6.1 6.2 6.3 6.4

6.5 6.6 6.7 6.8

87

88 91 93 95

99 107 108

111 112 115 116 117

Datenbankdesign Normalformen . . . . . . . . . Funktionale Abhängigkeit . . . Zweite und dritte Normalform Weitere Normalformen . . . Entity-Relationshi p-Modell Entitäten . . . . . . Beziehungen . . , Zusammenfassung Übungsaufgaben

119 120 121

Die Datenbankbeschreibungssprache SQL Relationen erzeugen, ändern und löschen . Erzeugen und Entfernen eines Index Sichten (Views) . . . . . . . . . . . . Kataloge und Schemata . . . . . . . Besonderheiten in dBase und Oracle Systemtabellen in SQL, dBase und Oracle Zusammenfassung Übungsaufgaben . . . . . . . . . . . . . .

148

123 129 133 133

137 145

147 149 155 156 160 163 165

167 168

Inhaltsverzeichnis

11

7 7.1 7.2 7.3 7.4 7.5 7.6

Nicht-Relationale Datenbanken Invertierte Listen . . . . . . Hierarchische Datenbanken Hierarchisches System IMS Netzwerkartige Systeme .. CODASYL Datenbank UDS . Übungsaufgaben . . . . . . .

169

8 8.1 8.1.1 8.1.2 8.2 8.3

Concurrency und Recovery Recovery . . . . . . . . . . Recovery und Logdatei . . . Recovery und Checkpoints . Zwei-Phasen-Commit Concurrency. . . . Sperrmechanismen . . Deadlocks . . . . . . . Sperren in SQL-2, dBase und Orac1e Zusammenfassung . . . . Übungsaufgaben . . . . . . . . . . .

195

8.4 8.5 8.6

8.7 8.8

170 171 176 183 188 193 196 199 204 207 210 214 219 221 223 224

Sicherheit und Integrität 9.1 Sicherheit . . . . . . . . . 9.1.1 Der Grant- und Revoke-Befehl 9.1.2 Zugriffsrecht und Sichten . . . Integrität. . . . . . . . . . . . . 9.2 Ergänzungen zum Relationenmodell 9.3 9.4 Zusammenfassung . 9.5 Übungsaufgaben . . . . . . . . . . .

226

10

246

9

10.1 10.2 10.3

10.4 10.5

10.6 10.7

Eingebettetes SQL Einbettung von SQL in C . . . . . . . . . . Programmieren in C mit eingebettetem SQL Transaktionsbetrieb mit eingebettetem SQL SQL-Cursor . . . . . . . . Besonderheiten in dBase . Zusammenfassung ... . Übungsaufgaben . . . . .

11 Überblick zu weiteren Themen 11.1 Verteilte Datenbanken . . . . . . 11.1.1 Vorteile der verteilten Datenhaltung

226 228 232 234 242 244 244 246 247 254 255 258 259 260

262 262 263

12

Inhaltsverzeichnis

11.1.2 Die zwölf Regeln zur verteilten Datenhaltung 11.1.3 Probleme verteilter Datenbanken 11.1.4 Zusammenfassung .. . . . . . . . . . . . 11.2 Objektorientierte Datenbanken . . . . . . 11.2.1 Definition objektorientierter Datenbanken 11.2.2 Erweiterung relationaler Datenbanken 11.2.3 Objektorientierte Ansätze 11.2.4 Zusammenfassung . . . . . . . . . 11.3 Übungsaufgaben . . . . . . . . . .

264 268 271 272 272 275 277

279 279

Anhang A Die Beispieldatenbank RadI Al Die Idee der RadI-Datenbank . . . . . . . . . . . A2 Entity-Relationship-Modell der RadI-Datenbank. A3 Die Basisrelationen der RadI-Datenbank A4 Deklaration der RadI-Datenbank A5 Zugriffe auf die RadI-Datenbank

280

Anhang B SQL-Syntaxdiagramme

302

Anhang C Lösungen zu den Übungsaufgaben

311

Anhang D Hinweise zu den Begleitprogrammen

325

281 282 284

290 293

Literaturhinweis

326

Sachverzeichnis

328