Relationale Datenbank

Werbung
Ein Datenbanksystem besteht aus
-
-
-
Einer oder mehrerer Datenbanken
Enthalten die Gesamtheit der Daten eines Anwendungsbereichs
 Zentral gespeicherter Datenbestand
 Verwaltet über anwendungsunabhängige Zugriffsverfahren
Einem Data Dictionary
Dort wird das Datenbankschema gespeichert, das den Aufbau der Daten der
Datenbanken beschreibt
 Enthält Metadaten zur Dokumentation der in der Datenbank
abgespeicherten Datenobjekte und Datenattribute
 Kann auch zur Ablage von Metadaten zur Beschreibung der
Datenverwendung durch
 Anwendungen
 Benutzer
 Transaktionen
 Verantwortlichkeiten
 Änderungszeitpunkte etc.
verwendet werden
Einem Datenbank Management System
Verwaltet und kontrolliert zentral unter Berücksichtigung des Datenbankschema im
DD die in der Datenbank bzw. den Datenbanken abgelegten Datenbestände
 Sorgt für die
 Dauerhafte Speicherung
 Zuverlässige und
 Unabhängige Verwaltung
 Komfortable und
 Flexible und
 Geschützte Verwendung großer integrierter und mehrfach
benutzbarer Datenbanken
Vorteile des Datenbankansatzes
-
Ablage der Daten in einem Format, welches das DBMS unabhängig von Applikationen
interpretieren kann.
Das DBMS greift als einziger Prozess direkt auf die Daten zu und darf diese Manipulieren
Das DBMS verwaltet die Zugriffsberechtigungen
Das DBMS koordiniert die Zugriffe von mehreren Anwendern
Das DBMS stellt Mechanismen zur Datensicherung und Datenwiederherstellung zur
Verfügung
Datenmodelle
Im Datenmodell wird festgelegt,
o Durch welche Eigenschaften Datenelemente charakterisiert werden können
o Wie die Struktur der Datenelemente aussehen kann
o Welche Konsistenzbedingungen einzuhalten sind
o Welche Operationen zum Speichern, Auffinden, Ändern und Löschen von
Datenelementen erlaubt sind
Arten
o Hierarchisches Datenmodell (1:n)
o Netzwerkmodell (n:m)
o Relationales Datenmodell
 Organisation der Daten in Tabellen
 Verwendung von SQL als DML und DDL
 Beziehungen zwischen Tabellen werden über Schlüssel hergestellt
o Objektorientiertes Datenmodell
Syntax und Semantik
o Durch DDL (Data Definition Language)
o Und DML (Data Manipulation Language)
ER-Modell
o Das ER-Modell ist eine Top-Down-Methode zur Erstellung eines relationalen
Datenmodells
o Entitäten sind in der Datenbank abgebildete Objekte aus der Realität
o Entitätsnamen werden laut gängiger Konvention im Singular angegeben
o Attribute beschreiben Entitäten
o Jede Instanz einer Entität besitzt für jedes Attribut genau einen Wert
o Beziehungen stellen Verbindungen zwischen den Entitäten her
o Zwischen zwei Entitäten können mehrere Beziehungen bestehen
 Grad einer Beziehung (Kardinalität)
 1:1
 1:N
 N:M
Prinzipielles Vorgehen
 Festlegung von Entitäten
 Definition der Beziehungen zwischen den Entitäten
 Zuordnung von Kardinalitäten zu den Beziehungen
 Definition von Attributen
 Normalisierung
