Motivation für Datenbanken
Daten = Informationen
Auffinden (Schneller Zugriff)
Erzeugen
Bestimmung von Informationen aus Daten
Sicherung von Daten (Strukturierung -> Datenbanken)
Def.: Datenbanksystem
Datenbanksystem —> System zur elektronischen Datenverwaltung
—> Aufgabe:
- große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern
- benötigte Teilgenehmigung in bedarfsgerechte Darstellungen bereitstellen
Def.: Metadaten und Nutzdaten
Nutzdaten: eigentliche Informationsströmen
Metadaten: Daten über Daten - Strukturierung der Nutzdaten (Metadaten sind im Optimalförderung aussagekräftig)
Anwendungsszenarien
Einzelbenutzerdaten und Mehrbenutzerdaten
Einzelbenutzerdaten
• Einzelner Arbeitsplatz mit lokalen Daten (bspw. Citavi)
Mehrbenutzerdatenbank
• mehrere Benutzer (bspw. Intranet)
• Datenbanksysteme laufen auf Servern
Funktionen von Datenbanken (7 Stk.)
Funktionen von Datenbanken
• Strukturierte Speicherung von Daten
• Datenträgerverwaltung
• Eingabe/Modifikation/Suche/Verknüpfung von Daten
• Zugriffssprachen (bspw. My sql)
• Kommunikationsschnittstellen
• Eine Basis für Benutzeroberflächen
• Sicherung von Daten und Prozessen
◦ Zugriffsrechte
◦ Transaktionssteuerungn
◦ Konsitenzsicherung bei parallelen Zugriffen
Datenbankdesign
• Benötigt Anforderungsanalyse und durchdachtes Design (50% des Erstellungsaufwands)
• Konzeptionelles DB-Design (Verfahren - Bspw. Grafisch - ER-Diagram - Vorbereitung für Implementierung)
• Beziehungen über Schlüssel
• Primärschlüssel für mastertabellen
• Fremdschlüssel in detailtabellen
Welche Möglichkeiten kennen Sie zur erstellung von ER-Datenmodelle
• textuell („DB soll Personen und deren Geburtsorte enthalten“)
• Entity relationship Diagramme: Entitäten und die zwischen ihnen bestehende Beziehung
ER-Diagrammarten
• Chen (vom Erfinder Peter Chen)
• Martin („Crows Foot“, da. Krähenfuß): besser für implementative Zwecke
• …
Was sind Entitäten bzw. Instanzen einer Entität
Entitäten: sind Objekte des täglichen Lebens
• Personen
• Haustiere
Instanzen (einer Entität): ein bestimmtes Exemplar einer Entität
• Friedrich Schiller, Anette von Droste
• Bello, Hansi, Micky
Entitäten werden auch als Entitäts-Typen bezeichnet
• Instanzen sind in dem Fall Entitäten
Wie erstellt man ein ER-Diagramm
(3 Schritte)
Analyse der Aufgabenstellung
• welche Ergebnisse soll die DB liefern
• Beobachtung der Prozesse und Ableitung der DB-Abbildung
• Erstellung eine „Miniwelt“, in der nur die relevanten Daten enthalten sind
◦ welche Akteure und sonstige Objekte sind relevant -> Entitäten
◦ Wie hängen die Entitäten genau von einander ab -> Beziehungen
◦ Genauere Betrachtung der Beziehung -> kardinalitäten
◦ Welche Daten lassen sich in eigene Entitäten auslagern -> Normalisierung
Werkzeuge für ER-Diagramme
• PowerPoint / libre Office presentations
• Ms Visio
• Spezielle Datenbank Werkzeuge
Beschreibung von Entitäten über Charakteristika: Attribute z.b.
• Nachname
• Geburtsdatum
• Motorleistung
Attribute haben zb folgende Typen
• Text (Char, varchar)
• Datum (Date)
• Ganzzahlen (integer, Byte)
Namenskonventionen
Entitäten: Nomen (substantive): Personen, Studierende
Beziehungen: verben: hat, ist, schreibt
Attribute: meist nomen im Singular: Name, Geburtsdatum
Datenbank-Tabellen
Schlüssel (Schlüsselattribute)
• zur Bildung von Beziehungen in einer Datenbank
• Primärschlüssel <-> Fremdschlüssel
• Primärschlüssel
◦ Eindeutiger Schlüssel
◦ Schlüsselattribute unterstrichen darstellen (hervorheben)
◦ Zusammengesetzt Primärschlüssel (Name+Vorname+Geb. Dat.)
◦ Schlüsselwahl (natürlich vs. künstlich) bspw. KKV-Nummer vs. Geb. Dat.+Zusatz
• Fremdschlüssel
◦ Verweisen auf Datensätze aus anderen Tabellen
◦ Kann in beliebig vielen Datensätzen auftreten
• Anforderungen:
◦ Prinzipiell beliebige Datentypen möglich
◦ Üblich: Text oder Zahl
◦ Referenzielle Integrität: Fremdschlüssel ist entweder NULL oder korrekter Verweis auf Primärtabelle (Bsp. Prof. geht in Rente --> Für zwischenzeit bekommen die Vorlesungen NULL als Pers. Nr., so lange wie noch kein Nachfolger eingetragen wurde)
‣ Muss RDBMS sichergestllt werden (insbesondere beim Löschen von Datensätzen in der Primärtabelle)
‣ Trick: In der Primärtabelle einen Datensatz zum Auffangen von 0-Werten anlegen ("Unbekannt")
◦ Natürliche / künstliche
‣ Natürliche (sind real) bspw. Matrikelnummer
‣ Künstlich: Fortlaufende Seriennummern oder Zeitstempel
◦ Zusammengesetzte Primärschlüssel
‣ Wenn einzelne Attribute nicht eindeutig bspw. Name + Vorname
‣ Können aus versch. Typen bestehen
Der SELECT-Operator: Auswahl 7 Filterung
• Auflösen von Beziehungen zwischen zwei Tabellen
• 3 relationale Operatoren in Serie:
◦ PRODUCT (karthesisches Produkt) -> Alle Möglichen Kombinationen aus den Zeilen beider Tabellen
◦ SELECT --> Ausfiltern der Kombinationen, für die Tremdschlüsselwert2 = Primärschlüsselwert1
◦ PROJECT -> Ausfiltern doppelter Felder (z.B. Fremd- und Primärschlüssel)
◦ Natural, Inner, Outer Joins
Beispiel JOIN:
Ablauf: Modellierung von Hochschuldaten (Abbildung des Vorlesungs-/Prüfungsbetriebs)
1. Akteure
2. Konzeptuelles Datenbankdesign: Chen-Diagramm
3. Charakteristika festlegen
Professoren: Name, Vorname, Rang, Raum, Gehalt
Assistenten: Name, Vorname, Fachgebiet
...
4. Akteure Eintragen
5. Charakteristika Eintragen
6. Beziehungen und Primärschlüssel
7. Kardinalitäten
Grade von Beziehungen
• Unäre Beziehungen
◦ Entität eines Entity-Sets steht mit Entität desselben Entity-Sets in Beziehung
• Binäre Beziehung
◦ Zwei Entitäten beteiligt
• Ternäre Beziehungen
◦ Beziehugnen zwischen mehr als zwei Entity Sets
Metadaten / Data Dictionaries
• Beschreibung der Nutzdaten in der DB
• U.a. Wertebereiche für einzelne Felder --> Beispiel: Schulnoten
• Auch: System-Katalog (Für interne Zwecke des RDBMS)
Indizes
• Metapher: Index in Büchern
• Schlagworte mit Verweis auf Stellen, an denen sie beschrieben sind
• Datenbank: Indexierte Felder enthalten Verweis auf Datensätze
• Schnelles Finden der Felder in der eigentlchen Tabelle (b.B. Nachname)
Supertypen und Subtypen
• "Vererbung"
• Entitäten als Spezialisierung anderer Entitäten
• Kennzeichnung "G" zwischen Beziehungen im Chen-Diagramm
• Beispiel: Gehege --> Gehegetyp
• Auch möglich: Supertypen, die zuglech mehrere Subtypen sein können (Kennzeichnung Gs im Chen-Diagramm)
Attribute
• Einfache und zusammengesetzte
◦ Einfaches (atomares) Attribut: kann nicht weiter unterteilt werden (Name, Postleitzahl)
◦ Zusammengesetzt: Mehrere Werte -> Beispiel Straße (mit Hausnummer)
• SIngle-Value-Attribute
◦ Eindeutige Werte im gesamten Entity Set (z.B. Matrikelnummer bei Studierenden)
• Multi-Value-Attribute
◦ Kann für eine Entität mehrere Were enthalten (z.B. Telefonnummern für eine Person)
◦ Darstellung mit zwei Linien im Chen-Diagramm
• Abgeleitete Attribute
◦ Zur Laufzeit berechnet
◦ z.B. Alter einer Person (aus aktuellem Datum - Geburtsdatum)
◦ Gestrichelte Linie im Chen beim Attribut-Link
• Domäne
Organisation: Sichtweisen auf Datenbanken
• Geschäftsführer: Berichte, Ergebnisse, Zusammenfassungen
• Abteilungsleiter: Berichte, Detaildaten
• Mitarbeiter: relevante Daten für seine Arbeit (z.B. Zeiterfassung)
• Datenbankdesigner / -implementierer: technische Sicht, einzelne Tabellen
Ableiten von relationalen Datenbanken aus ER-Diagrammen
(Systematik)
• Datenbanken: Tabellenstrukturen
• Entität ungleich Tabelle --> Teils mehrere Tabellen für eine Entität
• 1:1 Beziehungen können in Tabellen als Attribute abgebildet werden
◦ Separate Tabellen bspw. bei Fotos mit separater Speicherung
• M:N Beziehungen benötigen Hilfstabellen
• Ternäre und komplexe Beziehungen ebenfalls mittels Hilfstabelle
SQL-Datentypen
• Integer
◦ Ganze Zahlen (+-)
• Nummeric (n,m) oder decimal (n,m)
◦ Festkommazahl (+-) mit insgesamt n Stellen, davon m Nachkommastellen
◦ Speziell für Geldbeträge gut geeignet.
• Float (m)
◦ Gleitkommazahl (+-) mit m Nachkommastellen
• real
◦ Gleitkommazahl (+-). Genauigkeit hierfür ist vom DBS abhängig
• double oder double precision
• float oder double
◦ Für technisch-wissenschaftliche Anwendungen geeignet und Umfassen Exponentialdarstellung
◦ Wegen Speicherung in Binärform für Geldbeträge ungeeignet.
‣ bspw. lässt sich 0,10€ (10 Cent) nicht abbilden
• character (n) oder char (n)
◦ Zeichenkette Text mit n Zeichen
• Varchar (n) oder character varyin (n)
◦ Zeichenkette (also Text) von variabler Länge
• date
◦ Datum (ohne Zeitangabe)
• time
◦ Zeitangabe (evtl. inklusive Zeitzone)
• timestamp
◦ Zeitstempel (umfasst Darum und Uhrzeit; evtl. inklusive Zeitzone), meistens mit Millisekundenauflösung, teilweise auch mikrosekundengenau
• boolean
◦ Boolesche Variable (kann true oder false annehmen)
• blob (n) oder bianry large object (n)
◦ Binärdaten von macimal n Bytes Länge.
• clob (n) oder character large object (n)
◦ Zeichenkette mit maximal n Zeichen Länge
Data Definition Language
Data Manipulation Language (DML) INSERT
Data Manipulation Language (DML) UPDATE
Data Manipulation Language (DML) DELETE
Der SELECT-Befehl
• Gehört zur DML
• Komplexe verschachtelung Möglich
• Ergänzung durch Klauseln (Clauses)
◦ Einschränkung der Ergebnismenge (horizontale Filterung)
◦ Erzeugung von Joins
• DISTINCT: gleiche Datensätze werden nur einmal angezeigt
• UNIQUE: liefert WAHR, wenn die Ergebnismenge eindeutig ist
• LIMIT: Eingrenzung der zurückgelieferten Datensätze
◦ Beispiel: ... LIMIT 20 ... ... LIMIT 10 , 20 ...
WHERE-Clause
• Filterung der Ergebnismenge des SELECT-Befehls
• Einfaches Bsp.: SELECT * FROM Professoren WHERE persnr = 1;
• Verknüpfung der Bedingungen mit:AND, OR, NOT
• Vergleichsprädikate: =, <, >, <>, <=, >=, BETWEEN, IN, LIKE, NULL, ALL, SOME, ANY, EXISTS, UNIQUE, OVERLAPS, MATCH
• Beispiel: SELECT * FROM Professoren where persnr = 2126 OR persnr >= 2130 AND persnr < 2137 OR name LIKE '%okrates%';
Wildcards in SELECT-Statements
• Für die Mustersuche bei Queries
• MySQL nutzt "%" für beliebig viele und "_" für genau ein zu suchendes Zeichen (üblich für Datenbanken)
• Beachte: Bei Suche mit Wildcards in Textfeldern ist immer der Operator "LIKE" statt "=" zu benutzen
• Beispiel:
Mengenfunktionen
• In Verbindung mit SELECT-Befehl, meist mit WHERE-Clause
• COUNT
◦ Liefert Anzahl von Datensätzen
◦ Beispiel
‣ select count ( * ) from Professoren where name like "K%";
• AVG
◦ Durchschnitt von numerischen Werten
• MAX, MIN
◦ Maximum bzw. Minimum von numerischen Werten
• SUM
◦ Summe von numerischen Werten
GROUP BY / ORDER BY
• Ordnen: ORDER BY
◦ Beispiel:
‣ SELECT * FROM Studenten order BY Semester;
‣ Qualifier ASC bzw. DESC: Ascendante bzw. Descendant (Aufsteigend/Absteigend)
• Verarbeitung von Zeichenketten (Strings)
• Substrings
◦ Gibts Teile von Strings aus
◦ Beispiel: SELECT SUBSTING (name, 3, 5)FROM Professoren;
• UPPER/LOWER
◦ Wandelt STINGS nach Grobuchstaben bzw. Kleinbuchstaben um
◦ Beispiel: SELECT UPPER (name) FROM Professoren
• TRIM
◦ Entfernung von führenden oder nachfolgenden (LEADING/TRAILING) Leerzeichen von Strings
Join (1:n Beziehung)
• Verknüpfen Daten aus verschiedenen Tabellen
• Lassen sich auch immer gleichwertig als SELECT-Statement angeben. Joins sind aber klarer zu verstehen
• Bsp.:
◦ Aufgabe: Alles Professoren mit ihren Vorlesungen als Liste
◦ Verknüpfung der Professoren-Tabelle mit der Vorlesungs-Tabelle
Join (m:n Beziehung)
• m:n Beziehung über Tabelle HOEREN
Views
• View-Definitionen werden in der Datenbank gespeichert und können fast wie Tabellen verwendet werden
• Normalisierung --> Denormalisierung
Referentielle Integrität
• Problem:
◦ Datensätze in MAster-Tabelle werden gelöscht - was passiert mit abhängigen Datensätzen in Detail-Tabellen?
◦ Bsp.: Prof. Müller hat 3 Vorlesungen, geht in Pension - wer ist der Dozent?
◦ 3 Möglichkeiten
‣ Mit Prof. Müller verschwinden auch die 3 Vorlesungen -> Löschen des Profs. führt zu Löschen der Vorlesung
‣ Ein anderer Prof. übernimmt -> Fremdschlüssel in Vorlesungen muss sich ändern
‣ Löschen wird verhindert
◦ Referentielle Integrität stellt sicher, dass DB konsistent bleib
• Constrains: Zwangsbedingungen
• NOT NULL: Ausschließen von Nullwerten
• Vorgehen:
• ON DELETE: Regel für Löschen von Datensätzen in der Mastertabelle
◦ NO ACTION: wird ein Master Datensatz gelöscht, auf den sich abhängige Datensätze in der Detailtabelle beziehen, wird der Begehl nicht ausgeführt und ein Fehler ausgegeben
◦ CASCADE: wird ein Master-Datensatz gelöscht, werden alle abhängigen Datensätze in der Dateiltabelle auch gelöscht. Setzt sich auch ggf. weiter fort (Kaskade)
◦ SET NULL: die Fremdschlüssel der abhängigen Daten werden auf NULL gesetzt (Voraussetzung: Fremdschlüssel-Spalte ist nicht NOT-NULL)
◦ SET DEFAULT: die Fremdschlüssel der abhängigen Datensätze werden auf den Standardwert gesetzt (Nicht in MySQL unterstützt)
• ON UPDATE (Regeln für Ändern von Datensätzen in der Mastertabelle)
◦ Prinzipiell s.o.
• Constrains ergeben sich aus dem ER-Diagramm (1:n, m:n)
• Automatischer Erzeugung von Constraints durch ER-Editor (MySQL Workbench)
• Fremdschlüssel dürfen auch den Wert NULL enthalten -> kein Verweis auf Master-Tabelle
• Jede Tabelle muss einen Primärindex für den eindeutigen (unique) Schlüssel haben
• Drastische Verbesserung der Performance (bei komplexen Abfragen)
SHOW
• Informationen über Datenbanke, Tabellen, Views..
DESCRIBE
• Details zu Tabellenspalten..
Be- und Verarbeitung realer DB mit SQL
• Rich-Server-Ansatz: möglichst weitgehende Verarbeitung der Daten in der DB
◦ Nutzung der Verknüpfungsmöglichkeit
◦ Performance-Optimierung in der DB
◦ Reduktion des Netzwerkverkehrs
◦ Vereinheitlichung der Geschäftslogik - alle Client-Typen erhalten gleiche Ergebnisse
◦ Reduktion von Programmieraufwand in der Anwendung
• Rich Client-Ansatz
◦ Nutzung von Rechenleistung auf Clients
◦ Flexiblere Programmierung
• Meist wird ein hybrider Ansatz gewählt
Multi-User-Problematik
• Konkurrierende Zugriffe auf Daten -> inkonsistenz von Daten (gleichzeitiger Zugriff, Daten werden gelesen während jemand anderes diese ändert)
• Konzepte und Verfahren
• Transaktionen
• Locking von Tabellen und Datensätzen
ACID-Konzept
• Atomicity: Operationen weren ganz oder gar nicht ausgeführt --> durch Transaktionen oder durch Locking
• Consistency: Vor und nach Operationen ist die DB in einem konsistenten Zustand --> Teferentielle Integrität, Normalisierung
• Isolation: Konkurrierende Operationen beeinflussen sich nicht gegenseitig --> Transaktionen, Locking
• Durability: Systemfehler haben keine Auswirkungen --> Transaktionslog
Transaktionen
• Idee: Operationen auf DBs sollen komplett oder gar nicht stattfinden
• Absicherung gegen konkurrierende Zugriffe und Fehler
• DB gelangt von einem konsistenten Zustand in einen anderen konsistenten Zustand
• Oft können Transaktionen auch durch Locks ersetzt werden
• Transaktionen in MySQL
◦ Nicht alle Operationen können zurückgerollt werden (z.B. Drop)
◦ Nicht alle DB-Engines unterstützen Transaktionen (MySQL: nur InnoDB)
◦ Standard ist Autocomitt ein --> alle Statements werden sofort committed
◦ Zum Aus- und Einschalten: set autocommit=0 (bzw. =1)
◦ Wenn Autocommit aus: Operationen werden erst mit "commit" wirksam, "rollback" rollt Operationen zurück
◦ Manuelle "Transaktionsklammer": START TRANSACTION ... COMMIT ROLLBACK
Stored Procedures
• Abgeschlossene Programmteile in der DB
• Eingabeparameter möglich
• Retornwert möglich
• MySQL: "Stored Programs"
◦ Sored Routines: kein Rückgabewert, aber Parameter werden verändert
◦ Stored Functions: Rückgabewert, ähnlich wie built-in Functions
◦ Trigger: s.u.
◦ Events: Zeitplangesteuerte Programme
◦ MySQL Compound-Statement Syntax (Kap. 12.6)
• Beispiele auf Folie 141 f. --> ggfs. Bsp. aus unserer Hausarbeit einfügen
Trigger
• Idee: automatische Reaktion auf festgelegte Aktionen
• RDBMS-Trigger reagieren auf bestimmte Operationen, typisch: Anlegen von Datensätzen
• Festlegung in der Datenbank, Aufruf von DML-Statements
• Anwendung
◦ Automatisches Erzeugen von IDs (z.B. aus Geburtsdatum, Vorname, Nachname
◦ Automatisches Löschen von überflüssigen Datensätzen
◦ Tracking von Aktionen
• ACHTUNG: Trigger laufen i.A. ohne Rpckmeldung ab - können daher unerklärliche Reaktionen liefern falls man sie nicht kennt
MySQL Utilities
• Kommandozeilenprogramme zur Unterstützung der Arbeit mit MySQL.
• Interessant: Client programs
◦ 4.5.2. mysqladmin - Client for Administering a MySQL Server
◦ 4.5.5. mysqlimport - A Data Import Program
◦ ...
MySQL Import
• Definition von Import-DB, Zeichensatz (deutsche Umlaute!), Trennzeichen
• UTF-8 Zeichensatz empfohlen
Datenbank-Applikationen
• DB-Anwendungen werden mittels höerer Programmiersprachen erstellt
• Realisierungsmöglichkeiten:
◦ Rick Client (eigenständiges Programm)
‣ Direkter DB-Zugriff (z.B. Citavi, MySQL Workbench.. )
‣ DB-Zugriff über Middleware Layer (z.B. Teamcenter.. )
◦ Web Client (läufts im Browser, benötigt Web-Server mit Script-Fähigkeiten / Middleware)
‣ Beispiel: Google, Amazon, E-Bay ...
Web-Seiten mit DB-Inhalten anreichern
• Web-(HTML-)Seiten müssen nicht statisch sein --> Daten aus Datenbanken können angezeigt und verändert werden
• Infrastruktur: Webserver (z.B. Apache), Datenbank (z.B. MySQL), Server-Scriptsprache (z.B. PHP)
• Typische Server-Infrastrukturen
◦ LAMP (Linux, Apache, MySQL, PHP)
◦ WAMP (Windows, Apache, MySQL, PHP)
◦ MAMP (MacOS, Apache, MySQL, PHP)
Last changeda year ago