Diese Webseite speichert Cookies und verarbeitet personenbezogene Daten, um das Angebot jener zu verbessern. Sie können allgemein die entsprechenden Dienste uneingeschränkt zulassen („Einverstanden“) oder nur eingeschränkt zulassen („Einschränken“). Sie können diesen Hinweis aber auch ausblenden, dann werden die Dienste nur eingeschränkt zugelassen. Die Auswahl wird in einem Cookie für ein Jahr gespeichert, bei der Ausblendung nur bis zum Sitzungsende (mittels eines Session-Cookies).

Sie können auch weitere Einstellungen vornehmen (zum Auf-/Einklappen hier klicken):
AdSense
Analytics
  1. Mit der Einstellung „AdSense komplett erlauben“ erklären Sie sich damit einverstanden, dass die Webseite Cookies speichert, um für Sie personalisierte Werbung bereitstellen zu können. Mit der Einstellung „AdSense eingeschränkt erlauben“ werden keine solchen Cookies verwendet und es wird Werbung angezeigt, die sich am Thema der einzelnen Seite orientiert. In jedem Fall wird aber von Google ein Cookie gesetzt, durch das ein Betrug verhindert wird.
  2. Mit der Einstellung „Analytics komplett erlauben“ willigen Sie darin ein, dass die Webseite Cookies speichert, durch die es ermöglicht wird, Sie bei einem erneuten Besuch zuordnen zu können. Mit der Einstellung „Analytics eingeschränkt erlauben (Session-Cookie)“ wird ein Session-Cookie nur zur Aufzeichnung der aktuellen Sitzung angelegt. Mit der Einstellung „Analytics eingeschränkt erlauben (ohne Session-Cookie)“ wird kein Cookie gesetzt, sondern stattdessen ein Zählpixel mit einer nicht zuordenbaren ClientId.

Sie können auch auf der Datenschutzseite weitere Informationen einholen. In diesem Fall stimmen Sie einer eingeschränkten Nutzung zu (ohne Setzung eines Analytics-Cookies), um den Inhalt lesen zu können. Die Zustimmung wird mit einem Session-Cookie gespeichert. Sie können auf der Datenschutzseite die Einstellungen entsprechend anpassen.

Überspringe die Navigation
Schulstoff.org
Kontrastmodus umschalten
Inhaltsverzeichnis [Anzeigen] [Verbergen]

Modellierung

Zählmarke modellierung

Grundlagen und Begriffe

Eine Simulation ist die Nachbildung eines realen Vorgangs oder Ablaufs mit Hilfe des Computers. Ein System ist die Gesamtheit von Gegenständen, die in einer Beziehung zueinander stehen, z.B. Geldautomat und Zahlensystem. Ein Modell beschreibt vereinfacht ein reales oder geplantes Systems und beinhaltet nur Teile des Originals.

Verwendung und Probleme von Modellen

Modelle verwendet man, wenn

Bei der Modellbildung treten jedoch folgende Probleme auf:

Modellieren in der Informatik

Möchte man ein reales System zu einem Modell vereinfachen, so muss man eine Modellierung und Implementierung durchführen, d.h. man muss abgrenzen, abstrahieren, idealisieren, aggregieren. Mithilfe dieses Modells, z.B. eines Diagramms oder Programms, kann man mit Simulationen und Interpretationen Rückschlüsse auf das reale System ziehen.

Prozesse und Teilprozesse

Ein Prozess erstellt aus Eingangsmaterialien nach einer fest vorgeschriebenen Verarbeitungsvorschrift einen Ausgabegegenstand. Ein Verarbeitungsprozess lässt sich in Teilprozesse zerlegen. Das Ausgabematerial eines Teilprozesses „fließt“ als Eingangsmaterial in einen anderen Teilprozess.

Funktionen als verarbeitende Prozesse

Daten

Daten (Singular: Datum) in der Informatik umfassen neben der Darstellungsform einer Information auch deren Bedeutung.

Funktion