Das Relationenmodell aus der Mathematik
-
Eine Relation ist die Menge aller Tupel in einer Tabelle
Der Relationenname gibt der Tabelle ihren Namen
Das Relationenschema beschreibt die Struktur einer Tabelle. Es wird gebildet aus den
Spaltennamen / Attributen
Ein Datensatz (Tupel) bildet die Zeile einer Tabelle
Relationale Datenbank
-
Tabellen bilden die Basis einer relationalen Datenbank und organisieren die Daten
Der Name einer Tabelle ist eindeutig
Tabellen bilden die Entitäten des ER-Modells ab
Jede Tabelle besteht aus mind. einer Spalte
Jede Spalte trägt einen eindeutigen Namen
Die Attribute im ER-Modell entsprechen den Spalten der Tabelle und geben der Spalte ihren
Namen
Ein Tupel enthält einen kompletten Datensatz
Ein Tupel entspricht einer Zeile der Tabelle, d.h. es besteht aus Spalten, die mit Werten
belegt sind
Die Instanzen einer Entität werden durch Tupel abgebildet
Primary Key
-
Der Primärschlüssel definiert eine Zeile einer Tabelle eindeutig
Der Primärschlüssel kann aus einer oder mehreren Spalten (semantische Schlüssel) bestehen
Die Spalten eines Primärschlüssels dürfen keine NULL-Werte enthalten (nicht definiert)
Attribute von Entitäten im ER-Modell können als Primary Keys definiert werden
Foreign Key
-
Der Fremdschlüssel verknüpft Tabellen mit Hilfe des Primärschlüssels
Der Fremdschlüssel bildet die Beziehung zwischen den Entitäten im ER-Modell ab
Abbildung der Beziehungen des ER-Modells mit Hilfe von Foreign Keys
- 1:1
o Obligatorische Mitgliedschaft beider Entitäten (1 – 1)
 Keine Aufteilung in zwei Relationen notwendig
 Entitäten, die nicht in einer eigenen Tabelle abgebildet werden, werden mit
einem * gekennzeichnet – Der Tabellenname ist der, der nicht markierten
Entität
o Obligatorische Mitgliedschaft einer Entität (0…1 – 1)
 Der Primary Key der nicht-obligatorischen Entität wird der Tabelle zur
Abbildung der obligatorischen Entität als Foreign Key hinzugefügt
 Vermeidung von NULL-Werten
o Nicht-Obligatorische Mitgliedschaft beider Entitäten (0…1 – 0….1)
 Zur Vermeidung von NULL-Werten wird eine Zwischentabelle zur Abbildung
der Beziehung eingeführt
 Die Primary Keys beider Tabellen werden in die Zwischentabelle als Foreign
Keys übernommen
- 1:N
o Obligatorische Mitgliedschaft der N-Entität (0…1 – 1…*)
 Der Primary Key der 1-Entität wird der Tabelle zur Abbildung der N-Entität
als Foreign Key hinzugefügt
 Vermeidung von NULL-Werten
o Nicht-Obligatorische Mitgliedschaft der N-Entität (0…1 – 0…*)
 Einführung einer Zwischentabelle
 Die Primary Keys beider Tabellen werden in die Zwischentabelle als Foreign
Keys übernommen
-
N:M (0…* – 0…*)
o N:M Beziehungen müssen über Hilfstabellen aufgelöst werden, bevor sie in einer
relationalen Datenbank abgebildet werden können
 Mitgliedsklasse für die Auflösung unerheblich
 Einführung einer Zwischentabelle
 Die Primary Keys beider Tabellen werden in die Zwischentabelle als Foreign
Keys übernommen
Normalisierung
-
Vermeidung von Redundanzen
Ermöglichen einer einfachen Datenpflege
Ein übersichtlicher und möglichst einfacher Aufbau der Relationen
Anomalien
Sind Verarbeitungsfehler durch die Manipulation von unkorrekten Relationen Man
unterscheidet:
 Updateanomalie
Bei Datenänderungen werden nicht alle Datensätze berücksichtigt
 Löschanomalie
Durch das Mischen nicht zusammengehörender Informationen können beim
Löschen von Entities unbeteiligte Entities mitgelöscht werden
 Einfügeanomalie
Wurden nicht zusammengehörende Informationen in einer Relation
vermischt, so können Probleme bei der Eingabe neuer Daten auftreten
Normalformen
1. Normalform
Eine Relation ist in der ersten Normalform, wenn
 sie zweidimensional ist
 jeder Datensatz nur einmal vorkommt
 sich in jedem Datensatz Daten befinden, die zu einem Objekt der realen Welt
gehören
 sich in jeder Spalte nur Daten befinden, die einem Attribut entsprechen
 jedes Attribut nur einmal in jeder Relation vorkommt
 für jedes Attribut nur ein Wert eingetragen ist
Das heißt:
 Die Attribute der Relation müssen atomar sein
 Strukturierte Attribute müssen aufgeteilt werden in ihre Teilattribute
 Relationen in erster Normalform werden auch oft als flache Relationen
bezeichnet
 Aufgrund von funktionalen Abhängigkeiten können sich in erster
