Datenbanken

Werbung
private Vorlesungsmitschrift (nicht offiziell)
Datenbanken
letzter Kurs nach DPO2000, Prof. Dr. U. Klug
Fachhochschule Südwestfalen
- Campus Iserlohn Frauenstuhlweg 31
58644 Iserlohn
Dieses Skript wurde in der Vorlesung „Datenbanken“ bei Prof. Dr. Klug von mir
getippt; der Inhalt wurde nicht durch Professoren geprüft und enthält ggf. einige
syntaktische Fehler. Fehler, die Sie entdecken, teilen Sie mir bitte einfach per
Kontaktformular auf www.ChristianSchlueter.de mit. Danke im Voraus,
Christian Schlüter
Stand: 2003-07-10
(www.ChristianSchlueter.de)
1
Inhaltsverzeichnis
Seite
1
2
3
8
11
13
15
Kap. Inhalt, Titel
.................. -.................. -.................. 01
.................. 02
.................. 03
.................. 04
.................. 05
Deckblatt
Inhaltsverzeichnis
Grundzüge
Kategorien klassischer DB-Systeme
Grundlagen zur Access-DB
DB-Architekturmodell
Objektorientierte SW-Entwicklung
.................. 06
.................. 07
.................. 08
fehlt noch
fehlt noch
fehlt noch
20
21
24
27
32
37
50
51
..................
..................
..................
..................
..................
..................
..................
..................
Benutzersichten
Formularverarbeitung mit MS-Access
Erstellung von Berichten mit MS-Access
Grundzüge SQL
Grundlagen: relationales Modell
Structured Query Language (SQL)
Formularverarbeitung (Unterformulare)
Transaktionen
52
.................. --
09
10
11
12
13
14
15
16
Anhang - wichtige Begriffe und Abkürzungen
(www.ChristianSchlueter.de)
2
Kapitel 1 - Grundzüge
1.
Einführung in DB
1.1 Ausgangssituation
 Problemfelder in Daten- und Informationsmanagement (bereits ab 1950)
 wachsende Informationsmenge (als Problem)
 aufwendige Ablageorganisation (Problem: Mehrfachablage)
 Informationsgewinnung aus den Datenbeständen (lesen aus den
gespeicherten Datensätzen) als Engpass (fehlende Strukturierung)
 zeitaufwendig, Information zu suchen; teilweise Zufallsergebnisse
 Verlust an Informationen (nicht genutzte Informationen mangels
Zugriffsmöglichkeiten
Alte Form von Informationsmanagment:
Karteisystem (Kunden-, Lieferanten-, Personal-, Urlaubskartei)
Ziele bei der Verwendung von DB:
 einfache Verwaltung und Pflege der Datenbestände (strukturierte Ablage
von Informationen, übersichtliche Informationsdarstellung und übersichtliche
Benutzerführung beim Auffinden von Infos)
 Aktualisierung von Daten erleichtern
 Fehler vermeiden Daten sollen korrekt und aktuell sein
 gezielte
Abfragemöglichkeiten
und
komplexe Suchfunktionalitäten
(Bereitstellung von Infos zur Entscheidungsfindung)
 verbessertes Auskunftswesen (statistische Auswertungen)
 Abbildung von Arbeitsabläufen
 Modellierung eines Ausschnitts der Realwelt bestehend aus Daten
(Informationen und deren Bearbeitung (z.B. KFZ-Reparatur: Auftrag 
Werkstatt  Arbeit  Material (Lager )  Rechnung
1.2 Filesysteme als Vorläufer von DB-Systemen
Datensatz: Folge von Feld-(Variablen-)Inhalten
z.B. Müller, Harald, 14.02.48, Essen
oder Kurbelwelle, Golf, 4/94, 3, 281.37
Inhalt einer Bildschirm- oder Druckerzeile
Satzlänge:
Daten:
Datei:
Anzahl der Zeichen in einem Datensatz
Menge von logisch zusammenhängenden Datensätzen, z.B.:

Ein-/Ausgabedateien bei Berechnung großer D.mengen

Dokumentdateien von Textverarbeitungsprogrammen

Sourcecodes

Programmdateien (ausführbare Dateien)
wird unterschieden in formatiert (Text) und unformatiert (binär)
formatierte Datei:

von Anwender lesbar (mit bloßem Auge)
(www.ChristianSchlueter.de)
3

mit Texteditor erfasst bzw. änderbar

Informationen in einem Zeichencode abgelegt, z.B.
printf („%s %i“,“Summe: “, 217)  Datei
S
u
5316 76

m
6D
m
6D
e
65
:
3A
20
2
32
1
31
7
37
Erzeugung einer Satzstruktur durch Vereinbarung
spezieller Satzendefunktionen, z.B. CR/LF (Windows) oder
LF (Unix)  daher wird auch unter Unix eine WindowsDatei fehlerhaft formatiert (je eine Leerzeile)
main() 
{
printf(„Hello World“); 
}
Compiler erkennt „“ als Satzende (bei C(++) egal)
Bildschirmausgabe erkennt „“ als Satzende
Dokumentverarbeitungsprogramme besitzen im Wesentlichen eine
größere Auswahl an Steuerungszeichen, z.B. Absatz, ...
unformatierte Datei:

ausführbare Dateien

Datei enthält Prozessanweisung; CR\LF nicht als Satzende
interpretiert!

aus dem Speicher ohne Konversion übertragene Daten,
z.B.
int i = 217, im Hauptspeicher (int besitzt 4 Bytes a 8 Bit):
3 x 0 Byte, 1101 1001 (oder HEX: E916 )

der Verzicht auf Konversion bietet sich an, wenn:
 Daten nicht mit bloßem Auge gelesen werden müssen
 Lese-/Schreibzugriffe zeitsparender ausgeführt werden
sollen
 Konversionen können Rundungsfehler verursachen; z.B.
217.1 ist dual periodisch
Satzlänge:
sequentiell
- Zugriff auf den n-ten Satz in einer Datei ist nur möglich, indem zuvor die n-1
davor liegenden Sätze gelesen (bzw. überlesen) werden; z.B.:
(www.ChristianSchlueter.de)
4
-
Bearbeitung des 144. Satzes (=Zeile) in einer Sourcecodedatei mit dem
Editor erfordert das Lesen (vorwärts blättern) der 143 Vorgänger
-
Programmdateien
werden
in
der
darin
enthaltenen
Prozessorbefehlsfolge (Reihenfolge von Bytes) abgearbeitet
direkt
- Zugriff auf einen bestimmten Datensatz aus der Menge der in der Datei
enthaltenen Sätze (ohne lesen der Vorgänger), z.B.:
-
feste Satzlänge (ähnelt einer Tabelle):
Kname
Kort
Kplz
FAMA
Langen
...
Klöckner
...
...
.
.
.
.
.
.
.
.
.
Kstrasse
...
...
.
.
.
Umzug bei FAMA  Anschrift ändern, Dialog erfordert schnellen
Zugriff
Analoges Beispiel: Online-Buchungen (Bank, Lager, Konzerte)
Prinzip:
jeder Satz wird mit Identifikation versehen; z.B. Nummer, die die Position des
Satzes in der Datei markiert.
Beispiel:
Die Sätze in obiger Tabelle sind nach Namen sortiert auszugeben ohne
physische Position der Sätze innerhalb der Datei zu ändern.
Idee:
Die Sätze werden durchnummeriert in einer zusätzlichen Tabelle; jedes
Tabellenglied hat die Form
typedef struct {
int index;
char Kundenname[20];}
//eindeutige lfd. Nr.
//zugeordn. Daten
Index:
nach Namen sortierte Liste:
FAMA
Göhler
Klöcker
Rudovan
1
4
2
3
direkter Zugriff auf Ort von Rudovan:
a) Suchen von Rudovan in sortierter Tabelle
b) über Index direkter Zugriff auf Datensatz
(www.ChristianSchlueter.de)
5
indizierte Dateien
(indexsequentielle Datei; ISAM-Datei)
-
auf jeden Satz soll direkt zugegriffen werden können
die Sätze der Datei sollen nach einem vorgegebenen Begriff geordnet sein
Lösung:
zur ursprünglichen Datei (mit vorläufiger Ordnung) wird eine Indextabelle wie
im Beispiel angelegt, d.h. alle Datenzugriffe (update, insert, delete) von Sätzen
erfolgen nur über Zugriffe über die Indextabelle
Indextabelle:
- auf Befehl neu anlegen
- kann Array / verkettete Liste sein
- wird in Datei gespeichert
Die Indextabelle umfasst den/die Ordnungsbegriffe und die zugehörige
Satzposition
indizierte Dateien sind ein Modell für den
prinzipiellen Aufbau einer "relationalen DB"!
Sprechweise:
indexsequentielle Bearbeitung von Dateisätzen
 Bearbeitung mehrerer Datensätze gemäß
Ordnungsbegriffes. Filesysteme bilden:
a) Generation (auf Band 1950-1960)
b) Generation (auf Band 1960-1970)
von DB-Systemen
Sortierreihenfolge
des
Beispiel (Bibliotheksverarbeitung):
Probleme:
- hohe Redundanz von Dateien
(Mehrfachspeicherung einzelner Dateien für Anwendungsprogramme)
- Inkonsistenz
(unabgestimmte
Änderungen
an
einzelnen
Dateien,
z.B.
Namensänderungen in Leserdateien, aber nicht in Ausleihdatei)
- Inflexibilität
(neue Arbeitsvorgänge, z.B. Verwaltung eines Fachbereichkatalogs
erfordern neue Programme, obwohl Daten ähnlich zu „normalen“
Buchdaten)
- Wartung der Anwenderprogramme
(erforderlich bereits für kleine Änderungen in der Struktur der Datei)
- Datenschutzproblem
(www.ChristianSchlueter.de)
6
-
(Authorisisation für Zugriff auf Daten und Programme)
Datenaustausch
(erschwert, da Datenstrukturen individuell festgelegt werden können 
Standards erforderlich)
(www.ChristianSchlueter.de)
7
Kapitel 2 – Kategorien klassischer DB-Systeme
2.1
allgemeine Struktur
Unterscheidung von Informationen in
a) logisch (fachlich)
b) physisch ((speicher-)technisch)
Ziel:
integrierte Verwaltung
- verschiedene Informationsarten
- unabhängige Verwaltung von Daten, Datenbeschreibung, Programmen
Komponenten:
- DBS
(Datenbanksystem)
- DB
(Datenbank – Gesamtheit aller Dateien des Anwend.bereichs)
- DD
(Data Dictionary – Beschreibung von Struktur und Eigenschaften
der Daten in der DB)
- DBMS
(Datenbank Management System – Verwaltung und zentrale
Kontrolle der Dateibestände in der DB gemäß DD)
DBS = DBMS + DD + nDB
-
-
-
DBS sorgt für
zuverlässige Verwaltung
Bereitstellung von Mechanismen zur Erhaltung von Konsistenz, Integrität,
Unversehrtheit (kein Verlust / keine Verfälschung von Daten auf Grund
technischer Fehler)
unabhängige Verwaltung (Datenunabhängigkeit)
(fachliche) Anwendungsprogramme und (technische) Programme des DBS
getrennt, strukturelle Änderungen wirken sich nur dort aus, wo von Bedeutung
 einheitliche Beschreibung von Daten innerhalb des DBS