Eine Funktion ermittelt aus Eingangsdaten nach einer festgelegten und eindeutigen Verarbeitungsvorschrift (Zuordnungsvorschrift) Ausgabedaten.


Tabellenkalkulation

Zählmarke tabellenkalkulation
Anmerkung: Die Befehle beziehen sich hier vor allem auf „OpenOffice“ (bzw. LibreOffice). Bei anderen Programmen können die Funktionen anders lauten.

Rechnen mit Rechenblättern

Ein Rechenblatt besteht aus Zellen, die in Zeilen und Spalten angeordnet sind. Die Zeilen werden mit Zahlen bezeichnet (1 ... 65536), die Spalten mit Buchstaben (A ... IV) und die Zellen mit der Kombination aus Spalte und Zelle (z.B. A3 oder HH45).

Eine Zelle enthält ein Datum (eine Zahl, einen Text o.ä.) oder eine Formel. Sie beginnt mit einem „=“, damit das Programm den Eintrag als Formel erkennt.

Arbeiten mit Formel

Beim Kopieren von Formeln wird der sogenannte „relative Zellbezug“ verwendet, d.h. die Position der verwendeten Zellen in Relation zur aktuellen Zelle, z.B. 2 links, 4 hoch. Das bedeutet, dass die Formel bezogen auf die neue Position umgestaltet wird (taucht in C2 die Zelle A1 auf, so wird beim Kopieren in C3 A2 verwendet).

Soll eine bestimmte Zelle angesprochen werden, so geschieht dies durch ein „$“-Zeichen vor dem Spalten- bzw. Zeilennamen (also A$1 oder $A1 oder $A$1). Dies nennt man absoluten Zellbezug.

Datentypen

Für ein Rechenblatt gibt es nur zwei Sorten von Daten: Texte und Zahlen. Zahlen können in ihrer Ausgabe unterschiedlich formartiert werden, z.B. mit unterschiedlich vielen Nachkommastellen, als Brüche oder als Währung, als Datum oder als Zeitangabe.

Intern wird aber immer mit der zu Grunde liegenden Zahl gerechnet. So entspricht das Datum 11.04.2013 der Zahl 41375 und der Wert 1 beschreibt den 31.12.1899.

Funktionen

Anmerkung: Eine Aufstellung aller Funktionen erhält man über „Einfügen - Funktionsliste“.

Funktionen mit mehreren Eingabewerten

Wenn eine Funktion mehr als einen Eingabewert erfordert, so spricht man von einer mehrstelligen Funktion. Die Eingabewerte können Zahlen oder Zellverweise sein. In den Rechenblättern wird die „PRÄFIX“-Schreibweise verwendet, d.h. erst kommt der Funktionsname, dann in Klammern die Eingabewerte, z.B. „=Summe(7;8)“.

Die Reihenfolge der Eingabewerte darf in der Regel nicht vertauscht werden, d.h. die meisten Funktionen sind nicht kommutativ (Potenz(3;4) = 81; Potenz(4;3) = 64).

Verkettung von Funktionen – Datenflussdiagramme

Funktionen können verkettet werden, indem man den Ausgabewert einer Funktion als einen Eingabewert einer anderen Funktion übernimmt. Zur Darstellung solcher Verkettungen benutzt man ein Datenflussdiagramm. Dabei dienen Rechtecke als Ein- und Ausgabewerte, Ovale als Funktionen, Pfeile als Datenfluss.

Beispiel eines DatenflussdiagrammsBeispiel eines Datenflussdiagramms
Beispiel eines Datenflussdiagramms

Bedingte Funktionen – Wenn-dann-Funktionen

Eine Bedingung kann mit Hilfe der Wenn-Formel eingebaut werden. Als Erstes steht in der Klammer eine Bedingung. Als Zweites steht die Formel, die verwendet werden soll, wenn die Bedingung erfüllt ist. Als Drittes steht die zu verwendende Formel, falls die Bedingung nicht erfüllt ist. Es ist möglich mehrere Bedingungen ineinander zu verschachteln.