Normalform Relationen Redundanzen ergeben
2. Normalform (Funktionale Abhängigkeit)
Eine Relation ist in der zweiten Normalform, wenn
 sie in 1. Normalform ist

jedes Nicht-Schlüsselattribut vom ganzen Primärschlüssel voll funktional
abhängig ist. Somit dürfen Nicht-Schlüsselattribute nicht von Teilen des
Primärschlüssel abhängen
Das heißt:
 Die zweite Normalform vermeidet partielle funktionale Abhängigkeiten
 Die zweite Normalform kann durch Auslagerung der abhängigen Attribute in
eine eigene Relation erreicht werden
3. Normalform (Transitivität)
Eine Relation ist in der dritten Normalform, wenn
 sie in 2. Normalform ist
 kein Nicht-Schlüsselattribut transitiv vom Primärschlüssel abhängt
 jedes Nicht-Schlüsselattribut nur vom Primärschlüssel abhängig ist
Das heißt:
 Nicht Schlüsselattribute dürfen nicht von Nicht-Schlüsselattributen abhängen
 Die dritte Normalform löst transitive Abhängigkeiten auf, d.h. es existieren
keine Abhängigkeiten zwischen Attributen, die nicht zum Schlüssel gehören
 Die transitive Abhängigkeit wird durch Auslagerung der abhängigen Attribute
in eine neue Relation aufgelöst
MySQL
o
o
MySQL ist ein relationales Datenbank-Management-System und fungiert dabei als
„Vermittler“ zwischen der physikalischen Datenbank und den Anwendern
Verzeichnisstruktur
 Bin\
Server und Client-Programme von MySQL und Addons
 Scripts\
Perl-Skripte für Routineaufgaben
 Data\
Datenbanken und Tabellen
 Docs\
 Bench\
