Thomas Studer Relationale Datenbanken Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL 2. Auflage Relationale Datenbanken Thomas Studer Relationale Datenbanken Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL 2., überarbeitete und erweiterte Auflage ThomasStuder UniversitätBern Bern,Schweiz ISBN978-3-662-58975-5 ISBN978-3-662-58976-2(eBook) https://doi.org/10.1007/978-3-662-58976-2 DieDeutscheNationalbibliothekverzeichnetdiesePublikationinderDeutschenNationalbibliografie;detaillierte bibliografischeDatensindimInternetüberhttp://dnb.d-nb.deabrufbar. SpringerVieweg ©Springer-VerlagGmbHDeutschland,einTeilvonSpringerNature2016,2019 DasWerkeinschließlichallerseinerTeileisturheberrechtlichgeschützt.JedeVerwertung,dienichtausdrücklich vomUrheberrechtsgesetzzugelassenist,bedarfdervorherigenZustimmungdesVerlags.Dasgiltinsbesondere fürVervielfältigungen,Bearbeitungen,Übersetzungen,MikroverfilmungenunddieEinspeicherungundVerar- beitunginelektronischenSystemen. DieWiedergabevonallgemeinbeschreibendenBezeichnungen,Marken,Unternehmensnamenetc.indiesem Werkbedeutetnicht,dassdiesefreidurchjedermannbenutztwerdendürfen.DieBerechtigungzurBenutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhaberssindzubeachten. DerVerlag,dieAutorenunddieHerausgebergehendavonaus,dassdieAngabenundInformationenindiesem WerkzumZeitpunktderVeröffentlichungvollständigundkorrektsind.WederderVerlag,nochdieAutorenoder dieHerausgeberübernehmen,ausdrücklichoderimplizit,GewährfürdenInhaltdesWerkes,etwaigeFehler oderÄußerungen.DerVerlagbleibtimHinblickaufgeografischeZuordnungenundGebietsbezeichnungenin veröffentlichtenKartenundInstitutionsadressenneutral. SpringerViewegisteinImprintdereingetragenenGesellschaftSpringer-VerlagGmbH,DEundisteinTeilvon SpringerNature. DieAnschriftderGesellschaftist:HeidelbergerPlatz3,14197Berlin,Germany Vorwort DieautomatischeInformationsverarbeitungentwickeltesichindenletztenJahrzehntenzu einemimmerwichtigerenAspektunsererGesellschaft.InvielenBereichendestäglichen LebensspielendieSpeicherungundderZugriffaufriesigeDatenmengeneinewesentliche Rolle.SomitbenötigenwirverlässlicheTechnologien,umdieVerarbeitungdieserDaten effizientundsicherzugewährleisten. DasrelationaleModellbeschreibteinenklassischenAnsatz,umstrukturierteDatenzu verwaltenunddabeiKonsistenzundTransaktionssicherheitzugarantieren.DiesesModell wurdeinrelationalenDatenbanksystemenvielfachundäussersterfolgreichimplementiert. Ein entsprechend wichtiges Thema sind relationale Datenbanken in der Informatik- ausbildung. Dieses Buch richtet sich an Studierende der Informatik oder Wirtschaftsin- formatik an Universitäten und Fachhochschulen sowie an Software-Entwickler, die mit relationalenDatenbankenarbeiten.EseignetsichzumSelbststudiumoderalsBegleitskript fürKurseundVorlesungen. IndiesemBuchstudierenwirrelationaleDatenbankenausSichtdesAnwendungsent- wicklersundBenutzers.WirgehenimDetailauffolgendeThemenein: 1. Datenbanktheorie, 2. DesignvonDatenbanken, 3. DatenbankspracheSQL, 4. Abfrageoptimierung, 5. Transaktionsverarbeitung. ImtheoretischenTeilgebenwireinepräzisemathematischeBeschreibungdesrelationalen ModellsanundführendierelationaleAlgebraalsformaleAbfragespracheein.Ausserdem studieren wir, wie ein gegebenes Datenbankschema in die dritte Normalform und in die Boyce–Codd Normalform zerlegt werden kann. Meistens verzichten wir aber darauf, die angegebenen Eigenschaften zu beweisen. Dafür enthält das Buch eine Vielzahl von ausführlichenBeispielen,welchedietheoretischenBegriffepraxisnahillustrieren. Der praktische Teil bietet eine Einführung in SQL als Query-Sprache aber auch als Sprache zur Datendefinition und -manipulation. Weiter zeigen wir an konkreten Beispielen,waseingutesDatenbankdesignausmacht.EbensobehandelnwirdieThemen V VI Vorwort AbfrageoptimierungundTransaktionsverarbeitung.FürallepraktischenAspektebeziehen wir uns auf die Open-Source-Datenbank PostgreSQL, wobei wir auch aktuelle Entwick- lungen, wie beispielsweise Serializable Snapshot Isolation, behandeln. PostgreSQL und eineausführlicheDokumentiondazusindverfügbarunter www.postgresql.org ZudiesemBuchgibtesaucheineReihevonBegleitmaterialien,welcheunter db-buch.inf.unibe.ch öffentlichzugänglichsind. Danksagung Dieses Buch wäre nicht möglich gewesen ohne die Hilfe einer Vielzahl von Personen. ZuerstmöchteichmichbeiGerhardJägerbedanken.SeinVorlesungsskriptDatenbanken warmeineInspirationzudiesemBuch. Ein grosses Dankeschön geht an Karin Abegglen, Dominik Feller, Anna Kaeser und Johannes Werner. Sie haben eine frühe Version dieses Buches sorgfältig gelesen und vieleFehlerundUnstimmigkeitenkorrigiert.IchmöchtemichauchbeidenStudentinnen und Studenten meiner Datenbank-Vorlesung des Frühlingssemesters 2015 bedanken. Insbesondere Eveline Lehmann, Laurent Schwander, Mathias Stocker und Antonio Tuor habenmichaufverschiedeneFehleraufmerksamgemachtundThemenangeregt,dieich nunimBuchbehandle.UndnocheinMercianJasminfürdenSchlusssatz. Dank auch an alle Mitarbeiterinnen und Mitarbeiter des Springer Verlags, welche die Produktion dieses Buches ermöglicht haben. Speziell erwähnen möchte ich dabei HermannEngesser,DorotheaGlaunsingerundLisaNienhaus. Bern,Schweiz ThomasStuder August2015 Vorwort zur zweiten Auflage Dies ist die zweite, erweiterte und überarbeitete Auflage dieses Buches. Die wichtigsten UnterschiedezurerstenAuflagesind: 1. Diese Auflage enthält zwei neue Kapitel zu den Themen Rollen und Berechtigungen sowieSicherheitsrichtlinienaufZeilenebene. 2. AllepraktischenBeispieleundErklärungenbeziehensichaufdieaktuellePostgreSQL Version11.1. DanebengibtesnatürlichnochvieleweiterekleineÄnderungen.ZumBeispielwirdeine neueDefinitionderUmbenennungsfunktioninderrelationalenAlgebraverwendet. Danksagung EshabenvielePersonenmitgeholfen,diesezweite,erweiterteAuflagezuerstellen.Zuerst möchteichmichbeiNathalieFroidevauxbedanken.SiehatgrosseTeilederbeidenneuen Kapitelgeschrieben. Danke an Kai Brünnler. Er hat die neue Definition der Umbenennungsfunktion angeregt. Danke an Eveline Lehmann für das neue Beispiel zu 1:1-Beziehungen. Danke anSamuelBuchelifürseineBemerkungenzuIndizesundfürdasHaltenderDatenbank- vorlesung. DankeauchanSybilleThelenvomSpringerVerlag.SiehatdieProduktionderzweiten Auflagetatkräftigunterstützt. Bern,Schweiz ThomasStuder Februar2019 VII Inhaltsverzeichnis 1 Mengenlehre ....................................................................... 1 1.1 ObjekteundMengen........................................................ 1 1.2 OperationenaufMengen.................................................... 5 1.3 Relationen ................................................................... 6 WeiterführendeLiteratur ........................................................... 9 2 DasRelationenmodell............................................................. 11 2.1 StrukturrelationalerDatenbanken.......................................... 11 2.2 Schlüssel..................................................................... 14 2.3 Integritätsbedingungen...................................................... 18 WeiterführendeLiteratur ........................................................... 23 3 DiagrammeundModellierung................................................... 25 3.1 Diagrammefürm:1-Beziehungen.......................................... 26 3.2 Diagrammefürm:n-Beziehungen.......................................... 28 3.3 Diagrammefür1:1-Beziehungen........................................... 31 3.4 ModellierungkomplexerSysteme.......................................... 37 WeiterführendeLiteratur ........................................................... 42 4 DierelationaleAlgebra ........................................................... 43 4.1 Basisrelationen .............................................................. 43 4.2 Grundoperationen ........................................................... 44 4.3 WeitereOperationen ........................................................ 54 4.4 RelationaleAlgebraalsQuerySprache.................................... 64 4.5 GruppierungundAggregation.............................................. 66 WeiterführendeLiteratur ........................................................... 71 5 SQLAbfragen ..................................................................... 73 5.1 SQLganzkurz............................................................... 73 5.2 EinfacheAbfragen .......................................................... 75 5.3 Subqueries................................................................... 86 IX X Inhaltsverzeichnis 5.4 Joins.......................................................................... 89 5.5 AggregationundGruppierung.............................................. 91 5.6 RangAbfragenundWindowFunktionen.................................. 97 5.7 WITHKlauselnundRekursion ............................................. 103 WeiterführendeLiteratur ........................................................... 104 6 SQLzurDatendefinitionundDatenmanipulation............................. 105 6.1 Datenmanipulation.......................................................... 105 6.2 ErstellenvonTabellen....................................................... 109 6.3 DefaultWerte................................................................ 110 6.4 Constraints................................................................... 111 6.5 Kaskadierung................................................................ 113 6.6 ÄndernvonTabellen........................................................ 119 6.7 Views......................................................................... 121 WeiterführendeLiteratur ........................................................... 124 7 Abfrageoptimierung............................................................... 125 7.1 Indizes ....................................................................... 125 7.2 LogischeOptimierung ...................................................... 131 7.3 PhysischeOptimierung ..................................................... 137 WeiterführendeLiteratur ........................................................... 144 8 Mehrbenutzerbetrieb ............................................................. 145 8.1 Transaktionen................................................................ 145 8.2 PhantomeundInkonsistenzen.............................................. 150 8.3 MultiversionConcurrencyControlArchitektur............................ 153 8.4 ImplementierungderIsolationsgrade ...................................... 156 WeiterführendeLiteratur ........................................................... 163 9 Normalformen ..................................................................... 165 9.1 Anomalien................................................................... 165 9.2 FunktionaleAbhängigkeiten................................................ 167 9.3 ZerlegungvonRelationenschemata ........................................ 171 9.4 1NFbisBCNF............................................................... 177 WeiterführendeLiteratur ........................................................... 188 10 BerechnungvonNormalformen ................................................. 189 10.1 Armstrong-Kalkül........................................................... 189 10.2 Hüllenberechnungen ........................................................ 192 10.3 MinimaleÜberdeckungen .................................................. 194 10.4 ZerlegungeninBCNFund3NF............................................ 198 WeiterführendeLiteratur ........................................................... 203 Inhaltsverzeichnis XI 11 RollenundBerechtigungen....................................................... 205 11.1 Datenbank-Rollenund-Objekte............................................ 205 11.2 Zugriffsberechtigungen ..................................................... 221 WeiterführendeLiteratur ........................................................... 233 12 ZugriffsberechtigungenundSicherheitsrichtlinienaufZeilenebene ........ 235 12.1 Zeilenschutz ................................................................. 235 12.2 Sicherheitsrichtlinien........................................................ 240 12.3 VererbungvonZugriffsberechtigungenaufZeilenebene.................. 249 12.4 Zeilenzugriffebei“Referentialintegritychecks”.......................... 252 12.5 USINGvs.WITH CHECK.................................................. 259 12.6 PERMISSIVEvs.RESTRICTIVE........................................ 270 WeiterführendeLiteratur ........................................................... 274 Stichwortverzeichnis.................................................................... 275