Datenbanksysteme: Einleitung

Zählmarke datenbanksysteme-einleitung

Grundbegriffe

Datenbanksystem, Datenbank und Datenbankmanagementsystem

Ein Datenbanksystem (DBS) ist ein System zur Beschreibung, Verwaltung, Speicherung und Wiedergewinnung großer Datenmengen, das von mehreren Anwendungsprogrammen bzw. Datenbanknutzern gleichzeitig und unabhängig genutzt werden kann.

Es besteht aus

Ein grundlegendes Prinzip bei Datenbanksystemen ist die strikte Trennung von Daten und Datenbearbeitung. Das DBMS ist dabei verantwortlich für

Relationale Datenbanken

Eine relationale Datenbank besteht nur aus Tabellen. Jede Tabelle enthält Informationen. Die Kunst besteht darin, die Tabellen so zu erstellen, dass die benötigten Informationen abgerufen werden können.

Als Beispiel soll eine Schule betrachtet werden. In ihr werden ständig vielfältige Informationen über Schüler, Fächer und Lehrer benötigt:

Die folgenden Tabellen geben einen ersten Einblick vom möglichen Aufbau einer solchen Datenbank:

SchülerNameKlasseWohnort
Maier5aSchweinfurt
Mayer5bSchwebheim
Meier5cSennfeld
LehrerNameFach
SchmittM, Ph
KinderfrauM, WRe, Inf
KinderfrauD, F

Liest man die Tabellen richtig aus, so erhält man mit Hilfe einer eigenen Sprache die gewünschten Informationen.

Grundlagen

Informationssysteme

Wir leben heute in einer Informationsgesellschaft. Zugriff auf Verarbeitung, Ablage und Weitergabe von Informationen spielen eine immer größere Rolle. Durch das rasante Anwachsen der angebotenen Informationsmenge greift man verstärkt auf Informationssysteme zurück.

Merkmale aller Informationssysteme, wie bei Urlaubsplanungen, in Bibliotheken oder in Banken, ist, dass sie auf Daten, d. h. auf elektronisch gespeicherte Informationen, zurückgreifen.

Datenspeicherung in einem Datensystem

Einführung

Die Daten werden in mehreren Dateien abgespeichert. Diese Form der Datenspeicherung wurde lange Zeit auch für größere Datenmengen eingesetzt und wird heute noch für individuelle Anwendungen genutzt.

Was scheinbar einfacher ist, birgt aber auch eine Vielzahl von Problemen, die erst durch den planvollen Einsatz von Datenbanksystemen behoben werden können.

