TDO- HEFT
Josef Widder
4. HBa
Inhaltsverzeichnis
1 SQL (STRUCTURED QUERY LANGUAGE) 5
1.1 Relationeale Datenbanken- Relational database 5
1.2 Karthesische Produkt und die Join Bedingung 6
1.3 Equijoin 8
1.4 Gruppenfunktionen 8
1.5 Subselect 9
1.6 Group by 12
1.7 Having 13
1.8 Order by 15
1.9 NULL- Values 16
1.10 Reihenfolge der Abarbeitung 16
1.11 Subselects, die Paare ergeben 17
1.12 Vergleiche in SQL 17
1.13 Funktionen in SQL 17
1.14 Outer Join 18
2 VORÜBUNGEN FÜR DATENBANKENTWURF 19
3 NACHTEILE VON ZERLEGBAREN TABELLEN 20
4 DATENBANKENTWURF 20
4.1 Vorgangsweise bei Datenbankentwurf 21
5 ENTITY- RELATIONSHIP DIAGRAMME (ERDS) 23
5.1 Kardinalitäten: 23
5.2 Erste Datenbankentwürfe 24
5.3 Schul- ERD (XESAS) 26
6 TRANSAKTIONEN 27
6.1 Serielle Schedule 28
6.2 Nicht serielle Schedule (Verzahnt) 28
6.3 Rollback 33
7 PROTOKOLLE (PROTOCOLS) 34
8 GRANULARITÄT (GRANULARITY) 35
SQL (Structured Query Language)
Relationeale Datenbanken- Relational database
Bei einer relationalen Datenbank sind die Daten in Tabellenform gespeichert.
Tabelle |
|
|
|
|
|
|
|
|
|
|
SNr. |
Vorname |
Zuname |
Alter |
|
3 |
Max |
Müller |
16 |
|
18 |
Peter |
Berger |
17 |
Datensatz |
12 |
Herbert |
Maier |
16 |
|
13 |
Gunther |
Müller |
16 |
|
5 |
Sigfried |
Gunaker |
18 |
|
SQL steht für structured query language (Strukturierte Abfragesprache)
select ZN, SNR bestimmt aus welcher Tab. Daten gehohlt werden
from schüler gibt an welche Zeile
where A>16 and ... gibt an welche Spalte 22653dxm55kzn3b
BEISPIEL 1.01 (Alle Schüler mit dem Vorname Josef die älter als 16 sind)
select ZN
from schüler
where VN=´Josef´and A>16 xz653d2255kzzn
BEISPIEL 1.02 (Alle Piloten mit mehr als 1000 Flugstunden)
Vorname |
Zuname |
Flugstunden |
Max |
Müller |
16 |
Peter |
Berger |
17 |
Herbert |
Maier |
16 |
Gunther |
Müller |
16 |
Sigfried |
Gunaker |
18 |
select ZN
from pilot
where Flugstunden> 1000
Karthesische Produkt und die Join Bedingung
|
Tabelle: Spieler |
|
Tabelle: Verein |
|
| |div align= "left" style="text-indent: 0pt;margin-left: 0pt;margin-top: 0pt;margin-bottom: 0pt;margin-right: 0pt;line-height: 100%;">ZN |
Verein |
|
Verein |
Präsident |
|
Herzog |
Bremen |
|
Bremen |
Pfanner |
|
Stanzl |
Austria |
|
Austria |
Haym |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SQL bildet eine neue Tabelle mit allen Atributen |
Spieler.ZN |
Spieler.Verein |
Verein.Verein |
Verein.Präsident |
|
Herzog
| Bremen |
Bremen |
Pfanner |
ü |
Herzog |
Bremen |
Austria |
Haym |
û |
Stanzl |
Austria |
Bremen |
Pfanner |
û |
Stanzl |
Austria |
Austria |
Haym |
ü |
Um alle "richtigen" Daten herauszufiltern muß man von der Join Bedingung gebrauch machen: where S.Verein=V.Verein
BEISPIEL 2.01 (Alle Stewardes mit deren Piloten)
Stewardes |
Flugzeug |
Alter |
|
Pilot |
Flugzeug |
Alter |
Roth |
36 |
31 |
|
Mayer |
71 |
35 |
Blau |
19 |
29 |
|
Müller |
36 |
37 |
Grün |
36 |
34 |
|
|
|
|
select SF.Stewardes, PF.Pilot
from SF, PF
where SF.Flugzeug= PF.Flugzeug
bei dem Befehl from SF, PF bildet SQL folgende Tabelle
SF.Stewardes |
SF.Flugzeug |
SF.Alter |
PF.Pilot |
PF.Flugzeug |
PF.Alter |
Roth |
36 |
31 |
Mayer |
71 |
35 |
Roth
| 36 |
31 |
Müller |
36 |
37 |
Blau |
19 |
29 |
Mayer |
71 |
35 |
Blau |
19 |
29 |
Müller |
36 |
37 |
Grün |
36 |
34 |
Mayer |
|