Title | Datenbanken - Wintersemester |
---|---|
Course | Grundlagen Datenbanken (IN0008) |
Institution | Technische Universität München |
Pages | 49 |
File Size | 4.4 MB |
File Type | |
Total Downloads | 84 |
Total Views | 207 |
1 Konzeptuelle Modellierung Datenbankentwurf Abstraktionen des Datenbankentwurfs Konzeptuelle Ebene Implementationsebene Physische Ebene Phasen Anforderungsanalyse Identifikation von Organisationseinheiten Identifikation der zu Aufgaben Filterung Satzklassifikationen Formalisierung Entity (Gegenstan...
1 Konzeptuelle Modellierung Datenbankentwurf Abstraktionen des Datenbankentwurfs - Konzeptuelle Ebene - Implementationsebene - Physische Ebene Phasen
Anforderungsanalyse Identifikation von Organisationseinheiten Identifikation der zu unterstützenden Aufgaben Anforderungs-Sammelplan Anforderungs-Sammlung Filterung Satzklassifikationen Formalisierung Entity/Relationship-Modellierung Entity (Gegenstandstyp) Relationship (Beziehungstyp) Attribut (Eigenschaft) Schlüssel (Identifikation) Rolle
Funktionalitäten
2
Bei n-stelligen Beziehungen:
Beispiel-Beziehung: betreuen
betreuen: Professoren x Studenten Seminarthemen Student darf bei selbem Professor nur ein Seminarthema ableisten betreuen: Seminarthemen x Studenten Professoren Studenten dürfen dasselbe Thema nur einmal bearbeiten Möglich: Professoren können dasselbe Thema an mehrere Studenten verteilen; Thema kann von mehreren Professoren vergeben werden (an unterschiedliche Studenten)
(min, max)-Notation
3
Beispiel: Universitätsschema
Schwache, existenzabhängige Entities
Beziehung zwischen stark und schwach immer 1:N (selten: 1:1) Schlüssel ist PrüfTeil und MatrNr (PrüfTeil alleine bringt nix, keine Zuordnung)
Aggregation
Relationales Datenmodell
4
Grundlagen D 1 , D 2 ,…, D n Domänen (~Wertebereiche) D1 x D2 x … x Dn (Teilmenge des Relation: R ⊆ Kreuzprodukts) Bsp.: Telefonbuch ⊆ string x string x integer Tupel: t ⊆ R Schema: legt Struktur der gespeicherten Daten fest Ausprägung: aktueller Zustand der Datenbasis Schlüssel: minimale Menge von Attribute, deren Werte Tupel eindeutig identifizieren Primärschlüssel (unterstrichen): besondere Bedeutung bei Reformierung von Tupeln
Relationale Darstellung von Entitytypen R: {[SchlüsselE1, SchlüsselE2, …, AttributeR]}
hören: {[MatrNr: integer, VorlNr: integer]} N:M-Beziehung alle Schlüssel lesen: {[PersNr: integer, VorlNr: integer]} 1:N-Beziehung Schlüssel da wo N steht voraussetzen: {[Vorgänger: integer, Nachfolger: integer]} Rollen verwenden prüfen: {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]} Note als Attribut dazufügen Unterscheidung zwischen Schlüssel in Relation Studenten/Vorlesungen und hören Ausprägung der Beziehung hören
Verfeinerung des relationales Schemas
5
Bei 1:N-Beziehung (binäre Beziehung) kann man Relationen mit gleichem Schlüssel zusammenfassen Da wo N steht hinzufügen
Vorlesungen: {[VorlNr, Titel, SWS]} Professoren: {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} Vorlesungen: {[VorlNr, Titel, SWS, gelesenVon]} lesen als Fremdschlüssel in Entity-Relation Professoren Professoren: {[PersNr, Name, Rang, Raum]}
Relationale Mdodellierung schwacher Entitytypen
Prüfungen: {[MatrNr: integer, PrüfTeil:string, Note: integer]} umfassen: {[MatrNr: integer, PrüfTeil:string, VorlN: integer]} abhalten: {[MatrNr: integer, PrüfTeil:string, PersNr: integer]}
Relationale Algebra Selektion Zeile aus Tabelle (mit allen Studenten die mindestens im 10. Semester sind) wird rausgenommen Projektion
Spalte Rang wird aus Tabelle Professoren rausgenommen (gleiche Einträge werden dabei zusammengefasst)
Kartesisches Produkt hören x Vorlesungen Jeder Zeile aus hören mit jeder Zeile aus VL (heißt jeder Student hört jede Vorlesung)
Umbenennung umbenannt
Relation (Tabelle) voraussetzen wird in V2
Attribut (hier Vorgänger) aus Tabelle voraussetzen wird in Voraussetzung umbenannt -
Join Allgemeiner Join
6
Bedingung kann hingeschrieben werden, zB. VL.gelesenVon = Prof.PersNr Natürlicher Join
-
Zwei Tabellen müssen mindestens ein Spaltennamen gemeinsam haben Einträge dieser Spalte die in beiden vorkommen werden genommen und dann die restl. Spalten dieser Zeilen ergänzt
-
Linker äußerer Join
Analog rechter äußerer Join -
Äußerer Join
-
Semi-Join von L mit R:
Analog linker äußerer Join -
Anti-Semi-Join von L mit R:
7
Division
alle/jeder Anderer Ausdruck:
Meist bei Angabe
Mengendurchschnitt R ∩ S Müssen wieder einen Spaltennamen gemeinsam haben Anderer Ausdruck: R ∩ S = R – (R – S)
Gruppierung/ Aggregation Count zählt die Vorlesungen die vom jeweilige Prof gelesen werden, sum summiert die SWS
Relationenkalkül Anfrage hat Form {t | P(t)} mit P(t) Formel Beispiel: Studenten mit mindestens einer VL bei Curie
Allquantor: Wer hat alle vierstündigen VL gehört
Definition Tupelkalkül Atome - s ϵ R mit s Tupelvariable und R Relationenname - s.A ϕ t.B mit s und t Tupelvariablen, A und B Attributnamen und ϕ Vergleichsoperator (=, ≤ , …) - s.A ϕ c mit c Konstante Formeln - Alle Atome sind Formeln - Ist P Formel, so auch ¬ P und (P) - Sind P1 und P1 Formeln, so auch P1 ∧ P2, P1 ∨ P2 und P1 P2 - Ist P(t) Formel mit freier Variable t, so auch ∀ t ϵ R(P(t)) und ∃ t ϵ R(P(t))
8
Sicherheit Einschränkung auf Anfrage mit endlichem Ergebnis Bedingung: Ergebnis des Ausdrucks muss Teilmenge der Domäne der Formel sein - Domäne einer Formel enthält: Alle in Formel vorkommenden Konstanten und alle Attributwerte von Relationen, die in Formel referenziert werden
-
Domänenkalkül Ausdruck hat Form {[v1, v2,…vn] | P(v1,…vn)} mit v1,…vn Domänenvariablen und P Formel Beispiel: MatrNr und Namen der Prüflinge von Curie -
Sicherheit Analog zum Tupelkalkül Ausdruck ist sicher wenn Ergebnis endlich ist UND in endlicher Zeit erreichbar
Relationale Anfragesprache SQL Datendefinition character (n), char (n) character varying (n), varchar (n) numeric (p,s), integer, decimal clob (sehr große String-Attribute) date (Datumsangaben), money (Währung) xml (XML-Dokumente) Anlegen von Tabellen create table Professoren (PersNr integer not null, Name varchar (30) not null, Rang character (2) ); Veränderungen am Datenbestand Einfügen von Tupeln insert into hoeren select MatrNr, VorlNr from Studenten, Vorlesungen where Titel = 'Logik; insert into Studenten (MatrNr, Name) values (2811, 'Fichte');
Löschen von Tupeln delete Studenten where Semester > 13;
Verändern von Tupeln update Studenten
9 set Semester = Semester+1; Einfache SQL Anfragen
Duplikateleminierung select distinct Rang from Professoren
Anfragen über mehrere Relationen Welcher Prof liest Mäeutik? select p.Name, v.Titel from Professoren p, Vorlesungen v where p.PersNr = v.gelesenVon and v.Titel = 'Mäeutik'; Entspricht:
Übersetzung in relationale Algebra - Allgemeine SQL-Form: select A1,…An from R1,…Rk where P; - In RA: Welche Stundeten kennen sich aus Vorlesungen?
Hier würde zB sowohl Fichte, Carnap als auch Carnap, Fichte vorkommen Hier würde jeder auch sich selbst kennen and h1.MatrNr < h2.MatrNr vermeidet das Mengenoperationen Mengenoperationen union, intersect, minus/except (select Name from Assistenten) union (select Name from Professoren); Existenzquantor exists
10 Welche Profs halten keine VL?
Mengenvergleich
Unkorrelierte Unteranfrage meist effizienter, da nur einmal ausgewertet Vergleich mit all Kein vollwertiger Allquantor! select s.Name from Studenten s where s.Semester >= all (select a.Semester from Studenten a); Aggregatfunktionen und Gruppierung Aggregatifunktionen avg, min, max, count, sum
Besonderheiten: SQL erzeugt pro Gruppe in Ergebnistupel Alle in select aufgeführten Attribute (außer den aggregierten) müssen auch in group-by aufgeführt werden - Nur so kann SQL sicherstellen dass sich Attribut nicht innerhalb der Gruppe ändert
-
Geschachtelte Anfrage Unteranfrage in where
11 -
Unteranfrage in select Für jede Ergebnistupel wird Unteranfrage ausgeführt Unteranfrage ist korreliert (greift auf Attribute der umschließenden Anfrage zu)
Korreliert vs. unkorreliert
Vorteil UK: Unteranfrageergebnis kann materialisiert werden und Unteranfrage muss nur einmal ausgewertet werden Verwertung der Ergebnismenge einer Unteranfrage
Modularisierung mit with
Allquantifizierung
12
SQL hat keinen Allquantor Muss umgeformt werden Wer hat alle vierstündigen Vorlesungen gehört?
Durch Umformung:
SQL-Umsetzung
Durch count-Aggregation select h.MatrNr from hoeren h, Vorlesungen v where h.VorlNr = v.VorlNr and SWS=4 group by h.MatrNr having count(*) = (select count(*) from Vorlesungen where SWS=4)
Nullwerte Sobald ein Operand null ist, wird auch Ergebnis null (zB null + 1 = null; null * 0 = null) SQL kennt nicht nur true und false sondern auch unknown (liefern Vergleichsoperationen zurück, wenn mind. eines ihrer Argumente null ist) In where- Bedingung werden nur Tupel weitergereicht, für die die Bedingung true ist (Tupel, für die die Bedingung unknown auswertet werden nicht ins Ergebnis aufgenommen) Bei Gruppierung wird null als eigenständiger Wert aufgefasst und in eigene Gruppe eingeordnet
13
Logische Ausdrücke:
Case-Konstrukt
Geht von oben nach unten erste passende when-Klausel wird ausgeführt
Joins Cross join: Kreuzprodukt
Natural join: natürlicher Join Join oder innerer Join: Theta-Join Left, right oder full outer join: äußerer Join Äußerer Join
Rekursion Welche direkten und indirekten Vorgänger hat Wiener Kreis with recursive TransVorl(Vorg,Nachf) as (select * from voraussetzen union all select t.Vorg, v.Nachfolger
14 from TransVorl t, voraussetzen v where t.Nachf=v.Vorgänger) select Titel from Vorlesungen where VorlNr in (select Vorg from TransVorl where Nachf in (select VorlNr from Vorlesungen where Titel='Wiener Kreis')) Temporär definierte Sicht TransVorl ist rekursiv, da sie selbst in der Definition vorkommt
Vor-Vorgänger von Wiener Kreis
Vorgänger des Wiener Kreis der Tiefe n
Connect by
Sichten Für Datenschutz
15
Statische Sicht
Vereinfachung von Anfragen
Modellierung von Generalisierung
Untertypen als Sicht
Obertypen als Sicht Datenintegrität
16
Integritätsbedingungen Schlüssel Beziehungkardinalitäten Inklusion bei Generalisierung Statische IB - Bedingungen an Zustand der Datenbasis Dynamisch IB - Bedingungen an Zustandsübergänge
-
Referentielle Integrität Fremdschlüssel: Verweisen auf Tupel in einer Relation (zB gelesenVon in VL verweist auf Tupel in Professoren) Referentielle Integrität: Fremdschlüssel müssen auf existierenden Tupel verweisen oder Nullwert erhalten SQL - Kandidatenschlüssel: unique - Primärschlüssel: primary key - Fremdschlüssel: foreign key
Einhaltung referentieller Integrität Änderung von referenzierten Daten 1. Default: Zurückweisen der Änderungsoperation
17 2. Propagieren der Änderungen: cascade
3. Verweise auf Nullwert setzen: set null
Kaskadierendes Löschen
Einfache statische Integritätsbedingungen Wertebereichseinschränkungen ...check Semester between 1 and 13 Aufzählungstypen ...check Rang in ('C2', 'C3', 'C4')...
Uni-Schema mit Integritätsbedingungen
18
Datenbank-Trigger
19
Besteht aus: - create trigger Anweisung gefolgt von Namen - Definition des Auslösers, hier bevor eine Änderungsoperation (before update on) auf einer Zeile (for each row) der Tabelle Professoren ausgeführt werden kann - Einschränkende Bedingung (when) - Prozedurdefinition in Oracle-proprietären Syntax old bezieht sich auf noch unveränderte Tupel, new enthält bereits Veränderungen durch Operation Temporale Daten
Normale SQL-Anfragen beziehen sich auf derzeit gültigen Tupel
Gibt den Wert 0 zurück Um nicht aktuellen Wert zu bekommen:
Über system_time between...and... möglich, auf während bestimmten Zeitperiode gültigen Tupel zuzugreifen
20
Temporale Daten nach Anwendungszeit
Automatische Erzeugung der Zeitintervalle
-
Erweiterte SQL Syntax für Anfragen gegen Zeitintervalle Contains Precedes Succeeds Immediately precedes Immediately succeeds Overlaps
Relationale Entwurfstheorie Ziele Bewertung der Qualität eines Relationenschemas (Redundanz; Einhaltung von Konsistenzbedingungen) Normalformen als Gütekriterium Verbesserung eines Relationenschemas (durch Synthesealgorithmus oder Dekomposition) Funktionale Abhängigkeiten Schema: R = {A, B, C, D} besteht aus Menge von Attributen Ausprägung R α⊆ R , β⊆ R α β genau dann wenn ∀ r, s ϵ R mit r. α = s. α => r. β = s. β Beispiel
21
Schlüssel α ⊆ R ist Super-Schlüssel wenn α → R β ist voll funktional abhängig von α wenn
Notation für volle funktionale Abhängigkeit: α ⊆ R ist Kandidaten-Schlüssel wenn
Beispiel
Kandidaten-Schlüssel von Städte: {Name, BLand} {Name, Vorwahl} Bestimmung funktionaler Abhängigkeiten
Herleitung funktionaler Abhängigkeiten
22
Bestimmung der Hülle einer Attributmenge
Kanonische Überdeckung
Berechnung kanonische Überdeckung
23
Zerlegung (Dekomposition) von Relationen Gibt zwei Korrektheitskriterien für Zerlegung von Relationenschemata: Verlustlosigkeit: Die in ursprünglichen Relationenausprägung R des Schemas R enthaltenen Infos müssen aus den Ausprägungen R1, …Rn der neuen Relationenschemata R 1, … R n rekonstruierbar sein Abhängigkeitserhaltung: Die für R geltenden funktionalen Abhängigkeiten müssen auf Schemata R 1… R n übertragbar sein Kriterien für Verlustlosigkeit einer Zerlegung
Beispiel verlustfreie Zerlegung
Abhängigkeitsbewahrung
24
Erste Normalform
Zweite Normalform
Dritte Normalform
25
Synthesealgorithmus Zerlegung eines Relationenschemas, die folgende drei Kriterien erfüllt R 1, … , Rn ist verlustlose Zerlegung von R Zerlegung R 1, … R n ist abhängigkeitserhaltend Alle R 1, … , R n sind in dritter Normalform
Beispiel:
Boyce-Codd-Normalform (BCNF) Verschärfung der 3 NF
26
Man kann jede Relation verlustlos in BCNF zerlegen Manchmal Abhängigkeitserhaltung nicht erzielbar
Städte ist in 3 NF aber nicht in BCNF
Dekomposition Man kann jedes Relationenschema in zerlegen, so dass die Zerlegung verlustlos ist und alle in BCNF sind (abhängigkeitserhaltend muss dabei nicht sein) Algorithmus
Bsp Städte
27 Mehrwertige Abhängigkeiten
{PersNr} {Sprache} {PersNr} {ProgSprache} Verlustlose Zerlegung bei MVDs
Interferenzregeln für MVDs
Beispiel
28
Triviale MVDs: Solche, die von jeder Relationenausprägung erfüllt werden
Vierte Normalform
Dekomposition in 4 NF
Beispiel
Physische Datenorganisation
29
Überblick: Speicherhierarchie
Magnetplattenspeicher Mehrere gleichförmig rotierende Platten, für jede Plattenoberfläche ein Schreib-/ Lesekopf Jede Plattenoberfläche eingeteilt in Spuren (formatiert als Sektoren fester Größe [Slots], kleinste Schreib-/ Leseeinheit auf einer Platte) Adressierung - Zylindernummer, Spurnummer, Sektornummer - Jeder Sektor speichert selbstkorrigierende Fehlercodes; bei nicht behebbaren Fehlern erfolgt automatische Abbildung auf Ersatzsektoren
Lesen von Daten von der Platte Seek Time: Arm positionieren (5ms) Latenzzeit: ½ Plattenumdrehung (im Durchschnitte) (3ms) Transfer von Platte zum Hauptspeicher Random vs. Chained IO 1000 Blöcke a 4KB sind zu lesen Random I/O - Jedes mal Arm positionieren - Jedes mal Latenzzeit Chained I/O - Einmal positionieren, dann "von Platte kratzen" Chained ist ein bis zwei Größenordnungen schneller
30 RAID 0: Striping
Lastbalancierung wenn alle Blöcke mit gleicher Häufigkeit gelesen/geschrieben werden Doppelte Bandbreite beim sequentiellen Lesen der Datei bestehend aus Blöcken ABCD... Aber: Datenverlust wir immer wahrscheinlicher, je mehr Platten (Stripingbreite = Anzahl der Platten)
RAID 1:Spiegelung (mirroring)
Datensicherheit: durch Redundanz aller Daten Doppelter Speicherbedarf Lastbalancierung beim Lesen: zB kann Block A von linken oder rechten Platte gelesen werden Aber beim Scheiben müssen beide Kopien geschrieben werden - Kann parallel geschehen - Dauert somit nicht doppelt so lange wie das Schreiben nur eines Blocks
RAID 0+1: Striping und Spiegelung
Immer noch doppelter Speicherbedarf Zusätzlich zu RAID 1 hier höhere Bandbreite beim Lesen der gesamten Datei Beim Schreiben immer noch mehrere Kopien
RAID 2: Striping auf Bit-Ebene Anstatt ganzer Blöcke: Auf Bit-Ebene
31
Zusätzlich au einer Platte noch Fehlererkennungs- und Korrekturcodes gespeichert In Praxis nicht eingesetzt, da Platten sowieso schon Fehlererkennungscodes verwalten Lesen der Datei geht sehr schnell Nachteil: Bei L&S müssen sich Arme immer vollständig parallel bewegen
RAID 3: Striping auf BIT-Ebene, zusätzliche Platte für Paritätsinfo
Auf einer Platte wird Parität der anderen Platte gespeichert Ausfall einer Platte ist zu kompensieren Lesen eines Blocks erfordert Zugriff auf alle Platten - Verschwendung von Schreib-/Leseköpfen - Alle marschieren synchron
RAID 4: Striping von Blöcken
Bessere Lastbalancierung wie bei RAID 3 Flaschenhals bildet Paritätsplatte Bei jedem Schreiben muss darauf zugegriffen werden
Bei Änderung von Block A muss alte Zustand von A und der alte Paritätsblock und der neue Block A' geschrieben werden
RAID 5: Striping von Blöcken, Verteilung der Pritätsblöcke
32
Bessere Lastbalancierung als bei RAID 4 Paritätsplatte bildet keinen Flaschenhals mehr Guter Ausgleich zwischen Platzbedarf und Leistungsfähigkeit
Systempufferverwaltung
Systempuffer ist in Seitenrahmen gleicher Größe aufgeteilt Rahmen kann Seite aufnehmen Überzählige Seiten werden auf Platte ausgelagert
Adressierung von Tupeln auf dem Hintergrundspeicher
33
Verschiebung von einer Seite auf eine andere
B-Bäume Balancierte Mehrwege-Suchbäume für den Hintergrundspeicher
B-Baum von Grad k:
34
Einfügen eines neuen Objekts (Datensatz)
B+-Baum