Beispiel: Organisation der Schulverwaltung mittels Daten auf dem Server des Verwaltungsnetzes
ProblemBedeutungBeispiel
Redundanz Dieselbe Information muss mehrfach abgespeichert werden. Die Daten (Name, Adresse, Telefon, Fächerverbindung) eines neu an die Schule gekommenen Lehrers müssen gespeichert werden. Es wird eine neue Lehrerdatei mit den entsprechenden Daten angelegt. Der Name muss zusätzlich in die Lehrerliste eingetragen werden. Die Telefonliste muss entsprechend ergänzt werden.
Inkonsistenz Gespeicherte Daten sollen in sich stimmig sein Eine Lehrerin heiratet und ändert ihren Namen. Man ändert den Namen in der entsprechenden Lehrerdatei und korrigiert den Namen in der Lehrerkiste. Dabei passiert ein Schreibfehler. Die Aktualisierung der Telefonliste wird vergessen. Damit existiert der Name der Lehrerin in drei verschiedenen Versionen.
Beschränkte Zugriffsmöglich- keiten Es ist schwierig, in isolierte Dateien abgelegte Daten miteinander zu verknüpfen Von der Klasse 5 wird eine Liest der kath. SchülerInnen benötigt. Es gibt keine Möglichkeit, diese Informationen durch Verknüpfen der einzelnen Schülerdaten automatisch zu erhalten. Die gewünschte Information kann nur durch Überprüfung jede Schülerdatei gewonnen werden. Dann wird eine neue Datei „Kath. Schüler der Klasse 5“ erstellt.
Mehrbenutzer- betrieb Schlechte Möglichkeiten eines kontrollierten Mehrbenutzerbetriebs Die Datei mit der Lehrerliste wird gleichzeitig geöffnet. Beim Ersten wird ein Name ergänzt und abgespeichert. Beim Zweiten wird nur etwas korrigiert und danach ebenfalls gespeichert. Dies hat zur Folge, dass die Ergänzungen des Schulleiters wieder überschrieben werden.
Verlust von Daten Bei der Bearbeitung der Dateien kann ein Fehlerfall den Verlust von Daten bedeuten (Unvollständigkeit und Inkonsistenz) Ein Schüler tritt während des Schuljahres von der 7. in die 6. Klasse zurück. Dessen Schülerdatei wird aus dem Ordner der 7. Klasse genommen. Unmittelbar vor dem Einfügen in den Ordner der 6. Klasse stürzt der Rechner ab. Dadurch gehen die Schülerinformationen verloren.
Integritätsver- letzung Einhalten von bestimmten Bedingungen, die an Daten gestellt werden Bei der Stundenplanerstellung muss vermieden werden, dass eine Lehrkraft zeitgleich in verschiedenen Klassen eingesetzt wird. Isolierte Stundenpläne bieten keine Möglichkeit, solche Fehler aufzudecken.

Einführung in die Datenbank

Das Klassendiagramm

Anmerkung: Die Namen (Klassen, Beziehungen etc.) beziehen sich auf ein spezielles Beispiel. Dieses wird später evtl. hinzugefügt.
Klassen
FLUG
Flugnr : Text
Fluglinie : Text
von : Text
nach : Text
ab : Datum
an : Datum
Groesse : Integer
KUNDE
Kundennr
Name
Vorname
Alter
Beziehung
BUCHUNG
Buchungsnr
Kundennr
Flugnr
Sitz

Primärschlüssel werden unterschrichen, die Datentypen können auch weggelassen werden. Die Darstellung der Beziehung zwischen den beiden Klassen FLUG und KUNDE sieht wie folgt aus:

Beziehung zwischen den beiden KlassenBeziehung zwischen den beiden Klassen
Beziehung zwischen beiden Klassen

Fremdschlüssel

In der Tabelle BUCHUNG verweisen die beiden Attribute „Flugnr“ und „Kundennr“ auf den jeweiligen Primärschlüssel einer anderen Tabelle, nämlich „FLUG“ und „KUNDE“. So erspart man der Datenbank in der Tabelle BUCHUNG viele redundante Einträge, da etwa die weiteren Flugdaten nicht noch einmal eingegeben werden müssen, sondern aus der Tabelle Flug entnommen werden können.

Der Fremdschlüssel muss ein Primärschlüssel der Bezugstabelle sein, da sonst keine eindeutige Zuweisung möglich wäre. Allerdings muss die Datenbank „wissen“, dass eine solche Beziehung besteht, da sonst etliche Probleme auftreten könnten.

Primärschlüssel

Ein Primärschlüssel kennzeichnet Datensätze einer Tabelle eindeutig. Er besteht aus einem Attribut (z.B. Flugnr für Datensätze der Tabelle FLUG) oder aus einer Kombination von Attributen (z.B. die Attribute Kundennr und Flugnr in der Tabelle BUCHUNG).

Es werden zwei Arten von Primärschlüsseln unterschieden:


Datenbanksysteme: Beziehungen

Zählmarke datenbanksysteme-beziehungen

Kardinalität von Beziehungen

Kardinalität von BeziehungenKardinalität von Beziehungen
Kardinalität von Beziehungen

1:1 - Beziehungen

