Folien zu Datenbanken - Fachhochschule Südwestfalen

Werbung
Fachhochschule Südwestfalen
Hochschule für Technik und Wirtschaft
Daten banken
Lernziele
§ Der Studierende soll sich mit Datenbanken im betrieblichen Einsatz
auseinandersetzen
§ Er soll typische Datenbankanwendung kennen lernen und selbst erstellen
§ Schwerpunkte:
§ Datenbankentwurf mit Entity Relationship Model und Normalisierung
§ SQL
§ Datenbanktechnik
§ Data Warehousing / Business Intelligence
Folie 2 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Literaturhinweise
§ Date95
§ Heu92
§ Scheer98
§ SQL92
§ Teor94
§ DVZ
§ Klug06a
§ Klug06b
Folie 3 von 107
Date: An Introduction to Database Systems, sixth ed.,
Addison-Wesley, 1995
Heuer: Objektorientierte Datenbanken,
Addison-Wesley, Bonn 1992
Scheer: Wirtschaftsinformatik, Referenzmodelle für
industrielle Geschäftsprozesse, Springer 1998
SQL2-Sprachstandard; Document ISO/IEC-9075: 1992
T.J. Teory: Database Modeling & Design, Second
Edition, Morgan Kaufmann, San Francisco, 1994
RRZN-Handbücher, http://www3.fh-swf.de/dvz/rrzn.htm
U. Klug: SQL: Der Einstieg in der deklarative
Programmierung, W3L-Verlag, Herdecke, Witten, 2006
U. Klug: Datenbankanwendungen entwerfen und
programmieren, W3L-Verlag, Herdecke, Witten, 2006
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Inhalt
§ Vorlesung:
§ Datenbank-Entwurf, Entity Relationship Model, Normalisierung
§ Abfragesprache SQL (Structured Query Language)
§ Datenbank-Techniken: Transaktionskonzept (OLTP), Sperren, Index
§ Verteilte Datenbank; Client/Server-Computing
§ Data Warehousing
§ Objektorientierte Datenbanken (OODB)
§ Praktikum:
§ Einführung in Microsoft Access
§ Datenbankentwurf (ERM, Normalisierung)
§ SQL mit Access
§ VBA in Access
§ ODBC, JDBC
Folie 4 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Beispiel: Oracle-Datenbank für SAP ERP®
Datenbankserver
Applikationsserver 1
(Backup-Datenbankserver)
Switched TokenRing
RS6000 / R50
AIX 4.2
Oracle 7.3.3.3
FDDI
RS6000 / R50
Diensterechner
Applikationsserver 2
Applikationsserver 3
RS6000
Patrol-Konsole
RS6000
RS6000
InvestitionsBank des Landes Brandenburg - Produktive SAP-Umgebung / PATROL
Folie 5 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Integrierte Informationsverarbeitung
§ Teilbereiche des betrieblichen Informationssystems
§ Planungs- und Entscheidungssysteme
§ Analyse-Informationssysteme
§ Berichts- und Kontrollsysteme
§ Wertorientierte Abrechnungssysteme
§ Mengenorientierte operative Systeme
Folie 6 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Vorgehensweise bei DV-Projekten
§ Problemanalyse (Fachlich und DV-technisch)
§ Anforderungen
§ IST-Analyse mit Schwachstellen
§ Fachkonzept
§ Soll-Konzept (Pflichtenheft)
§ Funktions- und Datenmodell (UML, ERM)
§ DV-Konzept
§ Entwurf (UML)
§ Benutzeroberfläche (Menüs, Formulare/Masken, Berichte)
§ Schnittstellen
§ System-Architektur (Hardware, Netzwerk, Software)
§ Produktentscheidung (Betriebssystem, Programmiersprache,
Datenbank, Netzwerk, Anwendungen, ...)
Folie 7 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Vorgehensweise bei DV-Projekten
§ Wirtschaftlichkeits-Analyse
§ Entwurf
§ Funktionsentwurf
§ Datenentwurf
§ Realisierung (Produktkauf oder Programmierung)
§ Test
§ Modultest
§ Integrationstest
§ Schulung, Dokumentation, Hilfe, Mehrsprachigkeit
§ Einführung
§ Wartung und Pflege
Folie 8 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Sollkonzept
§ Beschreibung der Gesamtaufgabe des Systems
§ Beschreibung aller Geschäftsprozesse (Workflow)
§ Prozesse (Aktionen)
§ Sicherheit
§ Rollen (Benutzer)
§ Zugriffsrechte
§ Dokumente
§ Ausfallsicherheit
§ Ereignisse
§ Verschlüsselung
§ Ereignisgesteuerte Prozesskette
(Ereignis, Rolle, Aktion und Dokument)
§ Beschreibung aller Objekte
§ Entities bzw. Objekte und ihre Beziehungen (ERM)
§ Funktionsmodell
§ Objekthierarchien (Klassenhierarchien)
§ Eingabe- und Ausgabe-Daten
§ Übernahme aus Altsystemen und über Schnittstellen
§ Integritätsbedingungen (Wertebereiche, Plausibilität)
Folie 9 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Eigenschaften einer Datenbank
Eigenschaft
Datenunabhängigkeit
Dateisystem
Datenbanksystem (relat.) (ERP)
Keine, da Datenstruktur
Datenunabhängigkeit durch Projektion und Views sowie durch
im Programm
Trennung in externes, konzeptionelles und physisches Schema
Datensicherheit
Tagessicherung
Logging aller Datenänderungen
Zugriffsschutz
Auf Dateiebene
Auf Satz- und Feldebene, inhaltsbezogen
Beziehungen
-
Durch Fremdschlüssel
Redundanz
Hoch
Gering
Konsistenz
-
Erhaltung wird durch Transaktionskonzept unterstützt
Integrität
-
Referentielle Integrität; Definition von Integritätsregeln
Aktualität
Weitgehend
Ja, durch direkte Änderung
Abfragesprache
-
SQL
Schneller Zugriff
B*-Baum, Hash
B*-Baum, Hash
Zugriffsform
Einzelsatz-Zugriff
Mengenzugriff
Synchronisation im
Sperren auf Satzebene
Sperren auf Transaktionsebene
Wenige
Viele Tools für die Anwendungserstellung
Mehrbenutzerbetrieb
Tools
Folie 10 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Unterschied: Datei- und Datenbankanwendung
bzw. Integrierte und nicht integrierte Anwendungen
Anwendung 1
Anwendung 2
Anwendung 3
Anwendungen
mit Dateien bzw. mehreren
Datenbanken
Datei 1 /
Datenbank 1
Import
Anwendungen
Datei 2 /
Datenbank 2
Datei 3 /
Datenbank 3
Schnittstelle
Anwendung 1
Anwendung 2
Anwendung 3
mit Datenbank
ERP-System
Datenbank
Folie 11 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Einsatzmöglichkeiten
§ Unternehmensweite Softwaresysteme
§ Buchungssysteme, Verwaltungssysteme
§ Auftragsbearbeitung, Fakturierung
§ PPS, Materialwirtschaft
§ Fertigung
§ CAD, Stückliste
§ Vertriebsunterstützung
§ Datenanalyse
§ Datenspeicherung
§ Messdaten
§ Prozessdaten
§ Geografische Daten
§ Listen
§ Adresslisten
§ Telefonverzeichnisse
§ Offene Punkte-Listen
§ Termin-Daten
Folie 12 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenmodelle
§ Hierarchisches Modell
§ Netzartiges Modell
§ Relationales Modell
§ Multidimensionale Datenbank
§ Objektorientierte Datenbank
Folie 13 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbank-Architektur
§Externe Datensicht
A
bteilung
§ Sicht der Benutzer
§ Sicht der Anwendungen
P
rojekt
M
itarbeiter
§Konzeptionelle Datensicht
§ Sicht der kompletten Daten
§ Verwaltet durch
Datenbankadministrator
§Physische Datensicht
§ Sicht der „Physik“
§ Verteilung im Netz
§ Verteilung auf Speichermedien
§ Zugriffsstrukturen
Folie 14 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Beispiel: Auftragsdatenbank
§ Relationale Datenbank
besteht aus Tabellen mit
Kunde
§ Primärschlüssel PK
KuNr
2345
2845
3288
3339
3390
3614
4711
9876
§ Fremdschlüssel FK
Auftrag
§ Zeilen (Datensätze)
§ Spalten (Attribute)
§ Referenzielle
Integrität
AufNr
10
20
30
60
101
Name
Maier
Meier
Starke
Steger
Braun
Muschel
Simonsen
van Preen
Vorname
Otto
Hans
Heinz
Ute
Peter
Paul
Peter
Julia
PLZ
43356
22345
16654
12234
45546
12345
18567
53446
Ort
Düsseldorf
Hamburg
Berlin
Berlin
Düsseldorf
Berlin
Berlin
Bonn
Straße
Graf-Adolf-Str. 10
Max Brauer Allee 5
Otto Platz 10
An der Spree 210
Berner Str. 20
Berliner Str. 51
Berliner Str. 51
Reuter Str. 10
KredLim
3200
3600
0
6300
2900
5200
4400
5000
Position
KuNr
4711
3288
3339
2345
3614
AufDat
05.08.88
02.02.89
14.03.89
12.08.88
06.03.89
LiefDat
01.10.88
21.02.89
28.03.89
20.09.88
16.03.89
ArtNr
2002
2002
3002
3002
3002
4001
7001
AufNr Menge
10
10
30
20
10
5
30
10
60
20
30 100
101
3
Artikel
ArtNr
2001
2002
3001
3002
4001
5001
7001
Folie 15 von 107
Datenbanken – Stand: September 2014
ArtBez
Einbruchalarm
Saugrohr
Ultraschall-Gerät AL 100
Ausgießen
Bewegungsmelder
Lichtschranken-System
Infrarot Photo-Sensor
EkPreis
400,00
3,50
80,00
3,50
60,00
50,00
120,00
Prof. Dr. Stefan Böcker
VkPreis
498,00
4,95
119,00
4,95
98,00
79,50
165,00
MinBest LagMen
50
500
500
1000
50
150
500
1000
50
300
30
100
100
1000
Relationale Datenbank
§ 12 Codd‘sche Regeln
§ Selektion
§ Projektion
§ Verbund / Join
§ Entitäts-Integrität
§ Referenzielle Integrität
§ Benutzerdefinierte Integrität
§ ...
Folie 16 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL – Structured Query Language
§ DDL - Data Definition Language
§ CREATE (Anlegen von Tabellen, Sichten, Indexen, ...)
§ ALTER (Ändern)
§ DROP (Löschen)
§ DML - Data Manipulation Language
§ SELECT (Abfragen)
§ INSERT (Einfügen von Zeilen)
§ UPDATE (Ändern)
§ DELETE (Löschen)
§ DCL - Data Control Language
§ GRANT (Vergabe von Zugriffsrechten)
§ REVOKE (Zurücknahme von Zugriffsrechten)
§ COMMIT (Abschluss einer Transaktion)
§ ROLLBACK (Abbruch einer Transaktion)
Folie 17 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL - Beispiele
§ Datensatz selektieren
§ SELECT Name, Ort, KredLim
FROM Kunde
WHERE Ort = 'Berlin';
§ Datensatz einfügen
SQL ist eine
deskriptive Sprache:
Es wird formuliert,
was und nicht wie
etwas abgefragt wird!
§ INSERT
INTO Kunde
VALUES (4712, 'Müller' , 'Tim', ...);
§ Datensatz löschen
§ DELETE
FROM Kunde
WHERE KuNr = 4711;
Folie 18 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbank-Entwurf
§ Entwurf der Tabellen
§ Welche Tabellen und Spalten
§ Datentyp der Spalten
§ Integritätsregeln
§ Beziehungen zwischen den Tabellen festlegen
§ referenzielle Integrität
Konzeptionelle Datensicht
§ Verteilung der Datenbank
§ auf den Speichermedien
Physische Datensicht
§ im Rechnernetz
§ Tuningmaßnahmen
§ Benutzersichten und Zugriffsrechte
Folie 19 von 107
Datenbanken – Stand: September 2014
Externe Datensicht
Prof. Dr. Stefan Böcker
Entity Relationship Model
Modellierung
Beziehungen
Objekte der realen Welt
z.B. Kunden, Aufträge, Artikel ...
ERM
„Erfinder“: Chen
Folie 20 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Entity Relationship Model
Modellierung
Beziehungen
Objekte der realen Welt
z.B. Kunden, Aufträge, Artikel ...
§ Starke, eigenständige Entities: z.B. Kunde
§ Schwache, abhängige Entities: z.B. Kundenname
E
R
M
Folie 21 von 107
ermittelt Beziehungen zwischen starken Entities
LOGISCHES MODELL
und leitet daraus die Tabellenstrukturen ab
PHYSISCHES MODELL
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Schritte zum ERM
1. Intuitiver Entity-Entwurf
§ Ausgehend von einer Informationssammlung
§ Werden zusammengehörige Entities zusammen gefasst;
z.B. Kundenname, Kundenadresse, ... zur Entity „Kunde“
2. Ermittlung der Beziehungen dieser Entities
§ Einzelbeziehungen (i.a. Beziehung zwischen je 2 Entities)
§ Gesamtdarstellung aller Beziehungen
3. Ableiten der Tabellenstrukturen
Folie 22 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Typ der Beziehung
§ Beziehungstyp 1:N
1
Abteilung
Eine Abteilung hat mehrere (also N)
Mitarbeiter; ein Mitarbeiter gehört zu
einer (also 1) Abteilung
N
hat
Mitarbeiter
§Beziehungstyp N:M
N
Mitarbeiter
arbeitet
in
Ein Mitarbeiter arbeitet in mehreren (M)
Projekten; ein Projekt beschäftigt
mehrere (N) Mitarbeiter
M
Projekt
§Beziehungstyp 1:1
1
Mitarbeiter
Folie 23 von 107
1
leitet
Datenbanken – Stand: September 2014
Abteilung
Ein Mitarbeiter leitet eine (1) Abteilung;
eine Abteilung wird von einem (1)
Mitarbeiter geleitet
Prof. Dr. Stefan Böcker
Existenz
Unterscheidung in KANN- und MUSS-Beziehungen
1
1
leitet
Mitarbeiter
muss
Abteilung
kann
Alternative Notationen:
min
max
Crowfoot-Format
(1,1)
(0,1)
leitet
Mitarbeiter
(1,1)
Abteilung
Abteilung
(0,N)
hat
Mitarbeiter
UML
Mitarbeiter
Folie 24 von 107
1
leitet
0..1
Abteilung
Datenbanken – Stand: September 2014
weitere Notationen: 0..* , 1..*
Prof. Dr. Stefan Böcker
Grad der Beziehung
§ Binäre Beziehungen
1
N
Abteilung
hat
Mitarbeiter
§ Es sind 2 Entities an der Beziehung beteiligt
§ Ternäre Beziehungen
N
Projekt
N
M
benötigt
Mitarbeiter
Lieferant
M
liefert
P
P
Qualifikation
Firma
§ Es sind 3 oder n Entities an der Beziehung beteiligt (ternär, n-är)
Folie 25 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Teil
Anzahl
Grad der Beziehung
§ Rekursiv binäre Beziehungen
1
Mitarbeiter
ist
verheiratet
mit
1
Mitarbeiter
Männer
Frauen
§ Es ist nur ein Entity an der Beziehung beteiligt, die Beziehung ist rekursiv
§ Alternative Notation:
1
Mitarbeiter
1
Folie 26 von 107
ist
verheiratet
mit
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Grad der Beziehung
§ Rekursiv binäre Beziehungen
§ Mutter-Kind
1
ist
Mutter
von
Person
N
Person
Mütter
Kinder
§ Stückliste
N
Teil
ist
Oberteil
von
Baugruppen
Folie 27 von 107
Datenbanken – Stand: September 2014
M
Teil
Teile
Prof. Dr. Stefan Böcker
Spezialisierung und Aggregation
§ Spezialisierung / Generalisierung: IS-A-Beziehungen
Techniker
Grundmenge / Supertyp
Teilmengen / Subtypen
IS-A
d
Mitarbeiter
Manager
Sekretärin
§ Aggregation: PART-OF-Beziehungen
Programm
SoftwareProdukt
PART-OF
Dokument
Folie 28 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Spezialisierung und Aggregation
§ Uminterpretation von Beziehungstypen zu Entitytypen:
Beziehung wird zu Entity
Auftrag
N
N
enthält
wird
bearb.
von
1
Mitarbeiter
M
Artikel
Folie 29 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Beispiel für ein vollständiges ERM
(Projektdatenbank)
Folie 30 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Redundanz
Erkennbar in Gesamtdarstellung des
ERM bei geschlossenen Kreisen
1
Geschlossener Kreis mit identischen
Informationen = redundante Beziehung.
Korrigieren!
1
Kunde
Auftrag
erteilt
N
bevorzugt
gehört zu
N
N
redundante
Beziehungen
enthält
N
M
Artikel
nicht-redundante
Beziehungen
enthält
M
Artikel
M
Folie 31 von 107
Auftrag
erteilt
Kunde
gehört
bestelltzu
N
N
Datenbanken – Stand: September 2014
M
Geschlossener Kreis mit
unterschiedlichen Informationen =
nicht-redundante Beziehung.
Prof. Dr. Stefan Böcker
Ableiten der Tabellen
◆
1:N-Beziehung
1
a)
N
erteilt
Kunde
Auftrag
!
2 Tabellen: Kunde, Auftrag. Primärschlüssel der 1-Seite wird
Fremdschlüssel der N-Seite:
Tabelle Kunde
Tabelle Auftrag
KdNr
Name
Vorname
AuftrNr
AuftrNr
AuftrDat
Name
KdNr
2000
Müller
Kerstin
4843
4791
21.03.00
Möller
2003
2001
Meier
Tom
4820
4820
16.09.00
Meier
2001
2002
Schmitz
Sven
...
4843
07.11.00
Müller
...
2003
Möller
...
...
4898
12.02.01
...
...
Liste!
Folie 32 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Ableiten der Tabellen
◆
1:N-Beziehung
b)
?
1
Lieferadresse
N
erteilt
Kunde
Auftrag
!
Lösung 1: Zwei Tabellen wie Fall a), jedoch mit Lücken bei
Aufträgen ohne Kundenbezug.
Lösung 2: Dritte Tabelle, die nur Beziehungen enthält, wenn
wenig Aufträge mit Kundenbezug vorhanden sind:
Beziehungstabelle KundenAuftrag
Folie 33 von 107
KdNr
AuftrNr
2003
4791
Plutostr. 46-48, 80433 ...
2001
4820
Venusweg 27, 10571 B...
2000
4843
Merkurallee 10, 28352 ...
Datenbanken – Stand: September 2014
Lieferadresse
Prof. Dr. Stefan Böcker
Ableiten der Tabellen
◆
N:M-Beziehung
N
Mitarbeiter
arbeitet
in
M
Projekt
2 Grundtabellen und eine Beziehungstabelle.
Neuer Primärschlüssel in der Beziehungstabelle setzt
sich aus 2 Fremdschlüsseln der Grundtabellen zusammen.
Beispiel: Mitarbeiter-Tabelle, Projekt-Tabelle sowie Tabelle
ProjektMitarbeit:
Folie 34 von 107
MaNr
ProjNr
4711
17
4712
Reisekosten
AnzStd
...
...
...
18
...
...
...
4713
19
...
...
...
4712
17
...
...
...
Datenbanken – Stand: September 2014
( Datum )
Prof. Dr. Stefan Böcker
Ableiten der Tabellen
◆
1:1-Beziehung
a)
2 Tabellen. Primärschlüssel aus MUSS-Seite wird Fremdschlüssel bei
KANN-Seite. Hier MaNr = FK in Abteilung (ansonsten viele leere Felder).
b)
1 Tabelle.
c)
Tabelle Paare:
MA1
wie Fall a) Oder zusätzliche Beziehungstabelle,
falls wenig Beziehungen vorhanden
Folie 35 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
MA2
Seit
Ableiten der Tabellen
◆
Ternäre-Beziehung bzw. n-äre-Beziehung
N
Lieferant
M
liefert
Teil
P
Anzahl
Firma
n Tabellen + 1 Beziehungstabelle, bei ternärer Beziehung also 4 Tabellen.
Beispiel: Je eine Tabelle für Lieferant, Teil und Firma, sowie eine
Tabelle Lieferung:
Folie 36 von 107
LieferantNr
TeileNr
FirmenNr
Anzahl
0345
345678
3123
500
0815
345689
0077
750
1007
345690
1929
500
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Ableiten der Tabellen
◆
IS-A-Beziehung
Techniker
Mitarbeiter
IS-A
Manager
Sekretärin
Grund- und Teilmengen bilden je 1 Tabelle mit demselben
Primärschlüssel. Teilmengen-Tabellen enthalten neben dem PK
nur die zusätzlichen Spalten.
Folie 37 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Ableiten der Tabellen
◆
Rekursive Beziehungen
1
Mitarbeiter
ist
Grpltr
von
N
Mitarbeiter
Eine Tabelle mit der MaNr des jeweiligen
Gruppenleiters als GrpltrMaNr
N
Teil
ist
Oberteil
zu
M
Name
Vorname
GrpLtrMaNr
47
Müller
Hans
48
Meier
Martin
49
Schmitz
Sven
48
50
Möller
Michael
61
48
OTeileNr
UTeileNr
Menge
4711
15
1
4711
16
2
15
5
1
15
7
3
Teil
1. Teile-Tabelle
2. Struktur-Tabelle, siehe Beispiel
Folie 38 von 107
MaNr
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Tabellenstruktur der Projektdatenbank
Folie 39 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Normalisierung
Bottom-up-Methode zum Datenbank-Entwurf
Normalformen:
1. Normalform (1NF)
2. Normalform (2NF)
...
...
...
Sind die Attribute
der Tabelle ok
Die 1NF ist im relationalen Datenbankmodell ein MUSS!
Ab 2NF ist die Normalisierung freigestellt.
Folie 40 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Normalisierung
Folie 41 von 107
Ziele:
- weniger Redundanz
- keine Seiteneffekte bei Änderungen,
z.B. Löschanomalie
Nachteile:
- viele Tabellen
- Verbundene / Joins
- Performance – Probleme
§ wegen Joins
§ wegen Berechnungen
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Normalisierung
Normalisierung verhindert Redundanzen
Normalisierung verhindert Löschanomalie
Beispiel für eine Löschanomalie (Seiteneffekt):
Tabelle ARTIKEL mit den Spalten
ArtNr, Bez, Preis, LagNr, LagOrt, LagStr
Werden die Lagerinformationen LagOrt (Lagerort) und LagStr (Lagerstrasse)
bei den Artikeln gespeichert, kann neben der erheblichen Redundanz (n-mal
derselbe Lagerort und dieselbe Lagerstraße) noch folgendes passieren:
Wenn zufällig alle Artikel eines bestimmten Lagers gelöscht werden,
ist auch die Information über die Lageradresse in der Datenbank gelöscht!
Folie 42 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Normalisierung
1. Normalform
Eine Tabelle ist in der 1NF, wenn sie nur einfache Zeilen und Spalten hat,
also keine Listen oder Untertabellen beinhaltet.
Beispiel Tabelle KUNDE:
KuNr, Firmenname, AuftrNr, ...
Liste!
1NF
2. Normalform
Eine Tabelle ist in der 2NF, wenn sie in der 1NF ist und wenn jedes NichtSchlüsselattribut vom kompletten Primärschlüssel vollständig abhängt.
Beispiel Tabelle POSITION:
AuftrNr, ArtNr, AuftrDatum, ArtBez, Menge, Preis
2NF
Folie 43 von 107
Datenbanken – Stand: September 2014
2NF
wenn nicht auftragsabhängig
2NF
Prof. Dr. Stefan Böcker
Normalisierung
3. Normalform
Eine Tabelle ist in der 3NF, wenn sie in der 2NF ist und wenn keine (transitiven)
Abhängigkeiten zwischen Nicht-Schlüsselattributen bestehen.
Beispiel Tabelle ARTIKEL:
3NF
ArtNr, Bez, LagNr, LagOrt, ...
4. Normalform
Eine Tabelle ist in der 4NF, wenn sie in der 3NF ist und wenn keine
abgeleiteten (z.B. berechneten) Felder existieren.
Beispiel Tabelle RECHNUNG:
ReNr, ArtNr, Preis, Menge, GesamtPreis
1NF
Folie 44 von 107
3NF
Datenbanken – Stand: September 2014
4NF
Prof. Dr. Stefan Böcker
Normalisierung
Bereinigung der Normalisierungsverstöße durch
- Verschieben von Attributen in andere Tabelle
- Streichen von Attributen
Ggfs. Anlegen neuer Tabellen
Folie 45 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Normalisierung
Übungsaufgaben
1.
ABTEILUNG: AbtNr, AbtBez, MaNr
1NF
2.
PROJEKTMITARBEIT: ProjNr, MaNr, QNr, MaName, QBez
2NF
3.
MA_EHE: MannMaNr, FrauMaNr, NeuerName, M/F_Geb, Seit_wann
2NF
4.
2NF
2NF
MITARBEITER: MaNr, AbtNr, MaName, AbtBez
3NF
5.
ABTEILUNG: AbtNr, AbtBez, ÜberAbtNr, ÜberAbtBez
LÖSUNG
3NF
Folie 46 von 107
1. MaNr streichen, AbtNr in MITARBEITER-Tabelle
2. MaName in MITARBEITER-Tabelle, QBez in QUALIFIKATIONS-Tabelle
3. NeuerName und M/F_Geb in MITARBEITER-Tabelle
4. AbtBez in ABTEILUNGS-Tabelle
5. ÜberAbtBez streichen, da schon vorhanden
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Normalisierung
keine/ wenig Normalisierung bei Objektorientierten Datenbanken (OODB)
Data Warehouse Systemen
Multimedia DB
Folie 47 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Vorgehen beim Entwurf
Arbeitsablauf beim Erstellen einer relationalen Datenbank:
ü Aufgabenstellung definieren und analysieren
ü Informationsbeschaffung
ü Intuitiver Entity-Entwurf (EntityNamen, Attribute, Primärschlüssel)
üBeziehungen zwischen (starken) Entities mittels ERM feststellen
ü Tabellenstruktur und Fremdschlüssel ableiten
ü Überprüfen der Tabellen mittels Normalisierung bis 4NF
üDatentypen und Integritätsregeln festlegen
ü Test des Entwurfs mittels eines DB-Prototypen
ü Benutzersichten anlegen und Zugriffsrechte vergeben
à Anwendung entwickeln / bzw. kaufen
Folie 48 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Neue Datenbank Auftrag
Softwarehaus mit Produkten u. Dienstleistungen für Firmen
Kunden
Aufträge
Leistungen gehören zu Aufträgen
Kontaktpersonen
Folie 49 von 107
Datenbanken – Stand: September 2014
Tabelle
PK
Attribute
Kunde
KKURZ
Firma
Auftrag
AKURZ
KKURZ, ASTNR, PNR
Leistung
LKURZ
AKURZ,
Person
PNR
Name
Kontakt
PNR, KKURZ
Tel
AUFSTAT
ASTNR
ASTTEXT
Prof. Dr. Stefan Böcker
SQL : Structured Query Language
◆
DDL Data Definition Language
◆
◆
◆
CREATE (Anlegen von Tabellen, Sichten, Indexen, ...)
ALTER (Ändern)
DROP (Löschen)
◆
DML Data Manipulation Language
◆
SELECT (Abfragen)
◆
INSERT (Einfügen von Zeilen)
◆
UPDATE (Ändern)
◆
DELETE (Löschen)
◆
DCL Data Control Language
◆
GRANT (Vergabe von Zugriffsrechten)
◆
REVOKE (Zurücknahme von Zugriffsrechten)
◆
COMMIT (Abschluß einer Transaktion)
◆
ROLLBACK (Abbruch einer Transaktion)
Folie 50 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL: DDL
◆ Anlegen
einer Tabelle: CREATE TABLE
CREATE TABLE
(Spaltenname1
Spaltenname2
,,,)
Tabellenname
Datentyp [NOT NULL] [DEFAULT deftyp],
Datentyp,
Dabei sind folgende Datentypen möglich: CHARACTER, NUMERIC, DECIMAL,
INTEGER, SMALLINT, FLOAT, DOUBLE PRECISION und REAL
NOT NULL legt fest, dass das entsprechende Attribut für alle Zeilen der
Tabelle einen Wert haben muss.
Mit PRIMARY KEY (Spaltenliste) wird der Primärschlüssel der Tabelle
festgelegt. Mit FOREIGN KEY (Spaltenliste) und REFERENCES Basistabelle
[(Spaltenliste)] werden Fremdschlüssel definiert.
Folie 51 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL DDL
◆
Ändern einer Tabelle: ALTER TABLE
ALTER TABLE
ADD
◆
Tabellenname
Spalte
Löschen einer Tabelle: DROP TABLE
DROP TABLE
◆ Anlegen
eines Index: CREATE INDEX
CREATE INDEX
ON
Folie 52 von 107
Tabellenname(-n)
Datenbanken – Stand: September 2014
Indexname
Tabellenname (Spaltenname(-n))
Prof. Dr. Stefan Böcker
SQL: DDL
◆
CREATE TABLE in MS Access ab Office 2007
http://office.microsoft.com/de-de/access-help/create-table-anweisung-HA001231441.aspx
CONSTRAINT-Klausel zur
Einschränkung für ein einzelnes Feld:
CONSTRAINT Name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES Fremdtabelle [(Fremdfeld1, Fremdfeld2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}
Einschränkung für mehrere Felder:
CONSTRAINT Name
{PRIMARY KEY (primär1[, primär2 [, ...]]) |
UNIQUE (eindeutig1[, eindeutig2 [, ...]]) |
NOT NULL (nichtNull1[, nichtNull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (Bezug1[, Bezug2 [, ...]])
REFERENCES Fremdtabelle [(Fremdfeld1 [, Fremdfeld2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}
Folie 53 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL: DDL
◆
Datentypen bei Microsoft
Suche: Äquivalente ANSI SQL-Datentypen:
http://office.microsoft.com/de-de/access-help/
gleichwertige-ansi-sql-datentypen-HA001231447.aspx
Default (s.u.) ist möglich, wenn in
Access 2003: Optionen + Register Tabellen/Abfragen
Access 2010: Optionen + Object-Designer
àOption SQL Server-kompatible Syntax (ANSI 92)
create table TestTabelle (
F1 Autoincrement NOT NULL,
F2 Date,
F3 Long Default 100,
F4 Integer,
F5 Byte,
F6 Double,
F7 Single,
F8 DATETIME,
F9 YESNO,
F10 Text(10),
Primary Key (F1, F2)
Autoincrement oder Counter
Folie 54 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Beispiel für CREATE TABLE: (Oracle Notation)
CREATE TABLE KUNDE
(KuNr
INT
Name
VARCHAR (20)
Vorname VARCHAR (15),
PLZ
INT
Ort
VARCHAR (30),
Str
VARCHAR (30),
KRED_LIM DEC
(7,2)
NOT NULL PRIMARY KEY,
NOT NULL,
CHECK (PLZ BETWEEN 10000 AND 89999),
DEFAULT 10000 NOT NULL,
CHECK (KRED_LIM BETWEEN 0 AND 50000),
CHECK (ORT IN ('Iserlohn', 'Hagen', 'Lüdenscheid')));
CREATE TABLE ARTIKEL
(ArtNr
INT
ArtBez
VARCHAR (20)
EkPreis
DEC
(8,2)
VkPreis
DEC
(8,2),
LagNr
INT
MinBest NUM
(6)
Folie 55 von 107
NOT NULL PRIMARY KEY,
NOT NULL,
NOT NULL,
REFERENCES LAGER (LagNr),
CHECK (MinBest >= 0));
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Beispiel für CREATE TABLE: (Oracle Notation)
CREATE TABLE LAGER
(LagNr
INT
NOT NULL PRIMARY KEY, ...);
CREATE TABLE LAGERUNG
(ArtNr
INT
LagNr
INT
LagMen NUM
(6)
NOT NULL,
NOT NULL,
NOT NULL,
PRIMARY KEY (ArtNr, LagNr),
FOREIGN KEY (ArtNr) REFERENCES ARTIKEL(ART_NR),
FOREIGN KEY (LagNr) REFERENCES LAGER,
CHECK (LAGERUNG.LagMen >= ARTIKEL.MinBest AND LAGERUNG.LagMen <= 1000));
CREATE INDEX Nameindex
ON Kunde (Name);
à inklusive Indexe
DROP TABLE Kunde;
DROP INDEX Nameindex;
ALTER TABLE Kunde ADD Spalte;
Folie 56 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT-Kommando
Ø SELECT
Spaltennamen
Ø INTO
Zielvariable
Ø FROM
Tabellenquelle(-n)
Ø WHERE
Auswahlkriterien
(nur bei SELECT in Anwenderprogramm)
Ø GROUP BY Gruppenbildung
Ø HAVING
Gruppenbedingung
Ø UNION
Vereinigungsmenge
Ø ORDER BY Sortierung
Folie 57 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit Projektion
SELECT
FROM
ORDER BY
ORT, FIRMA
KUNDE
ORT, FIRMA [ASC | DESC];
erst
dann
aufsteigend
(Standard)
absteigend
Sucht Ort und Firmenname der Kunden, sortiert nach ORT;
falls ORT doppelt, dann zusätzlich sortiert nach Firmenname.
SELECT
FROM
DISTINCT Ort
KUNDE;
Sucht die unterschiedlichen Orte aller Kunden und sortiert automatisch.
Mit dem Parameter DISTINCT werden Werte, die mehrfach auftreten,
nur 1x angezeigt.
Folie 58 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit Selektion
SELECT
*
FROM
KUNDE
WHERE
ORDER BY
ORT = 'Bremen' AND KINFO = 'Versicherung'
ORT;
Vergleichsoperatoren:
= , < , > , <> ,
!= , <= , >=
Verknüpfungsoperator:
& Verbindet Zeichenfolgen
Mathematische Ausdrücke:
+ , - , * , / ,
\ (Div) , MOD , ^ (Potenz)
Folie 59 von 107
liefert alle Spalten
Logischer Operator
Vergleichsoperator
Logische Operatoren:
NOT
Verneinung der Bedingung
AND
Logisches UND
OR
Logisches ODER
XOR
Logische Antivalenz
exclusive or => nur A oder nur B
EQV
Logische Äquivalenz
XNOR : exclusive not or => (A und B) oder (!A und !B)
IMP
Datenbanken – Stand: September 2014
Logische Implikation
Aus A folgt B
=> Wenn es regnet, wird d. Straße nass
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit Selektion per Datum
SELECT
FROM
WHERE
KKURZ, AKURZ, AANZ, FERTIGSOLL
AUFTRAG
FERTIGSOLL <= #05/28/2007# ;
!
!
Selektiert die Aufträge mit FertigSoll bis 28.05.08 (Angabe in US-Datumsformat)
◆
SELECT mit BETWEEN-Selektion
…
WHERE
…
FERTIGSOLL BETWEEN #02/01/2007# AND #05/28/2007#;
Selektiert die Aufträge mit FertigSoll-Datum zwischen 01.02.07 und 28.05.07
Folie 60 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit IN-Vergleich
SELECT
FROM
WHERE
KKURZ, AKURZ, AANZ, FERTIGSOLL
AUFTRAG
KKURZ IN (106, 107, 112);
Selektiert die Aufträge der Kunden 106, 107 und 112 (Vergleicht Werteliste)
◆
SELECT mit LIKE-Vergleich
SELECT
FROM
WHERE
KKURZ, AKURZ, ATEXT, FERTIGSOLL
Platzhalterzeichen ( *, # , ? , [! ...] )
AUFTRAG
%
_
ATEXT LIKE '*BLAU*';
Selektiert die Aufträge, die im Auftragstext die Zeichenkette „BLAU“
enthalten (Vergleicht alphanumerische Zeichenketten oder Einzelzeichen)
Folie 61 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit IS NULL -Selektion
SELECT
FROM
WHERE
KKURZ, AKURZ, AANZ, FERTIGIST
AUFTRAG
FERTIGIST IS NULL;
Selektiert die Aufträge, die bei FERTIGIST noch keinen Wert
eingetragen haben (Sucht Leerfelder)
Folie 62 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
SELECT
FROM
WHERE
KKURZ, AKURZ, AANZ, FERTIGIST
AUFTRAG
FERTIGIST IS NOT NULL;
SELECT
FROM
WHERE
KKURZ, AKURZ, AANZ, FERTIGIST
AUFTRAG
NOT (FERTIGIST IS NULL);
Oder:
Die Verneinung des IS NULL-Operators selektiert die Werte mit
vorhandenem FERTIGIST
Folie 63 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit Funktionen, Ausdrücken, virtuellen Spalten
COUNT
SUM
AVG
MAX
MIN
STDABW
Var
Anzahl
Summe
Durchschnitt
Maximaler Wert
Minimaler Wert
Standardabweichung
Varianz
Vergleich mit
mathematischen
Ausdrücken,
auch verschiedener
Attribute
Zusätzliche Spalten,
die nicht in der
Tabelle enthalten
sind
Beispiele:
SELECT COUNT (*) FROM KUNDE;
SELECT MAX (KKURZ) FROM KUNDE;
Aliasname für Spalte
SELECT KKURZ AS Kundenkürzel
FROM KUNDE;
SELECT SUM(AANZ * ASATZ) AS AuftragswertGesamt
FROM AUFTRAG;
Folie 64 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
Gruppierung: SELECT mit GROUP BY
SELECT
FROM
GROUP BY
SELECT
FROM
GROUP BY
MWSATZ, COUNT (*) AS ANZAHL
AUFTRAG
MWSATZ;
... liefert als Ergebnis:
MWSATZ
Anzahl
0
3
0,07
1
0,19
3
AEINHEIT, MWSATZ, COUNT (*) AS ANZAHL
AUFTRAG
AEINHEIT, MWSATZ;
... liefert als Ergebnis 5 Zeilen
Mit GROUP BY werden bezüglich der angegebenen Spalten Gruppen
gebildet. Die statistischen Funktionen wie COUNT, MAX usw. gelten nun
für die Gruppen.
Wichtig: Hinter GROUP BY müssen mindestens dieselben Tabellenspalten
wie hinter SELECT aufgeführt sein!
Folie 65 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
GROUP BY mit HAVING
SELECT
FROM
GROUP BY
HAVING
KKURZ, COUNT (*) AS ANZAHL
KONTAKT
KKURZ
COUNT (*) >2;
... liefert als Ergebnis:
KKURZ
Anzahl
100
3
101
4
107
3
109
3
Mit HAVING erfolgt eine Einschränkung der Ergebnismenge bezüglich
einer statistischen Funktion
Folie 66 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Views mit GROUP BY
CREATE VIEW AUFTRUMS (AKURZ, UMSATZ, STAND)
AS
SELECT
FROM
GROUP BY
SELECT *
FROM AUFTRUMS;
AKURZ, SUM(LANZ*LSATZ) As UMSATZ,
MAX(LDATUM) As STAND
LEISTUNG
AKURZ;
AKURZ
In Access:
Speichern als Abfrage(statt als View)
Umsatz
Stand
109
1.500,00 €
01.05.06
111
17.175,00 €
25.05.08
112
33.600,00 €
13.03.06
113
49.000,00 €
13.12.07
114
9.000,00 €
29.06.08
115
6.645,00 €
01.09.07
Mit folgenden Select kann z.B. auf
die View zugegriffen werden:
AKURZ
SELECT *
FROM
AUFTRUMS
WHERE UMSATZ > 10000;
Folie 67 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Umsatz
Stand
111
17.175,00 €
25.05.08
112
33.600,00 €
13.03.06
113
49.000,00 €
13.12.07
SQL-Abfragen
◆
Daten verändern: Einfügen, Ändern, Löschen
Das Einfügen und Löschen einzelner Datensätze (Tabellenzeilen) erfolgt
mit den Befehlen INSERT INTO und DELETE;
das Ändern von einzelnen Feldwerten erfolgt mit dem Befehl UPDATE
INSERT INTO Einfügen von Datensätzen in eine Tabelle
UPDATE
Ändern von Feldwerten einer Tabelle
DELETE
Löschen von Zeilen (oder Leeren von ganzen Tabellen)
Folie 68 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
Daten einfügen mit INSERT
INSERT INTO PERSON (PNR, VORNAME, NACHNAME, ANREDE)
VALUES
(1231, 'Josef', 'Fischer', 'Herr');
Annahme: Tabelle Bremer_Kunden mit gleicher Struktur wie KUNDE, aber
ohne Datensätze ...
Lösung:
INSERT INTO Bremer_Kunden
SELECT
*
FROM
KUNDE
WHERE
Folie 69 von 107
ORT = 'Bremen';
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
Daten einfügen mit SELECT
In MS ACCESS ist das Dateneinfügen mit gleichzeitigem Erzeugen einer
neuen Tabelle möglich:
SELECT
*
INTO
FROM
BremerKunden
KUNDE
WHERE
Ort = 'Bremen';
Legt die neue Tabelle BremerKunden an und fügt die Datensätze aus
KUNDEN ein
Folie 70 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
Daten ändern mit UPDATE
UPDATE
SET
WHERE
LEISTUNG
LSATZ = LSATZ * 1.1
RNR IS NULL;
SET
Leistungssatz der noch nicht abgerechneten Leistungen wird mit SET
um 10 Prozent erhöht
UPDATE
SET
WHERE
AUFTRAG
ASTNR = 4
AKURZ IN (113, 115);
Auftragsstatus der Aufträge 113 und 115 wird in 4 („Ablage“) geändert
Folie 71 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
F1 = x,
F2 = y,
F3 = z
SQL-Abfragen
◆
Daten löschen mit DELETE
DELETE
FROM
WHERE
KUNDE
KKURZ = 113;
Löscht die Zeile (=den Datensatz) mit der KKURZ-Nummer 113.
DELETE
FROM
KUNDE;
Ohne WHERE-Klausel werden alle Zeilen der angegebenen Tabelle gelöscht.
Die Tabelle wird geleert, bleibt aber als Struktur erhalten!
Folie 72 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
Daten in mehreren Tabellen suchen:
◆ SELECT mit JOIN / Verbund
SELECT
FROM
WHERE
AUFTRAG.AKURZ, KUNDE.FIRMA, AUFTRAG.ATEXT
AUFTRAG, KUNDE
KUNDE.KKURZ = AUFTRAG.KKURZ;
Spalten aus verschiedenen Tabellen werden zusammengefasst
(SQL1-Notation,SQL 89: International Standards Organization)
SELECT
AKURZ, FIRMA, ATEXT
FROM
KUNDE INNER JOIN AUFTRAG
ON
KUNDE.KKURZ = AUFTRAG.KKURZ
[ WHERE ….] ;
Der gleiche Tabellenverbund in SQL2- oder ACCESS-Notation
(SQL92: SQL2-Standardsprache)
Folie 73 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit OUTERJOIN (LEFT ...)
Verknüpft links- oder rechtsseitige Tabellenwerte, für die kein Vergleichswert
in einer anderen Tabelle existiert
SELECT
FROM
ON
nachname AS Sachbearbeiter,
präsent AS Präsent
Sachbearbeiter LEFT JOIN SB-Präsente
Sachbearbeiter.nr = SB-Präsente.nr;
Linksseitige Inklusionsverknüpfung:
+ RIGHT JOIN
+ FULL OUTER JOIN
Es werden alle Sachbearbeiter angezeigt, auch diejenigen, die keine
Präsente bekommen haben
Folie 74 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit SELFJOIN-Verbund
Aufgabe: a) Anzeige der Vorgesetzten und Mitarbeiter
b) Welcher MA verdient mehr als sein Vorges.?
Vorges
Mitarbeiter
1
ist
Vorges.
zu
N
Mitarbeiter
Lösung:
SELECT
FROM
ON
WHERE
Mitarbeiter.Name AS Mitarbeiter,
Vorges.Name AS Vorgesetzter
Mitarbeiter INNER JOIN Mitarbeiter AS Vorges
Vorges.AngNr = Mitarbeiter.VorgesNr
Vorges.Gehalt < Mitarbeiter.Gehalt
Reflexionsverknüpfung: Verbund der Tabelle Mitarbeiter mit sich selbst
Folie 75 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit SUBQUERY / Unterabfrage
1. Suche Kunden mit Ort = Bremen
SELECT
FROM
WHERE
FIRMA, ORT
KUNDE
ORT = ‘Bremen’;
2. Suche Ort von Kunde mit KKURZ = 101
SELECT
FROM
WHERE
ORT
KUNDE
KKURZ = 101;
3. Suche Kunden, die in demselben Ort sind wie Kunde mit KKURZ = 101
Unterabfrage
Folie 76 von 107
}
SELECT FIRMA, ORT
FROM
KUNDE
Hauptabfrage
WHERE ORT =
(SELECT
ORT
FROM
KUNDE
Auflösung
WHERE
KKURZ = 101 );
{
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit SUBQUERY / Unterabfrage
Die Unterabfrage
‚ ‚
darf bei = nur 1 Wert liefern!
Abhilfe bei mehreren Werten
durch „IN“:
Beispiel:
Kunde mit größtem
Auftragswert
Folie 77 von 107
SELECT
FROM
ON
WHERE
Datenbanken – Stand: September 2014
SELECT
FROM
WHERE
FIRMA, ORT
KUNDE
!
ORT IN
(SELECT
FROM
ORT
KUNDE
WHERE
LKZ = 'CH' );
FIRMA, PLZ, KUNDE.KKURZ,
AANZ * ASATZ AS AUFWERT
KUNDE INNER JOIN AUFTRAG
KUNDE.KKURZ = AUFTRAG.KKURZ
AANZ * ASATZ =
(SELECT
MAX (AANZ * ASATZ)
FROM
AUFTRAG);
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
SELECT mit UNION
SELECT
FROM
WHERE
UNION
SELECT
FROM
WHERE
Spaltenname,,,
Tabelle
Klausel
Spaltenname,,,
Tabellenname
Klausel
SELECT
FROM
UNION
SELECT
FROM
Folie 78 von 107
Datenbanken – Stand: September 2014
KundenName AS Partner
Kunde
LiefName AS Partner
Lieferant
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
Hier einige SQL-Beispiele aus Projekten
Folie 79 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
Formular Auswertung
Folie 80 von 107
Datenbanken – Stand: September 2014
Feldname
kundennr
Prof. Dr. Stefan Böcker
SQL-Abfragen
Button: Anzeige Kunden; Abfrage AnzeigeKunden
SELECT
FROM
WHERE
firma1 AS Firma, ort, Neukunde
Kunde
Kunde.KuNr = [forms]![Auswertung]![kundennr]
Formularname Feldname
SELECT firma1 AS Firma, ort, Neukunde
FROM
Kunden
WHERE Kunden.nr Like IIf([Formulare]![Auswertung]![kundennr] Is Null,
"*", [Formulare]![Auswertung]![kundennr])
AND
ABCkunde & 'x' Like IIf([Formulare]![Auswertung]![ABCkunde] Is Null,
"*" & 'x', [Formulare]![Auswertung]![ABCkunde] & 'x')
Hinweis: & 'x' ist bei Spalten, die NULL sein können, nötig
Folie 81 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Abfrage in VBA
Siehe CRM.mdb, DBProgrammeADO, Sub zeigeKunde<i>
DIM SQLS AS String
SQLS= "SELECT KuNr, firma1 As Firma FROM Kunde WHERE kuNr = '0120200' "
SQLS = "SELECT KuNr, firma1 As Firma " & Chr(10) & _
"FROM Kunde " & Chr(10) & _
"WHERE kuNr = '" & kuNr & " '";
Wobei kuNr eine lokale Variable vom Typ String ist
SQLS = "SELECT kuNr, firma1 AS Firma " & Chr(10) & _
"FROM Kunde " & Chr(10) & _
"WHERE firma1 LIKE '%AG%' " & Chr(10) & _
"OR
firma1 LIKE '%GmbH%'„
Hinweis: Chr(10)
&_
Folie 82 von 107
Zeilenschaltung im SQL im Direktfenster
Stringfortsetzung nächste Zeile
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Abfrage von Verbrauchsdaten für
eine ABC/XYZ- Analyse
SELECT
FROM
WHERE
AND
AND
AND
AND
AND
AND
AND
AND
OR
OR
GROUP BY
ORDER BY
Folie 83 von 107
Verbrauch.Materialnummer,
SUM (IIF[Menge] <0,
[PreissteuerungsPreis]* 1* ABS([Menge]/[Preiseinheit]),
[PreissteuerungsPreis]* [Menge]/[Preiseinheit])) AS Gesamtwert
(Material INNER JOIN Materialdispo
ON (Material.Werk = Materialdispo.Werk)
AND (Material.Materialnummer = Materialdispo.Materialnummer))
INNER JOIN Verbrauch
ON (Material.Werk = Verbrauch.Werk)
AND (Material.Materialnummer = Verbrauch.Materialnummer)
Materialdispo.Aenderungsdatum = #12/01/2004#
Verbrauch.Datenart = ’V’
Material.Werk = ’30’
Material.Materialart like ‘FERT’
Verbrauch.Periodenkennzeichen = ‘M’
Material.ErsterVerbrauch <= ’2002-07’
Material.LetzterVerbrauch >= ’2004-06’ AND ((Verbrauch.Jahr =2002
Verbrauch.Periode >= 7
Verbrauch.Periode <= 12)
(Verbrauch.Jahr =2003
AND Verbrauch.Periode >=1
AND Verbrauch.Periode <=12)
(Verbrauch.Jahr = 2004
AND Verbrauch.Periode >=1
AND Verbrauch.Periode <=6))
Verbrauch.Materialnummer, Material.Werk
SUM(IIF[Menge] <0,
[PreissteuerungsPreis]* 1* abs([Menge] / [Preiseinheit]),
[PreissteuerungsPreis]* [Menge] / [Preiseinheit])) DESC;
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
VBA-Definition
Dim SQLMWL AS String
SQLMWL =
“SELECT
“FROM
“WHERE
“AND
“AND
“AND
“AND
“AND
“AND
Verbrauch.Materialnummer, SUM(IIF[Menge]<0,
“&preisSpalte &“*“ & korrekturfaktor &“* abs([Menge]/ [Preiseinheit]),
“& Chr(10) &_preisSpalte & “* [Menge]/ [Preiseinheit])) AS Gesamtwert
“ & Chr(10) &_
(Material INNER JOIN Materialdispo “&_
“ON
(Material.Wek = Materialdispo.Werk) “& Chr(10) &_
“AND
(Material.Materialnummer = Materialdispo.Materialnummer))
INNER JOIN Verbrauch “& Chr(10) &_
“ON
(Material.Werk = Verbrauch.Werk) “ & Chr(10) &_
“AND
(Material.Materialnummer = Verbrauch.Materialnummer)
“ & Chr(10) &_
Materialdispo.Aenderungsdatum = “ & DateString(Importdatum) & Chr(10)&_
Verbrauch.Datenart = “’ & Datenart & “’ & Chr(10) &_
Material.Werk = “’ & Werk & “’ & Chr(10) &_
Material.Materialart like “’ & MatArt & “’ & Chr(10) &_
Verbrauch.Periodenkennzeichen = “’ & PKZ & “’ & Chr(10) &_
Material.ErsterVersuch <= “’ & Startjahr & “-“ & zweiZchn(Cint(Startperiode),PKZ) & “’ “ &Chr(10) &_
Material.LetzerVerbrauch > = “’ & Endejahr & “ -“ & zweiZchn(Cint(Endeperiode),PKZ) & “’ “
If Startjahr = Endejahr Then
Folie 84 von 107
...
Datenbanken – Stand: September 2014
‘Ermittlung der Jahre und Perioden
Prof. Dr. Stefan Böcker
VBA-Definition
SQLMWL=
SQLMWL & “AND Verbrauch.Jahr = “ & Startjahr & “ “ & Chr(10) &_
“AND Verbrauch.Periode >= “ & Startperiode & “ “ & Chr(10) &_
“AND Verbrauch.Periode <= “ & Endeperiode & “ “ & Chr(10)
’Startjahr + Zwischenjahre + Endejahr
ElseIf Startjahr < Endejahr Then
SQLMWL = SQLMWL & “AND ((Verbrauch.Jahr = “ & Startjahr & “ “ & Chr(10) &_
“AND Verbrauch.Periode >= “ & Startperiode & “ “ & Chr(10) &_
“AND Verbrauch.Periode <= “ & anzPeriProJahr & “ )“ & Chr(10)
’Zwischenjahre
For Jahr = Startjahr + 1 to Endejahr –1
SQLMWL = SQLMWL & “OR (Verbrauch.Jahr = “ & Jahr & “ “ & Chr(10) &_
“AND Verbrauch.Periode >= 1 “ & Chr(10) &_
“AND Verbrauch.Periode <= “ & anzPeriProJahr & “ )“ & Chr(10)
Next Jahr
SQLMWL = SQLMWL & “OR (Verbrauch.Jahr = “ & Endejahr & “ “ & Chr(10) &_
“AND Verbrauch.Periode >= 1 ““ & Chr(10) &_
“AND Verbrauch.Periode <= “ & Endeperiode & “ ))“ & Chr(10)
End If
SQLMWL = SQLMWL & “GROUP BY Verbrauch.Materialnummer, Material.Werk “& Chr(10)&_
“ORDER BY SUM(IIF([Menge) <0, “ & preisSpalte & “*” &korrekturfaktor &
“* abs([Menge]/ [Preiseinheit]), “ & preisSpalte &
“* [Menge] /[Preiseinheit])) DESC”
Debug.Print SQLMWL
Folie 85 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆Rekursives
SQL zur Auflösung der Kostenartenhierarchie
aus IBM DB2
EXEC SQL DECLARE c_level CURSOR WITH HOLD FOR
WITH dlp.PARENT (Parent, CHILD, LEVEL) AS
(
SELECT DISTINCT PARENT, CHILD, 0
FROM dlp.COSTTYPE_TREE
WHERE PARENT =:v_ROOT_CHILD
AND ID_COSTTYPE_TREE_D = :v_ID_CT_TREE_D
UNION ALL
SELECT CTT.Parent, CTT.CHILD, P.LEVEL +1
FROM dlp.COSTTYPE_TREE CTT, dlp.PARENT P
WHERE P.CHILD = CTT.PARENT
AND CTT.ID_COSTTYPE_TREE_D = :v_ID_CT_TREE_D
)
SELECT max(LEVEL)
FROM dlp.Parent;
Folie 86 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen
◆
Strategie zum Aufbau eines SELECT
ü Ergebnisliste definieren: Wie soll das Abfrageergebnis aussehen?
ü Welche Tabellen sollen benutzt werden?
ü Welche Spalten sollen angezeigt werden? Virtuelle Spalten?
ü Kommen Gruppierungen vor?
GROUP BY
ü Werden mehrere Tabellen benutzt?
JOIN (oder SUBQUERY)
ü Welche Selektionsbedingungen liegen vor?
ü SUBQUERY bei indirekten Informationen oder GROUP BY !
ü Ist eine Sortierung der Abfrageliste gewünscht?
Folie 87 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
ORDER BY
SQL-Abfragen (Views)
◆
Definierte Tabellenansichten mit VIEW (nicht in Access)
Views können als „virtuelle Tabellen“ begriffen werden.
Mit einer View wird für einen bestimmten Benutzer eine für ihn geeignete
Sicht auf die Daten bereitgestellt. Sie unterstützen daher den Datenschutz
und die Datenunabhängigkeit.
Syntax des View-Kommandos:
CREATE VIEW
Viewname [(Spaltenname,,,)]
AS
SELECT-Kommando
[WITH CHECK OPTION];
Das SELECT-Kommando darf kein ORDER BY enthalten.
WITH CHECK OPTION bedeutet, dass beim Ändern (INSERT, UPDATE,
DELETE) in der View automatisch darauf geachtet wird, dass die
Definition im SELECT-Kommando durch die Änderung nicht verletzt wird.
Folie 88 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL-Abfragen (Views)
◆ Beispiel für eine VIEW
SELECT *
CREATE VIEW KunAdr26
FROM KunAdr26
AS
SELECT
KKURZ, FIRMA, LKZ,
PLZ, ORT
FROM
KUNDE
WHERE
LKZ = 'D'
AND
ORT = 'Oldenburg';
Vordefinierte Abfragen
Zugriffsrechte
Erzeugt eine View mit dem Namen KunAdr26, welche nur die
Kundenadressen der Oldenburger Kunden enthält
◆ Löschen einer VIEW
DROP VIEW
KunAdr26;
SELECT * FROM KunAdr26
WHERE LKZ = 'D'
ORT = 'Oldenburg';
AND
Mit DROP VIEW wird die View KunAdr26 gelöscht
Folie 89 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
SQL in Programmen: Embedded SQL (ESQL)
für compilierte Progr.sprachen: C/C++, Cobol, Delphi
Besonderheiten bei ESQL:
Ø Die Daten werden in Programm-Variable kopiert
Ø Der Mengenzugriff wird mittels eines Zwischenspeichers
(Cursor) in Einzelsatzverarbeitung umgesetzt
◆
Einzelsatzzugriff
SELECT
INTO
FROM
WHERE
KKURZ, FIRMA
Programmvariablen
:V_KKURZ, :V_FIRMA
(„Host“-Variablen)
KUNDE
KKURZ = 109;
= :V_KKURZ
Diese einfache Form des SELECT kann in einem Programm nur dann
verwendet werden, wenn die Ergebnismenge aus maximal einem
Datensatz besteht!
Folie 90 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Embedded SQL
◆
Mengenzugriff
Der Mengenzugriff erfolgt bei ESQL
durch das sogenannte Cursor-Konzept:
Anwendung
fe tc
h
Die Ergebnismenge des SELECT wird
zunächst in einem Zwischenspeicher
(= Cursor) abgelegt. Von dort können die
Ergebniszeilen nacheinander vom
Programm abgeholt werden.
DECLARE
SELECT
OPEN
FETCH
INTO
CLOSE
Folie 91 von 107
DBVS
aufcur
en
op
Cursor
DB
aufcur CURSOR
KKURZ, FIRMA ...
Cursor wird aktiviert, SELECT ausgeführt
aufcur
aufcur
In einer Schleife können Datensätze
:V_KKURZ, :V_FIRMA einzeln mit FETCH abgeholt werden
Cursor wird deaktiviert
aufcur;
Datenbanken – Stand: September 2014
}
Prof. Dr. Stefan Böcker
Trigger, Stored Procedures
◆
Trigger
Beim Eintritt eines Ereignisses (z.B. beim Einfügen eines Satzes)
wird ein Trigger gestartet. Dieser kann eine SQL-Abfrage oder ein
Datenbank-Programm ausführen.
◆
Stored Procedure
Ein Datenbank-Programm kann direkt in der Datenbank gespeichert
und von außerhalb aufgerufen werden. Damit wird die Ausführung i.a.
schneller.
Folie 92 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbank-Technik
◆
◆
Transaktionskonzept
Sicherheit
◆
◆
◆
◆
◆
Archivierung
Datenbank im Netz
◆
◆
◆
◆
◆
Backup, Restore
Recovery
Fehlertoleranz
Client Server
ODBC, JDBC u.a.
Replikation
Performance
Real Time
Folie 93 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Transaktionskonzept
◆
Eigenschaften von Transaktionen
Eine Transaktion ist eine Menge von Datenbank-Operationen
mit folgenden Eigenschaften:
a) ATOMARITÄT:
„Alles oder nichts“
b) KONSISTENZ:
Nach Ende der Transaktion wird wieder ein
konsistenter DB-Zustand hergestellt. Andere Nutzer
sehen keinen inkonsistenten Zustand.
Ausnahme „dirty read“
c) ISOLATION:
Transaktion werden isoliert wieder zurückgesetzt,
d.h. ohne Auswirkungen auf andere Transaktionen.
d) DAUERHAFTIGKEIT:
Nach Ende der Transaktion sind die
Datenänderungen dauerhaft in der DB gespeichert
ACID-Prinzip: Atomicy, Consistency, Isolation, Duration
Folie 94 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Transaktionskonzept
◆
Transaktion
Begin Of Transaction
BOT
DB-Operation 1
[...]
}
Transaktion
DB-Operation n
EOT
End Of Transaction
BOT, EOT:
COMMIT [work]
CommitTrans
(SQL)
(ACCESS)
Zurücksetzen: ROLLBACK [work]
◆
Sperren
Sperrmatrix:
T1
Datensätze werden solange
gesperrt, bis die Transaktion
abgeschlossen ist
Folie 95 von 107
Datenbanken – Stand: September 2014
\
T2
Lesesperre
Lesesperre
ü
Schreibsperre
Prof. Dr. Stefan Böcker
Schreibsperre
?
Transaktionskonzept
Logging
◆
Alle Änderungsoperationen in der Datenbank werden mit einem
LOG-Protokoll aufgezeichnet
Ø UNDO-LOG Enthält „before-images“ der geänderten Datensätze,
also den Zustand vor der Änderung, um die Transaktion
zurücksetzen zu können
Ø REDO-LOG Enthält „after-images“ der geänderten Datensätze,
also den Zustand nach der Änderung, um die Transaktion
dauerhaft sichern zu können
Folie 96 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Sicherheit
◆
Backup (Sicherung)
Sicherung der aktuellen Daten der Datenbank
Ø Voll
Sichern des kompletten Datenbestands
Ø Inkrementell Sichern der Änderungen seit dem letzten vollen Back up
bzw. seit der letzten inkrementellen Sicherung
◆
Restore
Zurückspielen der letzten vollen Sicherung der Datenbank
◆
Recovery
Wiederherstellen einer defekten Datenbank z.B. beim Hochfahren
Ø Offene Transaktionen werden zurückgesetzt (UNDO)
Ø Abgeschlossene Transaktionen werden wieder dauerhaft in der
Datenbank gespeichert (REDO)
Folie 97 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Sicherheit
◆
Fehlertoleranz
◆
Tolerierung eines Hardwarefehlers durch Redundanz
◆
Multicomputer/-clustersysteme und Softwaresteuerung
◆
Hardwareverdopplung
◆ Prozessor
Folie 98 von 107
◆
Computer
◆
Spiegelplatten
◆
RAID 1-5
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Archivierung
◆
◆
Langzeitsicherung bestimmter Stände der Datenbank
◆
Archivierungshardware (Band, DVD)
◆
Archivierungssoftware
◆
Rechtliche Bestimmungen
Ø
Dokumentenmanagement
Direkter Zugriff des Archivs für Auswertungen
Folie 99 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbank im Netz
◆
Client/Server-Datenbank
Client
Präsentation
Alternative:
oder
3-Tier-Architektur:
Präsentation
und Anwendung
- Client
- Anwendungs-Server
- Datenbank-Server
Beispiel:
SAP R/3
Anwendung
und Datenbank
oder
Datenbank
AnwendungsServer
Folie 100 von 107
DatenbankServer
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbank im Netz
◆
OLEDB
JDBC
ODBO
ODBC
Open DataBase Connectivity (für Java JDBC)
Access
Anwendung
Excel
Anwendung
Anwendung
ODBC - Schnittstelle
DBVS
DBVS
IBM DB2
Access
mySQL
ORACLE
Excel
Folie 101 von 107
DBVS
SQL-Server
Txt- Datei
mySQL
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
unstrukturierte Daten
“ODBC“ für Java
OLEDB für OLAP
Datenbank im Netz
◆
OLEDB
Wie ODBC, jedoch auch für unformatierte Daten (Text, Grafik, Bild, ...
◆
ODBO
OLEDB for OLAP
◆
JDBC
Wie ODBC, jedoch für JAVA
Alternative: SQLJ (ESQL für Java)
Folie 102 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Performance
◆
◆
Hardwaremaßnahmen
◆
Größerer Hauptspeicher
◆
Mehr und schnellere Prozessoren, Platten, Controller
◆
Symmetrisches Multiprocessing (SMP), Massiv Parallele Systeme (MP)
Softwaremaßnahmen
◆
Index (B*-Baum, Hash-Verfahren u.a.)
◆
Bitmap Join Index
◆
Real Time Features
◆
Tuningmaßnahmen in der Anwendung
◆
Standard-Benchmarks (TCP-A, TCP-B, ...)
Folie 103 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Performance
§ Unterstützung von Very Large Databases (VLDBs)
SMP
§ Optimierung für SMP & MPP
§ Paralleler Lader
§ Parallele Index-Erstellung
§ Paralleles Query
§ Dynamische Daten-Partitionierung
Cluster
§ Paralleles On-line Backup und Recovery
§ National Language Support
§ Unterstützung von Star-Queries
Massivparallele
Systeme
Folie 104 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Real Time
◆
Anforderung
Ø
◆
Reaktion in einer bestimmten Zeit auf ein Ereignis
Problem
Ø
Standard-Betriebssysteme und DBMSe sind nicht darauf ausgelegt. Es kann
gelegentlich zu starken Verzögerungen kommen
◆
Lösung
Ø
Besondere Eigenschaften in der Software
§
Scheduling
§
Speicherverwaltung
§
andere ...
Folie 105 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbankverwaltungssystem
◆
Oracle
Oracle (objekt-relational)
◆
IBM
DB2, DB2 UDB, IMS, Informix
◆
Microsoft
SQL-Server, Access, FoxPro
◆
Sybase
Sybase
◆
Teradata
Teradata (DWH), ehem. NCR
◆
Computer Associates
OpenINGRES
◆
Software AG
Adabas
◆
MySQL
MySQL
◆
SAP
MaxDB (SAP-DB, ADABAS-D)
◆
Wonderware
Industrial SQL Server
◆
Lotus
Lotus Domino Server / Lotus Notes
◆
Filemaker
Filemaker (Apple)
◆
Borland
Interbase
◆
PostgreSQL
PostgreSQL (Open Source, objekt-rel., ehem. INGRES)
◆
Progress Software
ObjectStore (OODB)
◆
POET (OODB)
FASTOBJECTS
siehe http://de.wikipedia.org/wiki/Liste_der_Datenbankmanagementsysteme
Folie 106 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Datenbankserver
◆
IBM
Mainframe
RS 6000 mit AIX
◆
SUN
SUN-Server mit Solaris, Sun-OS
◆
HP
HP-Server mit HP-UX
◆
Compaq
Intelbasierte Multiprozessorsysteme
◆
Tandem
FT-System mit Unix
◆
Terra Data
◆
NCR
Folie 107 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Fragen und Diskussion
Folie 108 von 107
Datenbanken – Stand: September 2014
Prof. Dr. Stefan Böcker
Herunterladen