75891906 Datenbanken 1 Datenbanken 1.1 Definition – System zur Beschreibung, Speicherung & Wiedergewinnung von umfangreichen Daten 1.2 Vorkommen von Daten – Betriebssysteme – Anwendungssoftware – Grafiken, Animation 1.3 – – – – Probleme der Datenhaltung Datenredundanz (Speicherplatz) Gefahr der Dateninkonsistenz Effizienz der Datenverwaltung Datenschutz und Datensicherheit 1.4 Drei-Ebenen-Konzept Realwelt Externes Schema 1.5 Konzeptionelles Schema Internes Schema Mehrdimensionale Datenbank – Auswertung nach unternehmensspezifischen, themenorientierten "Dimensionen" – Typische Dimensionen: Unternehmensstrukturen, Produkte, Regionen & Zeit – Daten sind als Fakten gespeichert, Dimensionen werden durch Index-Verhältnisse realisiert, die schnellen und einfachen Zugriff auf die Fakten aus unterschiedlichen Perspektiven erlauben 2 – – – – – Überblick Datenbankmodelle Hierarchische Datenbanken Netzwerkorientierte Datenbanken Relationale Datenbanken Objektorientierte Datenbanken Multidimensionale Datenbanken (OLAP) 2.1 Hierarchische Datenbanken (Wasserfalldatenbanken) – Speicherung der Daten in Hierarchieebenen – Jeder Knoten in der Hierarchie kann eine variable Anzahl von Unterknoten besitzen – Vorteil: • Datensätze variabler Länge können einfach verwaltet werden – Nachteil: • Konzept der Hierarchie ist einschränkend • Für eine schnelle Suche nach Datensätze muss Hierarchie bekannt sein • Es muss immer ein Datensatz vom Wurzeltyp vorhanden sein Seite 1 von 7 75891906 2.2 Netzwerkorientierte Datenbanken – Weiterentwickelung vom hierarchischen Modell – Daten werden in Form von logischen Satztypen und festgelegten Beziehungstypen dargestellt – Ein Knoten in tieferer Hierarchieebene kann mit mehreren Knoten einer höheren Hierarchieebene verknüpft sein – Vorteile: • Es können mehr Bedeutungen aus der Realwelt erfasst werden als bei Hierarchischen DB – Nachteile: • Immer noch ziemlich eingeschränkt • Relativ langsame Suche 2.3 Relationale Datenbanken – Beruht auf Tabellen (Relation), die mit einander in Beziehung stehen können – Spezifikation der Relation geschieht durch Operationen (relationale Algebra) • Vereinigung • Mengendifferenz • Selektion • Projektion • Kartesisches Produkt • Verbund – Vorteile: • Große Vielfalt an Modellierungen durch relationale Operatoren • Leichte Erlernbarkeit • Relativ schnelle Suche durch Schlüsselfelder • Relativ standardisierte Abfragesprache SQL – Nachteile: • Beziehungstypen müssen relational umformuliert werden 2.4 – – – – – Objektorientierte Datenbanken Erweiterung relationaler Datenbanken Jede Einheit der Anwendungswelt wird durch ein Objekt dargestellt Objekt beschreibt: Zustand mit Hilfe von Daten; dynamische Eigenschaften mit Hilfe von Methoden Zugriff erfolgt ausschließlich über die Methoden Mischformen wie objekt-relationale Datenbanken existieren – Vorteile: • Noch bessere Abbildung der realen Welt – Nachteile: • Keine standardisierte Abfragesprache • Kenntnisse in objektorientierter Programmierung nötig 2.5 Multidimensionale Datenbanken (OLAP) – Verwendung von mehrdimensionalen Tabellen, sog. "OLAP-Würfel" (OLAP-Cubes) zur Speicherung der Daten – Dimensionen des Würfels sind diskret – Zelleninhalte sind metrisch – Vorteile: • Bestimmte Auswertungen, wie Aggregation entlang einer Achse sind sehr schnell – Nachteile: • Nicht alle Sachverhalte der realen Welt können abgebildet werden • Keine standardisiert Abfragesprache, meist SQL-Abwandlungen Seite 2 von 7 75891906 3 Grundelemente der SQL-Sprache Die SQL-Sprache des SQL-Servers heißt Transact-SQL und hat wie andere Programmiersprachen • Literale • Begrenzer • Namen • Reservierte Worte 3.1 Literale Ein Literal ist eine alphanumerische Konstante, eine hexadezimale Konstante oder eine numerische Konstante --> Zeichenkette 3.1.1 Alphanumerische Konstante Beinhaltet ein oder mehrer Zeichen des SQL-Server-Zeichensatzes, die zwischen zwei Apostrophen oder zwei Anführungszeichen gesetzt werden z.B. "München" oder 'München' 3.1.2 Hexadezimale Konstante Dient der Darstellung von nicht druckbaren Zeichen. Jede hexadezimale Konstante fängt mit "X" an. Gefolgt wird dieses Zeichen von einer geraden Anzahl von Buchstaben oder Ziffern, die innerhalb von zwei Apostrophen stehen. (Z.B. X'53514C1D') 3.1.3 Numerische Konstanten Zu den numerischen Konstanten gehören alle – Ganzzahlen – Festpunktzahl – Gleitpunktzahl Mit oder ohne Vorzeichen (z.B. 130 ; 130.00 ; -0.130E5 oder 22.3E-3) Jede numerische Konstante besitzt eine Genauigkeits- und Skalierungsangabe. Dec(10,3) 3.1.4 [10 Stellen, 3 Kommastellen d.h. 7 Stellen vor dem Komma] Begrenzer Mit Hilfe der Begrenzer werden einzelnen "token" (lexikalische Einheiten) von einander getrennt. SQL kennt folgende Begrenzer , ( ) < > . : = + - / * <> <= >= 3.1.5 Kommantare Einzeilige Kommentare - … -(2xBindestrich) Mehrzeilige Kommentare: /* … */ 3.1.6 Namen Namen werden für die Identifizierung einzelner Objekte, wie Datenbanken, Tabellen, Indizes etc. verwendet. Sie sind Zeichenketten mit bis zu 30 alphanumerischen Zeichen. Bei SQL-Server 128 alphanumerischen Zeichen. Name darf grundsätzlich keine Leerzeichen enthalten und darf NICHT mit einer Ziffern beginnen. "_"; "#"; und "@" sind erlaubt. Am Beginn des Namens: "#" steht für temporär --> (Objekt wird nach dem Herunterfahren gelöscht) "@" steht für eine lokale Variable Seite 3 von 7 75891906 3.1.7 Reservierte Worte Voreingetellte Bedeutung, im Data Dictionary abgelegt Keine reservierten Worte im Objektnamen Datentypen und Systemfunktionen stellen in TSQL keine reservierten Worte dar. 3.2 – – – – Datentypen Numerische Datentypen Alphanumerische Datentypen Binäre Datentypen Datentypen für Datums-/ Zeitangaben 3.2.1 Numerische Datentypen int smallint tinyint decimal(p,[q]) numeric(p,[q]) real float[(p)] money smallmoney 3.2.2 Alphanumerische Datentypen char[(n)] varchar[(n)] text[(n)] 3.2.3 bit Datumsangabe in Ganzzahlen datetime mit geringeren speicherbedarf Datentyp bit 0=richtig; 1=falsch 3.2.5 • • • • • • • • • • • n= Anzahl der Zeichen; max 8000 char mit variabler Zeichenlänge definierte Textdatei mir 2GB Länge Datums- und Zeitformate datetime smalldatetime 3.2.4 ganzzahlig ganzzahlig positiv, ganzzahlig (0-255) Festpunktzahl, p= Anzahl d. Ziffern, q= Anzahl d. Ziffern nach dem Komma synonym für decimal (dec) Gleitkommazahl Gleitkommazahl, p= Genauigkeit Darstellung von Geldbeträgen money mit geringeren Speicherbedarf Datumsfunktion yy (year) qq (quarter) mm (month) dy (day of the year) zwischen 0 und 366 dd (day) dw (day of the week) wk (week) hh (hour) mi (minute) ss (second) ms (millisecond) 3.2.6 Zeichenkettenfunktionen – lower(z) wandelt alle Zeichen einer Kette z in Kleinbuchstaben um – upper(z) Umkehrfunktion – replicate(z,i) wiederholt Zeichenkette z i-mal 3.2.7 Skalare Operatoren – ermöglichen Operationen mit skalaren Werten Bsp.: Modulo-Operator % Seite 4 von 7 75891906 3.3 Schlüssel und Constraints (Integrationsbedingungen) 3.3.1 Schlüssel – PRIMARY KEY (Primärschlüssel) dient zur eindeutigen Identifizierung jeder Zeile einer Tabelle – FOREIGN KEY (Fremdschlüssel) repräsentiert Beziehungen zwischen den Tabellen. Mit dieser Beziehung können Aktionen weitergegeben werden; diese Aktionen sind das löschen (DELETE) und das Aktualisieren (UPDATE); – In der Primärtabelle muss in der referenzierten Spalte immer ein Primary Key – Nur dann möglich, wenn gleicher Datentyp und gleicher Wertebereich – UNIQUE KEY – stellt Eindeutigkeit der Spalte sicher, ein NULL Wert darf vorhanden sein 3.4 Grundform der SELECT – Anweisung – SELECT {* | Distinct] spaltenname[n]} – FROM tabellenname[n] – WHERE spaltenname und die Bedinung 3.5 Boolesche Operatoren – AND NOT OR Normalisierung 1 Einseitige funktionale Abhängigkeit Geburtstag A 2 ---> ---> Sternzeichen B Volle funktionale Abhängigkeit Datum Uhrzeit 2.3.2010 7.30 2.3.2010 7.30 2.3.2010 9.25 Schulung (Datum, Uhrzeit, Raum, Dozent) Raum 311 204 204 A Dozent ---> ---> B Uhrzeit Raum Datum B Uhrzeit Raum Datum ---> ---> A Dozent Dozent Kinder Prybush Damm Daraus folgt volle funktionale Abhängigkeit (Abhängigkeit in beide Richtungen) 3 Transitive Abhängigkeiten Personalnummer (A) 1 2 3 4 5 – – – – 1. Abteilungsnummer (B) 1 1 2 3 2 Abteilungsname (C) Verkauf Verkauf Verwaltung Personal Verwaltung Personalnummer ist funktional unabhängig Personalnummer bestimmt eindeutig Abteilungsnummer und Abteilungsname Abteilungsnummer ist funktional von der Personalnummer abhängig Abteilungsname ist voll funktional von der Abteilungsnummer abhängig Pr_Nr ---> Abt_Nr * Seite 5 von 7 75891906 2. PrNr ---> Abt_Name ** 3. Abt_Nr ---> Abt_Name * 4. Pr_Nr ---> (Abt_Nr,Abt_Name) * * = funktionale Abhängigkeit, ** = transitiv Abhängig – Die transitive Abhängigkeit A ---> C liegt vor wenn gilt: A ---> B B ---> C Not B ---> A 4 Normalformen 4.1 NULLform Eine Relation, die nicht den Regeln der 1. Normalform oder einer höheren genügt, wird als unnormalisiert bezeichnet (NULLFORM) Nachteile: – Redundante Datenspeicherung – Durch Redundanz bedingter höherer Speicherplatzbedarf – Mutationsanomalien – Umständliche Handhabung durch die variable Anzahl von Elementen. 4.2 1. Normalform Nach der Auflösung der Wiederholungsgruppen ist der Primärschlüssel nicht mehr eindeutig und muss neu gebildet werden aus dem alten Schlüsselfeld der Nullform und dem ersten Attribut mit Wiederholungsgruppen. – löst Wiederholungsgruppen auf; – man nimmt bisherige Primärschlüssel und fügt 1. Wiederholungsspalte (z.B. AUTOR) hinzu; – neuer Schlüssel wäre ISBN, AUTOR 4.3 2. Normalform – verlangt einen eindeutigen Primärschlüssel ISBN ---> Titel ISBN ---> Seiten ISBN ---> Verlagsname ISBN ---> Verlagsort ISBN ---> PLZ Autor (ISBN, Autor) ---> ---> ISBN 4.4 Geburtsjahr Autorfunktion {Titel, Seiten, Verlagsname, Verlagsort, PLZ} 3. Normalform – Es müssen alle Abhängigkeiten von Nichtschlüsselattributen von Nichtschlüsselattributen beseitigt werden 4.5 Boyce – Codd – Normalform – Da festgestellt wurde, dass die dritte Normalform bestimmte Anomalien nicht beseitigen kann, wurde sie durch so genannte Boyce – Codd – Normalform konkretisiert. – Diese fordert, dass alle Attribute bzw. Attributkombination einer Relation, die ein anderes Attribut funktional bestimmen, sich auch als Primärschlüssel der gesamten Relation eignen müssen. Seite 6 von 7 75891906 5 Normalisierungslehre 5.1 Warum normalisieren? – – – – – – – Vermeidung von inkonsistenten Abhängigkeiten Eliminierung von Datenredundanzen Verbesserung der Performance bei Abfragen Optimierung des logisches Datenmodells Einfüge- Update- und Löschanomalien vermeiden Beseitigung von Prozessdaten (z.B. Alter einer Person lässt sich aus dem Geburtsdatum errechnen) Sicherung der Datenintegrität; Reduzierung der Wkt., dass die Datenintegrität durch Datenmanipulation verletzt wird Seite 7 von 7