Peter Micheuz, slidefinder.net machts möglich …
Grundlagen der Informatik
Konzept Datenbanken
Produkt (MS)ACCESS
2
Einleitung
Datenbankmanagementsystem (DBMS)
– Programm zur Verwaltung der Datenbank– Datenbank definieren und ändern– Daten speichern und ändern– Anfragen an die Datenbank weiterleiten– Hilfsmittel für Eingabe und Präsentation– Zugriff regeln Benutzer verwalten– Transaktionen überwachen
Was ist überhaupt eine Datenbank?– Ansammlung von Daten in strukturierter Form– Speicherung in Datenfeldern von bestimmten Datentyp– Zusammfassung von Datenfeldern in Datensätzen– Zusammenfassung von Datensätzen in Tabellen– Verknüpfung der Tabellen über Schlüssel
3
Unterschiedliche Sichten Die externe Sicht (externes Schema)
– Unterschiedliche Sicht der Anwendergruppen auf die Daten– Je nach Anwendungsinteresse unterschieden– Orientiert auf Schutz der Daten vor Mißbrauch und Fehlern
z.B. braucht der Koch nur zu Wissen wieviele Mitarbeiter im Betrieb arbeiten, aber der Betriebswirt muß wissen welches Gehalt sie gerade bekommen
Die logische Gesamtsicht (konzeptuelles Schema)– unabhängig von der EDV-spezifischen Darstellung– Beschreibung der Objekte in der Datenbank– Beschreibung der gegenseitigen Beziehungen– Besonders wichtig für den Datenbankentwurf
Die interne Sicht (internes Schema)– Den Anwendern i.d.R. verborgen– EDV-spezifische Organisation der Daten auf den Speichermedien des
Datenbanksystems– Systemspezifische Methoden und Organisation des Zugriffs auf die Daten
4
Das Entity-Relationship-Modell (konzeptionelles Schema)
Basiskonstrukte des ER-Modell– Entitys
Abgrenzbares Objektder realen Welt z.B. derMitarbeiter “Schröder”, das Geschäftshaus“Rose”, eine Adresse, Urbanprojekt xy
– Entity-TypenMenge aller Entitys, die die gleichen Eigenschaften habenz.B. Personen, Gebäude, Adressen, Projekte
– Beziehungen und BeziehungstypenBeziehungen zwischen Entitys oder Entity-Typenz.B. ist die Beziehung zwischen “Schröder” und Geschäftshaus “Rose”:“arbeitet in” und Gebäude “haben” eine Adresse stellt einenBeziehungstyp dar
– AttributeEigenschaften, die jedem {Entity|Beziehung} desselben {Entity|Beziehungs}
-Typszukommen z.B. ist das Gehalt ein Attribut von einem Mitarbeiter und das Ein-stellungsdatum ein Attribut der Beziehung zwischen dem Mitarbeiter und
demUnternehmen
Das ER-Modell analysiert die Beziehungen unterschiedlicher Typen von Objekten der Realwelt und hält sie für eine konzeptionellen Sicht fest.
5
Schlüssel und Primärschlüssel Schlüssel
– Attribut welches zur eindeutigen Identifizierung einer Entity von einem Entity-Typ dient z.B. Personalausweisnummer, Mitarbeiternummer
– Darf nur einmal für einen {Entity|Beziehungs}-Typ vorkommen
Primärschlüssel– Bei vorkommen mehrerer Schlüssel wird einer als Primärschlüssel
festgelegt
Fremdschlüssel– Attribut einer {Entity|Beziehung}, welches ein Primärschlüssel einer
{Entity|Beziehung} einer anderen {Entity|Beziehungs}-Typ darstellt
6
Beziehungen
1:1 Beziehung– Jeder Entity des einen Entity-Typs ist eine Entiy eines anderen Entity-
Typs zugeordnet und umgekehrt– z.B. Person-Mitarbeiter (Jede Person kann nur ein Mitarbeiter sein und
umgekehrt [anders wenn er mehr Arbeitsverhältnisse hat])
1:n Beziehungen– Jede Entity eines erste Entity-Typs ist mit beliebig vielen Entitys eines
zweiten Entity-Typs zugeordnet. Jedoch ist jede Entity des zweiten Entity-Typs nur genau einem Entiy des ertsten Entity-Typs zugeordnet.
n:m Beziehungen– Jeder Entiy eines Entity-Typs sind beliebig viele Entitys eines anderen
Entity-Typs zugeordnet und umgekehrt
7
Entwerfen und diskutieren Sie gemeinsam ein konzeptionelles Modell für eine Datenbank zur Projektverwaltung in einem Planungsbüro!
Welche Entity-Typen wählen Sie für die vorkommenden Objekte z.B. Personen, Mitarbeiter, Gebäude, Geschäftshaus, Projekte, Kunden und welche Attribute und Beziehungen würden Sie für ein Planungsbüro wählen?
8
Das relationale Datenmodell
Zur Abbildung des konzeptionellen Modells in eine Datenbank
Wird von den meisten derzeitigen Datenmodellen in RDBMS (relationalen DBMS) unterstützt
{Entity|Beziehungs}-Typen aus der Realwelt werden durch Relationen modelliert
Jede Relation wird als Tabelle dargestellt Das Ergebnis einer Abfrage an eine Datenbank stellt eine
Ergebnisrelation dar Datenbank-Abfragesprache -> SQL (Structured Query
Language)
9
Überführung des ER-Modells inrelationales Datenbankschema
Entity-Typen– Jeder Entity-Typ wird in eine Tabelle überführt
Name des Typs -> TabellennameSeine Attribute -> Spalten der TabelleDie Attributnamen -> SpaltennamenEntitys des Typs -> in den Zeilen der Tabelle (Inhalt)
n:m-Beziehungstypen– Einführung einer zusätzlichen Beziehungstabelle
Enthält die Primärschlüssel der verbundenen EntitysKombination daraus bildet Primärschlüssel der
Beziehungstabelle
n:1-Beziehungstypen– Keine zusätzliche Tabelle, Primärschlüssel der Tabelle auf der 1-Seite
als Fremdschlüssel in der Tabelle auf der n-Seite
1:1- Beziehungstypen– wie 1:n Seite egal
10
Beziehungen zwischen Tabellen in Access
11
Datenbankanomalien
Einfüge-Anomalie Lösch-Anomalie Änderungsanomalie
Normalform Erste Normalform
– Kein Attribut stellt eine untergeordnete Relation dar– alle Attribute enthalten nur atomare Werte
Zweite Normalform– In erster Normalform und zusätzlich alle Attribute sind voll
funktional abhängig vom Primärschlüssel der eigenen Relation
Dritte Normalform– In zweiter Normalform und zusätzlich keine Abhängikteiten
zwischen Nicht-Schlüsselattributen
12
Herstellen der Normalformen
Name Vorname Gehalt ProjektGomer Rolf 2541 1-1999, 2-1999Romer Werner 2400 1-1999, 1-2001,4-2001
Name Vorname Gehalt Projekt AuftragsvolumenGomer Rolf 2541 1-1999 12500Gomer Rolf 2541 2-1999 25000Romer Werner 2400 1-1999 100000Romer Werner 2400 1-2001 13500Romer Werner 2400 4-2001 25000
Person_ID Name Vorname Gehalt1 Gomer Rolf 25412 Romer Werner 2400
Personen Projekt_nr Auftragsvolumen1-1999 125002-1999 250001-2001 1000002-2001 135003-2001 20004-2001 25000
Projekte
Person_ID Projekt_ID1 1-19991 2-19992 1-19992 1-20012 4-2001
Personen2Projekte
13
Datenbank-Abfragesprache - SQL
SQL -> Structured Query Language seit 1986 SQL ANSI - Standard 1998 SQL2 als Standard verabschiedet SQL3 - Standard in Bearbeitung
Syntaktische Symbole:SCHLÜSSELWORT: Schlüsselwörter werden Groß geschiebenvariable Variablen, d.h. zu ersetzende Bezeichnungen
werden klein geschrieben und mit “<“ und “>” abgeschlossen
{A|B} A oder B muß angegeben werden[A] A kann fehlen
14
Bestandteile von SQL
Angaben der Spalten, die in die Ergebnistabelle übernommen werden
SELECT ... Angabe der Ausgangstabellen
FROM ... Auswahl von Zeilen die bestimmten Bedingungen genügen
WHERE ... Gruppierungen von Zeilen auf der Basis gleicher Werte in
SpaltenGROUP BY ...
Auswahl von Gruppen, die bestimmten Bedingungen genügenHAVING ...
Sortierung der Zeilen der Ergebnistabelle auf der Basis von Spalten
Order BY ...
15
Einfache SELECT- Anweisung
Syntax:SELECT [DISTINCT]{*|<ausdruck-1>} [,...]FROM <tab-name-liste>[WHERE <bedingung>];
Erläuterung:DISTINCT Zeilen mit gleichen Werten werden nur
einmal ausgegeben<ausdruck-1> [,...] Auswahl einzelner Spaltennamen
oder AusdrückeALL oder * alle Spalten der in der FROM Klausel
angegebenen Tabellen<tab-name-liste> enthält die Namen einer oder mehrerer
Tabellen<bedingung> eine oder mehrere Bedingungen, die
die Auswahl der Zeilen aus der Tabelle bestimmen
16
SELECT-Anweisung
Beispiele:
Ausgabe der gesammten Mitarbeiter-TabelleSELECT * FROM Mitarbeiter
Ausgabe der in Projekttabelle vorkommenden AnsprechpartnerSELECT DISTINCT ansprechpartner FROM projekte
17
WHERE-Klausel
SELECT ...
WHERE <bedingung>
Erläuterung= gleich
<> oder != ungleich
> größer als
< kleiner als
>= größer gleich
<= kleiner gleich
!> nicht größer als
!< nicht kleiner als
Syntax[NOT] <bedingung-1> {AND|
OR}[NOT] <bedingung-2>
ErklärungAND Konjunktion (logisches
UND)
OR Disjunktion (logisches ODER)
NOT Negation
Prioritäten können durch Klammern gesetzt werden Beispiel
SELECT nachname FROM MitarbeiterWHERE alter >= 40 AND geschlaecht = ‘männlich’;
18
IN-OperatorSELECT * FROM mitarbeiter
WHERE nachname IN (‘Meyer’,’Schulze’,’Lehmann’);
BETWEEN-OperatorSELECT * FROM projekte
WHERE auftragsvolumen BETWEEN 15000 AND 30000;
LIKE-OperatorSELECT * FROM mitarbeiter
WHERE nachname NOT LIKE ‘Mustermann’;
NULL-OperatorSELECT * FROM mitarbeiter
WHERE email IS NOT NULL;
Weitere Operatoren der WHERE-Klausel
19
Aggregationsfunktionen
MIN(<spalten-name>) MinimumSELECT MIN(auftragsvolumen) FROM projekte
MAX(<spalten-name>) MaximumSELECT MAX(auftragsvolumen) FROM projekte
SUM([DISTINCT] <spalten-name>) SummierungSELECT SUM(auftragsvolumen) FROM projekte
AVG([DISTINCT] <spalten-name>) arithmetisches MittelSELECT AVG(alter) FROM mitarbeiter
COUNT({[DISTINCT] <spalten-name>|*}) Zählungsfunktion SELECT COUNT(auftrag_id) FROM auftraege
WHERE begin <= <heute> AND ende >= <heute>