komfortable Verwendung
Zugriff auf DB über einheitliche Schnittstelle (ohne technische Daten)
flexible Anwendung
Datenzugriff mit speziellen Abfragesprachen, d.h. z.T. ohne Programmierung
geschützte Verwendung
(www.ChristianSchlueter.de)
8
-
2.2
Privatheit von Daten, Zugriffsrecht
integrierte Verwendung DB
redundanzarme Speicherung von Daten möglich
unabhängige Verwendung von Daten in verschiedenen
Anwendungsprogrammen
 Möglichkeit, verschiedene Sichten auf Teile der DB definieren
 zweistufige Arbeitsweise: 1. Datenauswahl, 2. Datenbearbeitung
 leistungsfähige Auswahlmechanismen (Anfrageproblem)
 effiziente Speicherstrategien für große Datenmengen
Prärelationale Systeme
logische Beschreibung physischer Strukturen durch Datenmodelle
Festlegung dort:
- Eigenschaften der Datenelemente
- Struktur der Datenelemente
- einzuhaltende Konsistentbedingungen
- erlaubte Operationen zum Speichern, Auffinden, Ändern, Löschen von
Datenelementen
Syntax und Semantik eines Datenmodells wird beschrieben durch:
DL – Definition Language
ML – Manipulation Language
Datenmodelle untergliedert in...
hierarchisches Modell – Netzwerkmodell
(3. Generation 1970-1980)
Idee:
Beschreibung der logischen Zusammenhänge von Daten mit Hilfe von
Bäumen bzw. Graphen
DBMS (Data Base Management System) verwaltet die „in bestimmter Weise“
vernetzten Daten
!!! Heutzutage nur noch vereinzelt eingesetzt !!!
2.3
Relationale DB-Systeme
falls DBS auf relationalem Datenmodell basiert  rel. DBS (RDBS)
(4. Generation, 1980-...)
erste Eigenschaften:
- einfaches konzeptionelles Modell (Relationen)
- hohe physische Datenunabhängigkeit
- sehr geeignet für mengenorientierte Verarbeitung
Prinzip:
Datenspeicherung in Form von Tabellen
(www.ChristianSchlueter.de)
9
Beispiel:
-
Schlüsselattribut ist Sortierkriterium
Schlüsselattribut kennzeichnet Datensatz eindeutig (Primärschlüssel)
Tabelle ohne Schlüssel  sequentielles Lesen der Sätze
Anwendungsgebiete:
- Buchhaltungssysteme (Lieferanten-, Kundenverwaltung, ...)
- Bibliotheksverwaltung
- Reservierungssysteme (Bahn, Konzert)
- Banken / Versicherungen
- Einwohnermeldewesen
neue Gebiete:
- Büroinformationssysteme
(www.ChristianSchlueter.de)
10
Kapitel 3 - Grundlagen zur Access-DB
Eigenschaften:
- relationale DB
- Office-Paket (MS)
- netzwerkfähig (max. 255 Benutzer)
- System für Zugriffsberechtigung
- grafische Benutzeroberfläche
- Expertenanwender
- Wenignutzer
3.1 Aufbau der MS-DB
Bestandteile:
- Tabellen
- Berichte (Darstellung von Tab.inhalten in (ausdruckbaren) Listen
- Formulare (benutzerdefinierte Masken zur komfortablen Anzeige und
Pflege einzelner Datensätze am Bildschirm
- Abfragen (benutzerdefinierte Anfragen an die DB mit QBE (query by
example) oder SQL
Ergebnis: Tabelle
3.2 Einrichten einer neuen DB
Menü  Datei  Neu
( im Praktikum)
3.3 Assistentengestützte Tabellenanlage
schnelle, benutzergeführte Tabellenerstellung auf Grund vorhandener
Tabellenstrukturen (geringfügige Anpassungen an den Tabellen möglich)
3.3.1 Import und Export von Daten
Import / Export von Daten aus / in
- andere Access-DB
- andere MS-Produkte (Word, Excel, Paradox, FoxPro, ...)
- gängige Datenformate, z.B. Textdateien
Import
Kopie der externen Daten in neue oder bestehende Tabellen; Beispiel
für Import aus Textdatei  formatierte Datei
Voraussetzung:
Typen in Datei müssen Typen der Felder in DB-Tabelle entsprechen!
Variante 1:
Dateiinhalt ist „Harry, Meier, 50898, Köln, 30.05.64, 4000 “ (alle
Felder mit Trennzeichen wie Komma, Semikolon, o.ä.
(www.ChristianSchlueter.de)
11
Variante 2:
8
12
5
20
Harry
Meier
50898
Köln
(nur Daten fester Breite verwenden)
2
30
2
2
...
05 64 4000
Anwendung:
a) Importdatei anlegen
b) Datei  externe Daten  Importieren
c) Datei angeben
...  Importassistent
Export
Anwendung:
a) Daten speichern unter... (Exportieren)
b) in externe Datei oder DB
c) Dateityp festlegen (Excel-, Textdatei, ...)
d) Exportieren
Anmerkungen:
- Textdatei enthält zeilenweise die Sätze mit den Tabellenwerten
- 1. Zeile enthält Spaltenbezeichnung der Tabelle
- Datei „Schema.ini“ enthält Feldbeschreibungen
3.4 Berichterstellung
Anwendungsgebiete:
Listen verschiedener Art (Adress-, Tel.-, Teilnehmerlisten)
Ergebnisse von Auswertungen (Statistiken, Diagramme, spezielle
Sortierungen, Berechnungen, Gruppierung von Daten)
Entwurfsmöglichkeiten
Autobericht
einspaltig, tabellarisch
 automatisch erzeugte Berichte im vordefinierten Layout
-
Berichtsassistent
Werkzeug zur Benutzerunterstützung bei Berichterstellung (Frage nach
Feldern, Sortieren, Layout, Stil, Positionierung)
-
manuelle Berichterstellung
volle Gestaltungsfreiheit, aufwendig
(www.ChristianSchlueter.de)
12
Kapitel 4 – DB-Architekturmodell
Ziele einer DB-Anwendung:
- Sammlung von Daten über einen kleinen Teil der Realwelt (z.B.
Auftragsbearbeitung) zur Bearbeitung dortiger Vorgänge auf EDV-Anlage)
Schichtenartige Datenbankarchitektur
(Entwicklermodell) (ANSI / SPARC ´75)
externe Ebene (Schema) (Benutzerschicht = USER INTERFACE)
externes Modell = Sicht (View) auf Datenbestände, die Anwender
sehen darf bzw. möchte
externe Modelle unterscheiden sich in der Art der Präsentation (ggf.
gleicher Datenbestände)
Veränderung von Daten erfolgt durch DML (Data Manipulation
Language); Programmiersprachen mit spezifischen Funktionen,
embedded SQL, SQL
verwaltet durch DB-Entwickler
konzeptionelle Ebene (Schema) (log. Gesamtübersicht)
Festlegung der Datenobjekte und Beziehungen zwischen den Daten,
einschließlich der Verwendungsmöglichkeiten (zulässige Operationen,
z.B. Änderungsverbote, Integritätsbedingungen, Zugriffsrechte)
Spezifikation durch DDL (Data Definition Language)
Verwaltung durch den DB-Entwickler
interne Ebene (Schema) (physische Ebene)
Beschreibung der physischen Datenorganisation im Speicher und den
zugehörigen Zugriffsmöglichkeiten
Verwaltung durch DB-Administrator, benutzt DAL (Data Administration
Language)
Festlegung von Zugriffs- und Integritätskontrollen
Festlegung von Sicherheitsstrategien
Überwachung von Systemauslastung und Laufzeitverhalten
Tuning des Systems (hinsichtlich neuer Aufgaben)
und DSDL (Data Storage Definition Language)
Definition von Speicherstrukturen
Tätigkeiten
logisches Datenbankdesign
definieren des konventionellen und externen Schemas
physisches DB-Design, Administration und technischer Betrieb
(www.ChristianSchlueter.de)
13
Modell in grafischer Darstellung
(www.ChristianSchlueter.de)
14
Kapitel 5 – Objektorientierte SW-Entwicklung
5.1 Grundbegriffe des DB-Designs
Def.: Entität
individuelles und identifizierbares Objekt der Realwelt, dessen Existenz
unabhängig von anderen Objekten ist
Beispiel:
- Hans Meier, Oststr. 6, Wilhelmshafen
- Ausgabeder FAZ vom 14.11.00
Def.: Entitätstyp / Entitätsmenge
Zusammenfassung von Entitäten mit gleichen Eigenschaften
Beispiel:
Kunde, Lieferant, Artikel
Def.: Attribut
beschreibt eine fachliche Eigenschaft, die allen Entitäten einer Entitätsmenge
gemein ist
Eigenschaften:
- Name ( Eigenschaft)
- Wertebereich, (zugelassene) mögliche Werte
Def.: Beziehung
beschreibt einen Zusammenhang zwischen Entitäten; Zusammenfassung
gleichartiger Beziehungen zwischen Entitäten gleicher Entitätsmengen zu
Beziehungsmengen; Beziehungen / Beziehungsmengen können Attribute haben.
Mathematisches Konzept der Relation dient zur Darstellung von Entitäten,
Entitätsmengen und ihrer Beziehungen (E. F. Codd, 1970)
Def.: kartesisches Produkt
Seien Ai, i{1,...n} ihre Wertebereiche, dann heisst die Menge aller
Kombinationen ihrer Elemente ihr kartesisches Produkt
[W(A1)xW(A2)x...xW(An)]
Elemente des kart. Produkts heissen Tupel.
Ist RW(A1) x... x W(An), dann heisst R Relation.
Beispiel:
A1 =
R := individuelle Familienzustände
R = W(A1)xW(A2) =
{(M,le);(M,verh);(M,verw);(M,gesch);
(W,le);(W,verh);(M,verw);(M,gesch)};
Bemerkung:
(www.ChristianSchlueter.de)
15
jede Relation kann als Tabelle dargestellt werden. Spalten tragen Attributnamen,
Zeilen sind Tupel:
Beispiel:
individuelle
Familienstände
Beispiel:
Firma
Geschlecht
Familienstand
M
M
M
M
W
W
W
W
le
verh
verw
gesch
le
verh
verw
gesch
Kurzname
Colonia
...
Name
Colonia AG
...
Adresse
Köln
...
Kurzmitteilung
blablabla
...
(vgl. Kapitel 2.3)
Bemerkung:
- Tabelle,
Datenbank,
Spalte,
Zeile
 Darstellungsform, techn.