Falls jedes Objekt (Datensatz, Zeile der Tabelle) der Klasse 1 (Tabelle) mit höchstens einem Objekt der Klasse 2 in Beziehung steht und umgekehrt, spricht man von einer 1:1 - Beziehung. Dabei kann es durchaus sein, dass es Objekte in Klasse 1 oder Klasse 2 gibt, denen kein „Partner“ aus der anderen Klasse zugeordnet ist.

Ein Beispiel ist die Beziehung verheiratet zwischen den Klassen Männer und Frauen, zumindest nach europäischem Recht.

1:1 - Beziehung1:1 - Beziehung
1:1 - Beziehung

1:n - Beziehung

Falls jedes Objekt der Klasse 1 mit beliebig vielen Objekten der Klasse 2 in Beziehung stehen kann, aber jedes Objekt der Klasse 2 mit höchstens einem Objekt der Klasse 1, sprich man von einer 1:n - Beziehung.

Ein Beispiel ist die Beziehung beschäftigt sein zwischen den Klassen Arbeitnehmer und Unternehmen, wobei man davon ausgeht, dass ein Arbeitnehmer nur bei einem Unternehmen beschäftigt ist, ein Unternehmen aber mehr als einen Beschäftigten haben kann.

1:n - Beziehung1:n - Beziehung
1:n - Beziehung

n:m - Beziehung

Falls jedes Objekt der Klasse 1 mit beliebig vielen Objekten der Klasse 2 in Beziehung stehen kann und umgekehrt, spricht man von einer n:m - Beziehung. Ein Beispiel ist die Beziehung unterrichten zwischen den Klassen Schüler und Lehrer; jeder Lehrer unterrichtet mehrere Schüler und jeder Schüler hat mehrere Lehrer.

n:m - Beziehungn:m - Beziehung
n:m - Beziehung

Darstellen von Beziehungen in einem Datenbankschema

Regel 1

Jede Beziehung kann als eigenständige Tabelle definiert werden, wobei die Primärschlüssel der zugehörigen Klassen als Fremdschlüssel auftreten müssen.

Beispiel

Beziehung unterrichtet (siehe „Kardinalität von Beziehungen, n:m - Beziehung). Die Klassen sehen wie folgt aus:

Regel 2

Jede n:m - Beziehung muss durch eine eigenständige Tabelle definiert werden. Der Primärschlüssel kann dabei auf zwei verschiedene Arten festgelegt werden:

Beispiel

Bücher werden beliebig oft ausgeliehen und die Ausleihe gespeichert.

n:m - Beziehung am Beispiel einer Buchausleihen:m - Beziehung am Beispiel einer Buchausleihe
Beispiel für eine n:m - Beziehung am Beispiel einer Buchausleihe

Regel 3

Jede 1:n - Beziehung sowie jede 1:1 - Beziehung kann ohne eigenständige Beziehungstabelle unmittelbar in die zugeordneten Klassen integriert werden.

Beispiel

Der aktuelle Ausleihstatus wird bei der Bibliothek registriert, d.h. ein Buch kann auch nur einmal ausgeliehen werden.

Der Schlüssel Nutzer-Id in der Klasse BUCH ist ein Fremdschlüssel auf den Primärschlüssel der Klasse NUTZER. Dabei ist zu beachten, dass nur die 1-er-Klasse in die andere Klasse integriert werden kann, d.h. hier wird die Buch-Nr nicht in die Klasse NUTZER eingetragen.


Datenbanksysteme: SQL

Zählmarke datenbanksysteme-sql

Die Datenbanksprache SQL (Structured Query Language) erlaubt neben dem Aufbau und der Veränderung von Datenbanken vor allem, Daten aus diesen Tabellen nach bestimmten Gesichtspunkten abzufragen. Im Folgenden nutzen wir SQL ausschließlich als Instrument zur Abfrage.

Erste grundlegende Abfragebefehle

SELECT, FROM

