Grundlagen der Informatik Peter Micheuz, slidefinder.net machts möglich … Konzept Datenbanken Produkt  (MS)ACCESS
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
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
Das Entity-Relationship-Modell  (konzeptionelles Schema) Basiskonstrukte des ER-Modell Entitys Abgrenzbares Objektder realen Welt z.B. der Mitarbeiter “Schröder”, das Geschäftshaus “ Rose”, eine Adresse, Urbanprojekt xy Entity-Typen Menge aller Entitys, die die gleichen Eigenschaften haben z.B. Personen, Gebäude, Adressen, Projekte Beziehungen und Beziehungstypen Beziehungen zwischen Entitys oder Entity-Typen z.B. ist die Beziehung zwischen “Schröder” und Geschäftshaus “Rose”: “ arbeitet in” und Gebäude “haben” eine Adresse stellt einen Beziehungstyp dar Attribute Eigenschaften, die jedem {Entity|Beziehung} desselben {Entity|Beziehungs} -Typs zukommen z.B. ist das Gehalt ein Attribut von einem Mitarbeiter und das Ein- stellungsdatum ein Attribut der Beziehung zwischen dem Mitarbeiter und dem Unternehmen Das ER-Modell analysiert die Beziehungen unterschiedlicher Typen von Objekten der Realwelt und hält sie für eine konzeptionellen Sicht fest.
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
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
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?
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)
Überführung des ER-Modells in relationales Datenbankschema Entity-Typen Jeder Entity-Typ wird in eine Tabelle überführt Name des Typs -> Tabellenname Seine Attribute -> Spalten der Tabelle Die Attributnamen -> Spaltennamen Entitys 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 Entitys Kombination 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
Beziehungen zwischen Tabellen in Access
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
Herstellen der Normalformen
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ß geschieben variable 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
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 Spalten GROUP BY ... Auswahl von Gruppen, die bestimmten Bedingungen genügen HAVING ... Sortierung der Zeilen der Ergebnistabelle auf der Basis von Spalten   Order BY ...
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ücke ALL 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
SELECT- Anweisung Beispiele: Ausgabe der gesammten Mitarbeiter-Tabelle SELECT * FROM Mitarbeiter Ausgabe der in Projekttabelle vorkommenden Ansprechpartner SELECT DISTINCT ansprechpartner FROM projekte
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ärung AND Konjunktion (logisches UND) OR Disjunktion (logisches ODER) NOT   Negation Prioritäten können durch Klammern gesetzt werden Beispiel SELECT nachname FROM Mitarbeiter WHERE alter >= 40 AND geschlaecht = ‘männlich’;
IN-Operator SELECT * FROM mitarbeiter WHERE nachname IN (‘Meyer’,’Schulze’,’Lehmann’); BETWEEN-Operator SELECT * FROM projekte WHERE auftragsvolumen   BETWEEN 15000 AND 30000; LIKE-Operator SELECT * FROM mitarbeiter WHERE nachname NOT LIKE ‘Mustermann’; NULL-Operator SELECT * FROM mitarbeiter WHERE email IS NOT NULL; Weitere Operatoren der  WHERE -Klausel
Aggregationsfunktionen MIN(<spalten-name>) Minimum SELECT MIN(auftragsvolumen) FROM projekte MAX(<spalten-name>) Maximum SELECT MAX(auftragsvolumen) FROM projekte SUM([DISTINCT] <spalten-name>) Summierung SELECT SUM(auftragsvolumen) FROM projekte AVG([DISTINCT] <spalten-name>) arithmetisches Mittel SELECT AVG(alter) FROM mitarbeiter COUNT({[DISTINCT] <spalten-name>|*}) Zählungsfunktion SELECT COUNT(auftrag_id) FROM auftraege WHERE begin <= <heute> AND ende >= <heute>

Relationale Datenbanken Access

  • 1.
    Grundlagen der InformatikPeter Micheuz, slidefinder.net machts möglich … 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 Dieexterne 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. der Mitarbeiter “Schröder”, das Geschäftshaus “ Rose”, eine Adresse, Urbanprojekt xy Entity-Typen Menge aller Entitys, die die gleichen Eigenschaften haben z.B. Personen, Gebäude, Adressen, Projekte Beziehungen und Beziehungstypen Beziehungen zwischen Entitys oder Entity-Typen z.B. ist die Beziehung zwischen “Schröder” und Geschäftshaus “Rose”: “ arbeitet in” und Gebäude “haben” eine Adresse stellt einen Beziehungstyp dar Attribute Eigenschaften, die jedem {Entity|Beziehung} desselben {Entity|Beziehungs} -Typs zukommen z.B. ist das Gehalt ein Attribut von einem Mitarbeiter und das Ein- stellungsdatum ein Attribut der Beziehung zwischen dem Mitarbeiter und dem Unternehmen 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üsselSchlü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 BeziehungJeder 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 diskutierenSie 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 DatenmodellZur 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-Modellsin relationales Datenbankschema Entity-Typen Jeder Entity-Typ wird in eine Tabelle überführt Name des Typs -> Tabellenname Seine Attribute -> Spalten der Tabelle Die Attributnamen -> Spaltennamen Entitys 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 Entitys Kombination 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.
  • 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.
  • 13.
    Datenbank-Abfragesprache - SQLSQL -> 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ß geschieben variable 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 SQLAngaben 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 Spalten GROUP BY ... Auswahl von Gruppen, die bestimmten Bedingungen genügen HAVING ... 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ücke ALL 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-Tabelle SELECT * FROM Mitarbeiter Ausgabe der in Projekttabelle vorkommenden Ansprechpartner SELECT 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ärung AND Konjunktion (logisches UND) OR Disjunktion (logisches ODER) NOT Negation Prioritäten können durch Klammern gesetzt werden Beispiel SELECT nachname FROM Mitarbeiter WHERE alter >= 40 AND geschlaecht = ‘männlich’;
  • 18.
    IN-Operator SELECT *FROM mitarbeiter WHERE nachname IN (‘Meyer’,’Schulze’,’Lehmann’); BETWEEN-Operator SELECT * FROM projekte WHERE auftragsvolumen BETWEEN 15000 AND 30000; LIKE-Operator SELECT * FROM mitarbeiter WHERE nachname NOT LIKE ‘Mustermann’; NULL-Operator SELECT * 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>) Maximum SELECT MAX(auftragsvolumen) FROM projekte SUM([DISTINCT] <spalten-name>) Summierung SELECT SUM(auftragsvolumen) FROM projekte AVG([DISTINCT] <spalten-name>) arithmetisches Mittel SELECT AVG(alter) FROM mitarbeiter COUNT({[DISTINCT] <spalten-name>|*}) Zählungsfunktion SELECT COUNT(auftrag_id) FROM auftraege WHERE begin <= <heute> AND ende >= <heute>