Grundlagen der Informatik für Ingenieure

Werbung
Teil XI
Datenbanken
Überblick
1
Einführung
Grundlegende Begriffe
Motivation
2
Relationale Datenbanksysteme
Das Relationale Datenmodell
SQL
3
Entwurf von Datenbanken
Der Datenbankentwurfsprozess
Das Entity Relationship (ER) Modell
Abbildung von ER-Diagrammen auf Relationenschemata
Normalformen
4
DB-Anwendungsprogrammierung
Programmierschnittstellen
Transaktionen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
557/715
Datenbanken
Typische Aufgabe von Informationssystemen: Verwaltung
von großen Datenbeständen = Datenbanken (DB)
Zugriff auf Daten durch potentiell große Anzahl von
Nutzern
Hohe Anforderungen bezüglich
Effizienz der Zugriffe (lesend und schreibend)
Konsistenz (Widerspruchsfreiheit) der Daten
Schnittstellen für einfache Nutzbarkeit
Erfüllung dieser Anforderungen durch Programmieren
eigener Lösungen für jede Anwendung extrem aufwändig
Deshalb: spezielle Softwaresysteme zur Verwaltung von
Datenbanken = Datenbankmanagementsysteme
(DBMS)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
558/715
Datenbanken: Grundbegriffe
DBMS
Ein Datenbankmanagementsystem
(DBMS) ist ein Sammlung von
ausführbaren Programmen, welche zur
Umsetzung aller Zugriffe auf eine
Datenbank verwendet werden.
Eine Datenbank (DB) ist ein Sammlung
strukturiert und dauerhaft gespeicherter
Fakten für ein konkretes Anwendungsszenario
DB
DBS = DB + DBMS
Eike Schallehn, FIN/ITI
Ein Datenbanksystem (DBS) ist eine
durch ein DBMS zugreifbare Datenbank
für ein konkretes Anwendungsszenario.
Grundlagen der Informatik für Ingenieure
559/715
Datenbanksysteme: Anwendungsarchitektur
...
Anwendung 1
Anwendung 2
...
Datenbanksystem
Administrator
Ein Datenbanksystem (DBS) kann Daten für viele (oder eine)
Anwendungen bereitstellen
Nutzer können über die Anwendungen (oder direkt) auf im DBS
verwaltete Daten zugreifen
Administratoren als spezielle Nutzer zur Steuerung und
Kontrolle des DBS
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
560/715
Datenbanksysteme: Kommunikationsarchitektur
Anw1
Anw2
Anw1
Anw2
DBS
Heute meist Client Server-Architektur:
Anwendungen können von zahlreichen Installationen
(Clients) auf verschiedenen Rechner über ein Netzwerk auf
das DBS zugreifen
Das DBS läuft auf einem (oder mehreren = verteilt)
Rechnern (Server)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
561/715
Datenbankschema
Struktur der Daten für eine konkrete
Datenbank/Anwendung = Datenbankschema, z.B.
Schema für eine DB mit Studentendaten
Schema für eine DB mit Produktdaten
Schema für eine DB mit Kundendaten
Schema ist formale Festlegung und verwendet ein
Daten(bank)modell als „Sprache“ zur Datendarstellung
Datenmodell umfaßt alle möglichen Mittel zur
Beschreibung der Struktur der Daten, ist
anwendungsunabhängig und durch das verwendete DBMS
festgelegt
Beispiel: das soziale Netzwerk StudiVZ (= DBS)
speichert Daten über Studenten, Freunde, etc. (=
Datenbankschema)
in verschiedenen Tabellen mit Spalten etc. (= Datenmodell)
in einer MySQL (= DBMS)
Datenbank
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
562/715
Datenbanksysteme: Beispiele /1
eBay Online Auktionshaus:
WWW-basierte Plattform zum Kauf oder Verkauf
beliebiger Waren auf Auktionsbasis
212 Millionen Nutzer
26 Millionen Zugriffe pro Tag
2 Petabyte Datenvolumen ≈ 400.000 DVDs voll
Daten
DBMS: Oracle Database, Analysen über Teradata
UnivIS der OvGU:
WWW-basiertes Informationssystem zu
Lehrangeboten an der
Otto-von-Guericke-Universität
Daten zu über 5000 Lehrveranstaltungen, über
5000 Personen, über 400 Räume, etc.
Über 300 schreibberechtigte Nutzer
Ca 1.5 Millionen Anfragen pro Monat
DBMS: eigene Lösung des Anbieters
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
563/715
Datenbanksysteme: Beispiele /2
Wal-Mart Data Warehouse:
System zur Warenkorbanalyse von Daten der
Registrierkassen bei der amerikanischen
Handelskette
500 Terabyte Daten ≈ 100.000 Daten-DVDs
DBMS: Teradata
StudiVZ.net:
WWW-basiertes soziales Netzwerk
Persönliche Daten von über 6 Millionen Nutzern
DBMS: MySQL
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
564/715
Datenbanksysteme: Beispiele /3
SAP ERP :
DB-basiertes Anwendungssystem
Unternehmensweites Informationssystem zur
Unterstützung zahlreicher geschäftsrelevanter
Bereiche
Datenvolumen und Nutzerzahl abhängig vom
konkreten Unternehmen
DBMS: zahlreiche verschiedene DBMS können
verwendet werden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
565/715
DBS Motivation
Wozu benötigen wir DBMS?
Warum speichern wir die Daten nicht
einfach in Dateien, die wir aus unseren
Anwendungen auslesen?
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
566/715
DBS Motivation: Große Datenmengen
Große Datenmengen vor allem problematisch bzgl. Effizienz
Wie können für einen Nutzer relevante Daten in riesigen
Datenmengen schnell gefunden werden? Zum Beispiel
Eine konkrete Auktion bei eBay aus vielen Terabyte
Auktionsdaten?
Eine bestimmte Person bei StudiVZ aus vielen Millionen?
Wie können große Datenmenge effizient ausgewertet und
analysiert werden? Zum Beispiel
Welche Produkte in Wal-Mart-Filialen wurden im Vergleich
zu den Vorjahren weniger oft verkauft? Und: warum?
→ DBMS bieten für Festplatten optimierte Datenstrukturen und
hoch-effiziente Operationen an
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
567/715
DBS Motivation: Viele Nutzer
Eine große Nutzeranzahl impliziert zwei Anforderungen
Effizienz, zum Beispiel
Wie werden die zahlreichen parallelen Zugriff auf
Web-Datenbanken wie StudiVZ oder eBay umgesetzt?
Wie können diese so ausgeführt werden, dass sie sich
möglichst wenig gegenseitig beeinflussen?
Konsistenz, zum Beispiel
Wie kann sichergestellt werden, dass zwei geleichzeitige
Nutzer von UnivIS ihre Eingaben zu einer Vorlesung nicht
gegenseitig überschreiben?
Wie kann die korrekte Reihenfolgen von Geboten bei eBay
sichergestellt werden?
→ DBMS bieten effiziente Lösungen zur Synchronisation
paralleler Zugriffe
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
568/715
DBS Motivation: Konsistenz
Ablaufkonsistenz bei parallelen Zugriffen: s.o.
Widerspruchsfreiheit durch Vermeidung von
Redundanzen (Problem: mehrfache Abspeicherung), zum
Beispiel
Wie kann vermieden werden, dass zwei Mitarbeiter eines
Unternehmens zwei unterschiedliche Kostenkalkulationen
für ein Produkt erstellen?
Erzwingung konsistenter Datenbankzustände, zum
Beispiel
Wie kann in UnivIS vermieden werden, dass zwei
Vorlesungen zur selben Zeit im selben Hörsaal stattfinden?
Wie kann vermieden werden, dass das Alter einer Person
einen negativen Wert annimmt?
Wie kann vermieden werden, dass zwei Studenten
dieselbe Matrikelnummer haben?
→ DBS zur integrierten (zentralen) Speicherung mit
umfangreichen Mittel zur Sicherstellung der Korrektheit der
Daten
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
569/715
DBS Motivation: Datenschutz und -sicherheit
Datenschutz, zum Beispiel
Wie kann sichergestellt werden, dass nur meine Freunde
bei StudiVZ bestimmte persönliche Daten sehen?
Wie kann eine Firma bestimmte Daten aus SAP ERP ihren
Kunden zur Verfügung stellen, interne Daten aber vor
unberechtigten Einblicken „verstecken“?
Datensicherheit, zum Beispiel
Was passiert mit meinen Daten, wenn mein Rechner
abstürzt?
Was passiert mit Daten, wenn die Festplatte, auf der diese
gespeichert sind, einen irreparablen Schaden hat?
→ DBMS bieten umfangreiche Mechanismen zum Schutz vor
Datenverlust und unberechtigten Zugriffen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
570/715
DBS Motivation: Einfache Nutzung
Der Nutzer sollte für den Zugriff sein Informationsbedürfnis
beschreiben, nicht aber den Weg, wie dieses erfüllt wird
(deklarative Sprache)
Zugriff auf die Daten sollten möglichst auch ohne
Programmierung (Ad Hoc) möglich sein
Es sollte egal sein, mit welcher Hardware-Plattform der
Nutzer arbeitet
Bei der Nutzung von Daten aus einer Anwendung sollte die
verwendete Programmiersprache beliebig gewählt werden
können
Die Entwicklung von Anwendungsprogrammen sollte
möglichst unabhängig von der Entwicklung der Datenbank
erfolgen können
→ DBMS setzen Zugriff über standardisierte Anfragesprachen
und Programmierschnittstellen um
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
571/715
Warum ... Datenbanken für Ingenieure?
Die Anforderungen von zahlreichen Ingenieuranwendungen
sind typisch für datenbankbasierte Systeme:
Große Datenmengen für Produktmodelle
Zahlreiche Mitarbeiter (Teams von Ingenieuren u.a.) die
gemeinsam diese Daten bearbeiten
Hohe Anforderungen an Konsistenz, Sicherheit und Schutz
der Produktmodelldaten
Deshalb sind zahlreiche Ingenieuranwendungen wie zum Beispiel EDM- oder CAD-Systeme oft unter Nutzung von DBMS
umgesetzt. Auch im Arbeitsumfeld finden sich zahlreiche DBbasierte System wie SAP ERP oder Workflow ManagementSysteme.
Relationale Datenbanksysteme
Einfache Grundidee: speichere alle Daten in Tabellen
Relational, weil ... abgeleitet vom mathematischen Konzept
der Relationen als Menge von Tupeln (etwa:
Tabellenzeilen) mit Werten für Attribute mit
unterschiedlichen Wertebereichen (Tabellenspalten)
Überwiegende Mehrheit aktueller DBMS sind relationale
DBMS → RDBMS
Die standardisierte Datenbanksprache SQL
implementiert relationales Datenmodell (mit kleinen
Abweichungen von der Theorie und von verwendeten
Begriffen)
Hinweis: im folgenden gehen wir von in SQL verwendeten
Begriffen aus
Gegenwärtiger Stand: objekt-relationale DBMS
(ORDBMS) (SQL:2008) mit objektorientierten
Erweiterungen (in dieser Vorlesung nicht behandelt)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
573/715
Aktuell verbreitete DBMS
Kommerzielle relationale DBMS, z.B.
Oracle Database
IBM DB2
Microsoft SQL Server
Freie (Open Source) RDBMS, z.B.
MySQL
PostgreSQL
Speziallösungen:
Für Analyse großer Datenmengen in Data Warehouse
Systemen, z.B. Teradata
Andere Datenmodelle, wie z.B. objektrorientierte DBMS
(Objectivity, Versant) oder XML DBMS (Xindice, eXist)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
574/715
RDBMS Grundkonzepte: Tabellen
Student
Name
Vorname
Geburt
Müller
Schulze
Meier
Eva
Peter
Sebastian
5.9.1982
6.4.1987
13.4.1985
Schulze
Peter
1.7.1988
Schmidt
Lisa
8.1.1988
Tabellen haben Namen und bestehen aus Spalten und Zeilen
Schema der Tabelle besteht aus fester Anzahl von Spalten
Spalten repräsentieren Eigenschaften – haben Namen und
festgelegten Datentyp
Zeilen repräsentieren eigentliche Daten – haben für jede Spalte
einen Spaltenwert
Tabelle hat beliebiebige Anzahl von Zeilen (inklusive leerer
Tabelle)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
575/715
RDBMS Grundkonzepte: Schlüssel
Student
MatrNr
Name
Vorname
Geburt
174551
173212
167555
Müller
Schulze
Meier
Eva
Peter
Sebastian
5.9.1982
6.4.1987
13.4.1985
177351
Schulze
Peter
1.7.1988
177352
Schmidt
Lisa
8.1.1988
Schlüssel (auch Primärschlüssel) erlauben eindeutige
Identifizierung von Datensätzen (Zeilen) innerhalb einer Tabelle
Einzelne Spalte oder Kombination mehrerer Spalten, deren
Wert(ekombination) innerhalb der Tabelle einmalig ist
Existieren solche Spalten nicht, kann eine Spalte mit künstlich
erzeugten eindeutigen Werten (Surrogatschlüssel) eingeführt
werden
Dient vor allem der Referenzierung der Daten aus anderen
Tabellen → Fremdschlüssel
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
576/715
RDBMS Grundkonzepte: Fremdschlüssel
Tabellen beinhalten bloß Zeilen mit fester Anzahl von
atomaren Werten
Komplexere Beziehungen zwischen Daten werden über
Fremdschlüsselbeziehungen zwischen Zeilen
dargestellt: Verwendung des Schlüssels einer Zeile als
spezieller Spaltenwert in einer anderen Zeile(meist aus
einer anderen Tabelle)
N:1-Beziehung: eine beliebige Anzahl (N) Datensätze in
einer Tabelle beziehen sich auf einen anderen Datensatz
Beispiel: Studenten wird genau ein Studiengang
zugeordnet, ein Studiengang umfaßt viele Studenten
N:M-Beziehung: beliebig viele (N) Datensätze einer
Tabelle können sich auf beliebig viele (M) andere
Datensätze beziehen
Beispiel: ein Student kann viele Vorlesungen besuchen,
eine Vorlesung wird von vielen Studenten besucht
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
577/715
RDBMS Grundkonzepte: Fremdschlüssel N:1
Student
MatrNr Name
Vorname
Geburt
SGID
174551
Müller
Eva
5.9.1982
MB
173212
Schulze
Peter
6.4.1987
WMB
167555
Meier
Sebastian
13.4.1985
MB
…
…
…
…
…
Studiengang
Eike Schallehn, FIN/ITI
SGID
Bezeichnung
MB
Maschinenbau
WMB
Wirtschaftsingenieur Maschinenbau
…
…
Grundlagen der Informatik für Ingenieure
578/715
RDBMS Grundkonzepte: Fremdschlüssel N:M
Student
Vorlesung
MatrNr Name
…
VID
Bezeichnung
…
174551
Müller
…
GIF
Grundlagen der Informatik
…
173212
Schulze
…
KE
Konstruktionselemente
…
167555
Meier
…
TM
Technische Mechanik
…
…
…
…
…
…
…
Teilnahme
Eike Schallehn, FIN/ITI
MatrNr VID
Semester
174551
GIF
WiSe0809
174551
GIF
SoSe09
174551
TM
SoSe09
173212
KE
WiSe0708
…
…
…
Grundlagen der Informatik für Ingenieure
579/715
Weitere RDBMS Konzepte
NULL-Werte: kann ein Spaltenwert nicht angegeben
werden (weil z.B. nicht bekannt oder nicht existent), kann
der vordefinierte und typunabhängige Wert NULL
verwendet werden
Für Spalten und Tabellen können Integritätsbedingungen
(Integrity Constraints) angegeben werden, die
konsistenten Zustand beschreiben
Eindeutigkeit von Spaltenwerten (UNIQUE)
Spaltenwert muss angegeben werden (NOT NULL)
Spaltenwert ist Schlüssel (PRIMARY KEY = UNIQUE +
NOT NULL)
Wertebereichseinschränkungen
Referentielle Integrität: Fremschlüsselwert muss als
Primärschlüssel in korrespondierender Tabelle existieren
...
Zahlreiche weitere Konzepte hier nicht diskutiert
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
580/715
Operationen auf Tabellen
Anfrageoperationen basieren auf Relationaler Algebra
Eingabe: Relation(en)
Ausgabe: Relation(en)
Grundlegende Operationen
Selektion: Auswahl von Tupeln (Zeilen) durch Angabe
einer Auswahlbedingung
Projektion: Auswahl von Attributen (Spalten) durch
Angabe von deren Namen
Verbundoperationen: (engl. Joins) Zusammenführen von
Tupeln verschiedener Relationen (Tabellen) über
Verfolgung von Fremdschlüsselbeziehungen oder durch die
Angabe von Verbundbedingungen
Mengenoperationen: zum Beispiel Vereinigung oder
Schnittmenge von Relationen
→ umgesetzt durch Anfragesprache SQL
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
581/715
SQL – Die Structured Query Language
Deklarative Anfragesprache
SQL Anfrage beschreibt lediglich zu liefernde Daten
RDBMS entscheidet selbständig, wie Ergebnis effizient
berechnet werden kann
Im Gegensatz zu imperativen Programmiersprachen, die
genauen Ablauf der Berechnung festlegen
Geschichte
Entwickelt in den 1970ern bei IBM
Erfolgreiche Standardisierung seit 1986
SQL-92 umfaßt relationalen Sprachkern und wird von
vielen RDBMS vollständig unterstützt
Aktuelle Version SQL:2008 umfaßt zahlreiche
Erweiterungen (Objektorientierung, XML, Multimedia, etc.)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
582/715
Teile von SQL
Anfragesprache (SQL-Kern): lesende Zugriffe durch
Umsetzung der relationalen Operationen zum Auswahl von
Zeilen, Spalten sowie Verbund und Mengenoperationen
auf Tabellen + SQL-spezifische Erweiterungen (z.B.
Sortierung, Gruppierung, etc.)
Data Manipulation Language (DML): Erzeugen, Ändern
und Löschen von Datensätzen in Tabellen
Data Definition Language (DDL): Erzeugen, Ändern und
Löschen von Tabellen sowie Indexen (Baum- oder
Hash-Datenstrukturen für Zugriffsbeschleunigung) und
Sichten (aus Anfragen definierte virtuelle Tabellen)
Weitere Teile:
Zugriffsrechte (Data Control Language)
Transaktionen zur Steuerung der Ablaufkonsistenz
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
583/715
Überblick SQL
Im folgenden Teile von SQL erklärt entsprechend Reihenfolge
der Nutzung – entspricht nicht unbedingt Bedeutung
1
Erzeugung von Tabellen → DDL → Einmalig genutzt beim
Erstellen der Datenbank
2
Einfügen von Daten → DML → Erzeugung und
Modifikation in meisten Anwendungen seltener als ...
3
Lesen der Daten → Anfragesprache → meist sehr oft
angewandt
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
584/715
SQL DDL: Operationen für Tabellen
Erzeugen einer Tabelle
CREATE TABLE student (
matrnr
CHAR(6) PRIMARY KEY,
name
VARCHAR(50) NOT NULL,
vorname VARCHAR(50)NOT NULL,
geburt
DATE,
sgid
CHAR(5)
);
Ändern einer Tabelle: Hinzufügen/Löschen/Ändern von
Spalten, Constraints, etc.
ALTER TABLE student (ADD|DROP|MODIFY|CHANGE) ...;
Löschen einer Tabelle
DROP TABLE student;
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
585/715
SQL DDL: Basisdatentypen laut SQL Standard
Ganzzahlige Datentypen: smallint, int bzw. integer,
bigint
Festkommazahlen (garantierte Genauigkeit der
Nachkommastellen): numeric (n, m) bzw. decimal
(n, m)
Gleitkommazahlen: float (m), real, double
Zeichenketten character (n) bzw. char (n),
varchar (n) bzw. character varying (n)
Zeiten und Datumsangaben: date, time, timestamp
Logische Werte: boolean
Große Binär- oder Textdaten blob (n) bzw. binary
large object (n), clob
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
586/715
SQL DDL: Indexe und Sichten
Erzeugen einer logischen Sicht (virtuelle Tabelle) durch Anfrage
(→)
CREATE VIEW alte_studenten AS
SELECT * FROM student WHERE geburt < ’1980-01-01’;
Sicht kann (mit Einschränkungen bzgl. Änderungen) wie eine
normale Tabelle genutzt werden
Daten werden aber nicht erneut (redundant) abgespeichert
Erzeugen eines Index
CREATE INDEX studenten_name ON student (name);
Erzeugt eine Indexdatenstruktur – in den meisten DBMS einen
B-Baum – welche eine schnelle Suche nach Datensätzen mit der
angegebenen Spalte als Suchkriterium, z.B. bei
SELECT * FROM student WHERE name = ’Müller’;
System erkennt automatisch, dass hier der Index verwendet
werden kann
Ändern und Löschen vonGrundlagen
Indexen
über ALTER und DROP
der Informatik für Ingenieure
Eike Schallehn, FIN/ITI
587/715
SQL DML: Daten Einfügen, Ändern, Löschen
Gebräuchlichste Form des INSERT-Statements zum
Einfügen von Zeilen
INSERT INTO student
VALUES (’174551’,’Müller’,’Eva’,’1982-09-05’,’MB’);
Ändern und Löschen von Zeilen basiert auf Angabe einer
Bedingung in WHERE-Klausel (siehe Anfragesprache →),
welche Zeilen davon betroffen sein sollen
UPDATE student
SET name = ’Meier’
WHERE matrnr = ’174551’;
DELETE FROM student
WHERE matrnr = ’173212’;
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
588/715
SQL Anfragesprache
Grundaufbau durch SFW-Block
SELECT <Projektion auf Ausgabespalten>
FROM <Eingabetabellen ggf. mit Verbund>
WHERE <Selektionsbedingungen>;
SELECT und FROM müssen angegeben werden
WHERE ist optional aber meist verwendet
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
589/715
SQL Anfragesprache: Projektion
Projektion ist die Auswahl von in der Ergebnisrelation
enthaltenen Spalten (Auswahl aus Eingaberelation)
In SQL umgesetzt in der SELECT Klausel:
Erfordert Angabe der Spaltennamen
Erlaubt auch Umbenennung durch AS, z.B.
SELECT name AS nachname ...;
Erlaubt im Zusammenhang mit Gruppierung (→) auch
Aufruf von Aggregatfunktionen zur Berechnung von einem
einzelnen Spaltenwert aus ggf. vielen Gruppenwerten (z.B.
Mittelwert, Anzahl, Summe, Minimum, Maximum, ...)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
590/715
SQL Anfragesprache: Projektion Beispiel
Student
MatrNr Name
Vorname
Geburt
SGID
174551
Müller
Eva
5.9.1982
MB
173212
Schulze
Peter
6.4.1987
WMB
MB
167555
Meier
Sebastian
13.4.1985
177351
Schulze
Peter
1.7.1988
PH
177352
Schmidt
Lisa
8.1.1988
WMB
SELECT name, vorname
FROM student;
Eike Schallehn, FIN/ITI
Name
Vorname
Müller
Eva
Schulze
Peter
Meier
Sebastian
Schulze
Peter
Schmidt
Lisa
Grundlagen der Informatik für Ingenieure
591/715
SQL Anfragesprache: Projektion mit
Duplikateliminierung
SELECT DISTINCT name, vorname
FROM student;
Name
Vorname
Müller
Eva
Schulze
Peter
Meier
Sebastian
Schmidt
Lisa
Eliminierung von Duplikaten passiert (im Gegensatz zur
Theorie der relationalen Algebra) in SQL nicht automatisch
Erfordert Angabe des Schlüsselworts DISTINCT
Vorsicht: Duplikateliminierung ggf. sehr aufwändige
Operation, da u.U. Sortierung oder Erstellung einer
Hash-Tabelle notwendig ist
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
592/715
SQL Anfragesprache: Selektion
Selektion ist die Auswahl von Zeilen der Eingabetabelle
für die Ergebnistabelle
In SQL durch die WHERE-Klausel umgesetzt
Selektion hat als Parameter eine Bedingung, welche das
Auswahlkriterium umfaßt
Prädikate sind einfache (atomare) Bedingungen, zum
Beispiel
name = ’Müller’
kontostand > 0
student.sgid = studiengang.sgid
immaDatum < exmaDatum
Komplexe Bedingungen können durch logische
Operatoren AND, OR, NOT (Negation) etc. sowie
Klammerung gebildet werden
Auch existenz- und allquantifizierte geschachtelte
Anfragen als Prädikate möglich (hier nicht behandelt)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
593/715
SQL Anfragesprache: Selektion Beispiel
SELECT *
FROM student
WHERE name = ‘Müller‘
OR name = ‘Schulze‘
MatrNr Name
Vorname
Geburt
SGID
174551
Müller
Eva
5.9.1982
MB
173212
Schulze
Peter
6.4.1987
WMB
177351
Schulze
Peter
1.7.1988
PH
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
594/715
SQL Anfragesprache: Selektionsprädikate
SELECT *
FROM student
WHERE name LIKE
‘S%‘;
MatrNr Name
Vorname
Geburt
SGID
WMB
173212
Schulze
Peter
6.4.1987
177351
Schulze
Peter
1.7.1988
PH
177352
Schmidt
Lisa
8.1.1988
WMB
SQL beinhaltet zahlreiche spezielle Prädikate, als Operatoren
oder Funktionen
Hier: häufig verwendete Textähnlichkeit durch Wildcard-Muster
mit LIKE (% als Auslassung einer Zeichenfolge beliebiger
Länge, _ als Auslassung eines einzelnen Zeichens)
Im Beispiel: alle Studenten, deren Nachname mit S beginnt
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
595/715
SQL Anfragesprache: Verbund
Verbund (engl. Join) macht aus Zeilen zweier (oder
mehrerer) Eingabetabellen eine Zeile der Ergebnistabelle
Sehr wichtige Operation, da wegen einfacher Struktur des
relationalen Datemodells zusammengehörige Daten meist
über mehrere Tabellen verteilt abgespeichert werden
müssen (z.B. durch Normalisierung, s.u.)
Zahlreiche spezielle Verbundoperationen in SQL durch
verschiedenen Syntax unterstützt
Einfachste und gebräuchlichste Form des Verbundes in
SQL:
Angabe der zu verbindenden Tabellen in der FROM-Klausel
(kommasepariert)
Angabe einer Verbundbedingung (z.B. Primärschlüssel =
Fremdschlüssel) in der WHERE-Klausel
Wichtige Alternativen: Natural Join und Kartesisches
Produkt (s.u.)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
596/715
SQL Anfragesprache: Verbund Eingabe
Student
MatrNr Name
Vorname
Geburt
SGID
174551
Müller
Eva
5.9.1982
MB
173212
Schulze
Peter
6.4.1987
WMB
167555
Meier
Sebastian
13.4.1985
MB
177351
Schulze
Peter
1.7.1988
PH
177352
Schmidt
Lisa
8.1.1988
WMB
Studiengang
SGID
Bezeichnung
MB
Maschinenbau
WMB
Wirtschaftsingenieur Maschinenbau
PH
Physik
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
597/715
SQL Anfragesprache: Verbund Ausgabe
s.name, s.vorname,
sg.bezeichnung AS studiengang
FROM student s, studiengang sg
WHERE s.sgid = sg.sgid;
SELECT
Eike Schallehn, FIN/ITI
Name
Vorname Studiengang
Müller
Eva
Maschinenbau
Schulze
Peter
Wirtschaftsingenieur Maschinenbau
Meier
Sebastian
Maschinenbau
Schulze
Peter
Physik
Schmidt
Lisa
Wirtschaftsingenieur Maschinenbau
Grundlagen der Informatik für Ingenieure
598/715
SQL Anfragesprache: Weitere
Verbundoperationen
Gleiches Ergebnis alternativ über NATURAL JOIN möglich
SELECT name, vorname, bezeichnung AS studiengang
FROM student NATURAL JOIN studiengang;
Kann direkt in der FROM-Klausel angegeben werden
Funktioniert nur, wenn namensgleiche Spalten in beiden
Tabellen existieren
Für diese Spalten werden Zeilen mit gleichen
Spaltenwerten verbunden
Was passiert, wenn keine Verbundbedingung angegeben
wird? → Berechnung des kartesischen Produkts
(Kreuzprodukt)
Jede Zeile der einen Eingabetabelle wird mit jeder Zeile der
anderen Eingabetabelle verbunden (alle möglichen
Kombinationen)
Vorsicht: Ergebnis kann u.U. sehr groß sein
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
599/715
SQL Anfragesprache: Kartesisches Produkt
T1
A
B
1
2
3
4
SELECT *
FROM t1,t2;
T2
C
D
5
6
7
8
9
10
Eike Schallehn, FIN/ITI
A
B
C
D
1
2
5
6
1
2
7
8
1
2
9
10
3
4
5
6
3
4
7
8
3
4
9
10
Grundlagen der Informatik für Ingenieure
600/715
SQL Anfragesprache: Gruppierung
SELECT sgid, COUNT(*) AS anzahl
FROM student
GROUP BY sgid;
SGID
Anzahl
MB
2
WMB
2
PH
1
Gruppierung fasst Zeilen mit gleichen Werten für
Gruppierungsspalten zu einer Zeile zusammen
Spalten, die nicht Gruppierungsspalten sind, und somit
keine gleichen Werte haben, können mit
Aggregatfunktionen zusammengefaßt werden, z.B
COUNT() - Anzahl von Werten
SUM() - Summe der Werte
AVG() - Mittelwert
MIN() - Minimum
MAX() - Maximum
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
601/715
SQL Anfragesprache: Sortierung
SELECT *
FROM student
ORDER BY matrnr ASC;
MatrNr Name
Vorname
Geburt
167555
Meier
Sebastian
13.4.1985
SGID
MB
173212
Schulze
Peter
6.4.1987
WMB
MB
174551
Müller
Eva
5.9.1982
177351
Schulze
Peter
1.7.1988
PH
177352
Schmidt
Lisa
8.1.1988
WMB
Angabe eines Sortierkriteriums für die Ergebnistabelle
bestehend aus Spalte(n) und Reihenfolge ASC (ascending =
aufsteigend, default) oder DESC (descending = absteigend)
Reihenfolge der Zeilen in der Ergebnistabelle erhält damit
konkrete Bedeutung → Tabelle entspricht dann Datentyp Liste,
ohne Sortierung Multimenge
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
602/715
SQL Anfragesprache: Mengenoperationen
SELECT *
FROM t1
UNION
SELECT *
FROM t2;
A
B
1
2
3
4
5
6
7
8
9
10
Mengenoperationen UNION (Vereinigung), INTERSECT
(Schnittmenge) und EXCEPT (Mengendifferenz)
Erwartet für Eingabetabellen kompatible Schemata
(gleiche Spaltenanzahl mit kompatiblen Datentypen)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
603/715
Zusammenfassung: RDBMS
Relationales Datenmodell heute Standard im Bereich
Datenbanken
Darstellung von Daten in Form von Tabellen mit
festgelegter Struktur
Zeilen repräsentieren Datenobjekte
Spalten legen Wertebereiche für einzelne Eigenschaften
fest
Komplexere Beziehungen durch Schlüsselbeziehungen
über verschiedene Tabellen hinweg dargestellt
SQL als deklarative Anfragesprache für RDBMS
SELECT ... FROM ... WHERE-Block für lesende
Zugriffe
INSERT, UPDATE und DELETE zur Modifikation von Daten
(DML)
CREATE, ALTER und DROP zur Veränderung der Schemata
(Tabellendefinitionen) (DDL)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
604/715
Entwurf von Datenbanken
Bisher: was sind Datenbanken? Wie funktionieren sie?
Im Folgenden: wie entwickle ich eine Datenbank? Was ist
eine gute Datenbank?
Der Datenbankentwurfsprozess
Das Entity Relationship (ER) Modell
Abbildung von ER-Diagrammen auf Relationenschemata
Normalformen als Qualitätskriterien
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
605/715
Der Datenbankentwurfsprozess
Datenbankentwurfsprozess beschreibt systematische
Vorgehensweise zur Entwicklung einer Datenbanklösung:
Ausgehend von Anforderungen an zu entwickelnde Lösung
über eine
schrittweise Verfeinerung des Entwurfs bis hin zur
Implementierung und zum Einsatz der Lösung
Angelehnt an Software-Entwicklungsprozess (→) zur
Entwicklung allgemeiner Software-Lösungen
Unabhängig von konkretem Anwendungsszenario
Im folgenden: Entwurf relationaler Datenbanken
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
606/715
Phasen des Datenbankentwurfsprozesses
Anforderungsanalyse
Dokumentatation
Eike Schallehn, FIN/ITI
Konzeptueller
Entwurf
Konzeptuelles
Schema
Logischer
Entwurf
z.B. Entity
Relationship
Diagramm
Logisches
Schema
Datendefintion und
Implementierung
= Tabellen- und
Spaltendefinition
Datenbank
Grundlagen der Informatik für Ingenieure
607/715
Phasen des Datenbankentwurfs /1
Anforderungsanalyse: Sammlung von Anforderungen, die zu
entwickelndes Datenbanksystem beschreiben
Z.B. Informationsbedarf zukünftiger
Anwender, zu unterstützende Abläufe, etc.
Ergebnis: informell festgehaltene
Dokumentation der Anforderungen
Konzeptueller Entwurf: Entwicklung eines
implementierungsunabhängigen (abstrakt,
high-level) Datenbankschemas
Erste Strukturierung für Anwendungsdaten
Dient der schrittweisen Verfeinerung des
Entwurfs sowie der Diskussion verschiedener
Entwickler untereinander und mit Anwendern
Ergebnis: konzeptuelles Schema, z.B. als
Entity Relationship Diagramm
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
608/715
Phasen des Datenbankentwurfs /2
Verteilungsentwurf (optional): nur für verteilte Systeme
Festlegung des Speicherorts der Daten im Netz
Prinzipiell unabhängig vom
Implementierungsmodell (nächster Schritt)
Erfolgt meist aber als Teil des physischen
Entwurfs
Ergebnis: Verteilungsschema
Logischer Entwurf: Überführung in relationales Datenmodell
für Implementierung sowie Erfüllung von
Qualitätskriterien (Normalformen) durch
Normalisierung
Entwurf geeigneter Tabellenstrukturen zur
Darstellung der Anwendungsdaten
Qualitätskriterium: Strukturen vermeiden
Abspeicherung widersprüchlicher Daten
Ergebnis: logisches Schema
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
609/715
Phasen des Datenbankentwurfs /3
Physischer Entwurf: ermöglicht Beeinflussung interner
Speicherstrukturen zu Zwecken der Performance
Optimierung
Festlegen von Indextsrukturen
(Hash-Tabellen, B-Bäume) für Zugriffspfade
Weitere Mittel: materialisierte Sichten
(Vorberechnung) sowie Partitionierung (Teile
und Herrsche)
Datendefinition und Implementierung: Erstellen
enstprechender DDL-Statements und deren
Ausführung
Erzeugung von Tabellen, Sichten und
Indexstrukturen
Ergebnis: (leere) Datenbank
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
610/715
Das Entity Relationship (ER) Modell
Standard für die konzeptuelle Modellierung von
Datenbankschemata
Ziel: Darstellung der Inhalte und Bedeutung (auch semantische
Modellierung)
Was wird durch das Schema dargestellt (welche Daten)?
Nicht: wie werden die Daten dargestellt
(Implementierung)?
Dient der Diskussion (Entwickler und Anwender) und
Verfeinerung der Schemata
Deshalb möglichst einfache Modellierungskonstrukte:
Gegenstände (Entities), deren Beziehungen untereinander
(Relationships) und Eigenschaften (Attributes)
Eigentliche Modellierung auf Typebene: Gegenstände mit
gleichen Eigenschaften und Beziehungen werden zu einem
Entity Type zusammgefaßt (analog Relationship Types)
Begriffe Entity und Relationship werden meist verkürzend für
Entity Types bzw. Relationship Types verwendet
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
611/715
ER Modell: Einführendes Beispiel
Entity Student repräsentiert
alle Objekte vom Typ Student
Student
Relationship besucht repräsentiert
alle existierenden Beziehungen
zwischen Studentenobjekten
und Vorlesungsobjekten
besucht
MatrNr
Name
Vorlesung
ID
Semester
Bezeichnung
Vorname
Attribute der Entity Student
werden dieser zugeordnet,
Schlüsselattribute werden
unterstrichen
Eike Schallehn, FIN/ITI
Auch Relationships können
Attribute haben, der Schlüssel
ergibt sich aber immer aus den
Schlüsseln der beteiligten Entities
Grundlagen der Informatik für Ingenieure
612/715
ER Modell: Grundlegende Grafische Notation
Entity (Type): Rechteck mit Typbezeichner
Relationship (Type): Raute mit Typbezeichner
Attribut: abgerundete Box oder Ellipse mit
Attributbezeichner, Schlüssel mit Unterstreichung
Zahlreiche abweichende grafische Darstellungen in
verwandten Ansätzen und Entwicklungs-Tools mit gleicher
oder ähnlicher Bedeutung sowie ggf. Erweiterungen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
613/715
ER Modell: Kardinalitäten
Kardinalitäten geben numerische Grenzen an, wie Objekte
verschiedener Typen miteinander in Beziehung stehen
können
Beispiele:
Ein Student kann beliebig viele Vorlesungen besuchen
Eine Vorlesung kann (je nach Kapazität des Hörsaals) von
vielen Studenten besucht werden
Eine Vorlesung wird von genau einem Dozenten angeboten
Eine Person kann mit maximal einer anderen Person
verheiratet sein (optional)
Jede Person hat genau eine Mutter und genau einen Vater
Von entscheidender Bedeutung bei Überführung in das
Relationenmodell
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
614/715
ER Modell: Kardinalitäten 1:N
Dozent
[1,*]
hält
[1,1]
Vorlesung
ist äquivalent zu:
Dozent
1
hält
N
Vorlesung
1:N-Beziehung: ein Objekt darf mit beliebig vielen eines
anderen Typs in Beziehung stehen, aber eindeutige
Zuordnung in die andere Richtung
Alternative Min/Max-Notation
Angabe der minimimalen und maximalen Anzahl, in der das
Objekt in Beziehung stehen kann
Partizipationssemnatik: wie oft darf das Objekt an der
Beziehung teilnehmen („umgekehrt“ zu herkömmlichen
Kardinalitäten)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
615/715
ER Modell: Kardinalitäten N:M
Student
Vorlesung
besucht
ist äquivalent zu:
Student
N
besucht
M
Vorlesung
N:M-Beziehungen (Objekte beider beteiligter Typen
können beliebig oft in Beziehung stehen) sind bei keiner
Angabe von Kardinalität der angenommene Standardfall
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
616/715
ER Modell: Optionale Beziehungen
verheiratet
[0,1]
Person
[0,1]
Beispiel für eine optionale Beziehung
Außerdem selbst-bezüglich auf Typ-Ebene: auch Objekte
des selben Typs können in Beziehungen zueinander
stehen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
617/715
ER Modell: Weitere Konstrukte
Dozent
Eike Schallehn, FIN/ITI
Vorlesung
Gebäude
hält
hat
Raum
Raum
Mehrstellige
Beziehungstypen
Schwache (existentiell
abhängige) Entitätstypen
Grundlagen der Informatik für Ingenieure
618/715
Abbildung von ER-Diagrammen auf
Relationenschemata
ER Modell ist prinzipiell unabhängig vom
Implementierungsmodell
In der Praxis meist eingesetzt als Entwurfsmittel für
relationale Datenbanken
Überführung von ER Diagrammen auf
Relationenschemata geschieht nach einfachen Regeln
Im folgenden illustriert an folgendem einfachen Beispiel:
Artikel
Preis
Eike Schallehn, FIN/ITI
1
Kunde
Bestellung
Anzahl
Rabat
Name
Datum
Anschrift
ArtikelNr
Bezeichnung
N
in
BestellNr
Grundlagen der Informatik für Ingenieure
von
KundenNr
619/715
Abbildung von ER-Diagrammen: Entities
Artikel
Artikel
ArtikelNr
Bezeichnung
Preis
ArtikelNr
…
…
…
Bezeichnung
Preis
Alle Entities werden auf separate Tabellen abgebildet
Attribute werden Spalten, konkrete Datentypen müssen
festgelegt werden
Schlüsselattribute werden Schlüssel der Tabelle
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
620/715
Abbildung von ER-Diagrammen:
N:M-Beziehungen
Artikel
N
M
in
Bestellung
ArtikelNr
BestellNr
Anzahl
Bezeichnung
Rabat
Preis
Datum
Artikel
Bestellung
ArtikelNr
Bezeichnung
Preis
BestellNr
Rabat
Datum
…
…
…
…
…
…
…
…
ArtikelBestellung
Eike Schallehn, FIN/ITI
ArtikelNr
BestellNr Anzahl
…
…
…
Grundlagen der Informatik für Ingenieure
621/715
Abbildung von ER-Diagrammen:
N:M-Beziehungen /2
N:M-Beziehungen müssen generell auf separate Tabellen
abgebildet werden
Schlüssel der Beziehungstabelle bildet sich aus
zusammengesetzten Schlüsseln der in Beziehung stehen
Entity-Tabellen
Teilschlüssel dienen als Fremdschlüssel auf Entity-Tabellen
Attribute der Beziehung werden Spalten der
Beziehungstabelle
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
622/715
Abbildung von ER-Diagrammen:
1:N-Beziehungen
Bestellung
N
1
von
Kunde
KundenNr
BestellNr
Rabat
Name
Datum
Anschrift
Kunde
Bestellung
BestellNr
Rabat Datum
KundenNr
KundenNr
Name
Anschrift
…
…
…
…
…
…
…
Bei 1:N-Beziehungen Verschmelzung der
Beziehungstabelle mit der Entity-Tabelle der N-Kardinalität
möglich
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
623/715
Abbildung von ER-Diagrammen: Optionale
Beziehungen
Optionale Beziehungen, egal ob N:M, 1:N oder 1:1, sollten
als separate Tabelle umgesetzt werden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
624/715
Schemakonsistenz
Ergebnis der Überführung ist relationales Datenbankschema
Zweiter Teilschritt des logischen Entwurfs umfaßt Sicherstellung
der Schemakonsistenz
Allgemein drei wichtige Kriterien der Konsistenz
(Widerspruchsfreiheit) für Schemata und Daten
Modellkonsistenz: reale Informationen können im Schema
korrekt dargestellt werden → muss durch konzeptuellen
Entwurf und korrekte Überführung in Relationenmodell
sichergestellt werden
Semantische Konsistenz: die gespeicherten Daten sind
korrekt (stehen nicht im Widerspruch zur Wirklichkeit) →
kann durch Integritätsbedingungen und Anwendungslogik
unterstützt werden, letzten Endes aber Verantwortlichkeit
der Anwender
Schemakonsistenz: Daten müssen untereinander
widerspruchsfrei sein → Sicherstellung durch Vermeidung
mehrfacher Abspeicherung von Informationen (Redundanz)
→ Normalformen als Qualitätskriterium
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
625/715
Redundanz und Inkonsistenzen
Anschrift
Name
Vorname
PLZ
Stadt
Adresse
Müller
Eva
39104
Magdeburg
Leiterstraße 1
Schulze
Peter
39104
Zentrum
Ulrichplatz 17
Sommer
Siegfried
39218
Schönebeck
Am Anger 77
Sommer
Siegfried
39218
Schönebeck
Anger 77
Mehrfache Speicherung der selben Realweltfakten
(Redundanz) ermöglicht Dateninkonsistenzen
Erkennbar an „Abhängigkeiten zwischen Attributwerten“
Sollen durch Normalisierung vermieden werden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
626/715
Funktionale Abhängikeiten
Funktionale Abhängikeiten in einer Tabelle liegen vor,
wenn Werte einer Spalte (oder einer Gruppe von Spalten)
einen eindeutigen Schluss auf die Werte einer anderen
(Gruppe von) Spalte(n) zulassen
„Funktional“, weil ... eindeutige Werteabbildung entspricht
mathematischem Konzept der Funktion: für einen
Eingabewert ist nur ein Ergebniswert möglich
(Eindeutigkeit)
Beispiele:
Die Postleitzahl bestimmt eindeutig den Ort
Die Matrikelnummer (Schlüssel) bestimmt alle weiteren
Eigenschaften eines Studenten
Vorwahl und Telefonnummer bestimmen eindeutig alle
Eigenschaften des Anschlusses
Semester, Termin und Raum bestimmen eindeutig Vorlesungstitel
und Dozenten
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
627/715
Normalformen
Ziel der Normalisierung: alle Spalten einer Tabelle sollen
nur vom vollständigen Schlüssel abhängen, d.h. dadurch
bestimmt sein (3. Normalform)
Erreichen von Normalformen z.B. durch schrittweises
Zerlegen
Wichtigste Normalformen:
1. Normalform: nur atomare Werte in jeder Spalte
2. Normalform: keine funktionalen Abhängigkeiten von
einem Teil des Schlüssels
3. Normalform: keine funktionalen Abhängigkeiten
zwischen Nicht-Schlüsselattributen
Zahlreiche weitere Normalformen existieren
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
628/715
1. Normalform: Problem
Musikgruppen
Band
Grü
Gründung
Genre
Radiohead
1986
Alternative Rock, Art-Rock, Britpop
Wilco
1994
Alternative Country, Independent
Pavement
1989
Independent, Noise Pop
…
…
…
1. Normalform: nur atomare Werte in jeder Spalte
(grundlegende Anforderung im Relationenmodell)
Problem: mengen- oder listenwertige Spalten
Eigentlich kein Problem bzgl. Redundanz, aber
Voraussetzung für weitere Normalformen
Erleichtert Lesen und Modifikation von Daten
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
629/715
1. Normalform: Lösung
Musikgruppen
GruppenGenre
Band
Grü
Gründung
Band
Genre
Radiohead
1986
Radiohead
Britpop
Wilco
1994
Radiohead
Art-Rock
Pavement
1989
Radiohead
Alternative Rock
…
…
Wilco
Independent
Wilco
Alternative Country
Pavement
Noise Pop
Pavement
Independent
…
…
Abspalten einer separaten Tabelle mit folgenden Spalten:
Schlüssel der Ursprungstabelle
Spalte für einzelne Einträge der Menge
Schlüssel der neuen Tabelle sind beide Spalten
gemeinsam
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
630/715
2. Normalform: Problem
Wahlergebnis
Wahlbezirk Stadt
Bundesland
Beteiligung
Zentrum
Magdeburg
Sachsen-Anhalt
34%
Sudenburg
Magdeburg
Sachsen-Anhalt
35%
Stadtfeld
Magdeburg
Sachsen-Anhalt
42%
Groß Klein
Rostock
Mecklenburg- Vorpommern 29%
Zentrum
Rostock
Mecklenburg- Vorpommern 47%
…
…
2. Normalform: 1. Normalform + keine funktionalen
Abhängigkeiten von nur einem Teil des Schlüssels
Problem: mögliche Redundanzen durch sich oft
wiederholende Wertepaare
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
631/715
2. Normalform: Lösung
Wahlergebnis
StadtBundesland
Stadt
Bundesland
Zentrum
Magdeburg 34%
Magdeburg
Sachsen-Anhalt
Sudenburg
Magdeburg 35%
Rostock
Mecklenburg- Vorpommern
Stadtfeld
Magdeburg 42%
…
Groß Klein
Rostock
29%
Zentrum
Rostock
47%
…
…
Wahlbezirk Stadt
Bet.
Abspalten einer separaten Tabelle mit folgenden Spalten:
Teilschlüssel der Ursprungstabelle, von welchem andere
Spalte(n) abhängig
Alle vom Teilschlüssel abhängig Spalten
Abhängige Spalten werden aus der Originaltabelle entfernt
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
632/715
3. Normalform: Problem
Student
MatrNr
Name
Vorname
PLZ
Stadt
Adresse
154372
Müller
Eva
39104
Magdeburg
Leiterstraße 1
166733
Schulze
Peter
39104
Magdeburg
Ulrichplatz 17
168777
Sommer Siegfried
39218
Schönebeck
Am Anger 77
175483
Winter
39524
Wust
Dorfplatz 22
Robert
3. Normalform: 2. Normalform + keine funktionalen
Abhängigkeiten zwischen Nicht-Schlüsselattributen
Problem: mögliche Redundanzen durch sich oft
wiederholende Wertepaare
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
633/715
3. Normalform: Lösung
Student
MatrNr
Name
Vorname
PLZ
Adresse
154372
Müller
Eva
39104
Leiterstraße 1
166733
Schulze
Peter
39104
Ulrichplatz 17
168777
Sommer Siegfried
39218
Am Anger 77
175483
Winter
39524
Dorfplatz 22
Robert
PLZStadt
PLZ
Stadt
39104
Magdeburg
39218
Schönebeck
39524
Wust
Abspalten einer separaten Tabelle mit folgenden Spalten:
Bestimmende Spalte(n) als Schlüssel
Alle davon abhängigen Spalten
Abhängige Spalten werden aus der Originaltabelle entfernt
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
634/715
Normalformen in der Praxis
Praktisch relevant zur Vermeidung von Inkonsistenzen
Aber: Zerlegung von Tabellen führt zu höherem Aufwand
bei der Anfragebearbeitung durch mehr
Verbundoperationen
Deshalb oft Abstriche von Normalformen → kontrollierte
Redundanz
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
635/715
Zusammenfassung: DB-Entwurf
Entwurfsprozess für Datenbanken angelehnt an
allgemeine Entwurfsprozesse: Analyse des Problems,
schrittweise Verfeinerung der Lösung bis hin zur
Implementierung
ER-Modell als implementierungsunabhängige
Modellierungsmethode für Datenbankschemata
Überführung in das Relationenmodell entsprechend festen
Regeln
Normalformen als Qualitätskriterien für Tabellen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
636/715
DB-Anwendungsprogrammierung
Hauptaufgabe: Abbildung der unterschiedlichen Datenmodelle
und Zugriffsparadigmen zwischen Programmiersprache und
dem DBMS, z.B.
C++
SQL
Basisdatentypen und flexible
Typkonstruktoren wie
Strukturen und Klassen
Tabellen
(Multimengen/Listen) von
Zeilen mit Attributwerten von
Basisdatentypen
Basisdatentypen
entsprechend C++ Standard
Plattform- und
Programmiersprachen
unabhängige
Basisdatentypen
Imperative
Programmiersprache (wie
wird das Ergebnis berechnet)
Deklarative Anfragesprache
(was soll das Ergebnis sein)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
637/715
Aufgaben von Programmierschnittstellen
Verbindung zum DBMS
Zugriff auf konkrete Datenbank
Absetzen von Anfragen
Anwendung
Schnittstelle
Treiber
DBMS
Server
Zugriff auf Ergebnisse
Geeignete Datenstrukturen für
mengenwertige Anfrageergebnisse
Zugriff über imperative
Programmiersprache → Cursor- oder
Iterator-Konzept zum zeilenweisen
Auslesen der Ergebnisse
Zugriff auf Beschreibung von Tabellen und
Anfrageergebnissen, z.B. welche Spalten
hat das gerade übertragene Ergebnis
Client
Kapselung der Datenbankfunktionalität
durch geeignete Funktionen / Strukturen /
Klassen für
DB
Umgesetzt als Bibliotheken, die auf Treiber
(optional) und Protokoll zur Kommunikation
mit DBMS Server abbilden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
638/715
Programmierschnittstellen
engl. Application Programming Interface (API)
Zahlreiche verschiedene Schnittstellen existieren
Unterscheidung nach verschiedenen Kriterien möglich
Abstraktionsstufe: Low-level (Absetzen von Anfragen,
generische Ergebnistypen) bis High-level (z.B.
definierte/definierbare Abbildung auf Anwendungsobjekte)
Abhängigkeit oder Unabhängigkeit von
Programmiersprache
Hardware-/Betriebssystemplattform
konkretem DBMS
Im folgenden 2 Beispiele: ODBC und proprietäre MySQL
Anbindung
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
639/715
ODBC
Open Database Connectivity
Low-level: Aufbau von Verbindungen, Absetzen von
Anfragen, Lesen generischer Ergebnisse)
Unabhängig von Programmiersprache: Schnittstelle
bestehend aus Funktionen mit Handles (Strukturen) zur
Verwaltung der Zustandsinformationen
Unabhängig von Hardware und Betriebssystem:
ursprünglich Umsetzung des CLI-Standards (Call Level
Interface) für Microsoft Windows, mittlerweile aber auf
vielen Plattformen
Unabhängig vom verwendeten DBMS: Treiber für fast alle
kommerziellen DBMS verfügbar
Extrem flexibel, dafür aber nicht sehr einfach in der
Handhabung → siehe folgendes Beispielprogramm zum
Auslesen der Tabelle Studenten
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
640/715
ODBC Beispiel
Aufbau einer Datenbankverbindung und komplettes Lesen
der Student-Tabelle
Code auf der Web-Seite zur Vorlesung
Übersetzung und Ausführung des Beispiels erfordern
Installiertes MySQL DBMS
Beispieldatenbank entsprechend Script auf Web-Seite zur
Vorlesung
Installierten MySQL ODBC Treiber
Konfiguration der MySQL Datenbank als ODBC-Quelle
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
641/715
ODBC Beispiel /1
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <iostream>
using namespace std;
int main() {
SQLHENV sql_hEnv = 0;
SQLHDBC sql_hDBC = 0;
SQLHSTMT sql_hStmt = 0;
SQLSMALLINT nSize = 0;
SQLRETURN sqlRet;
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
642/715
ODBC Beispiel /2
...
SQLAllocHandle( SQL_HANDLE_ENV,
SQL_NULL_HANDLE,
&sql_hEnv );
SQLSetEnvAttr( sql_hEnv,
SQL_ATTR_ODBC_VERSION,
(void*) SQL_OV_ODBC3,
0 );
SQLAllocHandle(SQL_HANDLE_DBC,
sql_hEnv,
&sql_hDBC );
sqlRet = SQLConnect( sql_hDBC,
(SQLCHAR*)”gif”,
SQL_NTS,
(SQLCHAR*)””,
SQL_NTS,
(SQLCHAR*)””,
SQL_NTS );
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
643/715
ODBC Beispiel /3
...
if (SQL_SUCCEEDED(sqlRet)) {
sqlRet = SQLAllocHandle( SQL_HANDLE_STMT,
sql_hDBC,
&sql_hStmt );
sqlRet = SQLExecDirect( sql_hStmt,
(SQLCHAR*)”SELECT * FROM gif.student;”,
SQL_NTS );
SQLSMALLINT nCols = 0;
SQLINTEGER nRows = 0;
SQLINTEGER nIdicator = 0;
SQLCHAR buf[1024] = {0};
SQLNumResultCols( sql_hStmt, &nCols );
SQLRowCount( sql_hStmt, &nRows );
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
644/715
ODBC Beispiel /4
...
while(SQL_SUCCEEDED(sqlRet = SQLFetch(sql_hStmt))) {
cout << ”Student: ” ;
for (int i=1; i <= nCols; ++i ) {
sqlRet = SQLGetData( sql_hStmt,
i,
SQL_C_CHAR,
buf,
1024,
&nIdicator );
if (SQL_SUCCEEDED( sqlRet )) {
cout << buf;
}
if (i==nCols) cout << endl;
else cout << ”, ”;
}
}
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
645/715
ODBC Beispiel /5
...
SQLFreeHandle( SQL_HANDLE_STMT, sql_hStmt );
SQLDisconnect( sql_hDBC );
}
else {
cout << ”Fehler bei der Verbindung zur Datenbank!”
<< endl;
}
SQLFreeHandle( SQL_HANDLE_DBC, sql_hDBC );
SQLFreeHandle( SQL_HANDLE_ENV, sql_hEnv );
return 0;
}
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
646/715
MySQL Connector/C++
Proprietäre Schnittstelle für MySQL DBMS
Low-level
Nur für C++: objektorientierte Schnittstelle mit Klassen und
Methoden, aber angelehnt an JDBC (Industriestandard für
Datenbankzugriffe in Programmiersprache Java) und
ähnliche zu MySQL Connector-Implementierungen für
andere Programmiersprachen
Unabhängig von Hardware und Betriebssystem: Bibliothek
für zahlreiche Plattformen verfügbar
Abhängig vom verwendeten DBMS: funktioniert nur mit
MySQL
Vergleichsweise einfache und intuitive Nutzung
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
647/715
MySQL Beispiel
Aufbau einer Datenbankverbindung und Lesen von 2
Spalten der Student-Tabelle
Code auf der Web-Seite zur Vorlesung
Übersetzung und Ausführung des Beispiels erfordern
Installiertes MySQL DBMS
Beispieldatenbank entsprechend Script auf Web-Seite zur
Vorlesung
Installierten MySQL Connector/C++
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
648/715
MySQL Beispiel /1
#include
#include
#include
#include
#include
#include
#include
<stdlib.h>
<iostream>
”mysql_connection.h”
<cppconn/driver.h>
<cppconn/exception.h>
<cppconn/resultset.h>
<cppconn/statement.h>
using namespace std;
int main() {
try {
sql::Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
sql::ResultSet *res;
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
649/715
MySQL Beispiel /2
...
driver = get_driver_instance();
con = driver->connect(””, ””, ””);
con->setSchema(”gif”);
stmt = con->createStatement();
res = stmt->executeQuery(”SELECT * FROM student”);
while (res->next()) {
cout << res->getString(”name”) << ”, ”;
cout << res->getString(”vorname”) << endl;
}
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
650/715
MySQL Beispiel /3
...
delete res;
delete stmt;
delete con;
} catch (sql::SQLException &e) {
cout << ”ERROR: ” << e.what();
cout << ” MySQL error code: ” << e.getErrorCode()
<< endl;
}
cout << endl;
return 0;
}
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
651/715
Transaktionen
Transaktion: Folgen von Datenbankoperationen, die für
die Ausführung als logische Einheit betrachtet werden
Transaktion:
Checke Konto X:
Überweisung(X, Y, Betrag)
SELECT ...
X = X - Betrag:
UPDATE ...
Checke Konto Y:
SELECT ...
Y = Y + Betrag:
UPDATE ...
Erfolgreich beendet:
Commit
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
652/715
ACID-Eigenschaften
Transaktion müssen dem ACID-Prinzip entsprechend vom
DBMS ausgegeführt werden:
Atomicity (Atomarität): eine Transaktion muss als Einheit ausgeführt
werden, d.h. entweder ganz oder gar nicht
Consistency (Konsistenz): eine Transaktion muss die Datenbank
immer von einem konsistenten Zustand in einen
konsistenten Zustand überführen (auch wenn
Zwischenzustände ggf. inkonsistent sein können)
Isolation (Schutz bei Nebenläufigkeit): bei der zeitgleichen
Ausführung von Transaktionen (z.B. durch mehrere
Nutzer) dürfen in einer Transaktion keine Effekte
paralleler, noch nicht abgeschlossener Transaktionen
sichtbar sein
Durability (Dauerhaftigkeit): wird eine Transaktion erfolgreich
beendet, so kann der von ihr erzielte Effekt nicht
nachträglich rückgängig gemacht werden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
653/715
Beispiel: Problem Atomarität
TXN: Überweisung
Checke Konto X
X = X - Betrag
Checke Konto Y:
Fehler: Konto gesperrt
ABBRUCH
Zurücksetzen
aller zuvor
gemachten
Änderungen
Beenden der
Transaktion
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
654/715
Beispiel: Problem Isolation
Parallele Ausführung zweier Transaktionen:
TXN: Überweisung
TXN: Zinsen
Checke Konto X
Lies Konto X
X = X - Betrag
Zinsen = X * Zinssatz
X = X + Zinsen
Inkonsistenter Zustand, der die Überweisung
des Betrages überschreibt, muss durch DBMS
vermieden werden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
655/715
Umsetzung in SQL oder Programmiersprachen
Möglichkeiten zum Start einer Transaktion
SQL: START TRANSACTION
Impliziter Transaktionsbeginn: spezieller Modus in vielen
DBMS, der bei erstem Datenzugriff eine Transaktion
beginnt, wleche bis zu explizitem Beenden (s.u.) läuft
Transaktion pro Statement: spezieller Modus in vielen
DBMS, der für jedes Statement (Anfrage, Update, etc.) eine
einzelne Transaktion startet
Erfolgreiches Beenden einer Transaktion
SQL: COMMIT
Abbruch einer Transaktion (mit Rücksetzen aller bisherigen
Ergebnisse:
SQL: ROLLBACK
Programmierschnittstellen bieten oft eigene Schnittstellen
(Funktionen, Transaktionsklassen) zur Steuerung von
Transaktionen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
656/715
Teil XII
Software Engineering
Überblick
1
Einführung
2
Der Softwareentwicklungsprozess
3
Methoden und Werkzeuge
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
658/715
Die „Softwarekrise“
Allgemeine Feststellung: die Entwicklung komplexer
Software-Systeme ist inhärent problematisch
Projekte schwer planbar: brauchen oft mehr finanzielle
Mittel, Zeit und Personal als ursprünglich beabsichtigt
Häufig sehr spezifische und deshalb schwer vorhersehbare
Probleme und Risiken
Entwickelte Software entspricht oft nicht Anforderungen:
allgemein geringe Qualität, fehleranfällig, nicht effizient,
keine Akzeptanz durch Nutzer
Projekte oft nicht nicht erfolgreich (Abbruch oder Software
wird nicht ausgeliefert/eingesetzt)
Wartung und Weiterentwicklung oft noch aufwändiger als
Entwicklung
→ wurde Ende der 1960er als „Softwarekrise“ bezeichnet
→ beschreibt Zustand bis heute
→ keine allgemeine Lösung
→ nur Handhabung der zunehmenden Komplexität →
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
659/715
Software Engineering
Definition (Software Engineering)
Das Software Engineering ist die systematische Anwendung
von Prinzipien, Methoden und Werkzeugen zur Entwicklung,
zum Betrieb und zur Wartung von Software.
Entspricht Übertragung von Konzepten aus dem
Ingenieurwesen
Angelehnt an technische Entwicklung gegenständlicher
Produkte
Berücksichtigung spezifischer Aspekte von Software
Prinzip der Best Practices (Erfolgsmethoden):
Systematisierung der aus Erfolgen und Mißerfolgen
gewonnenen Erfahrungen
Zu erreichende Ziele:
Eike Schallehn, FIN/ITI
Software als Produkt erfüllt bestimmte Qualitätskriterien
Deren Entwicklung als Prozess erfüllt wirtschaftliche
Kriterien
Grundlagen der Informatik für Ingenieure
660/715
Wichtige Qualitätskriterien für Software
Korrektheit:
Flexibilität:
Verständlichkeit:
Robustheit:
Effizienz:
Grad der Erfüllung der Anforderungen an Software
durch die umgesetzte Lösung
Grad der Einsetzbarkeit der Software unter
unterschiedlichen oder sich ändernden Bedingungen
Grad der Nachvollziehbarkeit der Funktionsweise
für Nutzer (Anwendbarkeit) sowie der inneren Struktur
Entwickler (Pflege, Wartung und Weiterentwicklung)
Grad der Sicherheit vor Funktionsfehlern
bei unvorhersehbaren Eingaben oder Abläufen
Verhältnis zwischen Aufwand und Nutzen des
Einsatzes der Software
Können durch Analyse oder Tests in vielen Facetten auch
quantifiziert werden (Softwaremetriken)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
661/715
Softwareentwicklungsprozess
Strukturierung des Vorgehens bei der Softwareentwicklung zur
Verbesserung der Handhabbarkeit
Seit Anfang der 1970er zahlreiche Vorgehensmodelle
(Prozessmodelle) entwickelt
Beschreibender Charakter: abgeleitet aus Erfahrungen
erfolgreicher Projekte (Best Practice)
Empfehlender Charakter: Leitpfaden für Durchführung eigener
Entwicklungsprojekte
Kein Modell mit Anspruch auf Allgemeingültigkeit
Einsatz erfordert immer kritisches Hinterfragen im Kontext des
aktuellen Projektes
Grundprinzipien:
Unterteilung in Phasen, Arbeitsschritte, Teilaufgaben
Festlegung von möglichen zeitlichen Abläufen bzw. geeigneten
Organisationsstrukturen
Teil des Softwarelebenszyklus, der nach der Entwicklung auch
Nutzung und Weiterentwicklung berücksichtigt
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
662/715
Konventionelles Phasenmodell
Anforderungsanalyse
Spezifikation
Entwurf
Implementierung
Test
Nutzung und
Wartung
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
663/715
Konventionelles Phasenmodell /2
Auch bezeichnet als Wasserfallmodell, da streng
sequentieller Prozessfortschritt ohne Rückkopplung
Sehr Früher Ansatz, der so in der Praxis kaum zur
Anwendung kommt
Bedeutung aber vor allem in Aufteilung auf Phasen → so
oder ähnlich in zahlreichen Vorgehensmodellen zu finden
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
664/715
Phasen der Softwareentwicklung /1
Anforderungsanalyse:
Ermitteln und informales Festhalten der Zielstellung der
Softwareentwicklung
Basiert auf Informationen von Auftraggebern,
zukünftigen Anwendern über Anwendungsbreich,
existierende Systeme, etc.
Abwägen von Anforderungen bzgl. Aufwand zur
Umsetzung
Verwandte Bezeichnungen: Problemdefinition,
Planungsphase
Spezifikation:
Formale Beschreibung des umzusetzenden System und
und Festlegung der Funktionen
Entwurf:
Eike Schallehn, FIN/ITI
Konzeptuelle, formale Beschreibung der Umsetzung
durch geeignete (noch relativ)
implementierungsunabhängige Ausdrucksmittel
Systemstrukturen, z.B. Architektur, Klassen, etc.
Verhalten, z.B. Funktionen, Abläufe, etc.
Grundlagen
der Informatik
für Ingenieure unterteilt
Entwurf oft in
weitere
Phasen
665/715
Phasen der Softwareentwicklung /2
Implementierung:
Programmierung der lauffähigen Software unter
Verwendung einer (oder mehrerer)
Programmiersprachen und -werkzeuge
Test:
Systematische Erprobung und Korrektur bzgl.
Robustheit, Flexibilität, Effizienz und weiterer
Qualitätseigenschaften
Nutzung und Wartung:
Einsatz der Software in einem oder vielen konkreten
Anwendungsszenarien
Von der Auslieferung über die Installation bis zur
Weiterentwicklung der Software (Re-Engineering →)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
666/715
Begleitende Aufgaben
Bei jeder Softwareentwicklung und in allen Phasen
(unabhängig von Vorgehensmodell):
Dokumentation: Festhalten und Erklären von erzielten Ergebnissen
gewährleistet
Nachvollziehbarkeit der Entscheidungen im
Entwicklungsprozess
Einfache Weiterentwicklung
Qualitätsmanagement: Bewertung und Sicherstellung von
Qualitätskriterien für den Entwicklungsprozess und das zu
entwickelnde Softwareprodukt
Projektmanagement: Planung und Zuteilung von für die
Softwareentwicklung notwendigen Ressourcen zur Sicherstellung
wirtschaftlicher Kriterien
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
667/715
Kritik am konventionellen Phasenmodell
Rein sequentieller Phasenverlauf kaum praktikabel
Strikte Sequenz berücksichtigt nicht:
Häufig Rückschritt zu vorhergehenden Phasen notwendig
Beliebige Sprünge (vorwärts/rückwärts) zwischen Phasen
oft sinnvoll (z.B. „frühe“ Prototypen als Proof of Concept)
Iterative Natur der Softwareentwicklung: Wiederholung von
Abfolgen (z.B. ... → Implementierung → Test → Änderung
des Entwurfs → Implementierung → Test ...)
Weiteres Vorgehen nach „Abschluss“ der Entwicklung und
Einsatz der Software → Softwarelebenszyklus
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
668/715
Spiralmodell
Planung:
Ziele und
Anforderungen
Alternativen:
Risikoanalyse
und Prototypen
Bewertung:
und nächste
Iteration starten
Realisierung:
Entwurf und
Implementierung
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
669/715
Spiralmodell
Spiralmodell illustriert iterativen Charakter der
Softwareentwicklung
Wiederholtes Durchlaufen grundlegender Phasen mit
veränderlichen Zielen und Inhalten
Zunehmende Konkretisierung der Planung
Wachsende Detaillierung der Spezifikation
Verfeinerung des Entwurfs
Präzisierung von Anforderungen
Wachsen des implementierten Funktionsumfangs
...
Aktuelle Ansätze wie Agile Software Engineering und
Extreme Programming greifen dieses Grundkonzept meist
auf
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
670/715
V-Modell
Analyse
Einsatz
Auslieferung /
Installation
Spezifikation
Grobentwurf
Systemintegration
Feinenwturf
Implementierung
der Systemelemente
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
671/715
V-Modell
V-Modell illustriert Rückkopplungen zwecks Verifikation
und Validierung angelehnt an einfaches Phasenmodell
Entwickelt ursprünglich in Deutschland
Empfohlenes Vorgehensmodell für Softwareprojekte der
öffentlichen Hand in Deutschland
Aktuell sehr umfangreiches Vorgehensmodell mit
Berücksichtigung zahlreicher weiterer Aspekte
(Re-Engineering, Projektmanagement, etc.)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
672/715
Softwarelebenszyklus
Fokus bei vielen einfachen Vorgehensmodellen auf initiale
Entwicklung eines Softwareproduktes
Wartung umfasst aber Änderung der Software aus
verschiedenen Gründen, z.B.
Erweiterung des Funktionumfangs
Anpassung an neue Anforderungen
Beseitigung von Fehlern
Portierung auf neue Hardware- oder
Betriebssystemplattform
Anpassung an neue Infrastrukturen
Neue Schnittstellen
...
Softwareentwicklung in der Regel kontinuierlichen
Prozess im gesamten Softwarelebenszyklus
Softwarealterung (sinkende Qualität) und -tod (Einstellung
von Entwicklung, Ausklingen des Einsatzes) oft erst nach
vielen Versionen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
673/715
Re-Engineering
Re-Engineering:
Anpassung,
Fehlerkorrektur und
Erweiterung
Version i+1
Initiale
Entwicklung
Eike Schallehn, FIN/ITI
Initiale Version
des Systems
Grundlagen der Informatik für Ingenieure
Version i
Systemnutzung
674/715
Aktuelle Ansätze des Software Engineering
Agile Software Development
Keine Fokussierung auf festen Vorgaben für
Abläufe
Stattdessen Zuständigkeiten,
(Selbt-)Organisation von Individuen in Teams
und Kommunikationsstrukturen
Ziel: hohes Maß an Adaptivität und Flexibilität
im Entwicklungsprozess
Bzgl. Abläufen angelehnt an iterative Modelle
wie Spiramodell
Extreme Programming (XP)
Spezialfall des Agile Software Development
Berücksichtigt zahlreiche weitere Ansätze in
schlüssigem Gesamtmodell
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
675/715
Methoden und Werkzeuge
Methoden: Verfahren, die zur Unterstützung in einer
konkreten Phase (Analyse, Spezifikation, Entwurf, ...) der
Softwareentwicklung angewendet werden können
Werkzeuge: sind Softwareprogramme, die
Softwareentwickler bei ihrer Arbeit unterstützen und ggf.
Enwicklungsmethoden (↑) implementieren.
Im folgenden Fokus auf
Methoden und Werkzeuge für die Modellierung (vor allem
Spezifikation und Entwurf)
Methoden und Werkzeuge für die Programmierung
(Implementierung und Test)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
676/715
Grundprinzipien von Methoden
Dekomposition von Problemen in kleiner Teilprobleme →
hierarchische Strukturen (Teile und herrsche)
Abgrenzung von statischen (Daten, Komponenten, ...) und
dynamischen Aspekten (Funktionen, Zustände,
Nachrichten, ...)
Unterstützung verschiedener Abstraktionsstufen, z.B.
Schnittstelle vs. Implementierung
Formale Modelle (für Verifizierbarkeit, Überführung in
Code, etc.) vs. semi- oder informale Modelle (für
Diskussion und weiter Überführung durch Entwickler)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
677/715
Methoden der Modellierung
Verbreitet vor allem Modellierungsmethoden (auch
Modellierungssprachen) mit grafischer Notation
Zum Teil mit formal definierter Semantik
Zwei wesentliche Klassen von Methoden
1
2
Strukturmodellierung (statische Aspekte)
Verhaltensmodellierung (dynamische Aspekte)
Im Rahmen der Vorlesung bereits vorgestellte
Modellierungsmethoden
Struktogramm (Verhalten)
Programmablaufplan (Verhalten)
Entity Relationship- Modell (Struktur)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
678/715
Weitere Methoden der Modellierung
Beispiele für Methoden zur Strukturmodellierung
IDEF1X (abgeleitet von ER-Modell) für Datenbanken
EXPRESS und EXPRESS-G (grafische Notation) für
Produktdaten (Teil des Standard for the Exchange of
Product Data STEP)
Beispiele für Methoden zur Verhaltensmodellierung
Petri-Netze für Bedingungen und Ereignisse in
nebenläufigen Abläufen (formales Modell)
Business Process Modeling Notation (BPMN) für Prozesse
Jackson Structured Programming (JSP) für strukturierte
Programmierung
Specification and Description Language (SDL) für Zustände
und Kommunikation in verteilten System
Unified Modeling Language (UML →) entwickelt sich zu
Quasi-Standard für viele Modellierungsaufgaben
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
679/715
Die Unified Modeling Language (UML)
Entwickelt seit Mitte der 1990er
Vereinigt zahlreiche Ansätze der objektorientierten
Modellierung
Umfaßt verschiedene Spracheinheiten/Diagrammtypen
Struktur
Klassendiagramme
Komponentendiagramme
Verteilungsdiagramme
...
Verhalten
Anwendungsfälle
Aktionsdiagramme
Sequenzdiagramme
Zustandsdiagramme
...
Heute von den meisten Werkzeugen der
Softwareentwicklung unterstützt
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
680/715
UML-Beispiel: Klassendiagramm
Bearbeiter
-nachname
-vorname
Zeichnung
-titel
-status
+erstellen()
+prüfen()
+bearbeiten()
+freigeben()
+zurückweisen()
*
-bearbeitet von
Konstrukteur
*
*
-fachgebiet
Prüfer
-geprüft von
1
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
681/715
UML-Beispiel: Zustandsdiagramm
/ erstellen()
/ prüfen()
in Bearbeitung
/ zurückweisen()
in Prüfung
/ freigeben()
/ bearbeiten()
in Produktion
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
682/715
UML-Beispiel: Sequenzdiagramm
Meier:Konstrukteur
Schulze:Prüfer
Zeichnung zur Prüfung
Zurückgewiesen
Zeichnung zur Prüfung
Freigabe
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
683/715
Werkzeuge zur Modellierung
Computer Aided Software Engineering (CASE) →
CASE-Tools
Ideal: gesamtheitliche Unterstützung des
Entwicklungsprozesses über alle Entwicklungsphasen
(Analyse, Spezifikation, Entwurf, Implementierung, Test)
Unterstützen zum Teil Übergang zwischen Phasen, z.B.
Code-Generierung oder Reverse Engineering (Ableitung
von Modellen aus Code) als Grundlage für Re-Engineering
Beispiel: Rational Rose (IBM), Together (Borland),
Umbrello (Open Source)
Integrierte Programmierumgebungen (IDE = Integrated
Development Environment)
Eike Schallehn, FIN/ITI
Aktueller Trend: ausgewählte Modellierungsmethoden
heute mitunter in Entwicklungsumgebungen für
Programmiersprachen integriert
Fokus bleibt aber auf Implementierung
Unterstützung der Code-Generierung
Beispiele: NetBeans IDE (Sun, Open Source), IntelliJ IDEA
Grundlagen der Informatik für Ingenieure
(JetBrains)
684/715
CASE-Tool: Umbrello
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
685/715
IDE: NetBeans
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
686/715
Methoden und Werkzeuge zur Implementierung
Methoden entsprechen im weiteren Sinne
Programmierparadigmen, vor allem
Strukturierte Programmierung
Prozedurale/funktionale Programmierung
Objektorientierte Programmierung
...
Werkzeuge sind
Programmierumgebung (Editor, Compiler bis hin zur IDE)
Debugger zur Fehlersuche (meist Teil der IDE)
Code- und Versionsmanagement
Profiler zum Effizienztest
Testumgebungen zur Validierung
Im weiteren Sinne Systeme im Umfeld der Entwickler:
Workflow Management, Projektmanagement, etc.
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
687/715
Zusammenfassung: Software Engineering
Software Engineering: Teil der Informatik, der sich mit der
systematischen Entwicklung von Software beschäftigt
Notwendig zur Handhabbarkeit von Risiken
Prozessmodelle als Richtlinie für Vorgehen bei der
Softwareentwicklung
Konkrete Prinzipien, Methoden und Werkzeuge für alle
Phasen des Prozesses
Allheilmittel für Probleme existiert aber nicht: laut aktueller
Studie
40% aller Software-Projekte scheitern
Weitere 33% dauern zu lange bzw. haben zu hohe Kosten
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
688/715
Teil XIII
Rechnernetze
Überblick
1
Einführung
2
Netzwerktechnologien
3
TCP/IP und das Internet
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
690/715
Rechnernetze
Definition (Rechnernetz)
Ein Rechnernetz ist ein Zusammenschluss von verschiedenen
autonomen Computern zum Zweck des Austauschs von
Information.
Auch: Rechnernetzwerke oder einfach Netzwerk, Englisch:
Computer Network
Bedeutender Einfluss auf Verbreitung von Rechentechnik
Verbessern Nutzen und Nutzbarkeit von Computern im
öffentlichen und geschäftlichen Bereich
Zugreifbarkeit von Daten und Diensten
Effizienz durch Verteilung und Parallelität
Maßgebliche Ursache für Popularisierung von Computern
im privaten Bereich (z.B. WWW)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
691/715
Rechnernetz (Beispiel)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
692/715
Aufbau von Netzen
Nodes: Knoten im Netzwerk
Host: Rechner im Netzwerk als spezieller Knoten mit
eigener Adresse
Knoten ohne Adresse: z.B. Hubs, Switches oder Modems
Weitere Knoten mit Adesse: Router, Drucker, etc.
Link: Verbindung zwischen einzelnen Knoten direkt
(Zweipunktverbindung) oder über einen Bus (geteiltes
Übertragungsmedium ↑)
Subnetze: kleinere Teilnetze verbinden
Kommunikationsinfrastruktur: Zusammenfassung und
Abstraktion von verbundenen Rechnernetzen in einem
definierten Kontext (z.B. Internet oder lokales Netzwerk
einer Firma)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
693/715
Anwendungen in Netzen
Anwendungen im Netz fallen in 2 Hauptkategorien
(typische Architekture)
Client-Server: ein Programm auf einem Rechner stellt
einen Dienst bereit (Server ) den andere Programme auf
anderen Rechnern nutzen (Clients)
Beispiele: WWW (Web-Server und Web-Browser), Email
(Mail-Server, Mail-Clients), Datenbanksysteme (DB-Server
und DB-Anwendung)
Normalerweise Pull-Ansatz: Clients lösen Kommunikation
durch Dienstaufruf aus
Push-Ansatz: Server überträgt aktiv Daten an Clients (z.B.
bei Eintreffen oder Vorliegen einer bestimmten Bedingung)
Peer-to-Peer: Kommuinkation findet zwischen
gleichberechtigten Programmen im Netz statt, d.h. jeder
kann Dienste Nutzen und bereitstellen
Beispiele: Chat (IRC, ICQ), File Exchange (Gnutella,
BitTorrent)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
694/715
Bestandteile von Rechnernetzen
Funktion des Gesamtnetzwerkes ergibt sich aus Hardware
und Software
Hardware:
Übertragungsmedien: Kabel, Funk
Spezielle Geräte/Rechner: Hubs, Switches, Router, etc.
Angeschlossene Endgeräte (Hosts, Drucker)
Software:
Implementierte Protokolle (↓) zur Umsetzung der
Kommunikation
Netz-fähige Anwendungen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
695/715
Netzwerktopologien
Netzwerktopologie: Anordnung von Knoten in einem
Netzwerk folgt in der Regel grundlegenden Mustern
Unterscheidung in zwei Ebenen (in etwa Ebenen 1 und 2
des ISO/OSI-Referenzmodells ↓)
Physische Topologie: entspricht tatsächlicher Verbindung
der Knoten durch Übertragungsmedium („Verkabelung“,
Funkkanäle)
Logische Topologie: entspricht Kommunikationsstruktur
zwischen Knoten dieses Netzes
Logische und physische Struktur können voneinander
abweichen, z.B. Ethernet „verkabelt“ möglich als Ring,
logische Kommunikation entspricht aber Bus (Nachricht
geht an alle Knoten)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
696/715
Wichtige Netzwerktopologien
Ringtopologie
Mesh-Topologie
Eike Schallehn, FIN/ITI
Sterntopologie
Bustopologie
Grundlagen der Informatik für Ingenieure
697/715
Netzwerktopologien /2
Verschiedene Topologien unterscheiden sich bezüglich
wichtiger Kriterien
Ausfallwahrscheinlichkeit bei lokalen Störungen (Ausfall
eines Knotens)
Geschwindigkeit einer einzelnen Übertragung (über einen
Link oder mehrere → Hops)
Durchsatz: Möglichkeit paralleler Übertragungen
Skalierbarkeit: Leichtigkeit des Hinzufügens neuer Knoten
Aufwand für Implementierung und Einsatz
...
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
698/715
Aufbau komplexerer Netze
Komplexere Netze bilden sich aus Kopplung von Teilnetzen
entsprechend eigener Topologie
Meist: (lose) hierarchische Struktur von Netzen
Beispiel Internet:
Backbone (Wirbelsäule)-Netz zur Verbindung zentraler
Punkte auf Kontinenten und in Ländern
Darunter organisieren sich größere Netzwerke für
Universitäten, Provider, Firmen
Darunter organisieren kleinere Netze in Abteilungen,
Niederlassungen, Haushalten
...
In Firmen vorherrschend: hierarchisch organisierte
Bus-Topologien
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
699/715
WAN, LAN, WLAN, etc.
Wide Area Network (WAN): große, Länder- oder Kontinentgrenzen
überschreitende Rechnernetze bestehend aus vielen
Teilnetzen und offen für beliebige Anzahl weitere
Knoten → vor allem das Internet
Local Area Network (LAN): Rechnernetz in einem bestimmten,
abgeschlossenen geographischen oder
organsiatorischen Kontext, z.B. Rechnernetz einer
Firma, Universiät oder eines Haushalts → schnellere
Übertragung, keine oder geringe hierarchische Struktur
Wireless LAN (WLAN): „kabelloses“ LAN unter Verwendung von
Funktechnologie zur Untertstützung flexibler Strukturen
und mobiler Geräte
Ad hoc WLAN: Rechner kommunizieren
untereinander gleichberechtigt in einer
Mesh-Topologie (z.B. Bluetooth)
Infrastruktur: zentrale Basisstation (Access Point)
existiert
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
700/715
Netzwerkprotokolle
Netzwerkprotokolle
Protokoll allgemein: Festlegung der Regeln für den
Umgang und die Kommunikation
Definition (Protokoll)
Ein Protokoll im Sinne von Rechnernetzen ist eine
implementierbare Festlegung, wie der Verbindungsaufbau
sowie die Übertragung von Daten zwischen zwei
Netzwerkknoten abläuft.
Viele verschiedene Protokolle existieren, welche in
Protocol Stacks (Protokollstapel) eingeordnet werden
können
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
701/715
Protocol Stacks
Protocol Stack: Anordnung von Protokollen in Ebenen
Einzelne Protokolle bieten „nach oben“ wohldefinierte
Schnittstelle
Verlassen sich „nach unten“ auf Bereitstellung der
Funktionalität durch tiefere Protokollebene
Unterstützen schrittweise Abstraktion von
Anwendungsprogrammen (obere Ebenen) bis hin zum
Übertragungsmedium (untere Ebenen)
Ermöglichen Flexibilität bzgl. der Wahl unterschiedlicher
Übertragungsmedien (untere Schichte austauschbar) und
verschiedener Anwendungen (obere Schichten
austauschbar)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
702/715
Das ISO/OSI-Referenzmodell
Eike Schallehn, FIN/ITI
L7 Application
Anwendungsspezifische
Funktionen
L6 Presentation
Anpassung der
Darstellung der Daten
L5 Session
Zustandsbehaftete
Verbindung der Anwendungen
L4 Transport
Kopplung von Anwendungen an
Übertragungssystem
L3 Network
Logische Adressierung und
Vermittlung über Netzwerkgrenzen
L2 Data Link
Adressierung und Vermittlung
im physischen Netzwerk
L1 Physical
Physische Übertragung der
Daten über Medium (Hardware)
Grundlagen der Informatik für Ingenieure
703/715
Das ISO/OSI-Referenzmodell
Standardisiertes Modell für den Aufbau von Protocol
Stacks
Aufteilung in Protokollebenen (Layers), welche bestimmte
Abstraktionsstufen und entsprechende Funktionalität
beschreiben
In der Form nicht implementiert, aber für die Beschreibung
und den Vergleich von Protokollen notwendig
Grundlage für das Verständnis der Funktionsweise von
Rechnernetzen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
704/715
Packet Switching
Heutige Rechnernetze basieren auf Packet Switching
(Paketvermittlung):
Zu übertragende Daten, Dateien, Datenströme, etc. werden in
Pakete (Datenblöcke) fester Größe zerlegt
Pakete relativ klein (z.B. meist ca. 1500 Byte bei TCP/IP)
Datenübertragung wird durch geeignetes Weiterleiten (Routing)
von Paketen durch feststehende Leitungsverbindungen
umgesetzt
Routing ist Aufgabe einer Protokollebene, z.B. Internet Protocol
(IP) bei TCP/IP
inter net = Übertragung zwischen den Netzen (verschiedenen
physischen Verbindungen) = Routing
Alternative wäre Circuit Switching (Leitungsvermittlung)
Übertragung durch dynamischen Aufbau von
Leitungsverbindungen
z.B. bei Telefonnetzen
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
705/715
Verbindungen/Kommunikation im
ISO/OSI-Referenzmodell
L7
L7
L6
L6
L5
L5
L4
L4
L3
L3
L2
L2
L1
Eike Schallehn, FIN/ITI
Virtuelle Verbindung:
Zwischen gleichen
Protokollebenen
(Peer-to-Peer)
Physische Verbindung:
Von Layer zu Layer bzw.
auf physischem Medium
Grundlagen der Informatik für Ingenieure
706/715
Kopplung von Netzwerken
Bridge/
Switch
Hub
Router
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
707/715
Kopplung von Netzwerken
Gateway: (Protokollumsetzer) allgemeine Bezeichnung für
Kopplung von Netzen, die unterschiedliche Protokolle
verwenden, Kopplung auf beliebiger Protokollebene
möglich, Begriff mit verschiedenen Bedeutungen
eingesetzt
Router: Verbindung verschiedener Netzen auf OSI-Schicht
3, welches das geeignete Weiterleiten von Datenpaketen
(z.B. über Routing-Tabellen für Netzwerkadressen)
Bridge: Kopplung physischen Segmenten von Netzwerken
auf der OSI-Schicht 2, Berücksichtigung von Aspekten der
logischen Datenübetragung
Switch: Aktuellere Lösungen vergleichbar Bridges
Hub: Multiport Repeater rein physische Kopplung von
Übertragungsmedien
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
708/715
TCP/IP und das Internet
Erfolgreichste und meist eingesetzte Familie von
Protokollen
Technologische Grundlagen entwickelt Ende der 1960er
(ARPANET)
Wichtigste Protokolle im Lauf der frühen ’70er vollständig
spezifiziert
Erste transkontinentale Verbindung von TCP/IP-Netzen
1975
Popularisiert vor allem durch World Wide Web (seit 1990)
Benannt nach TCP und IP: zwei zentrale Protokolle des
Protocol Stack
Internet: weltweites Netz aller mit TCP/IP verbundenen
Rechner (WAN)
Intranet: abgeschlossenes und nicht-öffentliches
Netzwerk, dass TCP/IP verwendet → meist LAN (zum
Beispiel in Firmen), aber auch Länder (z.B. Nordkorea)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
709/715
Der TCP/IP Protocol Stack
OSI-Referenzmodell
L7 Application
TCP/IP-Protokolle
L5 Session
Application:
Web (HTTP, HTTP), Email
(SMTP, POP), File Transfer
(FTP), Remote Login
(Telnet, SSH), ...
L4 Transport
Transport: TCP, ...
L3 Network
Internet: IP, ...
L2 Data Link
Link:
Ethernet, DSL, WLAN, ...
L6 Presentation
L1 Physical
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
710/715
Transmission Control Protocol (TCP)
Protokoll zur anwendungsunabhängige Koordination von
Datenübertragungen
Verbindungsaufbau
Bildung von Paketen aus Anwendungsdaten (und
Zusammensetzen in anderer Richtung)
Verlässlichkeit der Übertragung
Konkurrierende Zugriffe verschiedener Anwendungen auf
Netz
Meist umgesetzt als Treiber/Teil des Betriebssystems
Applikationen können direkt über Sockets auf TCP
zugreifen
Socket entstpricht Verbindungspunkt, auf/aus dem
Anwendungen Daten schreiben/lesen können
Eine Verbindung besteht aus Quell- und Ziel-Socket
Socket eindeutig gekennzeichnet durch IP-Adresse (↓) des
Rechners und Port (applikations- oder protokollspezifischer
lokaler Identifizierer)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
711/715
Packet Switching in TCP/IP
Eike Schallehn, FIN/ITI
Application
Anwendungsdaten
Transport
TCP-Pakete mit TCP-Header
Internet
IP-Pakete mit IP-Header
Link
z.B. Ethernet Pakete mit Header + Footer
Grundlagen der Informatik für Ingenieure
712/715
Internet Protocol (IP)
Protokoll zur Übertragung von Datenpaketen über Grenzen
lokaler Netzwerke hinweg
Routing von Datenpaketen über Grenze von Teilnetzen
(ggf. mit unterschiedlichen Protokollen der unteren Ebenen)
hinweg
IP-Adressen weltweit eindeutige Identifizierung
Aktuelle gebräuchlich 4 Byte (IPv4), z.B. 141.44.26.71
16 Byte (IPv6) für zukünftige Anwendungen
Raum möglicher Adressen unterteilt nach Präfixen für
Netze verschiedener Größen
Können ggf. dynamisch vergeben werden
Über Domain Name System (DNS, Protokoll auf
Anwendungsebene) können IP-Adressen eindeutige Namen
zugeordnet werden, z.B. glenesk.cs.uni-magdeburg.de
Uniform Resource Locator (URL) als vollständige Spezifizierung
einer Netzwerkressource besteht z.B. aus Protokoll, IP-Adresse
oder Name des Host, Port u.a. Informationen (abhängig von
Protokoll), z.B. http://www.ovgu.de/
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
713/715
Firewalls
Firewalls sind ein Mittel zur Abwehr unauthorisierter
Zugriffe auf Knoten in einem Netzwerk
Umgesetzt zum Beispiel auf Ebene von IP
Analyse und möglicherweise Rückweisen von
Datenpaketen nach bestimmten Regeln (Packet Filter )
Zum Beispiel Sperren bestimmter Protokolle, Ports, etc.
Aktuellere Ansätze arbeiten auch auf Ebene der
Anwendungsprotokolle (z.B. HTTP, DNS, FTP, etc.)
Eike Schallehn, FIN/ITI
Grundlagen der Informatik für Ingenieure
714/715
World Wide Web (WWW)
Virtuelles Netzwerk von Dokumenten basierend auf dem Internet
Basiert auf Protokollen der TCP/IP-Familie auf
Anwendungsebene, vor allem Hypertext Transfer Protocol
(HTTP)
Dokumente dargestellt mittels Hypertext Markup Language
(HTML)
Client Server-Anwendung nach folgendem Grundprinzip
Web Server stellt über HTTP HTML-Dokumente u.a. zur
Verfügung
Web Browser (Client) sendete URL als Request und stellt
empfangenes Dokumente dar
Wichtige aktuelle Aspekte
Eike Schallehn, FIN/ITI
Zunehmende Trennung von Daten und deren Darstellung (z.B.
durch Style Sheets)
Server-seitige Programmlogik für dynamisch generierte
Web-Seiten, zum Beispiel aus Datenbanken (Stichworte: CGI,
PHP, Java Servlets)
Client-seitige Dynamik durch Einbettung von
Programmiersprachen wie JavaScript oder dynamischen Inhalten
mittels Adobe Flash Grundlagen der Informatik für Ingenieure
715/715
Herunterladen