Die einfachste Form der SQL-Abfrage besteht aus der SELECT-Klausel und der FROM-Klausel. Als Ergebnis wird eine Tabelle angezeigt, die alle in der SELECT-Klausel angegebenen Spalten der Tabelle enthält, die in der FROM-Klausel angegeben sind. Die Reihenfolge der Spaltennamen in der SELECT-Klausel legt dabei die Anordnung der Ergebnisspalten fest.

Beispiel: Alle Start- und Zielflughäfen der Tabelle FLUG sollen ausgegeben werden

SELECT "von", "nach"
FROM FLUG;

Sollen alle Spalten einer Tabelle ausgegeben werden, so verwendet man hinter dem Schlüsselwort SELECT einen Stern "*".

Beispiel:

SELECT *
FROM FLUG;

AS

Möchte man die Spaltenüberschriften ändern, wird hinter den jeweiligen Spaltennamen mit dem Schlüsselwort AS die gewünschte Spaltenüberschrift gesetzt.

Beispiel:

SELECT "von" AS Startflughafen, "nach" AS Zielflughafen
FROM FLUG;

DISTINCT

Sollen eventuelle Duplikate vermieden werden, so wird hinter das Schlüsselwort SELECT noch das Schlüsselwort DISTINCT angehängt.

Beispiele: Alle Flüge, für die eine Buchung existiert, sollen angezeigt werden.

SELECT "Flugnr"
FROM BUCHUNG;

bzw.

SELECT DISTINCT "Flugnr"
FROM BUCHUNG;

ORDER BY

Um sortierte Ergebnisse zu erhalten, verwendet man das Schlüsselwort ORDER BY. Die ORDER BY-Klausel enthält die Spalte nach der sortiert wird. Der Befehl DESC hinter dem Spaltennamen gibt an, das die Inhalte absteigend sortiert werden.

SELECT "Flugnr", "ab"
FROM FLUG
ORDER BY "ab";

WHERE

Sollen alle nicht aussagekräftigen Kombinationen ausgeschlossen werden, so muss mit Hilfe der WHERE-Klausel eine Gleichheitsbedingung angegeben werden. Damit kann man auch Einschränkungen der Datensätze vorgenommen werden.

Beispiel: Alle Kunden über 30 sollen mit Name, Vorname und Alter angezeigt werden, sortiert nach Alter

SELECT "Name", "Vorname", "Alter"
FROM KUNDE
WHERE "Alter" > 30
ORDER BY "Alter" DESC;

Weitere SQL-Abfragen

Auswertung von Tabellen mit Aggregatfunktionen

Folgende Aggregatfunktionen können verwendet werden:

Auwertung von Tabellen mit Aggregatfunktionen und Gruppenbildung (GROUP BY)

Durch das Schlüsselwort GROUP BY Spaltenname wird die gesamte Tabelle in Teiltabellen zerlegt, die in der angegebenen Spalte den gleichen Wert haben. Für jede dieser Teiltabellen kann nun ein bestimmter Wert errechnet werden.

Auswertung von Tabellen mit Aggregatfunktion und Gruppenbildung unter Verwendung von Bedingungen (HAVING)

Die HAVING-Klausel wählt aus den gegebenen Bedingungen diejenigen aus, die eine vorgegebene Bedingung erfüllen.


Datenbanksysteme: Redundanz, Anomalie, Inkonsistenz

Zählmarke datenbanksysteme-redundanz-anomalie-inkonsistenz

AUm die Begriffe der „Redundanz“, „Anomalie“ und „Inkonsistenz“ besser verstehen zu können, wird als Beispiel die Datenbank eines Unternehmens betrachtet, in der die Werksautos und die Fahrer, die diese Wagen bewegen, abgespeichert sind. Sie kann etwa folgendermaßen aussehen:

KENNZEICHEN HERSTELLER MODELL FARBE FAHRER-ID NAME VORNAME
F-KJ 321 VW Touran Blau 318 Schmidt Peter
F-CH 333 Opel Vectra Rot 37 Schneider Fritz
F-MD 456 BMW 750i Silber 93 Maier Franz
F-HK 987 Mercedes C 220 Schwarz 274 Müller Thomas
F-CH 333 Opel Vectra Rot 274 Müller Thomas
F-MD 456 BMW 750i Silber 37 Schneider Fritz

