Bernhard Bausch Datenbanken und Informationssysteme 08.01.11 Technikerschule TS Kursunterlagen Datenbanksysteme Autor: Bernhard Bausch Versionsverzeichnis Version: Version 1.0 Version 2.0 Version 3.0 Version 3.1 www.babe-Informatik.ch Datum: 26.03.01 08.05.01 01.07.02 05.06.03 Revisionsgrund: Korr1 Ergänzung 7.1.4 Ergänzung ERM Überarbeitung Kapitel 6 2.1 Korr2 Korr3 2.2 Seite 1/32 Bernhard Bausch Schulungsunterlagen Datenbanken Inhalt 1 Das Datenbanksystem 1.1 Die Komponenten eines Datenbanksystems 1.2 Die Ebenen eines Datenbanksystems 1.3 Rechnerarchitektur für den Datenbankbetrieb 1.3.1 1.3.2 1.4 2.2 2.3 10 10 10 10 10 10 10 10 11 11 Der Projekt-Lebenszyklus 11 3.1.1 3.1.2 Das Wasserfallmodell Die unterschiedlichen Analyse- und Designmethoden Kontextdiagramm Die Event-Liste Datenfluss-Diagramme (DFD) 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 Modelle Die Unterschiedlichen Ebenen im Modell Das Datenfluss-Diagramm Modell Die Symbole der Komponenten Erweiterte Diagrammtechniken Entity Relationship Diagramm (ERD) 4.1 Bestandteile eines ERD's 4.1.1 4.1.2 4.2 8 8 8 11 11 Das essentielle Modell in der Analyse 3.1 Das Umgebungsmodell 3.2 8 Bottom-up-Verfahren Top-down-Verfahren 2.4.1 2.4.2 4 Online-Systeme Batch-Systeme Realtime-Systeme DecisionSupport-Systeme Knowledgebased-Systeme Kategorisierung in der Praxis Wer sind die Mitspieler bei Analyse und Design von Softwaresysteme Projektverfahren oder Vorgehensweise 2.3.1 2.3.2 2.4 6 7 Aufbau einer Tabelle (auch Relation genannt). Spaltenbedingungen Datentypen Analyse und Design von Software-Systeme 2.1 Software-Systeme 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 3 Zentrale Architektur Netzwerkarchitektur Struktur und Eigenschaften von Tabellen 1.4.1 1.4.2 1.4.3 2 4 4 5 6 Entitäten Beziehungen zwischen den Entitäten Beispiel eines Entity Relationship Diagrammes 12 13 13 13 13 14 15 15 15 15 15 16 18 18 18 19 21 5 Auflösen von nicht-hierarchischen Beziehungen 22 6 Relationale Integritätsregeln 6.1 Entity Integrität 6.2 Referenzielle Integrität 6.3 Konsistenz-Bedingungen 24 24 24 25 7 Entwickeln von relationalen Datenbanken 7.1 Grundsätze 26 26 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 Mutationsanomalie Keine Redundanz Eindeutigkeit Schlüssel (Key's) Daten- oder Tabellencharakter Datenstruktur - konzeptionelles Datenmodell 7.2.1 Abhängigkeiten von Attributen www.babe-informatik.ch 26 26 26 26 27 28 28 Seite 2/32 Bernhard Bausch 7.2.2 7.2.3 7.2.4 7.2.5 Die Erste Normalform Die Zweite Normalform Die Dritte Normalform Denormalisierung www.babe-informatik.ch Schulungsunterlagen Datenbanken 30 30 32 32 Seite 3/32 Bernhard Bausch 1 Schulungsunterlagen Datenbanken Das Datenbanksystem 1.1 Die Komponenten eines Datenbanksystems Eine Datenbank ist eine systematische Sammlung von Daten. Zur Verwaltung und Nutzung, der in der Datenbank gespeicherten Daten, benötigt der Anwender ein Datenbankverwaltungssystem. Ein Datenbanksystem besteht somit aus der Datenbank und dem Datenbankverwaltungssystem. In Anlehnung an den amerikanischen Sprachgebrauch wird für das Datenbankverwaltungssystem die Abkürzung DBMS (Data Base Management System) verwendet. Datenbanksystem Datenbankverwaltungssystem (DBMS) Datenbank Datentabellen Datentabellen Datentabellen Das DBMS besteht aus einer Vielzahl von Werkzeugen und Generatoren. Es stellt dem Entwickler die Instrumente zur Verfügung, mit denen er das Datenmodell beschreibt und einrichtet. Ferner muss das Datenbankverwaltungssystem die Funktionen anbieten, mit denen die Anwender Daten eingeben, verändern, abfragen und ausgeben können. Mittels Masken- und Listengeneratoren werden die Eingabe- und Ausgabeprogramme auf relativ einfache Weise erzeugt. Für Abfragen schafft das SQL-Modul einen direkten Zugriff auf die Daten. Schliesslich muss das Programm für die zweckmässige Speicherung der eingegebenen Daten sorgen. Der Entwickler teilt dem Programm die Datenlogik mit, der Anwender formuliert seine Abfrage. Wie die Daten zu speichern sind und welche Suchstrategie am besten anzuwenden ist, das ist Sache des Datenbankprogramms. Es ist also zuständig für die technische Umsetzung der Anforderungen von Entwickler und Anwender. DBMS, Database Management System Normal Anwender Fortgeschrittene Anwender AnwendungsProgrammierer Datenbank Administrator Applikationen Interaktives Abfragetool Compiler VerwaltungsWerkzeug DDL-Compiler (Data Definition Language) DML-Compiler (Data Manipulation Language) Anfangabarbeitung Schemaverwaltung Datenbankmanager Datenverwaltung www.babe-informatik.ch Log Dateien................................................................................................... Indexes......................................................................................................... Datanbasis.................................................................................................... Datendictionary............................................................................................. Daten Seite 4/32 Bernhard Bausch Schulungsunterlagen Datenbanken 1.2 Die Ebenen eines Datenbanksystems Um die Stellung des Nutzers im Datenbanksystem besser erklären zu können, bedient man sich der logischen Einteilung in Sichten (Views) bzw. Ebenen. Ebenen eines Datenbanksystems Externe Sicht Nutzer1 SQL Nutzer n DQL DML Programm 1 Kozeptionelle Sicht Interne Sicht Programm 2 Logische Datenstrukturen DDL DCL TPL Physische Datenstrukturen BETRIEBSSYSTEM HARDWARE Externe Sicht Auf der obersten Ebene befindet sich der Anwender, der das Datenbanksystem mit einer Datenabfragesprache (DQL = Data Query Language) oder Datenmanipulationssprache (DML = Data Manipulation Language) oder einem eigenen Anwendungsprogramm nutzt. Diese Ebene wird als Externe Sicht (external view) bezeichnet. Konzeptionelle Sicht Auf der zweiten Ebene, der konzeptionellen Sicht, wird das Datenmodell beschrieben. Unter einem Datenmodell versteht man die datenmässige Abbildung eines bestimmten Ausschnitts der realen Umwelt. In ihm sind die Strukturen der Daten und ihre Beziehungen in dem Datenmodell festgelegt. Die Art, wie die Beziehungen in dem Datenmodell geregelt werden, nennt man relationales Datenmodell. Interne Sicht Auf der inneren Ebene erfolgt die physische Speicherung der Daten. Die Speicherlogik, die dabei angewendet wird, hängt vom DBMS ab. Darum braucht sich der Anwender aber nicht zu kümmern. Die Daten werden in sogenannten Basistabellen gespeichert. Darüber hinaus benötigt das DBMS eine Vielzahl von weiteren Informationen, die in den Systemtabellen gespeichert werden. So werden die Informationen über die logische Struktur der Datenbank in dem Systemkatalog, auch Data Dictionary genannt, gesammelt. Der Systemkatalog enthält Systemdateien, die zum Beispiel darüber Auskunft geben, - welche Tabellen die Datenbank enthält - wie die Spalten der Tabellen heissen - welcher Datentyp bei einer Spalte vorliegt - in welcher Relation stehen die Tabellen zueinander www.babe-informatik.ch Seite 5/32 Bernhard Bausch Schulungsunterlagen Datenbanken Für die Verwaltung der Zugriffsberechtigung auf die Tabellen der Datenbank werden die Anweisungen der Data Control Language (DCL) eingesetzt. Die Kommandos die für die Sicherungsmassnahmen bei Datenübertragungen benötigt werden, bezeichnet man als TPL (Transaction Processing Language) 1.3 Rechnerarchitektur für den Datenbankbetrieb Eine DBMS muss auf der inneren Ebene auf das Betriebssystem abgestimmt sein, auf dem es aufsetzt. Datenbankverwaltungssysteme wie zum Beispiel SYBASE, INFORMIX, ORACLE oder SQL laufen nämlich auf Einzelplatz- und Mehrplatzbetriebssystemen sowie auch in lokalen Netzwerken. Die externe und die konzeptionelle Ebene werden davon nicht berührt. 1.3.1 Zentrale Architektur Bei einer zentralen Architektur ist das Datenbanksystem auf einem zentralen Rechner installiert, an den eine Vielzahl von Terminals angeschlossen ist. Terminal 1 Terminal 2 Terminal n Ergebnis Ergebnis Ergebnis Anwendung 1 Anwendung 2 Anwendung 3 Daten-Tabelle Daten-Tabelle Daten-Tabelle DBMS Zentralrechner mit Multi-User-Betriebssystem Verteilte Datenbanken Bei grossen Datenbanksystemen, die im Multi-User-Betrieb mit vielen Benutzern laufen, tritt das Problem langer Antwortzeiten auf. Um den Datenzugriff zu beschleunigen, werden die Tabellen des Datenbanksystems auf verschiedene Rechner aufgeteilt. Man spricht dann von einer verteilten Datenbank. Für den Anwender wie auch für den Entwickler des Datenbanksystems ist es nicht von Bedeutung, wie auf der internen Ebene die Speicherung und der Zugriff organisiert werden. Die Entwicklung und Anwendung einer Datenbank, ist unabhängig vom Rechner- und vom Betriebssystem. www.babe-informatik.ch Seite 6/32 Bernhard Bausch Schulungsunterlagen Datenbanken 1.3.2 Netzwerkarchitektur In Netzwerken übernimmt ein Server bestimmte Datenbankfunktionen. Der Server arbeitet entweder als File-Server oder als Client-Server, auch SQL-Server genannt. Die Daten werden auf dem Server vorgehalten. File-Server In einem File-Server-System werden bei der Durchführung jeder Abfrageanweisung beim Server die benötigten Tabellen angefordert und vollständig an den fragenden Arbeitsplatzrechner übertragen. Das Programm-Modul zur Auswertung der Abfrageanweisung läuft in dem Arbeitsplatzrechner. Aufgrund dieser Vorgehensweise kann das File-Server-System zu langen Wartezeiten führen, wenn mehrere Tabellen mit vielen Datensätzen zu übertragen sind Terminal 1 Terminal 2 Terminal n Ergebnis Ergebnis Ergebnis Anwendung 1 Anwendung 2 Anwendung 3 Daten-Tabelle Daten-Tabelle Daten-Tabelle Server Daten-Tabelle Daten-Tabelle Daten-Tabelle DBMS Client-Server Beim Client-Server-System laufen auf dem Server (Backend) auch die Datenbankdienste. An den Arbeitsplatzrechner (Frontend) wird nur noch das Ergebnis der Abfrage übertragen. Damit wird der Nachteil langer Wartezeiten vermieden. Terminal 1 Terminal 2 Terminal n Ergebnis Ergebnis Ergebnis Anwendung 1 Anwendung 2 Anwendung 3 Daten-Tabelle Daten-Tabelle Daten-Tabelle Clients Server DBMS www.babe-informatik.ch Seite 7/32 Bernhard Bausch Schulungsunterlagen Datenbanken 1.4 Struktur und Eigenschaften von Tabellen 1.4.1 Aufbau einer Tabelle (auch Relation genannt). Eine Relation ist eine logisch zusammenhängende Einheit von Informationen. Sie besteht aus einer festen Anzahl von Attributen und einer variablen Anzahl Tupel. Die Anzahl der Attribute einer Relation wird als Degree bezeichnet. Beim relationalen Datenmodell werden die Daten in zweidimensionalen Tabellen angeordnet. Pe_ID 1 2 3 Pe_Name Eifer Meyer Strom Personendat Pe_Vorname Pe_Geschl Heinz m Michael m Claudia w Pe_Eintritt 01.04.82 01.05.93 01.10.89 Ab_ID 4 4 1 Abteilung Ab_Bez Direktion Verwaltung Lager Transport Ab_ID 1 2 3 4 Begriffe, die im Zusammenhang mit Tabellen relevant sind: Relation Domain Tabelle Domäne Attribut Degree Tuple Spalte Ausdehnungsgrad Datensatz, Rekord Personendat, Abteilung Wertebereich eines Attributs oder alle gespeicherten Daten innerhalb eines Attributs. Pe_ID, Pe_Name, Pe_Vorname, Pe_Geschlecht usw. Tabelle Personendat = Degree 6. Variable Anzahl Zeilen einer Tabelle. 1.4.2 Spaltenbedingungen NOT NULL Damit wird sichergestellt, dass in dieser Spalte stets Werte eingegeben werden müssen. Im Zusammenhang mit Tabellen bedeutet NULL = leeres Feld UNIQUE-Index Die Werte der bezeichneten Spalte müssen immer eindeutig sein. Weitere Spaltenbedingungen sind: Standardwerte für neue Records definieren, Gültigkeitsregeln definieren, Eingabeformat bestimmen. 1.4.3 Datentypen Datentypen charakterisieren eine Spalte grundsätzlich als Zeichen-, Zahlen- oder Datumsspalte, wobei bei einer Zahlenspalte unterschieden wird zwischen Ganzzahl und Dezimalzahl. Alle Datenwerte einer Spalte müssen denselben Datentyp haben. Datentypen können in 4 Klassen unterteilt werden: numerische Datentypen alphanumerische Datentypen Datentypen für Datums- und/oder Zeitangaben abgeleitete Datentypen www.babe-informatik.ch Seite 8/32 Bernhard Bausch Schulungsunterlagen Datenbanken Numerische Datentypen Numerische Datentypen ermöglichen die Darstellung von Zahlen. Datentyp Beschreibung Int Beschreibt ganzzahlige numerische Werte, die in vier Byte gespeichert werden können. Int ist die verkürzte Schreibweise für Integer smallint Beschreibt ganzzahlige numerische Werte, die in zwei Byte gespeichert werden können und deswegen zwischen –32768 und 32767 liegen. tinyint Beschreibt ganzzahlige, positive numerische Werte, die in einem Byte gespeichert werden können. Werte liegen zwischen 0 und 255 decimal(p,[q]) Beschreibt Festpunktzahlen. Die Angabe p kennzeichnet die Anzahl aller Ziffern und q die Anzahl der Ziffern hinter dem Dezimalkomma. Dezimal-Werte werden, abhängig von der Angabe p, in 2 bis einschliesslich 17 Byte gespeichert Alphanumerische Datentypen Der alphanumerische Datentyp ermöglicht das Darstellen von Zeichenketten, wobei alle möglichen Zeichen innerhalb der Zeichenkette auftreten können. Datentyp Beschreibung Char[(n)] Beschreibt eine Zeichenkette, wobei n die Anzahl der Zeichen innerhalb der Zeichenkette angibt. Der Wert von n kann maximal 8000 betragen. Character(n) ist eine zusätzliche, gleichwertige Schreibweise für char(n). Falls n ausgelassen wird, beträgt die Länge der Zeichenkette 1. varchar[(n)] Beschreibt eine Zeichenkette variabler Länge (0<n<8000). Dieser Datentyp unterscheidet sich vom Datentyp char dadurch, dass die Varchar-Werte genau in ihrer tatsächlichen Länge gespeichert werden. text[(n)] Definiert eine Textdatei bis zu 2 Gigabyte Länge. Datums- und Zeitangaben Der Datentyp Datum wird grundsätzlich als Date bezeichnet und ist von Datenbank zu Datenbank unterschiedlicher als die anderen Datentypen. Der SQL-Server als Beispiel unterstützt folgende Datums- und Zeitangaben: Datentyp Beschreibung datetime Beschreibt eine Datums- und Zeitangabe, die als Ganzzahlen in je vier Byte gespeichert sind. smalldatetime Beschreibt eine Datums- und Zeitangabe, die als Ganzzahlen in je zwei Byte gespeichert sind. Die beiden Datentypen datetime bzw. smalldatetime sind als numerische Werte gespeichert, die in vier bzw. zwei Byte Teilfeldern gespeichert sind. Das Anfangsdatum für den Datentyp datetime ist 01.01.1753 (01.01.1900 für smalldatetime) und das Enddatum ist 3.12.9999 (6.6.2079 für smalldatetime). Der Zeitteil ist als die Anzahl von 3/100 Sekunden bei datetime bzw. von Minuten bei smalldatetime seit Mitternacht dargestellt und ist in dem zweiten Teilfeld mit vier bzw. zwei Bytelänge gespeichert. Abgeleitete Datentypen Abgeleitete Datentypen sind sogenannte benutzerdefinierte Datentypen und werden von einfachen Datentypen abgeleitet. www.babe-informatik.ch Seite 9/32 Bernhard Bausch 2 Schulungsunterlagen Datenbanken Analyse und Design von Software-Systeme 2.1 Software-Systeme Unter Softwaresystem verstehen wir ein automatisiertes System, das vom Menschen hergestellt wird und mit einem oder mehreren Computern interagiert oder von einem oder mehreren Computer kontrolliert wird. 2.1.1 Online-Systeme Ein Online-System empfängt Input-Daten vom Ort ihrer Entstehung und die Resultate von Berechnungen und anderen Verarbeitungen werden an die Nachfrager abgegeben. Online-Systeme interagieren direkt mit Menschen, die eine bestimmte Aufgabe ausführen. Online-Systeme stellen die Daten so bereit, dass darauf sehr schnell zugegriffen werden kann und keine unnötigen Wartezeiten entstehen. Bereits bei der Analyse und Design einer Applikation ist diesem Umstand gebührend Rechnung zu tragen. Online-Systeme verarbeiten sogenannte Transaktionen und unterstützen damit die Abwicklung des täglichen Geschäfts eines Unternehmens. Typische Online-Systeme sind Reservations-Systeme für Hotels, Airlines usw. oder auch moderne Kassensysteme. 2.1.2 Batch-Systeme Ein Batch-System führt eine Verarbeitung nicht online durch, sondern "im Hintergrund". Es ist keine direkte Interaktion mit Menschen während der Laufzeit der Programme vorgesehen, deshalb ist die Verarbeitungsgeschwindigkeit auch nicht von zentraler Bedeutung. Beispiele von Batch-Systeme sind Programme zur Erzeugung und Versand der Monatsfakturen für Strombezug eines Elektrizitätswerkes oder der zentrale Backup eines Rechenzentrums 2.1.3 Realtime-Systeme Der Unterschied zwischen Online- und Realtim-Systemen ist minimal, indem ein Realtim-System neben der Eigenschaften der Online-Systeme noch den Aspekt der Kontrolle der Umgebung beinhaltet. Ein Realtim-System empfängt Daten aus der Umgebung und steuert durch die Verarbeitung dieser Daten eben diese Umgebung. Ein Realtim-System interagiert daher typischerweise sowohl mit Menschen als auch mit Maschinen. Beispiele sind Liftsteuerungen, die Kontrolle eines AKW's oder das Steuerprogramm eines Bankomaten. 2.1.4 DecisionSupport-Systeme DecisionSupport-Systeme verarbeiten in der Regel keine Transaktionen, sondern werten einen gegebenen Datenbestand auf bestimmte Fragestellungen hin aus. Damit unterstützen sie die Entscheidungsfindung in einer Unternehmung. Tabellenkalkulationsprogramme sind typische Vertreter dieser Systemkategorie 2.1.5 Knowledgebased-Systeme Wissensbasierte Systeme, auch Expertensysteme genannt, kennen eine Vielzahl von Fakten und Regeln. Auf Grund dieser Kenntnisse können Expertensysteme automatisch Schlüsse auf Grund eingegebener Informationen ziehen, indem sie auf Fakten und Regeln zurückgreifen. Automatische Diagnosesysteme für Autos oder Flugzeuge sind Beispiele solcher wissensbasierter Systeme. 2.1.6 Kategorisierung in der Praxis Die meisten Software-Systeme lassen sich nicht ohne Weiteres genau einer der hier beschriebenen Kategorien zuordnen. Vielmehr enthält jedes System Aspekte der einzelnen Kategorien, meist überwiegen aber die Eigenschaften einer der genannten Kategorien. www.babe-informatik.ch Seite 10/32 Bernhard Bausch Schulungsunterlagen Datenbanken 2.2 Wer sind die Mitspieler bei Analyse und Design von Softwaresysteme Bei der Analyse und beim Design von Software-Systemen treffen Analytiker auf eine Vielzahl von Personen, die alle unterschiedliche Voraussetzungen mitbringen und auch unterschiedliche Ziele verfolgen. Da Entwicklung von Software vor allem anderen einmal Kommunikation bedeutet, muss man sich dieser Vielfalt bewusst sein. In allen Phasen muss der erfolgreiche Analytiker in der Lage sein, mit seinen Mitspielern zu kommunizieren und so zu den notwendigen Informationen zu kommen. Typische Projektteilnehmer sind: Analytiker Applikationsentwickler Projektleiter Management User Operatingpersonal Qualitätssicherungsstelle Security Gesetzgeber 2.3 Projektverfahren oder Vorgehensweise 2.3.1 Bottom-up-Verfahren Beim Bottom-up-Verfahren ist ein spezielles Problem der Ausgangspunkt für die Datenbankentwicklung. Dabei werden die im Unternehmen bereits eingesetzten Belege und Dateien untersucht und daraus wird abgeleitet, welche Informationen das Datenbanksystem liefern soll. Bei einer kleinen Anwendung mag dieses Verfahren hinreichend sein. In Unternehmen, in denen eine Vielzahl von Anforderungen an die Datenbank gestellt werden, kann diese Entwurfsmethode zu einer Vielzahl von Datenbanken führen, die nicht aufeinander abgestimmt sind. Es besteht die Gefahr, dass Daten in verschiedenen Tabellen redundant, also mehrfach geführt werden. 2.3.2 Top-down-Verfahren Beim Top-down-Verfahren bestimmt nicht die einzelne Anwendung, sondern die Informationsanforderung aller späteren Datenbankbenutzer die Entwicklung des Datenmodells. Für alle Datenbankanwender gibt es nur eine Datenbank. 2.4 Der Projekt-Lebenszyklus In der Theorie finden sich sehr viele unterschiedliche Modelle des Projekt-Lebenszyklus. Allen ist gemeinsam, dass sie verschiedene Schritte in einer bestimmten Reihenfolge vorsehen. Nach jedem Schritt wird zudem meist ein sogenanntes "Deliverable" vereinbart, womit zwischen Analytiker und Auftraggeber festgelegt wird, welche Dokumente, Programm-Teile oder anderes Abzulieferndes, als Resultat einer bestimmten Phase vorliegen müssen. Eine strukturierte Projekt-Vorgehensmethode soll zuerst einmal das Risiko eines Projektversagens minimieren. Beinahe ebenso wichtig ist aber die fortlaufende Dokumentation des Projektfortschrittes und die Nachvollziehbarkeit der gefällten Entscheidungen. Schliesslich ist auch die Standardisierung der verwendeten Methode in grösseren Unternehmen sehr wichtig. Nach jeder Phase lassen sogenannte Checkpoints einen Projektabbruch durch das Management zu. In diesem Kurs beschreiben wir den Projekt-Lebenszyklus nach dem traditionellen WasserfallModell. www.babe-informatik.ch Seite 11/32 Bernhard Bausch Schulungsunterlagen Datenbanken 2.4.1 Das Wasserfallmodell Bevor man in die erste Projektphase eintritt, braucht es ein umfassendes Konzept, worin die einzelnen Phasen detailliert beschrieben werden, damit alle Beteiligten wissen, was von ihnen erwartet wird und was sie selber erwarten dürfen. Die einzelnen Projektphasen im Wasserfallmodel sehen wie folgt aus: Systemumgebung Softwareumgebung Analyse Programm-Design Programmierung Test-Phase Produktion Phase 1: Definieren der Systemumgebung und Auswahl der Fachkräfte In der ersten Phase werden die Bedürfnisse für das ganze Software-System als Gesamtes definiert. Weiter wird sowohl die Hardware wie auch die zu verwendende Software, die notwendigen Personen und die Vorgehensweise definiert. Die wichtigsten Entscheide in dieser Phase sind, wer macht was mit welchen Mitteln. Die zu verwendende Software und Arbeitsmethode muss mit den Fachleuten, die die Arbeit ausführen, abgestimmt werden. Ressourcen in Form von Fach-Knowhow sollen optimal eingesetzt werden. Phase 2: Softwareumgebung definieren und Vorgehen konzeptionell festlegen In dieser Phase sitzen die Fachleute und Auftraggeber zusammen und legen fest, was das fertiggestellte System können soll und wie die Arbeit auszuführen ist. Anforderungen an die Software werden detailliert beschrieben. Es werden Konventionen festgelegt, wie gearbeitet wird, damit alle am gleichen Strick ziehen. Für die folgenden Phasen werden nötigenfalls entsprechende Konzepte erstellt. Phase 3: Analyse und Datenbank-Design In dieser Phase wird der Analytiker mit vielen Interviews mit möglichst allen Mitspielern versuchen, das zukünftige System so genau wie möglich zu beschreiben. Er verwendet Werkzeuge und Techniken, welche zum Ziel haben, die Kommunikation zwischen ihm und seinen Partnern zu vereinfachen. Diagramme und Techniken, zusammen mit dem Vorgehensmodel, werden nach den vorausbestimmten Methoden realisiert. In dieser Phase muss von allen Mitwirkenden so viel Zeit und Sorgfalt wie möglich investiert werden, damit Missverständnisse und Unklarheiten vollständig eliminiert werden können. Die Analyse als Gesamtes ist der wichtigste Teil des ganzen Projektes. Ein Programm kann nur so gut sein, wie es die Datenbank selber ist und die Datenbank ist das Produkt, das aus der Analyse hervorgeht. www.babe-informatik.ch Seite 12/32 Bernhard Bausch Schulungsunterlagen Datenbanken Phase 4: Programm-Design Nachdem die Analyse abgeschlossen ist, geht es nun darum, wie sich die zu entwickelnde Software präsentieren soll. Es geht um das Layout von Bildschirmmasken und Listen. Ebenfalls wird die Abfolge der einzelnen Masken zu diesem Zeitpunkt festgelegt. Phase 5: Programmierung Die in den früheren Phasen festgelegte Architektur, wird nun in Programmcode gegossen. Ab dieser Phase sind die Programmierer gefordert. Je genauer und detaillierter die vorhergehenden Phasen abgelaufen sind, desto effizienter wird der Programmierer jetzt arbeiten können. Phase 6: Test-Phase Die Test-Phase soll ein zuverlässiges Funktionieren des neuen Systems sichern. Die Tests müssen seriös und genau durchgeführt werden. Aus dem hohlen Bauch heraus testen ist nicht gefragt. Auch hier muss konzeptionell vorgegangen werden. Ein Konzept für die Testphase sollte bereits aus der zweiten Phase hervorgehen. Phase7: Übergabe des Produkts an das produktive System Das realisierte, auf Herz und Nieren getestete System, geht nun in die Produktion. Die Anwender werden auf die neue Software vorbereitet und arbeiten nun damit im täglichen Betrieb. Zweifellos werden Fehler auftauchen, die umgehend ausgemerzt werden. Im Laufe des Betriebs werden immer wieder Erweiterungen oder Ergänzungen des Systems notwendig werden. Diese werden wieder nach demselben Vorgehensmodell als eigentliche Projekte realisiert. 2.4.2 Die unterschiedlichen Analyse- und Designmethoden In der Literatur findet man eine Vielfalt an unterschiedlichen Methoden. Allen gemeinsam ist jedoch das Ziel, das Risiko der Software-Entwicklung soweit möglich zu minimieren und ein strukturiertes, standardisiertes Vorgehen bei Analyse und beim Design bereitzustellen. Die meisten der verwendeten Methoden setzen auf einfach grafische Symbole zur Visualisierung von Zusammenhängen und wollen so die Kommunikation zwischen Software-Fachleuten und Anwendern unterstützen. 3 Das essentielle Modell in der Analyse Das essentielle Modell beschreibt, was das neue System tun soll, um die Benutzerbedürfnisse zu befriedigen. Es heisst essentiell im Gegensatz zum Implementationsmodell, weil es sich überhaupt nicht - oder allenfalls höchstens am Rande – um Realisierungsaspekte kümmert. Es ist, als würde es auf einem fehlerfreien Computer mit unendlicher Geschwindigkeit und unendlichen Ressourcen laufen. Die wichtigsten Regeln sind: - Datenspeicher braucht es nur dann, wenn zeitlich verschobene Prozesse dieselben Daten benötigen. - Prozesse tragen keinen Namen wie "XYZ Statistiksystem", sondern drücken aus, was genau gemacht wird, zum Beispiel: "Regressionsgerade berechnen und darstellen" - Es sind keine Fehlerprüf-Prozesse im Innern des Systems vorzusehen, nur am Rand, wo menschliche Terminatoren Input liefern. 3.1 Das Umgebungsmodell Das Umgebungsmodell beschreibt den Rand des Systems, die Schnittstellen. Sie als Analytiker identifizieren die Terminatoren, den Input, den diese Terminatoren liefern und was für einen Output sie vom System erhalten. Konkret zeichnen sie ein Kontextdiagramm und anschliessend wird eine Event-Liste erstellt. 3.1.1 Kontextdiagramm Das Kontextdiagramm ist ein Diagramm, in welchem das gesamte System einen einzigen Prozess darstellt. www.babe-informatik.ch Seite 13/32 Bernhard Bausch Schulungsunterlagen Datenbanken Druckereien ng llu ste e Be und K Dr uc er kau te ft ile r a n g Kunden Re Lie chnu fer sch ng ein ng i s n feru Lie rzeug e k c Dru P1 Buchbestellsystem Ko n to abr s al do s u fe n en ng n nu ite ch rbe Re ea b te rich e b ts na ern Mo lief Management Buchhaltung Das Kontextdiagramm definiert die Schnittstellen, die den Rand des Systems betreffen. Buchhaltung und die anderen Terminatoren sind selbst eigenständige Systeme mit einem Eigenleben. Dieses Eigenleben der anderen Systeme interessiert uns nicht. Wir definieren hingegen, welche Daten das System Buchhaltung vom untersuchten System erhalten soll und welche Daten die Buchhaltung an unser System liefern soll. Zwischen Terminatoren kann es keine direkten Datenflüsse geben. Ein Terminator erzeugt normalerweise viele verschiedene Input- und Outputdaten. Um das Diagramm trotzdem übersichtlich zu halten, darf man einen Terminator mehrmals zeichnen oder man wählt für die Datenflusspfeile sehr allgemeine Bezeichnungen wie "Suchdialog" und zeichnet Doppelpfeile. Häufig ist es schwierig einen Terminator zu bezeichnen. Ob bei einer Bestellung der Terminator "Kunde" oder "Einkauf" heisst ist nicht wesentlich. Es gibt keine festen Regeln. 3.1.2 Die Event-Liste Stellen Sie sich das System als ein schlafendes Wesen vor, das auf Ereignisse wartet. Es beginnt nur zu arbeiten, wenn es durch einen Terminator angestossen wird (Ausnahme bilden zeitgesteuerte und Steuerungs-Events). Die Event-Liste muss sämtliche Events enthalten, die überhaupt vorkommen können. Jeder Input-Pfeil im Kontextdiagramm ist entweder ein Event oder ein Input, den ein Event verlangt. Die Events stossen das System an. Ohne Events schläft das System, es finden keine Ereignisse statt. Events werden wie folgt formuliert: <Terminator> <aktives Verb> <Objekt> Also im Stil: "Buchhalter berechnet Saldoliste", "Kunde bestellt Buch". Events werden nummeriert und entsprechend geordnet. www.babe-informatik.ch Seite 14/32 Bernhard Bausch Schulungsunterlagen Datenbanken 3.2 Datenfluss-Diagramme (DFD) 3.2.1 Modelle In der Analysephase eines Projektes wird ein Modell des zukünftigen Softwaresystems gebaut. Modelle können in vielen unterschiedlichen Erscheinungsformen daherkommen, z.B. als textliche Erklärung oder als graphische Darstellung. Graphische Darstellungen eignen sich am besten als Hilfsmittel in der Analyse. Jede Analysemethode verwendet denn auch ihre eigenen Symbole und Diagramme. Die graphischen Darstellungen werden durch textliche Erläuterungen verfeinert. Es gibt moderne Werkzeuge für die Erstellung der Diagramme, die für die Kommunikation mit den Anwendern ideal sind. 3.2.2 Die Unterschiedlichen Ebenen im Modell Ein EDV-System einer bestimmten Grösse ist eine sehr komplexe Angelegenheit und lässt sich nicht auf einem einzigen Blatt Papier darstellen, es sei denn, man verwendet Papiere des Formates A0. Jede Analysemethode bricht ein EDV-System deshalb in einzelne Teile – meist Module genannt – auf. So wird jeder Teil für sich überschaubar. Die einzelnen Module wiederum werden hierarchisch dargestellt. 3.2.3 Das Datenfluss-Diagramm Modell Ein Datenfluss-Diagramm stellt ein System als Netzwerk von Prozessen dar. Die Prozesse sind untereinander durch Datenleitungen verbunden und verfügen über Speicher für die verwendeten Daten. Zudem werden die mit dem System arbeitenden externen Instanzen dargestellt. DFD's bestehen aus folgenden Komponenten: Prozesse Process Datenflüsse Dataflow Datenspeicher Datastore Externe Instanzen External Komponente des System das Input in Output transformiert. Der Prozess ist das Ereignis selber. Fluss von Daten von einer Komponente des Systems zur nächsten. Daten, die dauerhaft gespeichert werden. Externe Instanzen, mit welcher das System zusammenarbeitet bzw. von welchen das System angestossen wird. 3.2.4 Die Symbole der Komponenten Datenflusssymbole, wie sie in diesem Kurs verwendet werden. Prozesse Der Prozess stellt ein Ereignis dar, welches aus der EventListe hervorgeht. Jedes Ereignis wird eindeutig bezeichnet, damit im Gesamtprojekt die Zusammenhänge ersichtlich sind. Ein Prozess hat kein "Eigenleben" und muss von einer anderen Instanz angestossen werden. P1.1.3 Neuer Kunde aufnehmen Datenflüsse Datenflüsse können in beide Richtungen laufen Kunde und gehen immer vom Prozess aus. erfassen Läuft der Datenfluss vom Prozess auf einen Datastore, dann werden Daten immer gespeichert bzw. geändert. Läuft der Datenfluss vom Datatstore auf den Prozess zu, dann werden Daten in den Prozess zur Information oder Auswertung eingelesen. www.babe-informatik.ch Seite 15/32 Bernhard Bausch Schulungsunterlagen Datenbanken Datenspeicher Ein Datenspeicher ist ein Teil der Datenbank. In der Regel handelt es sich um eine Tabelle, welche vom Prozess angesprochen wird. Kunde D5 Externe Instanzen Die externe Instanz ist der Teil, der den Prozess zur Aktion zwingt. Die externe Instanz ist verknüpft mit dem Geschäftsvorfall. Ein Kunde der eine Bestellung aufgibt. Ein Schüler der sich anmeldet. Ein Datum das zum aufbereiten der Rechnungen zwingt. Kunde Beispiel: Event (x) Lehrer erhält Kursauftrag P1.1.0 Kursauftrag erteilen Lehrerdaten Sekretariat D5 Teilnehmerliste D3 Kursteilnehmer um ra ng rs gu Ku ele b ag ftr en u A teil er Kurse D2 Ku In rsfo Ku r se sau nd ftra e g Ku n r be sa st uft ät ra ig g en Kursdaten für Auftrag Lehrer Bestätigung Lehrer Kursinfo D1 D4 Kursräume Personal 3.2.5 Erweiterte Diagrammtechniken Datenflüsse ohne Bezeichnung Wenn ein Datenfluss in einen Datenspeicher führt oder aus einem Datenspeicher kommt, so brauchen Sie den Pfeil nicht unbedingt zu beschriften, wenn der Datenfluss eindeutig ist. Es wird implizit angenommen, dass Informationen aus einem oder mehreren Exemplaren der im Speicher abgelegten Datensätze gemeint sind. Wenn es sich beispielsweise um Adressen handelt, so kann ein unbeschrifteter Pfeil bedeuten: - Eine einzige vollständige Adresse - Mehrere vollständige Adressen - Name, Vorname und Ort einer einzigen Adresse - Name, Vorname und Ort mehrerer Adressen Ein aus einem Datenspeicher führender Pfeil steht immer für "Lesen", entspricht also beispielsweise einem SELECT-Befehl. Ein in den Speicher führender Pfeil steht für eine Mutation. Ob es sich um Einfügen, Ändern oder Löschen handelt, geht aus dem Pfeil nicht hervor, auch nicht aus der Definition des Pfeils, sondern aus der Prozessspezifikation. www.babe-informatik.ch Seite 16/32 Bernhard Bausch Schulungsunterlagen Datenbanken Externe Datenspeicher Prozess P3 D3 Daten Textdatei für externen Speicher Hier werden vom Prozess P3 aufgearbeitete Daten in eine Textdatei abgelegt, die später in einem anderen System (das nicht Teil des betrachteten Systems ist) verarbeitet werden. Dieser Prozess sendet Daten in einen externen Speicher. Dieses Beispiel stellt eine Schnittstelle dar, die über Textdateien kommuniziert. Diese Art von Schnittstellen ist allgemein üblich, so kann man mit den unterschiedlichsten Systemen kommunizieren. Dialoge Manchmal ist es übersichtlicher, statt zwei getrennte Pfeile in Gegenrichtung einen einzigen Pfeil mit zwei Spitzen zu Zeichnen: Solch Pfeile werden mit xxx-Dialog bezeichnet. Übungen: Kontextdiagramm Schule erstellen Eventliste Schulbetrieb erstellen Einzelne Events nachzeichnen Beispiel: DVD Verleihung von Gegenständen Test: DVD gemäss Event-Liste erstellen www.babe-informatik.ch Seite 17/32 Bernhard Bausch 4 Schulungsunterlagen Datenbanken Entity Relationship Diagramm (ERD) Ein Entity-Relationship-Diagramm (kurz ERD) zeigt die gespeicherten Daten und deren Zusammenhänge eines EDV-Systems auf einer hohen Abstraktionsebene. Dank einem ERD können sowohl Anwender, welche wenig EDV-Erfahrung besitzen, als auch Entwickler und EDVSpezialisten miteinander über ein neues System kommunizieren. Zudem ist das ERD die Basis für die Entwicklung der Datenbank und die Dokumentation des Systems Früher diente ein ERD zur rein graphischer Darstellung von Datenbankstrukturen. Damals war das ERD fester Bestandteil des essentiellen Modells. Nach Abschluss des ERD's und somit Abschluss des essentiellen Modells, startetet das Implementationsmodell, in welchem als erstes die Datenbank gemäss diesem Modell manuell mit SQL-Befehlen aufgebaut wurde. Moderne Case-Tools automatisieren nun den Aufbau der Datenbank aufgrund der definierten Vorgaben. Ein gutes ERD-Tool baut eigenständig auf "Knopfdruck" das Datenmodell für die von Ihnen angegebene Datenbank. Durfte man früher keine Fehler beim manuellen erstellen der Datenbank machen, so muss man Heute mit dem ERD entsprechend sorgfältig verfahren. 4.1 Bestandteile eines ERD's ERD-Diagramme bestehen aus unterschiedlichen Objekten: Entitäten Beziehungen zwischen den Entitäten Beschreibungen der Beziehungen Die einzelnen Elemente werden nachfolgend kurz vorgestellt. 4.1.1 Entitäten Eine Entität wurde früher einfach als Rechteck dargestellt, welches den Namen der entsprechenden Relation (Tabelle) enthielt. Heute muss mit der automatisierten Version entsprechend anders verfahren werden. Die Tabellen werden in den Tools mit den entsprechenden Attributen dargestellt. Nur so ist es möglich, dass später die Datenbank mit diesem Modell auch automatisiert aufgebaut werden kann. Wie die einzelnen Tabellen dargestellt werden, bzw. wie sich die Darstellungsform präsentieren wird, können Sie im Tool unter verschiedenen Möglichkeiten auswählen. Für den Kurs verwenden wir für die Darstellung von Tabellen Vierecke, die die Tabellen, die Schlüssel und allenfalls auch die Attribute benennen. Beispiele: ERD Kunde PK FK CK Ku_ID PK Adr_ID UI_ID (Attribute) FK CK = = = www.babe-informatik.ch ERM Kunde Primary-Key Foreign-Key90 Candidate-Key Seite 18/32 Bernhard Bausch Schulungsunterlagen Datenbanken Die Entität steht für eine Menge von gleichartigen Objekten der realen Welt, deren einzelne Elemente (in der Theorie auch Instance oder Element genannt) den folgenden Kriterien genügen: Jedes Element einer Entität kann eindeutig über einen Schlüssel identifiziert werden. Jedes Element einer Entität ist innerhalb des Systems absolut notwendig, weil es dieses Element in dieser Form nur einmal gibt. In einer Entität die Kundendaten enthält, haben Daten von anderen Personen nichts verloren. Jede Entität kann durch eine oder mehrere Datenelemente beschrieben werden. Mehrere beschreibbare Datenelemente (Attribute) sind denkbar. 4.1.2 Beziehungen zwischen den Entitäten Entitäten können durch Beziehungen untereinander verknüpft sein. Im Diagramm wird die Beziehung durch eine Linie, welche die beiden Entitäten verbindet, angezeigt. Eine Beziehung wird durch einen Text näher erläutert. Kunde Auftrag Ku_ID Au_ID (Attribute) Erteilt Ku_ID FK (Attribute) Selbstverständlich besteht die Beziehung eigentlich nicht zwischen den Entitäten KUNDE und AUFTRAG, sondern zwischen einzelnen Elementen (Schlüssel). Diese Beziehung besagt: Ein Kunde kann KEINEN, EINEN oder MEHRERE Aufträge erteilen. Kunde Meier hat beispielsweise bereits 7 Aufträge erteilt Kunde Hugentobler hat erst 2 Aufträge laufen Kunde Miller wurde gerade erst erfasst und hat noch keinen Auftrag Die Beschreibung der Beziehung besteht aus zwei Elementen: 1. Verbale Beschreibung, z.B. "arbeitet in", "hat bestellt". Die Beziehung wird immer aus beiden Richtungen angesehen. Auf dem Diagramm findet jedoch nur eine Sicht Platz. 2. Symbolische Beschreibung des Beziehungstyps. Die Darstellungsform kann unterschiedlich sein. Die Beziehungen können von unterschiedlicher Art sein. Beziehungstyp 1 c m mc www.babe-informatik.ch Anzahl Elemente Genau ein Element Kein oder genau ein Element Mindestens ein Element oder beliebig viele Kein, eines oder beliebig viele Elemente Symbol Seite 19/32 Bernhard Bausch Schulungsunterlagen Datenbanken Übungsbeispiele: Linker Schuh Rechter Schuh Mitarbeiter Abteilung Ehepaar Kind Person Partei Klasse Schüler Auto Unfall Beispiel eines ERM 1 Kunde Artikel mc Auftrag www.babe-informatik.ch 1 mc 1 mc Bestellung Seite 20/32 Bernhard Bausch Schulungsunterlagen Datenbanken 4.2 Beispiel eines Entity Relationship Diagrammes In einem ERD werden nicht nur Beziehungen erstellt. Die ganze Tabelle wird mit Schlüssel und Datentypen definiert und am Schluss des Datendesigns wird daraus die Datenbank erstellt. Das ermöglichen uns Heute die modernen Tools. Notation eines ERD's wie, wie wir sie in diesem Kurs verwenden: Kunde Artikel Ku_ID Art_ID (Attribute) (Attribute) bestellt mit Erteilt Auftrag Bestellung Au_ID Be_ID Ku_ID FK (Attribute) umfasst Au_ID Art_ID (Attribute) In einer anderen Notation präsentiert sich das gleiche Diagramm so: Kunde Artikel Ku_ID Art_ID (Attribute) (Attribute) bestellt mit Erteilt Auftrag Bestellung Au_ID Be_ID Ku_ID FK (Attribute) umfasst Au_ID Art_ID (Attribute) Die unterschiedlichen Darstellungen des ERD's sind absolut gleichwertig. Es gibt verschiedene Formen von Notationen. Für welche Form Sie sich beim einzelnen Projekt entscheiden, hängt in erster Linie von Ihren persönlichen Präferenzen oder von denjenigen Ihres Auftraggebers ab. Ziel des ERD's ist es ja gerade, die Kommunikation zwischen Analytiker und Auftraggeber zu vereinfachen. Die meisten CASE-Tools lassen denn auch unterschiedliche Varianten zu, so dass auch ein Wechsel der Darstellungsform ohne Aufwand zu realisieren ist. www.babe-informatik.ch Seite 21/32 Bernhard Bausch 5 Schulungsunterlagen Datenbanken Auflösen von nicht-hierarchischen Beziehungen Artikel und Lieferant: Arikel liefert Lieferant Die obige Beziehung besagt, dass ein Artikel von mehreren Lieferanten geliefert werden kann, andererseits aber auch jeder Lieferant mehrere Artikel liefern kann. Auto und Fahrer Auto fährt Fahrer Diese Beziehung bedeutet einerseits, dass jedes Auto von einem oder mehreren Fahrern gefahren werden kann (natürlich nicht gleichzeitig) und dass andererseits auch jeder Fahrer mehrere Fahrzeuge fahren kann. Projekt Mitarbeiter Projekt bearbeitet Mitarbeiter In diesem Beispiel kann jeder Mitarbeiter an einem oder mehreren Projekten mitarbeiten und jedes Projekt kann einen oder mehrere Mitarbeiter beschäftigen. Die drei vorgestellten Beispiele lassen sich so in einer relationalen Datenbank nicht abbilden. Für Datenbanksysteme müssen Beziehungen hierarchisch sein, d.h. auf mindestens einer Seite der Beziehung muss eine "1" oder ein "c" stehen. Gültige Beziehungen sind demnach: Kanton und Auto Kanton ist zugelassen ihn Auto Hier legen wir fest, dass in jedem Kanton ein Auto oder mehrere Autos zugelassen werden können, dass aber jedes Auto in genau einem Kanton zugelassen sein muss. Mitarbeiter und Büro Büro arbeiten in Mitarbeiter In einem Büro können mehrere Mitarbeiter arbeiten aber jeder Mitarbeiter sitzt in genau einem Büro. www.babe-informatik.ch Seite 22/32 Bernhard Bausch Schulungsunterlagen Datenbanken Am Beispiel der Beziehung zwischen PROJEKT und MITARBEITER soll das Vorgehen der Auflösung dieser nicht-hierarchischen Beziehung aufgezeigt werden. Die ursprüngliche Beziehung war so definiert: Projekt bearbeitet Mitarbeiter Diese nicht-hierarchische Beziehung muss aufgelöst werden. Zu diesem Zweck wird eine zusätzliche Tabelle erstellt. Projekt Mitarbeiter beschäftigt Projektmitarbeit arbeitet an In dieser zwischengeschobenen Tabelle werden die Schlüssel der beiden anderen Tabellen mitgeführt. Übungsbeispiele: Artikel liefert Artikel Auto Auto www.babe-informatik.ch Lieferant Lieferant fährt Fahrer Fahrer Seite 23/32 Bernhard Bausch 6 Schulungsunterlagen Datenbanken Relationale Integritätsregeln Das DBMS garantiert die Entity Integrität und die referenzielle Integrität der Datenbank. Integrität in bezug auf Datenbanken bedeutet, dass die Daten unversehrt sind, also keine widersprüchlichen Daten in ihr gespeichert sind. Für diese Überprüfung verwendet das DBMS die Einträge in den Systemtabellen (Data Dictionary), wo die einzelnen Verknüpfungen aufgrund des Datenmodels definiert wurden. Ein DBMS kann nicht wissen, ob die Lieferantennummer 2 in der Relation ARTIKEL für die Artikelnummer 22 richtig ist. Es kann aber garantieren, dass der Lieferant Nr. 2 von Artikel Nr. 22 in der Tabelle LIEFERANTEN auch existiert. Die Identifizierung der einzelnen Tupeln, wird über die Key's (Primary-, Foreign-Key) gesteuert. 6.1 Entity Integrität Es dürfen keine doppelten Nullwerte in einem Hauptschlüssel (Primarykey) gespeichert werden. Definition Wenn ein Attribut die Komponente eines Primary-Key ist, dann darf dieses Attribut zu keinem Zeitpunkt einen NULL-Wert enthalten Mit der Entity-Integrität wird - neben der Sicherstellung der Eindeutigkeit über den Index gewährleistet, dass jedes Tupel (Datensatz) in einer Relation über einen Schlüssel eindeutigen identifizierbar ist. 6.2 Referenzielle Integrität Definition Eine Relation (R2) besitzt einen Foreign-Key, der auf einen Primary-Key in einer Relation (R1) verweist. Es muss jeder Wert eines Foreign-Key in R2 einem Wert eines Primary-Key in R1 entsprechen oder der Wert des Foreign-Key ist ein NULL-Wert. Durch die referenzielle Integrität wird also sicher gestellt, dass z.B. alle Kundennummern in der Relation BESTELLUNG auch in der Relation KUNDEN vorhanden sind. Das DBMS und nicht das Anwendungsprogramm (auch nicht das Maskensystem oder Prüfprogramme, die in regelmässigen Abständen laufen) hat dafür zu sorgen, dass die Integritätsbedingungen zu jeder Zeit erfüllt sind. Dies kann das DBMS durch Ablehnung aller nicht den Integritätsbedingungen entsprechenden Operationen sicherstellen. Neben den referenziellen Integritäts-Bedingungen können natürlich auch noch weitere Bedingungen definiert werden, welche immer eingehalten werden müssen, z.B.: Die Anzahl der Lohnzahlungen pro Jahr und Mitarbeiter darf 13 nicht übersteigen Jeder Mitarbeiter erhält pro Monat einen Lohn www.babe-informatik.ch Seite 24/32 Bernhard Bausch Schulungsunterlagen Datenbanken 6.3 Konsistenz-Bedingungen Eine Datenbank ist konsistent, wenn alle Tabellenverknüpfungen mit Konsistenzbedingungen sauber definiert wurden. Dazu gehört einerseits die Erfüllung der referenziellen Integrität und andererseits existieren zusätzlich definierte Bedingungen auf unterschiedlichen Ebenen. Beispiel: Mitarbeiter erhält Lohnzahlung Es kann kein Mitarbeiter aus dem System gelöscht werden, solange noch von ihm ein Eintrag in der Entität LOHNZAHLUNG vorhanden ist, da sonst die entsprechenden Elemente aus LOHNZAHLUNG keine Beziehungen mehr zur Tabelle MITARBEITER hätten und dann unsichtbar als "Daten-Leichen" weiterhin das System belasten würden. Unsichtbar sind die deshalb, weil sie über keine Verknüpfung mehr ansprechbar sind. Man kann vom System verlangen, dass beim Löschen eines Mitarbeiters auch sämtlich zu ihm gehörigen Lohnzahlungen gelöscht werden. Oder anders rum, der Mitarbeiter kann nur gelöscht werden, wenn auch alle Lohnzahlungen bereits gelöscht sind. Es gibt 3 verschieden Formen von Löschbedingungen. Restricted: Löschen eines Mitarbeiters ist nur erlaubt, falls keine Lohnzahlungen vorhanden sind Cascading: Beim Löschen des Mitarbeiters werden seine Lohnzahlungen automatisch mitgelöscht. Nullify: Beim Löschen eines Mitarbeiters werden die Referenzen in den abhängigen Tabellen gelöscht (auf Null gesetzt). Beim Einfügen eines Elementes in LOHNZAHLUNG gilt automatisch die Bedingung, dass nur Lohnzahlungen erfasst werden können, wenn sie einem Mitarbeiter zugeordnet werden können. Auch bei Änderungen an Tabellen wird sichergestellt, dass die Bedingungen der referentiellen Integrität gewährleistet bleiben. Konsistenzbedingungen können auf unterschiedlichen Ebenen auftreten: Ein Feld betreffend mehrere Felder desselben Datensatzes betreffend mehrere Datensätze einer Tabelle betreffend mehrere Datensätze mehrerer Tabellen betreffend www.babe-informatik.ch Seite 25/32 Bernhard Bausch 7 Schulungsunterlagen Datenbanken Entwickeln von relationalen Datenbanken 7.1 Grundsätze Daten werden seit Anbeginn der automatisierten Datenverarbeitung in Dateien gespeichert. In der Regel sind die Dateien nicht untereinander abgestimmt. So kann es zum Beispiel vorkommen, dass die Personaldaten eines Mitarbeiters in mehreren Dateien gespeichert werden. Abgesehen von dem Mehraufwand an Speicher ist eine solche Doppelspeicherung gleicher Daten mit Risiken der Mutationsanomalien behaftet. 7.1.1 Mutationsanomalie Unter Mutationsanomalie versteht man, dass sich in einem Dateisystem Unregelmässigkeiten einstellen, wenn Daten verändert werden. Wenn beispielsweise das Geburtsdatum eines Mitarbeiters sowohl in der Mitarbeiterstammdatei wie auch in der Lohndatei gespeichert wird, dann kann es passieren, dass bei einer Korrektur eine Änderung unterbleibt. In diesem Fall würde es sich um eine Update-Anomalie handeln. Eine Mutationsanomalie kann auch dann entstehen, wenn Daten auf falschen Tabellen verteilt wurden. Würde man beispielsweise die Telefonnummer eines Angestellten beim Projekt speichern, dann existiert die Telefonnummer nur im Zusammenhang mit Projekten und wird beim löschen eines Projektes verschwinden, was dann eine Delete-Anomalie wäre. Bei einem neuen Angestellten, der in die Datenbank aufgenommen werden soll und noch kein Projekt hat, würde es dann eine Insertion-Anomalie hervorrufen. 7.1.2 Keine Redundanz Jede Angabe zu einer Person oder zu einer Sache, darf nur einmal in der Datenbank gespeichert werden. 7.1.3 Eindeutigkeit Eine Datenbank enthält Angaben zu den Eigenschaften einer Person oder Sache. Mittels dieser Angaben muss eindeutig eine bestimmte Entität identifizierbar sein. Bezogen auf eine Personendatei müssen die Angaben in der Weise beschaffen sein, dass sie nur auf eine ganz bestimmte Person zutreffen können. Das Datenbankverwaltungssystem verfügt nicht über einen definierten Zugriffsweg auf einen bestimmten Datensatz. Deshalb muss in jeder Zeile einer Tabelle ein Wert enthalten sein, der diesen Eintrag eindeutig kennzeichnet. Um die Eindeutigkeit der Tabellenzeilen zu gewährleisten, erweitert man den Datensatz um ein Identifikationsmerkmal. So wird beispielsweise dem Personaldatensatz eine Personalnummer, dem Artikel eine Artikelnummer hinzugefügt. Durch ein solches Identifikationsmerkmal wird die eindeutige Zuordnung zwischen den Daten in der Tabellenzeile und der zu beschreibenden Entität sichergestellt. Dieses Merkmal wird Schlüsselbegriff, Schlüsselattribut oder einfach Schlüssel genannt. Beim Festlegen des Schlüsselbegriffs kann man selber einen Schlüssel definieren, man kann aber auch einen fremddefinierten Schlüssel verwenden. Bei einem Buch ist beispielsweise die ISBN-Nr. ein fremdbestimmter Schlüssel, bei einer Person die AHV-Nummer. Da aber Umstände eintreten können, die zu einer Änderung solcher fremddefinierten Schlüssel führen, die von dem Datenbankverwalter nicht kontrolliert werden können, empfiehlt es sich trotz Mehraufwandes, eigendefinierte Schlüssel zu verwenden. 7.1.4 Schlüssel (Key's) Primary-Key Jede Relation besitzt genau einen Primary-Key (Primärschlüssel), um ein Tupel der Relation eindeutig zu identifizieren. Er wird definiert, indem ein Attribut speziell für diesen Zweck eingeführt wird. Ein Primary-Key darf keine Null-Werte enthalten. Der Primary-Key soll mindestens einen Zugriffspfad garantieren, mit dem exakt ein Tupel angesprochen werden kann. Mit Hilfe dieses Primary-Key werden meist die Verknüpfungen (Joins) der Relationen in der Datenbank hergestellt. www.babe-informatik.ch Seite 26/32 Bernhard Bausch Schulungsunterlagen Datenbanken Foreign-Key Der Foreign-Key (Fremdschlüssel/Bezugsschlüssel) wird so genannt, da seine Wertemenge (Domäne) in einer anderen Relation als Primary-Key definiert ist. Beide Attribute (oder Attributmengen, wenn der Key aus mehr als einem Attribut besteht) müssen zu der gleichen Domäne gehören. Es ist wichtig, dass ein Datenbanksystem weiss, welche Attributmenge den Primary-Key definiert und welche Foreign-Key's existieren. Nur so kann das DMBS die referenzielle Integrität der Datenbank gewährleisten. Candidate-Key Eine Attributmenge wird Candidate-Key (Schlüsselkandidat) genannt, wenn alle Werte dieser Attributmenge unique (eindeutig) sind. Es existieren zu keinem Zeitpunkt zwei Werte eines Candidate-Key's mit gleichem Inhalt. Eine Tabelle kann einen oder mehrere Schlüsselkandidaten aufweisen. Einer dieser Schlüssel wird ausgewählt und als Primärschlüssel bezeichnet. Ein Candidate-Key wird durch die Aufzählung eines oder mehrerer Attributnamen definiert. Er darf, um eindeutig zu sein, keine überflüssigen Attribute beinhalten. Sobald ein Attributname weggenommen wird, darf somit die Eindeutigkeit der Candidate-Key-Werte nicht mehr gegeben sein. Alternate-Key Aus Performancegründen können zusätzlich beliebig viele Key's in einer Relation definiert werden. Diese werden dann Alternate-Key's oder auch Secondary-Key's (Zweitschlüssel) genannt. 7.1.5 Daten- oder Tabellencharakter Entitäten Normalerweise werden Daten erfasst und gespeichert. Es werden Adressen erfasst, Projekte eröffnet, Lohnabrechnungen gemacht usw. All diese Daten haben eines gemeinsam, sie werden laufend erzeugt, geändert oder auch wieder gelöscht. Es sind eigentliche Arbeitsdaten und sie bilden Entitäten aus einzelnen oder mehreren Relationen. Diese Daten unterscheiden sich in 2 Gruppen. Die eine Gruppe sind die Haupt- oder Steuerdaten und die anderen sind Ergänzungen zu diesen Hauptdaten, z.B. Kontaktadressen zu jeder Adresszeile oder erweiterte Informationen wie Mitarbeiterdaten zur Stammadresse. Prozessdaten Prozessdaten sind Daten, die durch einen Rechenprozess gebildet werden. Werden Prozessdaten gespeichert, so besteht die Gefahr, dass diese Daten in kurzer Zeit nicht mehr aktuell sein werden. Das mag folgendes Beispiel zeigen: Wenn bei einer Ersterfassung von einer Person neben dem Geburtsdatum auch das Alter gespeichert würde, dann ist dieser Eintrag nach spätestens einem Jahr falsch. Die Altersangabe ist ein Berechnungswert, der sich aus der Differenz von aktuellem Datum und Geburtsdatum, während einem Prozess, berechnen lässt. Stammdaten oder Wiederholungsdaten Stammdaten sind Daten, die sich nicht verändern oder nur selten. Es sind Daten, auf die während der Erfassung von Daten zugegriffen wird oder die erst in einer Auswertung zum Tragen kommen. Es sind Auswahlfelder die immer die gleiche Auswahl anbieten oder Ansätze die immer wieder verwendet werden, z.B. Abteilung, Mehrwertsteuersätze oder Anzahl Arbeitsstunden pro Tag usw. In einer Stammdaten-Tabelle werden keine Fremdschlüssel vererbt, es sei denn, Stammdaten beeinflussen Stammdaten. In einer Tabelle Lagerplätze kann der Schlüssel der Tabelle Lagerstandorte vererbt werden, um die Lagerplätze eindeutig einem Standort zuzuordnen. Steuertabellen oder Hilfstabellen Eine besondere Form der Tabelle stellt die Hilfstabelle dar, die bei der Normalisierung der Tabellenstruktur zwei oder mehrere Tabellen miteinander über die Hauptschlüssel verbindet. In so einer Tabelle werden Daten nicht eingegeben, sondern automatisch erzeugt. www.babe-informatik.ch Seite 27/32 Bernhard Bausch Schulungsunterlagen Datenbanken 7.2 Datenstruktur - konzeptionelles Datenmodell Die Zusammenstellung der für das Informationssystem erforderlichen Daten wird Informationsstruktur genannt. In dieser Informationsstruktur sind sämtliche Datenfelder mit ihren Bedeutungen aufgelistet, aus denen dann die einzelnen Tabellen entstehen. 7.2.1 Abhängigkeiten von Attributen Die verschiedenen Abhängigkeiten von Attributen werden in Klassen eingeteilt: Funktionale Abhängigkeit Voll funktionale Abhängigkeit Transitive Abhängigkeit Mehrwertige Abhängigkeit Funktionale Abhängigkeit In einer Relation R(A,B) ist das Attribut B von A funktional abhängig, falls zu jedem Wert des Attributs A genau ein Wert des Attributs B gehört. Funktional abhängig sind somit solche Attribute einer Relation, die sich in der realen Welt nicht unabhängig voneinander ändern können, ohne dass sich das davon abhängige Attribut mit ändert. Zum Beispiel sind Gewicht und die Bezeichnung eines Artikels von der Artikelnummer funktional abhängig. Unterschiedliche Gewichte implizieren unterschiedliche Artikelnummern. Die Artikelnummer ist allerdings nicht vom Gewicht des Artikels funktional abhängig, denn unterschiedliche Artikelnummern implizieren nicht unterschiedliche Gewichte. Oder es gibt unterschiedliche Artikelnummern mit gleichen Gewichten, aber es gibt keine unterschiedlichen Gewichte für gleiche Artikelnummern. Wenn ein Attribut B von A funktional abhängig ist, so sagt man auch: A bestimmt B oder A ist Determinante von B. Artikel Art_Nr 10010 10011 10020 10021 Art_Gewicht 1 Kg 5 Kg 1 Kg 5 Kg Art_Bez Zucher Zucker Mehl Mehl Voll funktionale Abhängigkeit In einer Relation R(S1,S2,A) ist das Attribut A von den Attributen (Schlüssel) S1,S2 voll funktional abhängig, wenn A vom zusammengesetzten Schlüssel (S1,S2) funktional abhängig ist, nicht aber von einem einzelnen Schlüsselteil S1 oder S2. www.babe-informatik.ch Seite 28/32 Bernhard Bausch Schulungsunterlagen Datenbanken Voll funktional Abhängig ist zum Beispiel das Attribut Pr_Abz der Relation PROJEKTE von dem zusammengesetzten Schlüssel (Pr_ID, Adr_ID), da Pr_Abz weder von Pr_ID noch von Adr_ID alleine funktionell abhängig ist. In der Praxis kann man in der Relation PROJEKTE die voll funktionale Abhängigkeit daran erkennen, dass: es für verschiedene Pr_Abz logischerweise immer verschiedene Attributkombinationen (Pr_Id,Adr_ID) geben muss, gleiche Pr_ID mit unterschiedlichen Pr_Abz vorkommen und gleiche Adr_ID mit unterschiedlichen Pr_Abz vorkommen. Projekte Pr_ID Projekt Adr_ID Pr_Abz Mitarbeiter Total Arbeitszeit 22 22 12 18 45 23 18 69 133.0 88.4 235.5 33.4 Transitive Abhängigkeit In einer Relation R(S,A,B) ist das Attribut B vom Attribut (Schlüssel) S (der auch ein zusammengesetzter Schlüssel sein kann) transitiv abhängig, wenn A von S funktional abhängig ist, S jedoch nicht von A, und B von A funktional abhängig ist. In folgendem Beispiel ist das Attribut Abteilungsname (Abt_Name) transitiv abhängig vom Attribut Personalnummer (Adr_ID), da die Abteilungsnummer (Abt_Nr) von der Personalnummer abhängig ist, allerdings nicht umgekehrt (Adr_ID ist nicht abhängig von Abt_Nr), und der Abteilungsname von der Abteilungsnummer funktional abhängig ist. Mitarbeiter Adr_ID 22 Adr_Name Adr_Ort Huber Abt_Nr Zürich 1 Abt _Name Chemie Mehrwertige Abhängigkeit In einer Relation R(A,B,C) ist das Attribut C mehrwertig abhängig vom Attribut A, falls zu einem A-Wert, für jede Kombination dieses A-Wertes mit einem B-Wert, eine identische Menge von C-Werten existieren kann. In dieser Relation ist das Attribut Li_ID (C-Wert) vom Attribut Art_Art (A-Wert) mehrwertig abhängig, da für die gleiche Art_Art (z.B. Monitor) in jeder Kombination mit der Art_Bez (B-Wert) die gleich Li_ID erscheint. Diese Konstellation setzt allerdings voraus, dass Art_Art immer vom gleichen Lieferanten geliefert wird. Artikel Art_ID 21 22 23 24 25 26 www.babe-informatik.ch Art_Bez Art_Art (Art_ID) Multisync I Multisync II Herkules HP P6 HP P7 Farb-Laser Monitor Monitor Grafikkarte Drucker Drucker Drucker Li_ID (Lieferant) 1 1 1 4 4 4 Seite 29/32 Bernhard Bausch Schulungsunterlagen Datenbanken 7.2.2 Die Erste Normalform Eine Tabelle befindet sich in der Ersten Normalform (1NF), wenn alle Attribute nur atomare Werte beinhalten, das heisst, jedes Attribut darf nur einmal in der Tabelle vorkommen. Die Vorschrift fordert, dass Daten die sich wiederholen, Wiederholungsdaten also, in eine gesonderte Tabelle auszugliedern sind. Diesen Vorgang der Ausgliederung von Datenfeldern bezeichnet man als Normalisierung. Die unten stehende Tabelle Artikel befindet sich nicht in der erste Normalform, da das Attribut Lief_ID sogenannte Wiederholungsgruppen aufweist. Die Verarbeitung eines Feldes wie die Lief_ID, gestaltet sich höchst schwierig. Die Relation kann nicht gejoint werden. Lieferantennummern sind einzeln nicht ansprechbar. Artikel Art_Nr Art_Bez Art_Art Lief_ID 1 2 3 6 Sync 1 Sync 2 Herkules P6 Monitor Monitor Grafikkarte Drucker 14 136 2479 4 Bei der Zuordnung der Datenfelder auf Tabellen ist zu beachten, das die Anzahl der Spalten einer Tabelle nicht variabel ist. Sie darf nicht von Satz zu Satz ändern: Pe_ID Pe_Name Pe_Vname Pe_Partner Pe_Kind1 Pe_Kind2 Pe_Kind3 14 15 16 Meier Huber Keller Rolf Doris Heinz Monika Michael Bernd Heinrich -- Susi Dieter -- Petra --- In einer solchen Tabelle ergeben sich zwei Unzulänglichkeiten. Die eine besteht darin, dass jeder Zeile Platz für eventuelle Einträge der Familienangehörigen vorgehalten werden muss und bei ledigen bedeutet es, Verschwendung von Speicherplatz. Die Zweite Unzulänglichkeit besteht dann, wenn Rolf und Monika ein viertes Kind bekommen. Die folgende Relation befindet sich allerdings (nur) in der ersten Normalform Person_1NF Pe_ID Pe_Name Pe_Ort Abt_Nr Abt_Name Prd_Nr Prd_Name Pe_Zeit 101 101 Paul Paul Genf Genf 1 1 Chemie Chemie 11 12 Kali Verdünner 60 40 7.2.3 Die Zweite Normalform Eine Datei ist in der Zweiten Normalform, wenn sie der Ersten Normalform entspricht und jedes Nicht-SchlüsselAttribut voll funktional vom Gesamtschlüssel abhängig ist, nicht aber von einem Teilschlüssel oder von einzelnen Schlüsselteilen. Die Zweite Normalform bezieht sich auf solche Tabellen, die über einen Primärschlüssel verfügen, der aus mehr als einem Attribut zusammengesetzt ist. Alle Nichtschlüsselfelder müssen vom Gesamtschlüssel abhängen. Besteht eine Abhängigkeit nur von einem Teil des zusammengesetzten Schlüssels, so müssen die betreffenden Felder ausgegliedert werden. www.babe-informatik.ch Seite 30/32 Bernhard Bausch Schulungsunterlagen Datenbanken Beispiel 1: Felder ausgliedern Leistungen in Std. werden nach einem festen Stundenansatz verrechnet. Leistungsbericht Pe_Nr Ber_Nr PersonalBerichtsNummer Nummer 5 5 5 Auf_Nr AuftragsNummer 940228 940228 940228 Tae_Nr TätigkeitsNummer 11111 11111 11111 Tae_Bez 3 2 5 LB_Std LB_Preis 4 1.5 3 130.00 100.00 110.00 Beratung Vorbesprechung Kalkulation Die Tabelle Leistungsbericht weist einen Gesamtschlüssel auf, der sich aus den Schlüsselfeldern Pe_Nr, Ber_Nr, Auf_Nr sowie Tae_Nr zusammensetzt. Die Nichtschlüsselfelder Tae_bez und LB_Preis sind jedoch nicht vom Gesamtschlüssel, sondern nur von dem Teilschlüssel Tae_Nr abhängig (LB_Preis sind Einzelpreise). Somit ist die Tabelle Leistungsbericht umzustrukturieren. Leistungsbericht Pe_Nr PersonalNummer 5 5 5 Ber_Nr BerichtsNummer Auf_Nr AuftragsNummer 940228 940228 940228 11111 11111 11111 Tae_Nr TätigkeitsNummer 3 2 5 LB_Std 4 1.5 3 Die ausgegliederten Felder werden in eine neue Tabelle Tätigkeitsarten eingebracht. Ergänzt um weitere Tätigkeitsarten, ist die Tabelle wie folgt aufgebaut. Tätigkeitsarten Tae_Nr TätigkeitsNummer 1 2 3 4 5 6 7 Tae_Bez Tae_Preis Akquisition Vorbesprechung Beratung Projektentwurf Kalkulation Zeichnen Schreibarbeiten 70.00 100.00 130.00 100.00 110.00 70.00 60.00 Beispiel 2: Schlüsselabhängigkeit Zusätzlich zum Monatslohn wird eine Sonderzahlung irgendwann im Laufe des Jahres ausbezahlt. Würde man die Zahlung in die Tabelle Monatslohn aufnehmen, ergäbe das folgendes Bild: Monatsgehälter Pe_Nr MG_Jahr 5 5 5 01 01 01 MG_Monat MG-Gehalt 1 2 ?? 5000.00 5200.00 2000.00 Die Sonderzahlung in der Höhe von Fr. 2000.00 ist wohl der Person und dem Jahr zuzurechnen. Da die Zahlung keinen Bezug zu einem bestimmten Monat aufweist, besteht nur eine Abhängigkeit von der Personalnummer (Pe_Nr) und dem Jahr (MG_Jahr). Sie ist nicht vom Gesamtschlüssel, sondern nur von Teilen des Schlüssels abhängig. www.babe-informatik.ch Seite 31/32 Bernhard Bausch Schulungsunterlagen Datenbanken 7.2.4 Die Dritte Normalform Eine Datei ist in der Dritten Normalform, wenn sie der Zweiten Normalform entspricht und die Nichtschlüsselfelder nicht von anderen Nichtschlüsselfeldern abhängen. Im Dritten Normalfall sind keine Abhängigkeiten zwischen Attributen erlaubt, die nicht als Schlüssel definiert sind. Mit anderen Worten, Eine Relation ist in der 3 NF, wenn sie sich in der 1NF und in der 2NF befindet und keine transitiven Abhängigkeiten aufweist. Beispiel: Person_2NF Pe_Nr 101 Pe_Name Pe_Ort Müller Zürich Abt_Nr 3 Abt_Name Chemie Die Relation Person_2NF weist eine transitive Abhängigkeit auf, da Abt_Name von dem Attribut Abt_Nr funktional abhängig ist und nicht vom Schlüssel Pe_Nr. Durch Auftrennung dieser Relation in Person_3NF und Abteilung erhalten wir zwei Relationen, die sich in der 3 NF befinden. Person_3NF Pe_Nr 101 Abteilung Pe_Name Pe_Ort Müller Zürich Abt_Nr 3 Abt_Nr 3 Abt_Name Chemie 7.2.5 Denormalisierung Die starke Aufgliederung der einzelnen Informationselemente in eine Vielzahl von Tabellen hat den Nachteil, dass der Rechner bei Suchvorgängen, die sich über mehrere Tabellen erstrecken, viel Zeit benötigt. Kommt es zu unerträglichen langen Antwortzeiten, so wird das Datenmodell umgebaut, indem Ausgliederungen wieder zurückgenommen werden. Diesen Vorgang bezeichnet man als Denormalisierung. www.babe-informatik.ch Seite 32/32