Spalten-Datentypen in MySQL
-
-
Numerisch
o –M
Anzeigebreite, Maximum: 255
o –D
Anzahl der Dezimalstellen nach dem Punkt bei Fließkommazahlen
o –UNSIGNED Ohne Vorzeichen
o –ZEROFILL
Füllt leere Stellen in der Anzeige mit Nullen auf, setzt
automatisch UNSIGNED, sinnvoll im Zusammenhang mit M
Datum und Zeit
Zeichenketten
Mengen
Inno-DB Tabellen
-
Transaktionssicher
Sperrung auf Zeilenebene möglich
Max. Größe einer Tabelle ist betriebssystemabhängig
Konsistente, nicht sperrende, Lesevorgänge in SELECT-Anweisung
-
Portabel
InnoDB wurde für maximale Leistung bei der Verarbeitung großer Datenmengen
ausgelegt
Unterstützung von Foreign Keys
Darstellung
Zeichenketten
Eine Zeichenkette ist eine Abfolge von Bytes oder Zeichen, die in einfache
Anführungszeichen [’] gesetzt wird
Ganzzahlen
Folge von Ziffern
Fließkommazahlen
Verwenden einen Punkt [.] als Dezimaltrennzeichen
Hexadezimalzahlen
Der Standardtyp eines Hexadezimalwerts ist ein String. Er kann aber auch als Zahl
identifiziert werden.
Verwendung als String
Jedes Paar hexadezimaler Ziffern wird in ein Zeichen umgewandelt
Verwendung als Zahl
Hexadezimal-Werte werden in einen Dezimal-Wert umgerechnet
Boolesche Werte
Die Konstanten TRUE und FALSCHE werden als 1 bzw. 0 ausgewertet
Kein case-sensitive!
Kommentare
# einzeilig
-- einzeilig
/*
*/ mehrzeilig
Integer
TINYINT
SMALLINT
MEDIUMINT
INTEGER
BIGINT
1 Byte
2 Byte
3 Byte
4 Byte
8 Byte
Float
FLOAT
4 Byte
DOUBLE
8 Byte
Datum und Zeit
DATE
3 Byte
DATETIME
8 Byte
TIMESTAMP 4 Byte
TIME
3 Byte
YEAR
1 Byte
Mengen
ENUM (’wert1’,’wert2’, …)
- Die Spalte kann einen Wert aus der Wertemenge annehmen
- 16 Byte
- Maximal 65535 Werte
SET (’wert1’,’wert2’, …)
- Die Spalte kann mehrere Werte aus der Wertemenge annehmen
-
8 Byte
Maximal 64 Elemente
Konventionen
Spaltennamen
Bei einem Verweis auf eine Spalte muss das Präfix für die Tabelle bzw. Datenbank
nicht angegeben werden – es sei denn der Verweis ist nicht eindeutig (d.h. ein
Spaltenname wird in zwei oder mehr Tabellen verwendet)
Tabellennamen
Bei einem Verweis auf eine Tabelle muss als Präfix die Datenbank nicht angegeben
werden. Es sei denn, der Verweis ist nicht eindeutig (d.h. ein Tabellenname wird in
zwei oder mehr Datenbanken verwendet)
Indizierung
-
Indizes werden verwendet, um schnell Datensätze mit bestimmten Spaltenwerten zu finden
Ein definierter Index wird zur Optimierung verwendet, wenn die in der WHERE-Klausel
verwendeten Spalten eine Untermenge eines mehrspaltigen Index bilden
Der erste/linke Wert des Index muss in der WHERE-Klausel verwendet werden
Relationale Integritätsregeln
-
Integrität = Unversehrtheit, keine widersprüchlichen Daten
Entity-Integrität = ein Attribut, das Teil des Primary-Key ist, darf nicht NULL sein. NULL Werte
sind nicht eindeutig (NULL ist nicht gleich NULL)
Referentielle Integrität RI = eine Relation R2 besitze einen Foreign-Key FK, der auf einen
Primary-Key PK einer Relation R1 verweist. Dann muss
o Jeder Wert des FK in R2 gleich einem Wert des PK in R1 sein oder
o Der Wert des FK in R2 ist ein NULL Wert
Data Definition Language
CREATE DATABASE [IF NOT EXISTS] db_name
- Erzeugt eine Datenbank mit dem angegebenen Namen „db-name“
- Die Regeln für die Namenskonventionen sind einzuhalten
- Die Angabe von IF NOT EXISTS unterdrückt die Ausgabe einer Fehlermeldung,
falls bereits eine Datenbank mit dem angegebenen Namen existiert
DROP DATABASE [IF EXISTS] db_name
- Löscht alle Tabellen der Datenbank „db_name“ und die Datenbank selbst
- Die Angabe von IF EXISTS verhindert die Ausgabe der Fehlermeldung, falls die
Datenbank nicht existiert
USE db_name
- USE weißt MySQL an, die angegebene Datenbank als aktuelle Datenbank zu
verwenden.
- Gültig bis zur Eingabe eines neuen USE-Statements bzw. bis zum Ende der
Sitzung
-
Es kann auf alle Datenbanken zugegriffen werden, nicht nur auf die im USEStatement ausgewählte
CREATE TABLE [IF NOT EXISTS] tabname (create_definition, …)
- CREATE TABLE erzeugt eine neue Tabelle mit dem Namen „tabname“ in einer
Datenbank
- Die Regeln für die Namenskonventionen sind einzuhalten
- IF NOT EXISTS unterdrückt die Ausgabe der Fehlermeldung, falls bereits eine
Tabelle mit dem Namen existiert
- z.B.:
CREATE TABLE testdb.mitarbeiter (
id
INTEGER NOT NULL,
shortname
CHAR(3),
name
VARCHAR(30),
vorname
VARCHAR(30),
titel
SET ('Dr','Ing','Prof'),
room
INTEGER (5) UNSIGNED ZEROFILL
def01
VARCHAR(50) DEFAULT 'AAA',
def02
INTEGER DEFAULT 3,
PRIMARY KEY
) TYPE = InnoDB;
ALTER [IGNORE] TABLE tbl_name alter_specification
- IGNORE: Wenn IGNORE nicht angegeben ist, wird der Vorgang bei Auftreten von
Schlüsseldubletten abgebrochen, und ein Rollback wird durchgeführt. Ist IGNORE
angegeben, dann wird nur der erste von mehreren Datensätzen mit Dubletten
eindeutiger Schlüssel verwendet. Die übrigen betroffenen Datensätze werden
gelöscht. Falsche Werte werden auf den nächstliegenden zulässigen Wert gesetzt
- alter_specification
o ADD
Hinzufügen von Spalten, Indizes, Keys
o ALTER
Default-Wert einer Spalte ändern
o CHANGE Name (und Datentyp) einer Spalte ändern
o MODIFY Definition einer Spalte ändern
o DROP
Löschen von Spalten, Indizes, Keys
o RENAME Name einer Tabelle ändern
RENAME TABLE tabname TO new_tabname
DESCRIBE tbl_name
- Anzeigen einer Tabellenstruktur
SHOW CREATE TABLE tbl_name
- Anzeigen des Create Statements
CREATE TABLE (… … ,
FOREIGN KEY (child_col) REFERENCES tbl_name (parent_col1, parent_col2, …)
[ON DELETE { RESTRICT | CASCADE | SET NULL | NO ACTION } ]
[ON UPDATE { RESTRICT | CASCADE | SET NULL | NO ACTION } ]
…) TYPE = InnoDB;
- Restrict = Man darf den Parent-Datensatz nicht löschen, solange noch
Verknüpfungen bestehen
- No Action = Ergebnis gleich mit Restrict
- Cascade = Verknüpfungen werden mitgelöscht
- Set Null = Verknüpfungen werden auf NULL gesetzt
CREATE INDEX index_name ON tbl_name (col_name [ ASC | DESC ])
 Erstellt den Index einer Tabelle
 Reihenfolge von links unbedingt einhalten