Implementierung
- Relation, Tupel, Attribut  abstrakte Beschreibung
- Identifikation von Relationen (Primärschlüssel, Key) ist Attribut oder eine
minimale Attributkombination
- die jedes Tupel einer Relation identifiziert
- deren Wert sich während der Existenz des Tupels nicht ändert
Schlüssel heisst minimal, wenn bei Weglassen eines Attributs ein Tupel nicht
mehr eindeutig identifizierbar ist.
Beispiel:
a) Kunde (Kundennummer, Anrede, Name, Vorname, ...)
b) Patient (Name, Vorname, Anschrift, Land, Vorwahl, Diagnose, ...)
c) Patient (Name, Vorname, Geburtsdatum, Diagnose, Behandlungart, ...)
Bemerkung:
falls notwendig, künstlichen Schlüssel einführen (i.d.R. laufende Nummer)
5.2
Systembeschreibung und Datendefinition
5.2.1 Entity-Relationship-Diagramme (P. P. Chen, 1976)
Ziel:
Beschreibung der permanent gespeicherten Daten und ihrer Beziehungen
untereinander; Analyse aus fachlogischer Sicht
(www.ChristianSchlueter.de)
16
Bemerkung:
- datenorientierte Modellierung
- strukturierte Top-Down-Vorgehensweise zur Abbildung von Informationen
im DBS
Def.: Beziehung (Relationship) / Assoziation
Eine Beziehung ist eine Zuordnung zwischen Entitäten; Zusammenfassung
gleichartiger Beziehungen zu Beziehungsmengen (=Assoziationen)
Def.: Rolle einer Entität
in einer Beziehung ist die Funktion, die sie in der Beziehung ausübt
(Unternehmensrollen: Kunde, Lieferant, Arbeitgeber, ...)
Visualisierung mit Hilfe von Diagrammen
Beispiele:
(www.ChristianSchlueter.de)
17
5.2.2 Kardinalitäten
Ausgabe der Anzahl Beziehungen einer
Entitätsmenge zu anderen Entitätsmengen
-
Entität
einer
bestimmten
Erläuterungen (nur Lesbarkeit):
ein Lieferant liefert mindestens einen bis n Artikel
n Artikel hat (keine) 0 ... n Lieferanten
...
alternative Iterationen:
(www.ChristianSchlueter.de)
18
Kapitel 6 bis 8 fehlen nochû
(www.ChristianSchlueter.de)
19
Kapitel 9 – Benutzersichten
(eine) Aufgabe der Systemanalyse: Festlegung von Sichten auf den Datenbestand
für verschiedene Benutzergruppen
Zentraler Begriff: VIEW
Varianten von Datensichten
direkte Anzeige von Daten aus DB  Anzeige von aufbereiteten Daten aus DB
Möglichkeiten einer Aufbereitung:
- (mit Filtern erstellte) Listendarstellungen
- ausgewählte Daten aus einem Datensatz  ein Bildschirm (Formular, Screen,
Maske)
- weiterverarbeitete Daten oder berechnete Werte, z.B. Summen, Preise; dabei
sind MwSt, EK und Aufschlag einzelne (gesonderte) Datensätze, die möglichst
global verstellt werden können (sollten)
Ausgangspunkt (bislang): Grundtabelle
weiterer Ausgangspunkt: Selektionsergebnis (Query)
- Erzeugung neuer Tabellen an Hand von Abfragen nur zur Darstellung / Pflege
von Daten
Bemerkung:
für den korrekten Umgang mit Daten muss zum Zeitpunkt der View-Erzeugung ein
Berechtigungskonzept für Datenzugriffe vorliegen
(www.ChristianSchlueter.de)
20
Kapitel 10 – Formularverarbeitung mit MS-Access
Def.:
Formulare  Hilfsmittel zur übersichtlichen Darstellung von Informationen am
Bildschrim
Einsatzgebiete:
- Datenerfassung / -pflege
- Anzeige von Erebnisdaten von Selektionen
10.1 automatische Formularerstellung
Unterstützung durch Assistenten (einspaltig, blockweise, ...), (vollständig
automatische Formularerstellung)
10.2 Formularerstellung mit Assistenten
Entwicklung gibt Einstellungen vor
10.3 manuelle Formularerstellung
Def. Steuerelement:
Objekt zur Anzeige von Daten, zur Durchführung von Aktionen, zur
Gestaltung
gebunden:
direkter Bezug zu Tabelle
ungebunden:
ohne Bezug zu Tabelle
VORLESUNG vom 17. Oktober (Reihenfolge irgendwie durcheinander)
10.3.2 Bereiche in Formularen
Es sind maximal 5 Bereiche verwendbar:
Seitenkopf
Überschrift für gesamtes Formular immer am
oberen Bildschirmrand bzw. am
Dokumentanfang; Inhalt: konstante Werte (Texte,
Daten, z.B. auch Bemerkungen)
bei Ausdruck am Anfang jeder Seite; Inhalt:
konstante Texte, z.B. Spaltenüberschriften
Detailbereich
Kernbereich immer vorhanden, Leerlayouts für
Daten
Seitenfuß
bei Ausdruck am Ende jeder Seite; Inhalt z.B.
Seitennr.
Formularfuß
immer am unteren Bildschirmrand bzw. am
Dokumentende; Inhalt: z.B. ungebundene Felder,
Formularkopf
(www.ChristianSchlueter.de)
21
Buttons bei Formularen, abschließender Text bei
Berichten
10.3.1.1
Positionierung von Feldern
Prinzip:
anklicken oder per Drag&Drop
Ausrichtung: Menüformat
10.3.1.2
Aktivierungsreihenfolge
Definition: Die Aktivierungsreihenfolge ist Folge der Felder ,durch
die mit TAB (Tabulator-Taste) gewechselt und navigiert
werden kann.
Änderung: Entwurfsansicht; Ansicht  Aktivierungsreihenfolge
10.4 Berechnungen
Berechnungen enthalten in der Regel elementare Werte, z.B. Einkaufspreise,
Steuersätze, kalkulatorische Zuschläge, nicht zusammengesetzte Werte, z.B.
für Umsatzübersichten
 dynamische Ermittlung (immer wieder automatisch (aktuell) berechnet)
Gründe:
Speicherplatz, Aktualität
10.4.1 Formelverarbeitung
Beschreibung / Festlegung der Attribute in Steuerelement im
Eigenschaftenfenster
Formeln:
-
-
Festlegung  Steuerelementinhalt
Einleitung durch „=“
Verwendung von Ausdrücken wie +, -, usw. für numerische
und alphabetische Werte; bei alphabetischen Werten „+“ und
„&“ für Stringvorgabe
Standardfunktionen (von Access)
VORSICHT:
Steuerelementname darf nicht mit
Feldname in Tabelle übereinstimmen!
-
-
zeitbezogene Verarb., z.B. Jahr (Datum), z.B. Jahr
(20.01.2002)  2002
...
Jetzt( ), Datum( ), DateDiff( ), Dat.Seriell(Jahr, Monat, Tag)
If-Abfrage durch „wenn (log. Ausdruck); ...; ...;“
datensatzübergreifende Beschreibungen (AggregatBeschreibungen) operieren auf Menge von Datensätzen, z.B.
Summen( ), Mittelwert( ), StdAbw( ), Anzahl( ); Sätze in
Tabelle
10.4.2 gab es in der Vorlesung nicht.
Wir machen weiter am 24.10.2001 mit:
(www.ChristianSchlueter.de)
22
10.5 Formular zur Benutzerführung
Ziel:
Benutzerführung durch Menüstruktur
10.5.1 Menüerstellung durch Menüstruktur
Aufgabe:
Erstellung baumartiger Menüstruktur zum Zugriff auf Formulare,
Berichte, Funktionen
Aufruf über: Extras  Add-Ins  Übersichtsmanager 
Wurzel des Menübaums: „Hauptübersicht“
Bemerkung: Es gibt ein automatisch erzeugtes Formular namens „Übersicht“,
das den Einstieg (die Hauptübersicht) ins Menü enthält.
-
automatisch erstellte Tabelle „Übersichtseinträge“ enthält Daten der
Menüstruktur
sofortige Anzeige der Hauptübersicht nach Programmstart  Extras
 Start ...