Redundanzen

Bei einer Redundanz werden verschiedene Informationen über die einzelnen Autos und über die einzelnen Fahrer mehrfach abgespeichert. In einem solchen Fall werden somit Daten unnötig mehrfach abgespeichert.

Anomalien

Redundant gespeicherte Daten kosten nicht nur Speicherplatz, sondern können auch zu Fehlern in der Datenbank führen. Man spricht von Anomalien.

Änderungs-Anomalie (Update-Anomalie)

Wenn etwa der Opel Vectra von rot auf orange umgespritzt wird, so muss die Änderung an mehreren Stellen (hier: mindestens 2) erfolgen. Wird eine Änderung vergessen, so taucht derselbe Wagen mit zwei verschiedenen Farben auf.

Lösch-Anomalie (Delete-Anomalie)

Wenn der BMW „geschrottet“ und danach aus der Datenbank gelöscht wird, so gehen damit auch die Informationen über den Fahrer Maier verloren, sofern er nicht noch bei einem zweiten Wagen als Fahrer vorgesehen ist.

Einfüge-Anomalie (Insert-Anomalie)

Ein neuer Wagen kann nur eingefügt werden, wenn ihm auch ein Fahrer zugeteilt wurde, weil sonst ein Teil des Primärschlüssels keine Daten zur Verfügung stehen würden.

Inkonsistenzen

Eine Datenbank heißt inkonsistent, wenn sie nicht in sich stimmig ist, sondern Widersprüche aufweist. Solche Inkonsistenzen können etwa durch eine Änderungsanomalie entstehen.


Datenbanksysteme: Normalformen

Zählmarke datenbanksysteme-normalformen

Das Ziel der Verwendung von Normalformen ist es, Redundanzen zu eliminieren und Anomalien zu vermeiden.

1. Normalform (1 NF)

Beispiel

Tabelle PERSONAL-PROJEKT, in der alle Mitarbeiter aufgeführt sind, die an einem Projekt beteiligt sind oder waren. Die Mitarbeiter können an mehreren Projekten beteiligt sein; es wird jeweils notiert, wie viele Stunden sie in einem Projekt geleistet haben.

Pers-Nr Pers-Name Abt-Nr Abt-Name Pj-Nr Pj-Name Pj-Std.
101 Müller 1 Motoren 11, 12 A, B 60, 50
102 Meier 2 Karosserie 13 C 120
103 Krause 2 Karosserie 12, 12, 13 A, B, C 20, 50, 30
104 Schmitt 1 Motoren 11, 13 A, C 70, 20

Eine Tabelle liegt in der ersten Normalform vor, wenn jeder Attributwert eine atomare, d.h. nicht weiter zerlegbare Dateneinheit ist. Es dürfen also nicht mehrere Attributwerte in einer Zelle auftreten, wie etwa hier in der Spalte Pj-Nr.

Denn nur dann können über Abfragen wichtige Informationen aus der Tabelle herausgefiltert werden (z.B. „Welche Mitarbeiter waren an Projekt 11 beteiligt?“).

Um dies zu erreichen, lagert man die nicht atomaren Attribute in verschiedene Zeilen oder mehree Spalten (z.B. Adresse in PLZ, Ort, Straße) aus. Dabei muss ggf. der Primärschlüssel um ein oder mehrere Attribute erweitert werden. Es können dennoch noch alle besprochenen Anomalien auftreten.

Pers-Nr Pers-Name Abt-Nr Abt-Name Pj-Nr Pj-Name Pj-Std
101 Müller 1 Motoren 11 A 60
101 Müller 1 Motoren 12 B 50
102 Meier 2 Karosserien 13 C 120
. . .

2. Normalform (2 NF)