DROP INDEX index_name ON tbl_name
 Löscht den Index einer Tabelle
SHOW INDEX FROM tbl_name
 Indizes einer Tabelle auflisten
Data Manipulation Language
INSERT [IGNORE] INTO tbl_name [(col_name, …)] VALUES ({expr | DEFAULT},…),(…),…
 Col_name =Spaltennamen müssen angegeben warden
 Anzahl col_names und values müssen übereinstimmen
 IGNORE = Bei Schlüsselverletzungen durch Dubletten wird ein Datensatz nicht
eingefügt und die Fehlermeldung unterdrückt
 Eine Spalte, die als NOT NULL definiert ist und die in der INSERT Anweisung nicht mit
einem Wert versorgt wird, wird auf dem impliziten Standardwert für den
betreffenden Spaltendatentyp gesetzt:
o Numerischen Typen: 0
o String Typen: Leer-String(‘‘)
o Datums- und Zeittypen: Der „Nullwert“
 Setzen einer numerischen Spalte auf einen Wert außerhalb des zulässigen
Wertebereichs
o Der Wert wird auf den Min- bzw. Max. Wert des Wertebereichs gesetzt
UPDATE [IGNORE] tbl_name SET col_name1=expr1 [,col_name2=expr2 …] where
where_condition [LIMIT row_count]
 LIMIT = UPDATE wird beendet, sobald die Anzahl von row_count Datensätzen
gefunden wurden, die der WHERE-Klausel entsprechen
 REPLACE funktioniert auf exakt gleiche Weise wie der INSERT. Der Unterschied
besteht darin, wenn ein alter Datensatz denselben Wert wie ein neuer Datensatz für
einen Primärschlüssel oder einen eindeutigen Index hat, der alte Datensatz gelöscht
wird, bevor der neue eingefügt wird.
DELETE FROM tbl_name WHERE where_condition
TRUNCATE tbl_name
 TRUNCATE TABLE leert eine Tabelle vollständig, indem die Tabelle gelöscht und
anschließend neu erstellt wird.
 Schneller bei großen Tabellen als DELETE FROM TABLE
LOAD DATA [LOCAL] INFILE ‘file_name‘ INTO TABLE tbl_name [IGNORE number LINES]
 LOCAL zeigt an, dass die Eingabedatei auf dem Client liegt. Wird LOCAL nicht
angegeben, wird auf dem Server nach dem Dateinamen gesucht
 IGNORE number LINES: Die ersten number Zeilen der Eingabedatei werden ignoriert
und erst die folgenden Zeilen in die Tabelle eingelesen. z.B. Dokumentationszeilen
SELECT ListeSpalten FROM ListeTabellen [WHERE Bedingungen] [GROUP BY ListeSpalten]
[HAVING Auswahlbedingung] [ORDER BY Optionen]