dort den Formularnamen eintragen
Vorteile anwenderspezifisch definierter Menüs
- Anwendung von Buttons zur Navigation
- vollständig selbstdefinierbare Navigationsmöglichkeiten,
unabhängig von MS Access  eigene Dialogführung
Hinweis:
bei der Neuanlage von Buttons kann man den Assistenten für
Steuerelementanlage benutzen. [Das ist der Zauberstab mit den
Sternchen]
(www.ChristianSchlueter.de)
23
Kapitel 11 – Erstellung von Berichten mit MS-Access
Zielsetzung:
Darstellung von Tabelleninhalten in gedruckter Form (Nachschlageinstrument,
Präsentationsgegenstand)
Anwendungsgebiete:
- Listen
(Teilnehmer, Artikel-, Lagerbestands-, Inventarlisten)
- Auswertungen (Geschäfts-, Verkaufsberichte, Statistiken)
Bemerkungen:
Berichte bieten hohe Flexibilität bei Gestaltung von Ausgaben (deutlich mehr als
Formulare), Anzeige von Berichten: Vorschau, Seitenansicht
Einstellungen zur Druckerausgabe von Berichten:
Datei  Seite einrichten ...
dort: Hoch-/Querformat, Ränder, Drucktypen, Anzahl Spalten, Ausgabenreihenfolge
quer oder längs)
Auch automatische Listenerstellungen sind möglich mit Hilfe des  Assistenten
11.1
Manuelle Berichterstellung
Hinweis:
Technik der Berichtgestaltung wie bei Formularen
Bemerkungen:
 Berichte verfolgen andere Intention  Wegfall einiger Darstellungsmittel
(keine Dialogelemente); verfügbare Elemente: (un-/gebundene)
Steuerelemente, Schriftarten, graphische Symbole, Formelausdruck zur
Berechnung, importierte Grafiken, Diagramme
 Bereiche in Berichten
Berichtskopf und –fuß (nur einmal im Bericht), Seitenkopf und –fuß,
Detailbereich für Daten
11.2
Berichte mit Gruppenwechseln (GW)
Ziel:
Zusammenfassung von Daten einer Tabelle zu Gruppen zwecks Ausgabe /
Erzeugung gruppenbezogener Information
Ansatz:
- Gruppe wird identifiziert durch ein oder mehrere Attribute
- Sortierung nach Gruppenattributen stellt die Gruppen optisch dar
- Gruppen können auf verschiedenen Stufen definiert werden  Bildung
von Untergruppen in Gruppen
Beispiel:
Einwohnerregister
Name, Vorname, PLZ, Ort, Straße, Fon, Fax, Geburtsdatum, eMail
Arm, Harry, 45678,
Klein, Karl,
Klein, Oscar,
Klein, Petra,
16.05.77
31.08.44
04.04.57
06.03.78
(www.ChristianSchlueter.de)
24
Klein, Petra,
Klein, Tobias
Müller, Felix,
19.08.51
14.11.57
16.02.56
Erklärung:
Setzt man z.B. „Name“ auf „Gruppe 1“, so kann man alle Sätze mit dem
Namen „Klein“ zusammenfassen. In „Gruppe 1“ können wir eine Untergruppe
„Petra“ als „Gruppe 2“ erstellen. Als „Gruppe 3“ kann man z.B. das
Geburtsdatum auswählen.
Hinweis:
zu Anfang jeder Gruppe / Untergruppe existiert eine Gruppenkopfzeile, an
jedem Ende ist ein Gruppenfuss(zu kompliziert für eine PC-Grafik, sorry)
Bemerkung:
- Gruppenwechselverarbeitung gibt eine spezielle Anzeigereihenfolge für
Daten vor (entspricht einfacher Sortierung nur, falls nur ein GW pro Feld
existiert)
- optionale Spezifikation von GW-Kopf / GW-Fuß für jede Gruppe 
Ausgabe gruppenspezifischer Informationen
z.B. allg. Informationen, Spaltenüberschriften, Summen, Durchschnitts-,
Maximal- und Minimalwerte
Beispiel:
A-Nr. KdNr.
4722 ...
4723 ...
Auftragspositionen
Kostenar Mat.-Nr. Meng
t
e
T(ätigk. ) J123134 1
T
J237927 ...
M(aterial
)
M
Zahnrie
m.
M
Schraub
en
M
Frostsch.
...
...
...
Bereich
Zahnriemen
einsetzen
Preis
EK
...
Preis
VK
159,79
134,17
...
...
...
...
...
...
Autohaus XY[Seitenkopf]
Hans Mustermann [ab hier Gruppenkopf]
...
Datum:
Kd.Nr.
Rechnung für Kennzeichen MK-ZZ 90
Km-Stand: 348918
[bis hier]
Auftrag Nr. 4722
[GK1]
Nr.
Bezeichnung [GK2]
J123134
Zahnriemen ersetzen []
(www.ChristianSchlueter.de)
Preis
159,79
25
J237927
...
[GF2]
Zwischensumme
142,97
_______
302,76
Zwischensumme
Preis
...
_______
543,23
<z.B. Seitenwechsel o.ä.>
Nr.
[POST]
[GF2]
Bezeichnung [GK2]
weitere Positionen
usw., evtl. noch Seitenfuß mit Bankverbindung, etc.
11.3
< fehlt hier was oder war das ein Kapitelende? >
(www.ChristianSchlueter.de)
26
Kapitel 12 – Grundzüge SQL
12.1
Abfrageerstellung mit QBE
12.1.1 Auswahlabfragen erzeugen
Beispiel:
Mailing an alle Kunden im Postleitzahlengebiet 5....  Kundenanschriften?
Vorgehen
1) Datenbankfenster  Abfragen  Neu  Entwurfsansicht
2) Tabelle auswählen
(Menü Abfrage  Tabelle anzeigen ...)
(aus Feldern aus ausgewählten Tabellen können
für Selektion verwendet werden)
3) Kriterien festlegen
3.1) Felder auswählen (Doppelklick in Feldliste)
3.2) Sortierung festlegen
default:
Reihenfolge wie in Tabelle
alternativ:
auf/-absteigend
3.3) Festlegung, ob Feld angezeigt werden soll
3.4) Kriterien bestimmen, z.B. “5x“
3.5) Abfrage ausführen
(Menü Abfrage  Ausführen)
 Ergebnisdarstellung in Datenblattansicht (default)
Bemerkung:
- beliebiges Wechseln zwischen Ergebnis- und Entwurfsansicht möglich
(zwecks Entwicklung)
4) (ggf.) Abfrage speichern
(z.B. für periodische Auswertungen)
gleiche Abfrage / Auswertung über geänderten Grunddatenbestand
5) Abfrage erneut ausführen
Doppelklick auf Name der Abfrage
Bemerkung:
- Verarbeitung von DB-Inhalten mit Abfragen  praktische Anwendung
von Mengenlehre (Durchschnitt, Vereinigung, disj. Vereinigung,
Differenz)
- Ergebnis einer Abfrage wird in Dynaset (= dynamische Datenmenge;
interne, temporäre Tabelle) gespeichert
- Inhalte der Dynasets können aktualisiert werden (Wertänd. von
Feldinhalten);
Aktualisierungen werden automatisch in DB übernommen!!!
-
nach Schließen der Abfrage Löschung des Dynasets; jederzeit
Neuerstellung
Abfrage darf nicht den gleichen Namen wie eine Tabelle tragen
(www.ChristianSchlueter.de)
27
-
-
die verwendeten Felder dürfen aus verschiedenen Tabellen stammen,
falls zwischen den betroffenen Tabellen eine Beziehung definiert ist.
ggf. auch ohne Beziehung, aber mit zwischengeschalteter Tabelle
Abfrage darf Felder enthalten, über die nicht selektiert wird  Spalte
wird in Dynaset aufgenommen für spätere Verwendung (z.B. Formular,
Bericht)
Verwendung von Abfragen
Grundlage für
- Berichte
- Formulare
- Diagramme
- weitere Abfragen
12.1.2 Formulierung von Selektionskriterien
Selektionskriterium: Feldname
Eingabe im Feld „Kriterien“: Vergleichsoperator, Vergleichswert
Selektion von Textinfo (Beispiele)
=“Meyer“
Vergleichsoperator am Anfang (=,<,>,<=,>=,...)
der „=“-Operator darf entfallen
Meier
“ “ werden ggf. automatisch ergänzt
>=“5“
z.B. PLZ ab 50000 aufwärts
“5*“
PLZ, die mit 5 beginnen; Wildcards unterstützt
IN (“Meyer“; “Müller“; “Schulze“)
nur Meyer, Müller oder Schulze
nicht “Meier“
alle außer Meier
“[K-N]*“
alle, die mit K bis N beginnen
Bemerkung:
- keine Unterscheidung zw. Groß- und Kleinbuchstaben bei Kriterien
- Eintrag „ODER“ für alternative Vergleichskriterien
aussagelogisch: nicht ausschließendes Oder
Selektion von numerischen Informationen
verfügbar:
- übliche Vergleichsoperatoren <, <=, >, >=, =, <>
- besondere Notation für Wertebereichseinschränkungen (“zwischen“)
Beispiel:
gesucht sind Artikel mit 50,- < Preis < 100, Eingabe: >=50 UND <=100
 keine Wiederholung des Kriteriums mit anderen Vergleichswerten
nötig
 alternative Schreibweise: zwischen 50 und 100
(www.ChristianSchlueter.de)
28
Bemerkung:
- Sel. mit num. Werten anwendbar auf Felder vom Typ Zahl, Währung,
Autowert
- nur Dezimaltrennzeichen (keine Tausendertrennzeichen!)
Selektion von Datums- / Uhrzeitinformationen
Beispiele:
># 31.12.1980#
alles ab 1.1.1981; “#“wird normalerweise
automatisch eingefügt
(intern zur Datumserkennung)
<=#31.Dez.1999#
alles vor 2000; unterschiedliche Eingabeformate
werden unterstützt
zwischen #1.5.99#
und #31.5.99#
alles im Mai 1999
>Datum() – 30
alles im Zeitraum von heute bis vor 30 Tagen
 Rechenoperationen sind erlaubt!!!
