7_Datenbanken_print

Werbung
Datenbanken
Energiewirtschaft
3. Semester
Tillman Swinke
Organisatorisches
l
Vorlesung am 25.11.2011 fällt aus!
l
Senden Sie mir zusätzliche Themen für den Abschluß
Agenda
Agenda
•
Lokale und zentrale Datenhaltung
Agenda
•
Lokale und zentrale Datenhaltung
•
Unterschied Datenbank und Dateisystem
Agenda
•
Lokale und zentrale Datenhaltung
•
Unterschied Datenbank und Dateisystem
•
AuJau Datenbanksystem
Agenda
•
Lokale und zentrale Datenhaltung
•
Unterschied Datenbank und Dateisystem
•
AuJau Datenbanksystem
•
Normalformen
Agenda
•
Lokale und zentrale Datenhaltung
•
Unterschied Datenbank und Dateisystem
•
AuJau Datenbanksystem
•
Normalformen
•
Entity-­‐Relationship-­‐Modelle
Agenda
•
Lokale und zentrale Datenhaltung
•
Unterschied Datenbank und Dateisystem
•
AuJau Datenbanksystem
•
Normalformen
•
Entity-­‐Relationship-­‐Modelle
•
SQL
Lokale Datenhaltung
Lokale Datenhaltung
Lokale Datenhaltung
Lokale Datenhaltung
Lokale Datenhaltung
Lokale Datenhaltung
Mehrbenutzer
Mehrbenutzer
Mehrbenutzer
Mehrbenutzer
Mehrbenutzer
Mehrbenutzer
Mehrbenutzer
?
Probleme Mehrbenutzer
Probleme Mehrbenutzer
1.
Redundante Speicherung Probleme Mehrbenutzer
1.
Redundante Speicherung 2.
Selten aktuelle Daten Probleme Mehrbenutzer
1.
Redundante Speicherung 2.
Selten aktuelle Daten 3.
Daten stets abhängig von Dateiformat
Probleme Mehrbenutzer
1.
Redundante Speicherung 2.
Selten aktuelle Daten 3.
Daten stets abhängig von Dateiformat
4.
Nur mit viel Aufwand von mehreren Benutzern verwendbar
Probleme Mehrbenutzer
1.
Redundante Speicherung 2.
Selten aktuelle Daten 3.
Daten stets abhängig von Dateiformat
4.
Nur mit viel Aufwand von mehreren Benutzern verwendbar
5.
Mangelnde Datensicherheit
Beispiel
Beispiel
•
Zugriffe auf ein gemeinsames Konto A zahlt 100 € ein,
• B hebt 300 € ab.
•
Ergebnis: neuer Konto-­‐Stand: ‘+100’ -­‐ statt ‘-­‐200’
Beispiel
•
Zugriffe auf ein gemeinsames Konto A zahlt 100 € ein,
• B hebt 300 € ab.
•
Kunde A
Kunde B Zeit
Read
Read
Konto = Konto + 100 €
Konto = Konto – 300 €
Write
Write
Ergebnis: neuer Konto-­‐Stand: ‘+100’ -­‐ statt ‘-­‐200’
Datenbanken
Datenbanken
•
MS Access
Datenbanken
•
MS Access
•
SQLite
Datenbanken
•
MS Access
•
SQLite
•
mySQL
Datenbanken
•
MS Access
•
SQLite
•
mySQL
•
Oracle
Datenbanken
•
MS Access
•
SQLite
•
mySQL
•
Oracle
•
DB2
Datenbanken
•
MS Access
•
SQLite
•
mySQL
•
Oracle
•
DB2
•
...
Zentrale Datenhaltung
Zentrale Datenhaltung
Zentrale Datenhaltung
Zentrale Datenhaltung
Zentrale Datenhaltung
Zentrale Datenhaltung
Zentrale Datenhaltung
Zentrale Datenhaltung
DB besser als Dateien?
DB besser als Dateien?
Warum ist jetzt eine zentrale Datenbank besser als ein normales Dateisystem?
Datenbank-­‐
Datenbank-­‐
Datenbank
(DB)
Vorteile von DB-­‐Systemen
Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen 4.
Datenunabhängigkeit
Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen 4.
Datenunabhängigkeit
5.
Mehrbenutzersystem Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen 4.
Datenunabhängigkeit
5.
Mehrbenutzersystem 6.
Datensicherheit Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen 4.
Datenunabhängigkeit
5.
Mehrbenutzersystem 6.
Datensicherheit 7.
Datenintegrität Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen 4.
Datenunabhängigkeit
5.
Mehrbenutzersystem 6.
Datensicherheit 7.
Datenintegrität 8.
Datenschutz
Vorteile von DB-­‐Systemen
1.
Redundanzfreie Speicherung 2.
Stets aktuelle Daten 3.
Vielseitige Anwendungen 4.
Datenunabhängigkeit
5.
Mehrbenutzersystem 6.
Datensicherheit 7.
Datenintegrität 8.
Datenschutz
9.
Benutzerfreundliche Sprache
DB-­‐Verwaltungssystem
DB-­‐Verwaltungssystem
•
Verhinderung von Konflikten bei mindestens einem Schreibzugriff auf das gleiche Element
Read-­‐Write-­‐Konflikt
• Write-­‐Read-­‐Konflikt
• Write-­‐Write-­‐Konflikt
•
Beispiel
Kunde A
Kunde B Zeit
Read
Read
Konto = Konto + 100 €
Konto = Konto – 300 €
Write
Write
Beispiel
•
Zugriffe auf ein gemeinsames Konto A zahlt 100 € ein,
• B hebt 300 € ab.
•
Kunde A
Kunde B Zeit
Read
Read
Konto = Konto + 100 €
Konto = Konto – 300 €
Write
Write
Ergebnis: neuer Konto-­‐Stand: ‘+100’ -­‐ statt ‘-­‐200’
Transaktion
Transaktion
•
Eine Transaktion ist eine Folge von elementaren Aktionen auf Datenobjekten, die als eine ‘atomare’ Einheit aufgefasst wird: •
Sie soll entweder vollständig oder überhaupt nicht ausgeführt werden.
Beispiel
Beispiel
Kunde A
Transaktion
Read
Zeit
Konto = Konto + 100 €
T1
Write
Kunde B
Read
Konto = Konto – 300 €
Write
T2
Beispiel
Kunde A
Transaktion
Read
Zeit
Konto = Konto + 100 €
T1
Write
Kunde B
Read
Konto = Konto – 300 €
Write
Systema
usfall
T2
Beispiel
Kunde A
Transaktion
Read
Zeit
Konto = Konto + 100 €
T1
Write
Kunde B
Read
Konto = Konto – 300 €
Write
Systema
usfall
T2
Beispiel
Kunde A
Transaktion
Read
Zeit
Konto = Konto + 100 €
T1
Write
Kunde B
Read
Konto = Konto – 300 €
Write
Systema
usfall
T2
Beispiel
Kunde A
Transaktion
Read
Zeit
Konto = Konto + 100 €
T1
Write
Kunde B
Read
Konto = Konto – 300 €
Write
Systema
usfall
T2
Rollback
Datenbankmodelle
Datenbankmodelle
•
Netzwerkmodell Datenbankmodelle
•
Netzwerkmodell •
Relationales Modell Datenbankmodelle
•
Netzwerkmodell •
Relationales Modell •
Semantische Datenmodelle Datenbankmodelle
•
Netzwerkmodell •
Relationales Modell •
Semantische Datenmodelle •
Objekt-­‐orientierte Modelle
Relationales Datenbankmodell
Relationales Datenbankmodell
E.F. Codd 1970
Relationales Datenbankmodell
E.F. Codd 1970
Beschreibung der Informationen in der Form von Tabellen
Relationales Datenbankmodell
E.F. Codd 1970
Beschreibung der Informationen in der Form von Tabellen
Einteilung in Struktur und Daten.
Relationales Datenbankmodell
E.F. Codd 1970
Beschreibung der Informationen in der Form von Tabellen
Einteilung in Struktur und Daten.
Tabelle:
Relationales Datenbankmodell
E.F. Codd 1970
Beschreibung der Informationen in der Form von Tabellen
Einteilung in Struktur und Daten.
Tabelle:
Daten werden als Zeilen dargestellt
Relationales Datenbankmodell
E.F. Codd 1970
Beschreibung der Informationen in der Form von Tabellen
Einteilung in Struktur und Daten.
Tabelle:
Daten werden als Zeilen dargestellt
Attribute werden als Spalten dargestellt
Beispiel
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Tabelle
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Attribut
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Tupel (Datensatz)
Relationales Datenbankmodell
Relationales Datenbankmodell
•
Tabellen für die Informationsgegenstände (Kauoaus: Abteilung, Mitarbeiter, Artikel)
Relationales Datenbankmodell
•
Tabellen für die Informationsgegenstände (Kauoaus: Abteilung, Mitarbeiter, Artikel)
•
Tabellen für die Beziehungen (z.T.) zwischen den Gegenständen (Kauoaus: Abteilung -­‐ Artikel). Relationales Datenbankmodell
•
Tabellen für die Informationsgegenstände (Kauoaus: Abteilung, Mitarbeiter, Artikel)
•
Tabellen für die Beziehungen (z.T.) zwischen den Gegenständen (Kauoaus: Abteilung -­‐ Artikel). •
Beziehungen werden mit Hilfe identifizierender Attribute abgebildet!
Identifikation
Identifikation
•
Einzelne Tupel werden zunächst über Ihre Attribute identifiziert.
Identifikation
•
Einzelne Tupel werden zunächst über Ihre Attribute identifiziert.
•
Nicht immer ist ein Attribut ausreichend.
Identifikation
•
Einzelne Tupel werden zunächst über Ihre Attribute identifiziert.
•
Nicht immer ist ein Attribut ausreichend.
•
Gefahr von Doppeldeutigkeiten
Beispiel
Vorname
Nachname
Abteilung
Michael
Ende
Marketing
Sabine
Sell
Verkauf
Johnny
Controletti
Controlling
Karl
Kannix
Management
Daniel
Datenbank
IT
Sabine
Kannix
Controlling
Attribute
Attribute
•
Jedes Attribut hat einen festgelegten Datentyp
•
•
•
•
•
•
•
•
•
•
•
•
•
INT FLOAT DOUBLE DECIMAL DATE DATETIME TIME YEAR CHAR VARCHAR BLOB TEXT ENUM 3
3,5
3,5
+3,50
31.12.2012.
2012-­‐05-­‐03 12:23:57
12:23:57
2012
C (feste Länge)
CC (variable Länge)
011001
asdlualsdf
{1,2,Apfel}
Primärschlüssel
Primärschlüssel
•
Um gleiche Datensätze zu vermeiden können Primärschlüssel vergeben werden
Primärschlüssel
•
Um gleiche Datensätze zu vermeiden können Primärschlüssel vergeben werden
•
Primärschlüssel können automatisch unique vergeben werden. D.h.: Das DBMS vergibt automatisch beim anlegen eine eindeutige ID
Primärschlüssel
•
Um gleiche Datensätze zu vermeiden können Primärschlüssel vergeben werden
•
Primärschlüssel können automatisch unique vergeben werden. D.h.: Das DBMS vergibt automatisch beim anlegen eine eindeutige ID
•
Gelöschte IDs werden NICHT neu vergeben
Beispiel
ID
Vorname
Nachname
Abteilung
1
Michael
Ende
Marketing
2
Sabine
Sell
Verkauf
3
Johnny
Controletti
Controlling
4
Karl
Kannix
Management
5
Daniel
Datenbank
IT
6
Sabine
Kannix
Controlling
7
8
...
Normalformen
•
1. Normalform
•
2. Normalform
•
3. Normalform
•
Boyce-­‐Codd-­‐Normalform (BCNF)
•
4. Normalform
•
5. Normalform
Normalformen
•
1. Normalform
•
2. Normalform
•
3. Normalform
•
Boyce-­‐Codd-­‐Normalform (BCNF)
•
4. Normalform
•
5. Normalform
Normalformen
•
1. Normalform
•
2. Normalform
•
3. Normalform
•
Boyce-­‐Codd-­‐Normalform (BCNF)
•
4. Normalform
•
5. Normalform
Für uns
interessant
1. Normalform
1. Normalform
•
Eine Relation befindet sich in der ersten Normalform, wenn jedes Attribut (nur) über elementare Ausprägungen verfügt. 1. Normalform
•
Eine Relation befindet sich in der ersten Normalform, wenn jedes Attribut (nur) über elementare Ausprägungen verfügt. •
D.h.:
keine Wiederholungsgruppen
• keine Feldgruppen
•
Beispiel 1. NF
Entspricht NICHT der 1. Normalform
Beispiel 1. NF
Bankverbindung
KdNr
KdName
1334 Postbank Essen (36010043)
10001
Tempelmann
4398 SEB Essen (36010111)
10001
Tempelmann
4665 SEB Dortmund (44010111)
10006
COLO AG
7596 SEB Dortmund (44010111)
10006
COLO AG
Entspricht NICHT der 1. Normalform
Beispiel 1. NF
Entspricht der 1. Normalform
Beispiel 1. NF
KtoNr
Bank
BLZ
KdNr
KdName
1334 Postbank Essen
36010043
10001
Tempelmann
4398 SEB Essen
36010111
10001
Tempelmann
4665 SEB Dortmund
44010111
10006
COLO AG
7596 SEB Dortmund
44010111
10006
COLO AG
Entspricht der 1. Normalform
2.Normalform
2.Normalform
•
Eine Relation ist genau dann in zweiter Normalform, wenn sie
in der ersten Normalform ist und
• Kein Attribut der Relation von einem anderen Attribut abgängig ist.
•
Beispiel 2.NF
Entspricht NICHT der 2. Normalform
Beispiel 2.NF
KtoNr
Bank
BLZ
KdNr
KdName
1334 Postbank Essen
36010043
10001
Tempelmann
4398 SEB Essen
36010111
10001
Tempelmann
4665 SEB Dortmund
44010111
10006
COLO AG
7596 SEB Dortmund
44010111
10006
COLO AG
Entspricht NICHT der 2. Normalform
Beispiel 2.NF
Entspricht der 2. Normalform
Beispiel 2.NF
KtoNr
BLZ
KdNr
KdName
1334 36010043
10001
Tempelmann
4398 36010111
10001
Tempelmann
4665 44010111
10006
COLO AG
7596 44010111
10006
COLO AG
Entspricht der 2. Normalform
Beispiel 2.NF
KtoNr
BLZ
KdNr
KdName
1334 36010043
10001
Tempelmann
4398 36010111
10001
Tempelmann
4665 44010111
10006
COLO AG
7596 44010111
10006
COLO AG
BLZ
Bank
36010043
Postbank Essen
36010111
SEB Essen
44010111
SEB Dortmund
Entspricht der 2. Normalform
3.Normalform
3.Normalform
•
Eine Relation ist genau dann in dritterNormalform, wenn sie
sich in der 2NF befindet, und • jedes Attribut von keinem Attribut transitiv abhängt.
(transitiv abhängig = über Umwege abhängig)
•
Beispiel 3. NF
Entspricht NICHT der 3. Normalform
Beispiel 3. NF
KtoNr
BLZ
KdNr
KdName
1334 36010043
10001
Tempelmann
4398 36010111
10001
Tempelmann
4665 44010111
10006
COLO AG
7596 44010111
10006
COLO AG
Entspricht NICHT der 3. Normalform
Beispiel 3. NF
KtoNr
BLZ
KdNr
KdName
1334 36010043
10001
Tempelmann
4398 36010111
10001
Tempelmann
4665 44010111
10006
COLO AG
7596 44010111
10006
COLO AG
BLZ
Bank
36010043
Postbank Essen
36010111
SEB Essen
44010111
SEB Dortmund
Entspricht NICHT der 3. Normalform
Beispiel 3. NF
Entspricht der 3. Normalform
Beispiel 3. NF
KtoNr
BLZ
KdNr
1334 36010043
10001
4398 36010111
10001
4665 44010111
10006
7596 44010111
10006
Entspricht der 3. Normalform
Beispiel 3. NF
KtoNr
KdNr
BLZ
KdNr
1334 36010043
10001
4398 36010111
10001
4665 44010111
10006
7596 44010111
10006
KdName
10001
Tempelmann
10006
COLO AG
Entspricht der 3. Normalform
Beispiel 3. NF
KtoNr
KdNr
BLZ
KdNr
1334 36010043
10001
4398 36010111
10001
4665 44010111
10006
7596 44010111
10006
KdName
BLZ
Bank
10001
Tempelmann
36010043
Postbank Essen
10006
COLO AG
36010111
SEB Essen
44010111
SEB Dortmund
Entspricht der 3. Normalform
Übung
Übung
•
Bringen Sie die folgende Tabelle in die 2.NF
Welche Datentypen würden Sie wählen?
Übung
•
Bringen Sie die folgende Tabelle in die 2.NF
Welche Datentypen würden Sie wählen?
Filmtitel
Spr. Szene
Länge
Szenentitel
Schauspieler
Over the Top
E
1
13 min
Intro
S.Stallone
Gladiator
D
2
9 min
Für Rom
R. Crowe
La Vita é bella
IT
5
23 min
Im Lager
R. Begnini
Terminator
E
2
46 min
At the bar
A. Schwarzeneg.
Gladiator
D
24
15 min
Hochzeit
J. Aniston
Over the Top
E
9
16 min
Crazy Heart
E
13
10 min
Walk in the park
Credits
S. Stallone,
J.Bridges
Lösung
ID
Filmtitel
Spr.
1
Over the Top
E
2
Gladiator
D
3
La Vita é bella IT
4
Terminator
E
5
Crazy Heart
E
ID
Schauspieler
1
R. Crowe
2
R. Begnini
3
A. Schwarzeneg.
4
J. Aniston
5
J.Bridges
6
S.Stallone
ID Sz.nr Sz. Titel
Länge
Film
Sch.
1
1
Intro
13 min
1
6
2
2
Für Rom
9 min
2
1
3
5
Im Lager
23 min 3
2
4
2
At the bar
46 min 4
3
5
24
Hochzeit
15 min 2
4
6
9
Walk in the park
16 min 1
5
7
9
Walk in the park
16 min 1
6
8
13
Credits
10 min 5
NULL
Lösung
Lösung
•
ID Integer
Lösung
•
ID Integer
•
Filmtitel Text
Lösung
•
ID Integer
•
Filmtitel Text
•
Sprache Text
Lösung
•
ID Integer
•
Filmtitel Text
•
Sprache Text
•
Szene Text
Lösung
•
ID Integer
•
Filmtitel Text
•
Sprache Text
•
Szene Text
•
Länge Integer
Lösung
•
ID Integer
•
Filmtitel Text
•
Sprache Text
•
Szene Text
•
Länge Integer
•
Szenentitel Text
Lösung
•
ID Integer
•
Filmtitel Text
•
Sprache Text
•
Szene Text
•
Länge Integer
•
Szenentitel Text
•
Schauspieler Text
Entity Relationship Modell (ERM)
Entity Relationship Modell (ERM)
•
Charakterisierung der Informationen als
•
Entities (Informationsobjekte) und Entity-­‐ Mengen
•
Beziehungen (Relationships) zwischen Entities zweier Klassen.
Entity Relationship Modell (ERM)
•
Charakterisierung der Informationen als
•
Entities (Informationsobjekte) und Entity-­‐ Mengen
Entity
•
Beziehungen (Relationships) zwischen Entities zweier Klassen.
Entity Relationship Modell (ERM)
•
Charakterisierung der Informationen als
•
Entities (Informationsobjekte) und Entity-­‐ Mengen
Entity
•
Beziehungen (Relationships) zwischen Entities zweier Klassen.
Relationship
Beispiel
Beispiel
Abteilu
Beispiel
Abteilu
Artikel
Beispiel
Abteilu
Mitarbe
Artikel
Beispiel
Abteilu
Mitarbe
verkauft
Artikel
Beispiel
Abteilu
arbeitet für
Mitarbe
verkauft
Artikel
1:n Beziehung
1:n Beziehung
•
Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity
1:n Beziehung
•
Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter.
1:n Beziehung
•
Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter.
Abteilu
arbeitet für
Mitarbe
1:n Beziehung
•
Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter.
Abteilu
1
arbeitet für
Mitarbe
1:n Beziehung
•
Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter.
Abteilu
1
arbeitet für
n
Mitarbe
n:m Beziehung
n:m Beziehung
•
Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity
n:m Beziehung
•
Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel
n:m Beziehung
•
Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel
Abteilu
verkauft
Artikel
n:m Beziehung
•
Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel
Abteilu
n
verkauft
Artikel
n:m Beziehung
•
Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity
•
Beispiel:
•
Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel
Abteilu
n
verkauft
m
Artikel
Beispiel
n
1
n
m
Beispiel
Abteilu
1
n
n
m
Beispiel
Abteilu
1
n
n
m
Artikel
Beispiel
Abteilu
1
n
Mitarbe
n
m
Artikel
Beispiel
Abteilu
1
n
Mitarbe
n
verkauft
m
Artikel
Beispiel
Abteilu
1
arbeitet für
n
Mitarbe
n
verkauft
m
Artikel
Übung
•
•
Entwerfen Sie ein einfaches ERM für eine Klausurverwaltung mit den Entities:
Student(Mat.Nr, Vorname, Nachname, ...)
Professor(Pers.Nr, Vorname, Nachname,...)
Klausur(Fach, Semester, ...)
Raum(Nr, Personenanzahl, ...)
Ergänzen Sie sinnvoll Entities und Attribute!
Lösung
Studen
Profess
n
schreibt
1
m
Klausur
1
Wird geschrieben in n
Raum
n
hält
SQL
SQL
•
Structured Query Language
SQL
•
Structured Query Language
•
Abfrage-­‐ oder auch Manipilationssprache für Datenbanken
SQL
•
Structured Query Language
•
Abfrage-­‐ oder auch Manipilationssprache für Datenbanken
•
Kleine Unterschiede je nach DBMS
Operationen
Operationen
Tabellenfunktionen
Operationen
Tabellenfunktionen
•
Anlegen Create
Operationen
Tabellenfunktionen
•
Anlegen Create
•
Benutzen Use
Operationen
Tabellenfunktionen
•
Anlegen Create
•
Benutzen Use
•
Ändern Alter
Operationen
Tabellenfunktionen
•
Anlegen Create
•
Benutzen Use
•
Ändern Alter
•
Löschen Drop
Operationen
Tabellenfunktionen
•
Anlegen Create
•
Benutzen Use
•
Ändern Alter
•
Löschen Drop
Datensatzfunktionen
Operationen
Tabellenfunktionen
•
Anlegen Create
•
Benutzen Use
•
Ändern Alter
•
Löschen Drop
Datensatzfunktionen
•
Kombinieren Join
Operationen
Tabellenfunktionen
Datensatzfunktionen
•
Anlegen Create
•
Kombinieren Join
•
Benutzen Use
•
Gruppieren Group
•
Ändern Alter
•
Löschen Drop
Operationen
Tabellenfunktionen
Datensatzfunktionen
•
Anlegen Create
•
Kombinieren Join
•
Benutzen Use
•
Gruppieren Group
•
Ändern Alter
•
Sortieren Order
•
Löschen Drop
Operationen
Tabellenfunktionen
Datensatzfunktionen
•
Anlegen Create
•
Kombinieren Join
•
Benutzen Use
•
Gruppieren Group
•
Ändern Alter
•
Sortieren Order
•
Löschen Drop
•
Einfügen Insert
Operationen
Tabellenfunktionen
Datensatzfunktionen
•
Anlegen Create
•
Kombinieren Join
•
Benutzen Use
•
Gruppieren Group
•
Ändern Alter
•
Sortieren Order
•
Löschen Drop
•
Einfügen Insert
•
Suchen Select
Operationen
Tabellenfunktionen
Datensatzfunktionen
•
Anlegen Create
•
Kombinieren Join
•
Benutzen Use
•
Gruppieren Group
•
Ändern Alter
•
Sortieren Order
•
Löschen Drop
•
Einfügen Insert
•
Suchen Select
•
Löschen Delete
Operationen
Tabellenfunktionen
Datensatzfunktionen
•
Anlegen Create
•
Kombinieren Join
•
Benutzen Use
•
Gruppieren Group
•
Ändern Alter
•
Sortieren Order
•
Löschen Drop
•
Einfügen Insert
•
Suchen Select
•
Löschen Delete
•
Updaten Udate
CREATE
CREATE
•
Create legt eine Tabelle an.
CREATE
•
Create legt eine Tabelle an.
CREATE
•
Create legt eine Tabelle an.
CREATE TABLE My_table(
my_field1 INT,
my_field2 VARCHAR(50),
my_field3 DATE NOT NULL,
PRIMARY KEY (my_field1, my_field2) );
USE
USE
•
Mit USE legt man fest welche Datenbank man mit den nächsten Befehlen benutzen möchte
USE
•
Mit USE legt man fest welche Datenbank man mit den nächsten Befehlen benutzen möchte
USE
•
Mit USE legt man fest welche Datenbank man mit den nächsten Befehlen benutzen möchte
USE database_name
ALTER
ALTER
•
Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen
ALTER
•
Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen
ALTER
•
Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen
ALTER
•
Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen
ALTER TABLE My_table ADD
my_field4 NUMBER(3) NOT NULL;
DROP
DROP
•
Mit Drop wird eine komplette Tabelle gelöscht.
DROP
•
Mit Drop wird eine komplette Tabelle gelöscht.
DROP
•
Mit Drop wird eine komplette Tabelle gelöscht.
DROP TABLE My_table;
INSERT
INSERT
•
Mit Insert wird in einer angegebenen Tabelle mit den mitgelieferten Daten ein neues Tupel (Datensatz) angelegt.
INSERT
•
Mit Insert wird in einer angegebenen Tabelle mit den mitgelieferten Daten ein neues Tupel (Datensatz) angelegt.
INSERT
•
Mit Insert wird in einer angegebenen Tabelle mit den mitgelieferten Daten ein neues Tupel (Datensatz) angelegt.
INSERT INTO My_table
(field1, field2, field3)
VALUES
('test', 'N', NULL);
UPDATE
UPDATE
•
Mit Update wird in einer angegebener Tabell ein spezifisches Attribut mit dem mitgeliefertem Wert überschrieben.
UPDATE
•
Mit Update wird in einer angegebener Tabell ein spezifisches Attribut mit dem mitgeliefertem Wert überschrieben.
UPDATE
•
Mit Update wird in einer angegebener Tabell ein spezifisches Attribut mit dem mitgeliefertem Wert überschrieben.
UPDATE My_table
SET field1 = 'updated value'
WHERE field2 = 'N';
DELETE
DELETE
•
Mit Delete wird von der angegebenen Tabelle ein oder mehrere Datensätze gelöscht.
DELETE
•
Mit Delete wird von der angegebenen Tabelle ein oder mehrere Datensätze gelöscht.
DELETE
•
Mit Delete wird von der angegebenen Tabelle ein oder mehrere Datensätze gelöscht.
DELETE FROM My_table WHERE field2 = 'N';
SELECT
SELECT
•
Mit einem SELECT wählt man ganze Tabellen oder einzelne Attribute aus.
SELECT
•
Mit einem SELECT wählt man ganze Tabellen oder einzelne Attribute aus.
SELECT
•
Mit einem SELECT wählt man ganze Tabellen oder einzelne Attribute aus.
SELECT *
FROM Book
WHERE title = ‘Der Schatten des Windes‘;
SELECT
SELECT
•
Zwecks einfacherem Handling können beim Select Attributnamen oder Tabellennamen umbenannt werden
SELECT
•
Zwecks einfacherem Handling können beim Select Attributnamen oder Tabellennamen umbenannt werden
SELECT
•
Zwecks einfacherem Handling können beim Select Attributnamen oder Tabellennamen umbenannt werden
SELECT title_book as booktitle
FROM Book
WHERE title = ‘Der Schatten des Windes‘;
WHERE
WHERE
•
Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden.
WHERE
•
Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden.
•
Hierzu stehen mehrere Operatoren zur Verfügung:
(=, !=, >, <, >=,<=)
WHERE
•
Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden.
•
Hierzu stehen mehrere Operatoren zur Verfügung:
(=, !=, >, <, >=,<=)
WHERE
•
Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden.
•
Hierzu stehen mehrere Operatoren zur Verfügung:
(=, !=, >, <, >=,<=)
SELECT *
FROM Book
WHERE price > 100.00
Funktionen
Funktionen
•
Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden:
Funktionen
•
Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden:
•
COUNT zählt die Vorkommen zusammen
Funktionen
•
Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden:
•
COUNT zählt die Vorkommen zusammen
•
SUM addiert die Werte zusammen
Funktionen
•
Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden:
•
COUNT zählt die Vorkommen zusammen
•
SUM addiert die Werte zusammen
•
AVG bildet den Durchschnitt der Werte
Funktionen
•
Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden:
•
COUNT zählt die Vorkommen zusammen
•
SUM addiert die Werte zusammen
•
AVG bildet den Durchschnitt der Werte
•
MAX gibt das Maximum der Werte zurück
Funktionen
•
Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden:
•
COUNT zählt die Vorkommen zusammen
•
SUM addiert die Werte zusammen
•
AVG bildet den Durchschnitt der Werte
•
MAX gibt das Maximum der Werte zurück
•
MIN gibt das Minimum der Werte zurück
Wildcards
Wildcards
•
Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden:
Wildcards
•
Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden:
•
* Alles
Wildcards
•
Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden:
•
* Alles
•
Like ähnlich wie
Wildcards
•
Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden:
•
* Alles
•
Like ähnlich wie
•
*en alles das mit „en“ endet
Wildcards
•
Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden:
•
* Alles
•
Like ähnlich wie
•
*en alles das mit „en“ endet
•
BETWEEN x AND y alles zwischen x und y
Beispiele
Beispiele
SELECT
rechnungsnr,
sum(rechnungswert) AS Umsatz
FROM Rechnungen
GROUP BY Book.title;
Beispiele
SELECT
rechnungsnr,
sum(rechnungswert) AS Umsatz
FROM Rechnungen
GROUP BY Book.title;
SELECT
price,
price * 0.19 AS sales_tax
FROM Book
WHERE price > 100.00
ORDER BY title;
ORDER BY
ORDER BY
•
Mit order by werden die Ergebnisse sortiert
ORDER BY
•
Mit order by werden die Ergebnisse sortiert
•
Es wird angegeben nach welchem/welchen Attribut(en) sortiert werden soll
ASC • DESC •
(Ascending = Aufsteigend)
(Descending = Absteigend)
ORDER BY
•
Mit order by werden die Ergebnisse sortiert
•
Es wird angegeben nach welchem/welchen Attribut(en) sortiert werden soll
ASC • DESC •
(Ascending = Aufsteigend)
(Descending = Absteigend)
SELECT * FROM
Book
WHERE price > 100.00
ORDER BY title DESC;
JOIN
JOIN
•
Mit Join werden vor der Selektion mehrere Tabellen zusammengeführt (Kreuzprodukt!)
JOIN
•
Mit Join werden vor der Selektion mehrere Tabellen zusammengeführt (Kreuzprodukt!)
•
Es muss hierbei angegeben werden an welchem Punkt die beiden Tabellen miteinander übereinstimmen müssen
GROUP
GROUP
•
Mit Group werden die Ergebnisse mit nach dem angegebenen Attribut gruppiert.
GROUP
•
Mit Group werden die Ergebnisse mit nach dem angegebenen Attribut gruppiert.
•
Alle Datensätze die dieses Attribut gleich haben werden zusammengefasst.
GROUP
•
Mit Group werden die Ergebnisse mit nach dem angegebenen Attribut gruppiert.
•
Alle Datensätze die dieses Attribut gleich haben werden zusammengefasst.
•
!! Hier können Datensätze rausfallen!!
Transaktionen
Transaktionen
START TRANSACTION;
UPDATE Account
SET amount=amount-200
WHERE account_number=1234;
UPDATE Account
SET amount=amount+200
WHERE account_number=2345;
IF ERRORS=0 COMMIT;
IF ERRORS<>0 ROLLBACK;
Geschachtelte Ausdrücke
Geschachtelte Ausdrücke
•
SQL-­‐Abfragen lassen sich auch schachteln und beispielsweise als Bedingung einfügen
Geschachtelte Ausdrücke
•
SQL-­‐Abfragen lassen sich auch schachteln und beispielsweise als Bedingung einfügen
•
„Nested Querries“ werden von aussen nach innen abgearbeitet. Äußere Attribute können in inneren Abfragen verwendet werden.
Geschachtelte Ausdrücke
•
SQL-­‐Abfragen lassen sich auch schachteln und beispielsweise als Bedingung einfügen
•
„Nested Querries“ werden von aussen nach innen abgearbeitet. Äußere Attribute können in inneren Abfragen verwendet werden.
SELECT Model FROM Product
WHERE ManufacturerID =
(SELECT ManufacturerID
FROM Manufacturer
WHERE Manufacturer = 'Dell')
Zusammenfassung
•
Lokale und zentrale Datenhaltung
•
Unterschied Datenbank und Dateisystem
•
AuJau Datenbanksystem
•
Normalformen
•
Entity-­‐Relationship-­‐Modelle
•
SQL
Fragen?
•
T. Swinke
•
tillman.swinke@h-­‐da.de
•
http://www.swinke.net/standardsoftware
Herunterladen