WHERE schränkt die Ergebnismenge ein. In die Bedingung können
Vergleichsoperatoren eingesetzt werden.
Der Vergleich aus NULL wird mit IS NULL oder IS NOT NULL durchgeführt
Auswahlbedingungen können logisch mit AND und/oder OR verknüpft werden
Mit ORDER BY werden die Ergebnisspalte(n) sortiert. ASC sortiert aufsteigend, DESC
sortiert absteigend. Bei Angabe mehrerer Spalten wird zunächst nach der Ersten
sortiert, anschließend nach der Zweiten unter Berücksichtigung der Ersten,…
Mit GROUP BY wird die Ergebnismenge zusammengefasst. Die Verwendung von
GROUP BY ist nur sinnvoll in Verbindung mit Funktionen wie COUNT(), AVG(), …
HAVING ermöglicht eine weitere Einschränkung der Ergebnismenge. Wirkt nicht auf
die Originaldaten, sondern nur auf das Ergebnis einer Abfrage
SELECT DISTINCT ListeSpalten FROM ListeTabelle
 Die Spalten einer Tabelle ohne inhaltliche Duplikate ausgeben
Join
-
Verbindet zwei Relationen (ähnlich kartesischem Produkt)
Allerdings nur für solche Tupel, in der zwei bestimmte Attributwerte in einer
gewissen Beziehung zueinander stehen
Werden bei einer SELECT-Abfrage Informationen aus mehreren Tabellen
gewonnen, bezeichnet man die dazu notwendige Verknüpfungen als JOINs
Werden n Tabellen in einem JOIN miteinander verknüpft, müssen mind. N-1
JOIN-Bedingungen in der Abfrage formuliert werden
Regeln:
o Die Attribute, über die der JOIN ausgeführt wird, müssen nicht zwingend
Keys sein
o Die JOIN-Attribute der beiden Relationen müssen nicht den gleichen
Namen haben
o Jede Relation kann mit jeder anderen Relation geJOINt werden (auch mit
sich selbst!)
o Die den Join-Attributen zugrundgelegten Domänen müssen gleich sein
Theta-Join
-
Allgemeinste Form des JOIN
Die Beziehung, der ein JOIN-Attribut unterliegen muss wird mit THETA 8
bezeichnet und stellt einen der Vergleichsoperatoren dar
Inner Join
-
Standard Join über mehrere Tabellen
SELECT attr_name, attr_name2 FROM tbl_name, tbl_name2 WHERE attr1 = attr2
Full / Cross Join
-
Kartesisches Produkt zweier Tabellen
Wird in einer SELECT-Abfrage über zwei Tabellen keine WHERE-Klausel
formuliert, so wird automatisch das kartesische Produkt zwischen den beiden
Tabellen gebildet
Self-Join
-
Verknüpfung einer Tabelle mit sich selbst
Ein SELF JOIN verknüpft eine Tabelle mit sich selbst, um nach Beziehungen
zwischen den Zeilen einer Tabelle zu suchen
SELECT attr_1, attr_2 FROM tbl_1 tb1, tbl_1 tb2 WHERE attr_1 = X AND
tb1.attr_2 = tb2.attr2
Left / Right Join
-
Der LEFT JOIN versucht zu jeder Zeile der ersten Tabelle (links) ein Gegenstück in
der zweiten Tabelle zu finden (rechts)
RIGHT JOIN ist analog zum LEFT JOIN, nur, dass die Tabellenreihenfolge
vertauscht ist und es RIGHT JOIN heißt
SELECT Spaltenliste FROM table_left LEFT JOIN table_right ON LEFT-JOINBEDINGUNG | USING (spaltenliste) [WHERE weitere Bedingungen…]
ON LEFT JOIN Bedingung: Die LEFT-JOIN-Bedingung kann jede Bedingung
enthalten, die in einer WHERE-Klausel formuliert werden kann.
USING (spaltenliste): Enthält alle Spalten, die in beiden Tabellen existieren
müssen
Natural Join
-
Der NATURAL JOIN ist identisch zu einem INNER JOIN, der alle Spalten
miteinander verknüpft, die in beiden Tabellen vorkommen
Der NATURAL LEFT JOIN ist identisch zu einem LEFT-JOIN mit einer USING Klausel
SELECT Spaltenliste FROM tab_links NATURAL [LEFT] JOIN tab_rechts
UNION
-
SELECT … FROM … WHERE … UNION SELECT … FROM … WHERE … [UNION SELECT
…]
UNION fasst mehrere Ergebnismengen zu einer Menge zusammen. Die Struktur
der zusammenfassenden Spalten muss identisch sein
Die Spaltennamen und Datentypen der Ergebnismenge leiten sich aus der ersten
SELECT Abfrage ab
Alle Zeilen der Ergebnismenge sind eindeutig, d.h. Duplikate werden nicht
ausgegeben. Mit UNION ALL werden alle Zeilen inkl. aller Duplikate ausgegeben
Wird eine Tabelle mit einbezogen, deren Struktur ein Feld des ersten SELECT
nicht abdeckt, muss ein „Leerfeld“ (’’) in die Abfrage eingefügt werden
VIEWS
-
Ein View ist eine logische Relation
Der Datenbankbenutzer kann einen View wie eine normale Tabelle abfragen
Ein View stellt im Wesentlichen einen Alias für eine Abfrage dar
CREATE VIEW view_name AS select_statement
ALTER VIEW view_name AS select_statement
DROP VIEW [IF EXISTS] view_name
SHOW CREATE VIEW view_name
TRANSAKTIONEN
START TRANSACTION; …
…
COMMIT;
- START TRANSACTION leitet eine Transaktion ein
- COMMIT stößt die Abarbeitung der Anweisungen innerhalb der Transaktion aus
- Eine Transaktion ist eine Abfolge zusammenhängender Operationen, die als
unteilbare Operationen betrachtet werden
- Alle Vorgänge müssen als Ganzes durchgeführt oder zurückgenommen werden
- Eine Transaktion ist atomar, da sie nicht in kleinere Einheiten zerlegt werden
kann
- Es ist generell besser eine Transaktion aus zusammenhängenden Änderungen zu
verlieren, als eine Datenbank mit teilweise durchgeführten Änderungen
wiederherzustellen. Dies kann zu Inkonsistenz führen
- Um Transaktionen durchführen zu können, brauch man transaktionssichere
Tabellentypen (z.B. InnoDB)
Phasen der Datenbankentwicklung
-
Anforderungsanalyse (Projektumfeld)
o Ermittlung des Informationsbedarfs der Benutzer
o Informationsstruktur erfassen und festlegen
-
Konzepterstellung (semantisches Modell)
o Formale und strukturierte Beschreibung aller relevanten Objekte.
o Und deren Beziehungen untereinander -> ER-Modell
-
Entwurf eines verarbeitungsorientierten Modells
o Umsetzung des semantischen Datenmodells in ein relationales
-
Physischer Entwurf und Implementierung mit Software
o Modellierung der Datenbankstruktur mit einem relationalen
Datenbankmanagementsystem
-
Mögliche Probleme beim Verwalten von Daten
o Redundanz
 Da die Daten jeweils speziell für bestimmte Anwendungen