Selektion von bool´schen Werten
Bemerkung:
Vergleichswerte “Ja“ oder “Nein“ ohne besondere Kennzeichnung
aussagelogische Verknüpfung von Selektionskriterien
UND-Verknüpfung
Beispiel: Lieferanten für Moselweine gesucht
log. Kriterium:
(Lieferant)
Regel:
PLZ=5* UND Branche = Getränke UND Kz = L
bei Spezifikationen von Vergleichswerten in Kriterienzeile
werden die betreffenden Selektionskrit. durch UND
verknüpft.
ODER-Verknüpfung
Beispiel: beliebiger Qualitätswein oder Bordeaux
log Kriterium:
Regel:
(Einzelpreis > 20 ODER Artikelname = Bordeaux)
UND Warengruppe = Wein
bei ODER-Verknüpfungen muss ein Vergleichswert in der
Krit.zeile eingetragen werden; die Vergleichswerte für die
mit ODER zu verknüpfenden Krit. werden in ODER-Zeile
aufgeführt
(www.ChristianSchlueter.de)
29
In Access erscheint eine Art Tabelle, in die die Kriterien eingefügt werden:
Kriterium
ODER
Warengruppe
Wein
E-Preis
>20,00
Art_name
Bordeaux
Auswertungen in Abfragen
Ziel:
Ausführung von Auswertungen und Berechnungen in Abfragen
Anwendung:
Entwurfsansicht für Abfragen, Menü-Ansicht  Funktionen  Einblendung
der Zeile “Funktion“, dort Auswahl
verfügbare Fkt.: Summe, Mittelwert, Min, Max, Anzahl, ...
12.1.3 Parameterabfrage
Ziel:
komfortable Wiederholung von Abfragen mit „überwiegend“ gleichbleibenden
Selektionskrit.
Beispiel:
Suche nach Getränkegroßhändlern für bestimmte Getränke; Abfrage fest
formuliert, aber Region soll bei Aufruf spezifiziert werden
Sel.krit.:
Feld PLZ
Händlername
...
Kriterien in “ [Region]“  PopUp-Window bei Ausführung, das die
Schaltflächen “OK“ und “abbrechen“ sowie das Eingabefeld für zu suchende
Region enthält.
Bemerkungen:
- Text der Eingabeaufforderung [Region] muss sich vom Feldnamen
unterscheiden
- Verwendung von Vergleichsoperatoren in Sel.krit. möglich, z.B.
>[Region]
//Anzeige aller PLZ, die größer als aktuell eingegebene
sind
12.2 Anwendung von SQL
SQL  Werkzeug zur Datenbankmanipulation; kleiner, mächtiger Befehlssatz
Historie: Beginn ca. 1970-er von E.F. Codd
„A relational model of data for large data banks“ in CACM (Zeitschrift)
(er erwähnte dabei das Relationentheorie, eng zusammenhängend mit
Mengenlehre)
Umsetzung
ca. 1975 SE QU EL als Abfragespache von IBM
(www.ChristianSchlueter.de)
30
1979 SEQUEL SQL als Sprache für DB2 erstmals kommerziell angeboten
1980 ORACLE, INFORMIX und andere bieten relationale DB mit SQL an
1982 Gründung des ANSI-Kommitees zur SQL-Standardisierung
1986 Verabschiedung ANSI-Standards SQL-1 (Datendefinition, administration, -manipulation)
1981 (?) Verabschiedung von SQL-1 als ISO-Standard
ab 1987 SQL als Industriestandard
1992 SQL-2 als ISO-Standard (neue Datentypen, Gültigkeitsprüfungen,
Festlegung, Primärschlüssel); !!! DB-Systeme unterstützen SQL-2 meist nicht
vollständig, besitzen aber umfangreiche Erweiterungen
???? Verabschiedung SQL-3 (objektrelationale Erweiterungen, ...)
Gliederung der SQL-Anweisungen
- Datendefinition (DDL, Data Definition Language)
- Datenabfrage (DQL, Data Query Language)
- Datenmanipulation
(DML, Data Manipulation Language)
- Zugriffskontrolle
12.2.1 SQL in Abfragen
QBE-Abfrageassistent:
- vereinfachtes User Interface für Abfrageformulierung
- automatische Erzeugung von SQL-Code (SQL-Ansicht)
- manuelle Anpassung von SQL-Befehlen
-  automatische Anpassung in QBE-Interface
12.2.2 SQL beim Oberflächenentwurf in Access
Anwendung von SQL-Anweisungen, wo Tabellen-, Abfrage-, Feldnamen
einzugeben sind,
z.B: „Datenherkunft“.
12.2.3 SQL in V-Basic-Code
folgt später
(www.ChristianSchlueter.de)
31
Kapitel 13 – Grundlagen: relationales Modell
Bemerkung:
in relationalen DB werden Ausdrücke der relationalen Algebra auf SQL abgebildet.
13.1 Relationen, Attribute, Domäne
Def: (Wiederholung Kap. 5)
1) kartesisches Produkt: W; i ist Element {1,...,n} beliebige Mengen a
Element W (Zettel 1)
2) (A1,...,An) Kombination von Attributen mit Wertebereichen Mi; eine nstellige Relation R ist eine Teilmenge des kartesischen Produkts
M1x....xMn. Rn bezeichne die Menge aller n-stelligen Relationen, auch
R(A1,...,An).
[RTabelle, AttributeSpaltenüberschriften]; Anzahl der Attribute heißt
Degree.
3) Wertebereiche W i heißen Domänen.
4) (a1, ...., an) RZeilen einer Tabelle
Eigenschaften
- Relation hat per Definition keine doppelten Tupel
- Tupelreihenfolge ist undefiniert.
- Attribute sind atomar (d.h. nicht fachlich sinnvoll weiter zerlegbar)
- für Attribute sind NULL-Werte erlaubt
13.2 Relationen, Operationen
13.2.1 Selektion
Anwendung einer Operation führt auf die Enstehung einer neuen Relation,
z.B.
F1:RnRm mit n, m ist Element Natürl. Zahlen
F2: Rn x Rm  Rk mit n, m, k ist Element natürl. Zahlen
Def: auf R(a1,..., an) sei B als Abbild definiert. B : R  {wahr, falsch} also B
(a1, ..., an) ist Element{w,f}, dann heißt:
SelektionB ( R ) :={a1,...,an) Element R|B(a1,...,an)=wahr} die Selektion von R
aufgrund von B < Zeichnung1 ist abhanden gekommen >
13.2.2 Projektion
Sei R(a1, ..., an) eine Relation, L=(bk1, ...,bkj) ki Element{1,...,n}
eine Attributkombination, d.h. eine geordnete Teilmenge von (a1, ..., an).
Projektion ist definiert durch:
< Text2 unauffindbar >
(www.ChristianSchlueter.de)
32
Beispiel: Kundentabelle (Zettel)
Projektion heißt: Lasse bestimmte Kriterien weg.
< ups, sollte wirklich mal den Zettel suchen... >
13.2.3 Join-Operationen (Verbunde)
Definition:
Seien zwei Relationen R1 (A1, ..., An), R2 (B1, ..., Bm ) gegeben. Das
kartesische Produkt zweier Relationen ist die Menge aller Paare aus Tupeln
der ersten Relation verknüpft mit Tupeln aus der 2. Relation:
R1xR = |A1, ..., An, B1, ..., Bm ) | (A1, ..., An)  R1  (B1, ..., Bm )  R2}
|R1xR2| = |R1| * |R2|
Beispiel:
R1 A1 A2
1 A
2 B
3 C
R2 B1 B2 B3
1 x v
2 y w
R1xR2 A1 A2 B1 B2 B3
1 A 1 x v
1 A 2 y w
2 B 1 x v
2 B 2 y w
3 C 1 x v
3 C 2 y w
Definition:
Seien zwei Relationen R1  Rn und R2  Rm sowie Selektionsprädikat B:R1xR2
 {wahr;falsch} gegeben, also B(A1, ..., An, B1, ..., Bm )  {wahr;falsch}, dann