Eine Tabelle liegt in der zweiten Normalform vor, wenn jedes Attribut, das kein Teil des Primärschlüssels ist, vom gesamten Primärschlüssel funktional abhängig ist.

Dies ist der Fall, wenn z.B. das Attribut „Pers-Name“ ausschließlich vom Primärschlüssel-Teil „Pers-Nr“ abhängt, in keiner Weise jedoch vom Primärschlüssel-Teil „Pj-Nr“.

Im Beispiel sind die Attribute Pers-Name, Abt-Nr und Abt-Name vom Attribut Pers-Nr funktional abhängig, werden also allein durch dieses Attribut bereits bestimmt und benötigen das Attribut Pj-Nr nicht. Das Attribut Pj-Name dagegen ist funktional abhängig vom Attribut Pj-Nr.

Das Attribut Pj-Std wiederum ist funktional abhängig vom gesamten Primärschlüssel, der aus beiden Attributen Pers-Nr und Pj-Nr besteht. Also muss die vorgegebene Tabelle in drei eigenständige Tabellen zerlegt werden.

PERSONAL

Pers-Nr Pers-Name Abt-Nr Abt-Name
101 Müller 1 Motoren
102 Meier 2 Karosserie
103 Krause 2 Karosserie
104 Schmitt 1 Motoren

PROJEKT

Pj-nr Pj-Name
11 A
12 B
13 C

PERSONAL_PROJEKT

Pers-Nr Pj-Nr Pj-Std
101 11 60
101 12 50
102 13 120

In jeder der drei Tabellen gilbt nun, dass jedes Attribut, das nicht selbst Primärschlüssel ist, vom Primärschlüssel voll funktional abhängig ist.

3. Normalform (3 NF)

Betrachtet man die Tabelle PERSONAL näher, so sieht man, dass das Attribut Abt-Name funktional abhängig vom Primärschlüssel Pers-Nr ist, aber andererseits bereits von dem Attribut Abt-Nr festgelegt ist. Man sagt, Abt-Name ist transitiv abhängig vom Primärschlüssel Pers-Nr, und zwar über das Nicht-Primärschlüssel-Attribut Abt-Nr. Das führt zu Redundanzen, wie sofort erkennbar ist.

Eine Tabelle liegt in der dritten Normalform vor, wenn jedes Attribut, das kein Teil des Primärschlüssels ist, nicht transitiv abhängig vom Primärschlüssel ist, also nicht bereits durch ein Nicht-Primärschlüssel-Attribut festgelegt ist. Dies kann man beheben, indem man die transitiv abhängigen Attribute in eigene Tabellen auslagert.

PERSONAL

Pers-Nr Pers-Name Abt-Nr
101 Müller 1
102 Meier 2
103 Krause 2
104 Schmitt 1

PROJEKT

Pj-nr Pj-Name
11 A
12 B
13 C

PERSONAL_PROJEKT

Pers-Nr Pj-Nr Pj-Std
101 11 60
101 12 50
102 13 120

ABTEILUNG

Abt-Nr Abt-Name
1 Motoren
2 Karosserie

Wie man sieht, sind nun sämtliche Redundanzen beseitigt. Ändert sich etwa ein Abteilungsname (von Motoren zu Maschinen), so muss diese Änderung auch nur einmal, nämlich in der Tabelle ABTEILUNG, vorgenommen werden.

So kann es auch nicht zu den unerwünschten Änderungs-Anomalien kommen. Auch die Lösch- und Einfüge-Anomalien werden auf diese Weise vermieden. Man bezeichnet einen solchen Datenbank-Entwurf in der dritten Normalform deshalb als einen „guten“ Datenbankentwurf.

Der Nachteil an dieser Form ist, dass bestimmte Informationen, z.B. „An welchen Projekten hat Herr Müller mitgearbeitet?“, nicht mehr unmittelbar aus den Tabellen abgelesen werden können, sondern müssen in SQL mit Joins über mehrere Tabellen abgefragt werden.