entworfen werden, werden dieselben Daten in verschiedenen
Dateien wieder auftauchen. Redundanz führt zu
Speicherverschwendung und zu erhöhten Verarbeitungskosten,
vor allem bei Änderungen. Schlimmer jedoch ist es, dass diese
Redundanz in der Regel nicht zentral kontrolliert wird, so dass
Konsistenzprobleme auftreten.
o Inkonsistenz
 Die Konsistenz der Daten kann nur schwer gewährleistet werden.
Bei der Änderung einer Größe müssten alle Dateien geändert
werden, die diese Größe beinhalten und diese Änderungen
müssten so miteinander abgestimmt geschehen, dass nicht
verschiedene Programme zum selben Zeitpunkt unterschiedliche
Werte derselben Größe sehen können
o
o
Daten-Programm-Abhängigkeiten
 Ändert sich der Aufbau einer Datei oder ihrer Organisationsform,
so müssen darauf basierende Programme geändert werden.
Wird beispielsweise für eine Anwendung ein weiteres
Datenelement in einem Satztyp benötigt, so müssen infolge der
notwendigen Neudefinitionen der Datei alle Programme
geändert werden, ob sie dieses neue Datenelement sehen wollen
oder nicht.
Inflexibilität
 Da die Daten nicht in ihrer Gesamtheit sondern nur
anwendungsbezogen gesehen werden, ist es in vielen Fällen sehr
kompliziert, neue Anwendungen oder Auswertung vorhandener
Daten zu realisieren. Dies gilt insbesondere für Auswertungen,
die Daten aus verschiedenen Dateien benötigen. Die
Organisation nach diesem konventionellen Vorgehen ist sehr
wenig anpassungsfähig an die sich verändernden Anforderungen
in einem Unternehmen
Herunterladen