ist ein Theta()-Join von R1 und R2 auf Grund von B definiert durch:
(R1, R2, B) := {(A1, ..., An, B1, ..., Bm )  R1xR2 | B(A1, ..., An, B1, ..., Bm ) = wahr}
Bemerkung:
Join = kartesisches Produkt + Selektion
Beispiel:
Tetha(R1, A1 A2 B1 B2 B3
R2, A1=B1)
1 A 1 x v
(www.ChristianSchlueter.de)
33
2
B
2
y
w
Tetha(R1, A1 A2 B1 B2 B3
R2, A1>B)
2 B 1 x v
3 C 1 x v
3 C 2 y w
Definition:
Ein Equi-Join ist ein Theta-Join, der im Selektionsprädikat nur den
Vergleichsoperator „=“ zulässt.
Definition:
EIn Equi-Join, bei dem die doppelt vorkommenden Attribute nur einmal
aufgelistet werden, heißt Natural-Join oder einfach Join. Er wird abgekürzt mit
„*“
Beispiel:
R1 und R2 wie oben
R1 * R2 A1 A2 B2 B3
1 A x v
2 B y w
Definition:
Ein Equi- oder Natural-Join zwischen R und S heisst verlustfrei, wenn alle
Tupel von R und S im Join vertreten sind. Die inverse Operation erzeugt dann
wieder R bzw. S.
Bemerkung:
ggf. besteht Interesse an allen beim Natural-Join herausgefallenen Sätzen 
Outer Join
Bemerkung:
bisherige Join-Operation  Inner Join
Definition:
Der linke Outer Join zwischen Relationen R1 und R2 ist ein Natural Join, bei
dem alle Tupel der linken Relation, hier R1, die im Natural-Join unterdrückt
werden, als Tupel mit aufgeführt und in den Spalten, die zu R2 gehören, mit
NULL aufgeführt werden.
analog:
rechter Join
Beispiel:
R1
linker Outer Join mit R1.S2 = R2.S4
S1 S2
R2
S3
A W
C
B X
D
C Y
(www.ChristianSchlueter.de)
S4
Y
Z
34
R1 x R2
S3
C
D
C
D
C
D
S4
Y
Z
Y
Z
Y
Z
Tetha
S1 S2 S3
(R1,R2S2=S
4)
C Y C
S4
R1 * R2
LOJ
S1
A
A
B
B
C
C
S2
W
W
X
X
Y
Y
Y
S1 S2 S3
C Y C
S1
A
B
C
S2
W
X
Y
S3
?
?
C
S4
?
?
Y
rechts
Die Spalte S4 wurde zum Schluss durchgestrichen
LOJ steht für Linker Outer Join
rechter OJ
S1
C
?
S3
C
D
S4
Y
Z
Definition:
Der Full Outer Join zwischen Relation R1 und R2 ist ein Natural Join, bei dem
alle Tupel der linken und rechten Relation, die beim Natural Join unterdrückt
werden, erhalten bleiben. Nicht verwendete Attribute der jeweils anderen
Relation werden mit NULL-Werten gefüllt.
FOJ
(S2=S4)
S1
S2
S3
C
A
B
?
Y
W
X
Z
C
?
?
D
Bemerkung:
Inner Join Operationen besitzen immer Ergebnistupel aus beiden beteiligten
Relationen.
Eigenschaften:
(www.ChristianSchlueter.de)
35
-
Attribute, über die Join ausgeführt wird (Join-Attribute), müssen keine
Schlüsselattribute sein
Join Attribute der beteiligten Relationen müssen nicht den gleichen
Namen haben
jede Relation kann mit einer anderen gejoint werden (auch mit sich selbst)
Domänen der Join-Attribute müssen gleich sein
13.2.4 Mengenoperatoren
Seien R1(A1, ..., An) und R2(B1, ..., Bm ) Relationen mit gleichen Attributen
Union (R1, R2) := {(x1, ..., xn) | (x1, ..., xn)  R1 ODER (x1, ..., xn)  R2}
Durchschnitt (R1, R2) := {(x1, ..., xn) | (x1, ..., xn)  R1 UND (x1, ..., xn)  R2}
Differenz (R1, R2) := {(x1, ..., xn) | (x1, ..., xn)  R1 UND (x1, ..., xn)  R2}
disj. Vereinigung (R1, R2) := {(x1, ..., xn) | (x1, ..., xn)  R1 PUNKTODER (x1, ...,
xn)  R2}
Argument Beschreibung
Spalte
Name der Felder in einer
Tabelle
Größe
Feldgröße (nur bei "TEXT")
Datentyp COUNTED, SINGLE,
DOUBLE,
SHORT, LONG, TEXT, ...
(www.ChristianSchlueter.de)
36
Kapitel 14 – Structured Query Language (SQL)
Regeln:
- Eingabe von SQL-Anweisungen beliebig über 1...n Zeilen, max. 256 Zeichen
- Anweisung mit „;“ abschließen
- SQL ignoriert Groß- und Kleinschreibung
- Einteilung von Befehlen für Datendefinition (DDL) , -abfrage (DQL) und –
manipulation (DML)
Tipp:
Im Praktikum hat es sich bewährt, verwendete SQL-Anweisungen komplett in
Großbuchstaben zu schreiben, jedoch die eigenen Variablen und Wertzuweisungen
komplett klein oder normal (klein/groß) zu schreiben.
14.1 Data Definition Language (DDL)
14.1.1 Tabellenerstellung
Anweisung:
CREATE TABLE Tabellenname
(
Spalte1 Datentyp[(Größe)][NOT NULL][CONSTRAINT Klausel]
Spalte2 [...]
);
Bemerkung:
Feldnamen dürfen Leerzeichen enthalten, dann aber mit „[ ]“ einschließen,
z.B. [Bilanz 1999]
14.2
Data Query Language (DQL)
Aufbau einer Datenabfrage als Ergebnis folgender Fragen:
- was wird gesucht?
(SELECT)
- wie wird es aufbereitet?
(AS ...)
- woher kommen die Daten?
(FROM)
- zu welchen Bedingungen?
(WHERE)
- in welcher Reihenfolge? (Anzeige)
(ORDER BY)
- in welcher Gruppierung?
(GROUP BY)
14.2.1 Grundlagen für Abfragen
Ziel:
Auswahl von Feldern aus Datensätzen, die bestimmten Bedingungen
genügen
Syntax:
SELECT [PRAEDIKAT]
{*|Tabelle.*|[Tabelle.]Spalte1[AS Alias1[,Alias2][,[...]]][,[Tabelle.]Spalte2[,...]}
FROM Tabellenausdruck [,...] [IN EXTERNE DB]
[WHERE ...]
[GROUP BY ...]
[HAVING ...]
(www.ChristianSchlueter.de)
37
[ORDER BY ...];
Erläuterungen:
- SELECT wählt die Spalten aus den gegebenen Tabellen aus und erzeugt
neue (temporäre) Tabellen mit Sätzen, die den Bedingungen genügen
-
-
Details
Sternchen
wählt alle Spalten aus Tabelle, Bsp.: SELECT * FROM
Personen;
Gegenteil: SELECT Vorname, Nachname FROM
Personen;
Spalte1 ...
auszugebende Spalten, Benennung z.B. „Nachname“
PRAEDIKAT
ALL
Default
TOM m
Anzeige der ersten m Sätze
DISTINCTION ignorieren gleicher Zeilen entstanden durch Projektion
AS
Personen;
SELECT Personen.Nachname AS Name FROM
(Name ist der Spaltenname für Dynaset)
SELECT Nachname + ‘,‘ + Vorname AS Name FROM
Personen;
(Projektion durch Stringverarbeitung)
FROM
Personen p;
Ausgabe einer oder mehrerer Tabellen
SELECT Personen.Nachname, Abteilung.Name FROM
Personen,Abteilung
(Personen.Nachname ist vollständiger Spaltenname)
Tabellenaliase: SELECT p.Nachname, p.Vorname FROM
selbstbezügliche Verknüpfungen erlaubt:
p1.Nachname, p2.Name FROM Personen p1,Personen
p2;
-
Reihenfolge
Diese ist bei den verschiedenen Klauseln signifikant!!!
14.2.2 Auswahl von Datensätzen
Ziel:
Formulierung von Kriterien für die Selektion von Datensätzen
Syntax:
SELECT * WHERE Vergleichsausdruck (also „Operand Operator
Operanden“)
zulässige Operanden:
(www.ChristianSchlueter.de)
38
-
Spaltennamen von Tabellen aus FROM Klausel
Konstanten (30, -0.135, 10.55, „MFH“, „,#Z5,D5,200#“)
arithmetische Ausdrücke (+,-,*,/,()Klammern in üblicher Priorität))
Systemvariablen ( Hersteller)
Unterabfragen (später)
zulässige Operatoren:
=,<,>,<=,>=,<>, besondere Operatoren, s.Ü. (?), AND, OR, NOT
A
T
T
F
F
T
T
T
U
U
B
T
F
T
F
U
U
T
F
U
A und B
A oder B
neg A
neg B
U
F
U
F
U
T
U
T
U
U
F
T
U
U
U
U
U
F
T
U
Beispiel:
SELECT Namen FROM Mitarbeiter
WHERE KostenstellenNr >= 1000
AND KostenstellenNr <= 2000;
BETWEEN
WHERE Spaltenname [NOT] BETWEEN Ausdruck AND Ausdruck
Ausdruck z.B. Spaltenname, Konstante, arithmetischer Ausdruck
Beispiel:
SELECT Vorname, Nachname FROM Mitarbeiter
WHERE Nachname BETWEEN ‚P‘ AND ‚H‘ ;
gleichwertig: WHERE ‚F‘ <= Nachname AND Nachname <= ‚H‘
LIKE-Operator
Ziel:
Verwendung von Textmustern
Syntax:
WHERE Spaltenname [NOT] LIKE ‚Maske‘
Bemerkung:
- LIKE nur für Zeichenketten definiert
- Wildcards „*“ und „?“ und weitere  Hersteller
- ANSI:
*%
?  _ (Unterstrich) siehe Hilfe
Beispiel:
SELECT * FROM Mitarbeiter
- WHERE Nachname = „Schulz“
- WHERE Nachname LIKE „Schulz“
(www.ChristianSchlueter.de)
39
-
WHERE Nachname LIKE „Schulz*“  Schulz, Schulze, Schulze-Heinsch
Datumsvergleich
Format
# Monat/Tag/Jahr #
SELECT *
FROM Mitarbeiter
WHERE Geburtstag < #05/15/1933#;
Bem.:
Das aktuelle Datum erhält man mit der Funktion "Now()". Hiermit sind auch
Berechnungen möglich, z.B. alle Mitarbeiter anzeigen lassen, die älter als 50
sind:
SELECT *
FROM Mitarbeiter
WHERE Geburtsdatum < (Now() - 50);
Der Typ eines Datumsfeldes ist übrigens DATE. Eine Tabellenerstellung
könnte also so aussehen:
CREATE TABLE Geburtstagskalender (
Name TEXT(20),
Geb_tag DATE);
IN-Klausel
Untersuchung auf Mengenzugehörigkeit (Aufzählung)
Syntax:
WHERE Spaltenname [NOT] IN (Literal-1[,Literal-2[,...]])
Beispiel:
SELECT * FROM Mitarbeiter
WHERE Ort IN ("Köln“, "Iserlohn“, "Dortmund“);
Bemerkung:
- Menge nach IN darf nur Konstante enthalten
- alle Konstanten vom gleichen Typ
- keine Konstanten doppelt
NULL-Prädikat
Suche nach NULL-Werten
Syntax:
Ausdruck IS [NOT] NULL
Beispiel:
SELECT * FROM Mitarbeiter WHERE AbtNr IS NULL;
(Mitarbeiter ohne Abt.zugehörigkeit)
(www.ChristianSchlueter.de)
40
Tabellenübergreifende Suche
Gegeben:
Mitarbeiter | VName NName GebDat Raum
Räume |
Nr
3
8
9
Bezeichnung
gelbe Suche
B36
Gesucht:
Alle Personen in B36
SELECT NName, VName FROM Mitarbeiter, Räume
WHERE Mitarbeiter, Raum = Räume.Nr
AND Räume.Bezeichnung = „B36“;
//-Join
14.2.3 Ordnen von Selektionsergebnissen
Festlegung einer Reihenfolge für Ergebnisdarstellung
Syntax:
SELECT ...
ORDER BY [Tabelle1.]Feld1 | RefNr [ ASC | DESC ];
(ASC = aufsteigend (Standard), DESC = absteigend)
Bemerkung:
RefNr gibt die Position in der Spaltenliste von SELECT an; wichtig bei *
Beispiel:
SELECT *
FROM Mitarbeiter
WHERE Name >=‘M*‘
ORDER BY NName DESC;
SELECT Nr, NName, Gehalt, Raum
FROM Mitarbeiter
WHERE ...
ORDER BY NName, 4 ASC;
(bei der 4 handelt es sich sicher um einen
Tippfehler, oder?)
14.2.4 Berechnungen in Tabellen
14.2.4.1
Ausdrücke in Spalten
an Stelle eines Spaltennamens kann ein mathem. Ausdruck verwendet
werden
Beispiel:
neue Gehaltsstruktur nach Anhebung um 5%
SELECT MA_Nr, NName, VName,
Gehalt AS [altes Gehalt],
(Gehalt * 1.05) AS [neues Gehalt],
(Gehalt * 1.05) – Gehalt AS Erhoehung
(www.ChristianSchlueter.de)
41
FROM Mitarbeiter
ORDER BY 5;
sortieren
14.2.4.2
// nach dem 5. Element
Datensatzübergreifende Verarbeitung
Spalten- (Gruppen-) Funktionen für Auswertungen aus Tabellenebene
(Ergebnisse immer EINE Zeile)
-
Summen- / Durchschnittsbildung
Syntax: {SUM | AVG} (Spaltenname | arithm. Ausdruck)
Beispiel:
gesucht ist die durchschnittliche Prämie pro MA (neues Attribut)
SELECT AVG (Prämie) AS [Durchschnitt MA] FROM Mitarbeiter;

Durchschnitt
MA
... gesucht: durchschnittlich gezahlte Prämie über 100,SELECT WHERE Prämie > 100;
... gesucht: Gesamtkosten der Gehaltserhöhung
SELECT SUM (Gehalt * 1.05 – Gehalt) FROM Mitarbeiter;
-
Minimum- / Maximumbestimmung
Syntax:
{MIN | MAX} (Spaltenname | ...)
Bemerkung:
- ‘*‘: alle Zeichen zählen
- bei spaltenbezogener Zählung: Sätze mit NULL nicht zählen
Beispiel:
SELECT COUNT (*) AS [Gesamtzahl]
FROM Mitarbeiter;
SELECT COUNT (Raum) AS [Anzahl Räume]
FROM Mitarbeiter;
 3 im Beispiel
Prozentsatz MA mit Prämie
SELECT COUNT (Prämie) | COUNT (*) * 100
FROM Mitarbeiter;
14.2.5 Gruppenverarbeitung
Ziel:
(www.ChristianSchlueter.de)
42
Gruppieren von Informationen und Darstellung gruppenbezogener Ergebnisse
Syntax:
GROUP BY Spalte1 [, Spalte2, [,...]]
[HAVING Suchbedingung]
Bemerkung:
- Spaltenname korrespondiert mit Spaltennamen hinter SELECT
- RefNr nicht zulässig!
- bei Kombination mit Funktion (SUM, ...) wird Funktion auf niedrigster
Gruppenwechselebene zuerst ausgeführt
Beispiel:
Mitarbeit
er
...
Kost
AusbBeruf
Gesucht:
Wie viele MA jeder Berufsgruppe sind im Unternehmen tätig?
SELECT AusbBeruf
COUNT (*) AS Anzahl
FROM Mitarbeiter
GROUP BY AusbBeruf;
Erg
AusbBeruf
Bankkaufma
nn
Dipl.Inf.
...
Anzahl
2
5
...
Gesucht:
Wie ist das durchschnittliche Gehalt der Berufsgruppe „Kaufmann“ im
Unternehmen und wie viele Einzelposten würden in die Auswertung mit
aufgenommen?
SELECT AusbBeruf
COUNT (*) AS Anzahl
AVG (Gehalt) AS Durchschnittsgehalt
FROM Mitarbeiter
WHERE AusbBeruf LIKE ‘*Kauf*‘
GROUP BY AusbBeruf;
Gruppenselektion
WHERE-Klausel wird auf den gesamten Datenbestand angewandt;
HAVING-Klausel (syntaktisch genauso) wird nur innerhalb von Gruppen
angewandt.
Gesucht:
wie oben (Durchschnitts-Berufsgruppe), aber nur Gruppen mit mehr als 1
Einzelposten
(www.ChristianSchlueter.de)
43
SELECT ...
GROUP BY AusbBeruf
HAVING COUNT (*) > 1; // Gruppen mit einem Element ignorieren
14.2.6 Vereinigung von Tabellen (UNION)
Zusammenführen von Datensätzen aus verschiedenen Tabellen
Syntax:
[TABLE] Abfrage 1 UNION [ALL] [TABLE] Abfrage 2 [UNION ...];
Bemerkung :
- Abfrage x:
-- SELECT - Anweisung
-- Name von gespeicherten Abfragen / Tabellen
- Voraussetzung : identische Strukturen
- Spaltennamen der Ergebnisliste = Spaltennamen der ersten Abfrage
- ORDER BY nur hinter letzter Abfrage zulässig
An einem Beispiel erklärt:
Gesucht:
Gemeinsames Telefonverzeichnis aus Tabellen "Kunden",
"Lieferanten"
SELECT Name, Telefon
FROM Kunden
UNION
SELECT Name, Telefon
FROM Lieferanten;
Gesucht:
Übersicht über alle Kunden und Lieferanten in Brasilien mit
Name und Ort, sortiert nach dem Ort
SELECT Firma, Ort, 'Lieferant' AS Quelle
FROM Lieferanten
WHERE Land = "Brasilien"
UNION
SELECT Firma, Ort, 'Kunde' AS Quelle
FROM Kunden
WHERE Land = "Brasilien"
ORDER BY Ort;
...
Firma
...
...
Ort
...
...
Quelle
Kunde
Lieferant
(www.ChristianSchlueter.de)
44
14.2.7 Unterabfragen
Problem:
Welcher Mitarbeiter hat das höchste Gehalt?
mehrzeilig
einzeilig
SELECT MA_Nr, NName, MAX (Gehalt)
FROM Mitarbeiter;
Lösung:
Schritt 1: Suche Maximum
Schritt 2: Suche MA, der dieses Maximum enthält
 Verschachtelung von Abfragen
SELECT MA_Nr, NName, Gehalt
FROM Mitarbeiter
WHERE Gehalt = (SELECT MAX(Gehalt) FROM Mitarbeiter);
Syntax:
1) Vergleich [ ANY | ALL | SOME ]
2) Ausdruck [NOT] IN
3) Ausdruck [NOT] EXISTS
(SQL-Anweisung)
(SQL-Anweisung)
(SQL-Anweisung)
Erläuterungen:
Unterabfragen sind zulässig in
- WHERE- und HAVING-Klauseln
- FROM-Klauseln
- in Falllisten einer SELECT-Anweisung (Vorsicht bei diesen!)
Variante 1:
Variante 2:
Variante 3:
Vergleichsausdruck mit Unterabfrage als Vergleichswert
"normale" IN-Anweisung / Vergleich
Feststellung, ob Abfrage überhaupt Daten zurückgibt
Beispiele:
1) Wie lauten Mitarbeiternummer und Name der Person, die auf der gleichen
Kostenstelle arbeiten wie MA_Nr 360?
SELECT MA_Nr, NName
FROM Mitarbeiter
WHERE KoSt = ( SELECT KoSt FROM Mitarbeiter WHERE MA_Nr =
360);
2) Welche Mitarbeiter sind verheiratet?
SELECT MA_Nr, VName, NName
FROM Mitarbeiter
(www.ChristianSchlueter.de)
45
WHERE MA_Nr IN (SELECT MA_Nr FROM Angehörige WHERE
VerwGrad LIKE "Ehe*");
Regeln zur Bildung von Subqueries
-
Subquery ist immer ein rechtsseitiger Term einer Vergleichs- oder
EXISTS-Bedinung
Subqueries stehen in runden Klammern "( )"
nach SELECT der Subquery darf nur ein Ausdruck folgen (eine Spalte)
mit dem gleichem Typ, wie er im linksseitigen Term vorkommt
bei Vergleich mit Operatoren =, >, <, ù darf Subquery nur einen Wert
(eine Zeile) als Ergebnis liefern
bei IN, ANY, ALL, EXISTS sind mehrzeilige Ergebnisse zulässig
3) Ersatzlösung für Outer Joins
z.B. Liste der MA einschließlich Ehepartner
SELECT B.MA_Nr, B.VName, B.NName, A.Name
FROM Mitarbeiter B, Angehörige A
WHERE A.MA_Nr = B.MA_Nr AND VwGrad LIKE "EHE*"
UNION
SELECT MA_Nr, VName, NName '...' FROM Mitarbeiter
WHERE MA_Nr NOT IN (SELECT MA_Nr FROM Angehörige);
Beispiel:
Welche Mitarbeiter haben keine Angehörigen?
SELECT MA_Nr, VName, NName
FROM Mitarbeiter
WHERE MA_Nr <> ALL (SELECT MA_Nr FROM Angehörige);
-
"<> ALL" entspricht "NOT IN"
ANY oder SOME: Vergleich Textwert mit jeder Zeile
WHERE-Ausdruck wahr, falls mindestens ein Vergleich wahr
"=ANY" entspricht "IN"
Beispiel:
Welche Mitarbeiter der Kostenstelle 1100 verdienen weniger als der
Meistverdienende
SELECT MA_Nr, NName, Gehalt, KoSt
FROM Mitarbeiter
WHERE Gehalt < ANY (SELECT Gehalt FROM Mitarbeiter WHERE KoSt
= 1100)
AND KoST = 1100;
Bemerkung:
(www.ChristianSchlueter.de)
46
EXISTS-Test erfüllt, wenn Ergebnis mindestens eine Zeile enthält
Beispiel:
Anzeige aller Mitarbeiter, für die Angehörigendaten gespeichert sind
SELECT MA_Nr, NName, VName
FROM Mitarbeiter M
WHERE EXISTS (SELECT * FROM Angehörige A WHERE M.MA_Nr =
A.MA_Nr)
ORDER BY 1;
Inner
Outer
Reference
Reference
Kombination Haupt- /
Unterabfrage
Bemerkung:
- Verwendung von Unterabfragen in FROM-Klausel anstelle von
Tabellennamen
Beispiel:
Welche Kinder von Mitarbeitern wurden seit dem 01.01.2000 geboren? (Unter
Access muss der grau markierte Bereich in einer gesonderten Abfrage
gespeichert werden!)
SELECT A.MA_Nr, A.NName
FROM Mitarbeiter A, (SELECT * FROM Angehörige WHERE GebDat >=
#01.01.2000#) B
WHERE A.MA_Nr = B.MA_Nr;
14.3
Datenmanipulation (DML)
Grundsatz: keine Rückgabe von Daten, nur Änderungen
14.3.1 Einfügen von Daten in Tabellen
Ziel:
Anhängen von Datensätzen an eine bestehende Tabelle
Syntax:
1) INSERT INTO Ziel [Feld1 [ù]]
VALUES (Wert1 [, Wert2[, ù]]);
2) INSERT INTO Ziel
[IN Externe_DB]
INTO (Feld1 [, Feld2 [,ù]])
SELECT (Anweisung);
3) SELECT Feld1 [, Feld2 [,ù ]]
INTO neue_Tabelle [IN EXTERNE_DB]
FROM Quelle;
Bemerkung:
- (2) und (3) fügen mehrere Datensätze, (1) nur einen Datensatz ein
(www.ChristianSchlueter.de)
47
Beispiel:
Aufnahme der Amgehörigen Ehefrau "Eva", GebDat unbekannt
INSERT INTO Angehörige
VALUES (10, 'Eva', NULL, 'Ehefrau');
Beispiel:
Aufnahme einer neuen Kostenstelle für "Projekt x&y"
INSERT INTO Kostenstelle (KoSt, Bez)
VALUES (1140, 'Projekt x&y');
Beispiel:
Welcher ehemalige Mitarbeiter (>=65 Jahre) werden noch betreut (sind in
DB)?
SELECT NName, GebDat
INTO Ehemalige
FROM Mitarbeiter
WHERE DateDiff ('yyyy', GebDat,now()) >= 65;
Beispiel:
Welche Mitarbeiter sind in 5 Jahren voraussuchtlich zu betreuen?
INSERT INTO Ehemalige
SELECT NName, GebDat
FROM Mitarbeiter
WHERE DateDiff ('yyyy', GebDat, now()) BETWEEN 60 AND 65;
14.3.2 Ändern von Datensatzattributen
Syntax:
UPDATE Tabelle
SET NeuerWert1 [, NeuerWert2, [, ...]]
WHERE Kritierien;
Bemerkung:
UPDATE operiert auf Originaldaten
Beispiel:
UPDATE Mitarbeiter
SET Gehalt = Gehalt * 1.025;
UPDATE Mitarbeiter
SET Prämie = Prämie * 1.1 + 100
WHERE DatDiff ('yyyy', Eintrittsjahr, now) > 5;
Bemerkung:
Mathematische Operationen auf Felder mit NULL-Werten ergeben wieder
NULL-Werte. Vorsicht bei UPDATE auf Key-Felder!!!
(www.ChristianSchlueter.de)
48
14.3.3 Löschen ausgewählter Datensätze
Syntax:
DELETE
FROM Tabelle
WHERE Kriterien;
Bemerkung:
DELETE ohne Kriterien löscht alle vorhandenen Sätze, aber NICHT die
vorhandene Struktur – im Gegensatz zu DROP TABLE, wobei die gesamte
Tabelle gelöscht würde.
DELETE ist eine Löschabfrage und löscht einzelne Felder innerhalb von
Sätzen mit UPDATE ( ... SET ... = NULL).
DELETE arbeitet auf Originaldaten
Beispiel:
Mitarbeiter mit MA.Nr 150 ist aus Unternehmen ausgeschieden:
DELETE FROM Mitarbeiter WHERE MA.Nr = 150;
DELETE FROM Angehörige WHERE MA.Nr = 150;
Bemerkung am Rande:
Herzlichen Dank an Andreas Rauer für die Ergänzung von Kapitel 14.2.7 bis 14.3.2!
(www.ChristianSchlueter.de)
49
Kapitel 15 – Formularverarbeitung ( Unterformulare)
Ziel:
Darstellung von fachlich zusammen gehörenden Informationen aus
unterschiedlichen Tabellen, wobei i.d.R. 1 Satz "führend", Rest enthält Detailinfos,
z.B. Rechnungskopf, Rech-Positionen; MA, Angehörige
Teilschritte für das Erstellen von Haupt- / Unterformularen
1)
Unterformular wir normales Formular; beachte:
- Eigenschaft: Format, Standardansicht: "Endlosformular", "Datenblatt"
- als Datenbank-Herkunft: SQL-Befehl
2)
Hauptformular (HF) wie gewohnt anlegen
3)
Unterformular (UF) in HF einfügen durch
a) Auswahl von "Unterformular" in Toolbox + Assistent verfolgen
b) Drag & Drop des UF-Namens in HF-Entwurf
prüfen: Eigenschaften (UF-Steuerelement im HF)
Daten --> Herkunftsobjekt
<-> UF-Name
Verknüpfung von / nach
--> Feldname
(Pfeile umschreiben Beziehungen)
<Es folgte eine Präsentation, die sich hier schlecht kommentieren ließù>
(www.ChristianSchlueter.de)
50
Kapitel 16 – Transaktionen
Definition:
Transaktion ist eine Folge von DB-Operationen, die eine gemeinsame Einheit bilden
(=> Zwischenspeicherung aller Änderungen zunächst separat, zu bestimmtem
späteren Zeitpunkt in DB übernommen oder verworfen)
Beispiel:
telefonische Bestellung von einem Artikel X
Realisierung:
a)
Bestellung aufnehmen => Auftragstabelle
b)
Aktualisierung in Kundentabelle
c)
Bestandsanpassung in Artikeltabelle; Artikel nicht lieferbar
(Kollisionsabfrage!)
Transaktionskonzept ist zentrales Mittel zur Aufrechterhaltung konsistenter
Datenbestände!
Methodik in Access:
1)
BeginTrans (Transaktionseinleitung)
2)
Commit
(Übernahme aller gespeicherten Operationen)
3)
Rollback
(Verwerfen der Operationen in der Transaktion)
(www.ChristianSchlueter.de)
51
Anhang - wichtige Begriffe und Abkürzungen
ACID
Atomicity, Consistency, Isolation, Durability
DAL
Data Administration Language
DAO
Data Access Object
DBMS
Data Base Management System
DBS
Data Base System
DD
Data Dictionary
DDL
Data Definition Language
DL
Definition Language
DML
Data Manipulation Language
DQL
Data Query Language
DSDL
Data Storage Definition Language
ER
Entity Relationship
ISAM
Index Sequential Access Method
ODBC
Open Data Base Connectivity
SQL
Structured Query Language
Atomicity
Unteilbarkeit von Transaktionen, Transaktionen werden entweder vollständig oder gar nicht ausgeführt
Consistency
Konsistenz: Nach Abschluss einer Transaktion ist eine Datenbank in einem korrekten Zustand; während der
Transaktionen können inkonsistente Zustände auftreten
Isolation
Jede Transaktion läuft so, als wäre sie die einzige laufende im System; parallele Transaktionen dürfen sich nicht
beeinflussen
Durability
Dauerhaftigkeit: Änderungen, die von einer erfolgreichen Transaktion durchgeführt werden, überdauern jeden
nachfolgenden Fehlerfall
Methodik
Access
(Transaktionen)
in BeginTrans = Transaktionseinleitung
Commit = Aktualisierung z.B. in Kundentabelle (Sprungmarke setzen)
Rollback = Verwerfen der Operationen in Transaktion (Undo-Funktion)
Assoziation
Zusammenfassung gleichartiger Beziehungen zwischen Entitäten (werden mit Verben benannt und können
Attribute besitzen)
Attribut
beschreibt eine fachliche Eigenschaft, die allen Entitäten einer Entitätsmenge gemeinsam ist (entspricht den
Spalten einer Tabelle)
Degree
Anzahl der Attribute
Domäne
Wertebereich eines Attributs
Entität
individuelles und identifizierbares Objekt der Realwelt
Entitätsmenge
Zusammenfassung von Entitäten mit gleichen Eigenschaften
Kardinalität
Komplexitätsgrad der Beziehungen zwischen Entitätsmengen (min, max)
Relation
Beziehung zwischen Entitätsmengen untereinander
Rolle
beschreibt welche Funktion eine Entität in einer Assoziation hat
Schlüsselattribut
eindeutige Identifizierung eines Objektes bzw. einer Entität
Tupel
Zeile einer Tabelle (Entitäten in einer Entitätsmenge)
Primärschlüssel
Schlüssel zum eindeutigen Identifizieren eines Tupels in einer Tabelle
Fremdschlüssel
Verweis auf den Primärschlüssel einer Fremdtabelle
minimaler
Schlüssel
Ein Schlüssel heisst minimal, wenn bei Weglassen eines Attributs ein Tupel nicht mehr eindeutig identifizierbar
ist.
DAO
DAO (Data Access Objects) is an application program interface (API) available with Microsoft's Visual Basic that
lets a programmer request access to a Microsoft Access database. DAO was Microsoft's first object- oriented
interface with databases. DAO objects encapsulate Access's Jet functions. Through Jet functions, it can also
access other Structured Query Language (SQL) databases.
ODBC
... is a widely accepted application programming interface (API) for data base access. It is based on the Call-Level
interface (CLI) specified from X/Open and ISO/IEC for data base APIs and uses SQL as its data base language
(www.ChristianSchlueter.de)
52
Herunterladen