Kein Folientitel

Werbung
Bauinformatik
Vertiefte Grundlagen
Systemtheorie
5. Semester
4. Vorlesung
Entwicklung der relationalen Datenstruktur
eines Informationssystemes
Prof. Dr.-Ing.
R. J. Scherer
TU Dresden - Institut für Bauinformatik
Nürnberger Str. 31a
2. OG, Raum 204
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 1
Allgemeiner Prozess einer
ingenieurmäßigen Systembetrachtung
1. Systembetrachtung
Grobe Definition von Zweck, Funktion, Prozessen und Verhalten
Formale Repräsentation des Systems (IDEF0) auf hoher Ebene
2. Systemobjektmodell = Datenstruktur = {O, R}
basierend auf einem Metamodell (= O-O-Modell / E-R-Modell)
Entwicklung eines Datenmodells als O-O-/E-R-Schema
3. Implementierung des Schemas in einer Software
Umsetzen in ein vereinfachtes E-R-Modell
Implementieren in MS ACCESS
4. Instanziierung eines Ingenieurmodells
= Konfiguration des domänenspezifischen Ingenieurmodells aus dem Datenmodell
5. Numerisches Programm zur Berechnung des Systemverhaltens
= Simulation
= Prognose
basierend auf einem Modell + Modellannahmen + quantitativen Werten (Statistik)
6. Kommunikation M2M Maschine mit Maschine, M2H Maschine mit Mensch
7. Monitoring, Evaluation und Bericht
TU Dresden - Institut für Bauinformatik
Folie-Nr.: 2
Transformation:
Objektorinetiertes Datenmodell  Relationales Datenbankmodell
Bisher haben wir ein konzeptuelles Datenmodell unseres Ingenieursystems
entwickelt. Dieses konzeptuelle Modell ist noch objektorientiert.
Der nächste Schritt ist die Transformation des konzeptuellen objektorinetierten
Modells in ein relationales Datenbankmodell, das in einer relationalen Datenbank
implementiert werden kann.
Der Grund für die Nutzung relationaler Datenbanken ist:
- sie arbeiten präzise und
- schnell
Die Semantik des relationalen Datenbankmodells ist weniger ausdrucksstark, als
das des konzeptuellen Modells.
 Hauptziel der Transformation ist es, Transformationsregeln anzuwenden, die
den Verlust des semantischen Informationsgehalts so gering wie möglich halten.
TU Dresden - Institut für Bauinformatik
3
Relationale Datenbanken
• Jede Zeile ist eine Relation  Die Kombination von Werten in einer Zeile
definiert ein einmaliges Objekt oder das Auftreten (Zustand) eines Objektes
• Basiert auf der Mengentheorie
• Speichert alle Informationen in Tabellen
(eine Menge von Zeilen und Spalten)
• Jede Zeile ist eine Menge von Spalten mit jeweils nur einem Wert
• Alle Zeilen derselben Tabelle haben die gleiche Menge an Spalten
(einige Spalten können NULL-Werte haben, d.h. unbekannte Werte)
Im Gegensatz zu den relationalen Datenbanken hat das objektorientierte Paradigma
mehr “high-level”-Konzepte, die für die konzeptuelle Datenmodellierung
interessant sind
Problem:
Schemaerzeugung aus allgemeinen (high-level) konzeptuellen Modellen
TU Dresden - Institut für Bauinformatik
4
Relationale Datenbanken
Tabellen – die Basis für relationale Datenbanken
Spalte 1
Zeile 1
Spalte 2
Spalte 3
...
Zeile 2
Spalte 4
Erste Zeile:
Name der Zeile
und Datentyp
Daten (Objekte)
Zeile 3
“Attribute”
TU Dresden - Institut für Bauinformatik
5
Relationale Datenbanken
Beispiel:
Name
(string)
Straße
(string)
Hausnummer
(int)
Postleitzahl
(int)
Ort
(string)
Land
(string)
Schmidt
Gartenweg
10
01216
Dresden
Deutschla
nd
Müller
Main
street
84
NULL
Cork
Irland
...
...
Zwei Einträge mit fehlender Postleitzahl bei der Person Müller (NULL)
TU Dresden - Institut für Bauinformatik
6
Relationale Datenbanken
Schlüssel:
Wir brauchen eine Möglichkeit, um jede Zeile, die in der Tabelle gespeichert ist,
zu identifizieren. Im gegebenen Beispiel können wir die Spalte Name benutzen,
um jede Person zu identifizieren. Aber: wenn zwei Personen mit dem gleichen
Namen in der Tabelle eingetragen sind, können wir beide nicht auf Grundlage
ihres Namens unterscheiden!
Name
(string)
Straße
(string)
Hausnummer
(int)
Postleitzahl
(int)
Ort
(string)
Land
(string)
Schmidt
Gartenweg
10
01216
Dresden
Germany
Müller
Main
street
84
NULL
Cork
Ireland
Müller
Newtonstreet
...
...
...
Addresse von Müller?
TU Dresden - Institut für Bauinformatik
7
Relationale Datenbanken
Schlüssel:
Wir brauchen eine Möglichkeit, um jede Zeile, die in der Tabelle gespeichert ist,
zu identifizieren. Im gegebenen Beispiel können wir die Spalte Name benutzen,
um jede Person zu identifizieren. Aber: wenn zwei Personen mit dem gleichen
Kombinierter
Namen in der(Primär-)Schlüssel
Tabelle eingetragen sind, können wir beide nicht auf Grundlage
ihres Namens unterscheiden!
Name
(string)
Straße
(string)
Hausnummer
(int)
Postleitzahl
(int)
Ort
(string)
Land
(string)
Schmidt
Gartenweg
10
01216
Dresden
Germany
Müller
Main
street
84
NULL
Cork
Ireland
Müller
Newtonstreet
...
...
...
Addresse von Müller?
Lösung: 1) Nutzung eines kombinierten Schlüssels zur Identifikation
z. B. Name und Straße
TU Dresden - Institut für Bauinformatik
8
Relationale Datenbanken
Schlüssel:
Wir brauchen eine Möglichkeit, um jede Zeile, die in der Tabelle gespeichert ist,
zu identifizieren. Im gegebenen Beispiel können wir die Spalte Name benutzen,
um jede Person zu identifizieren. Aber: wenn zwei Personen mit dem gleichen
(Primär)Schlüssel
Namen in der Tabelle eingetragen sind, können wir beide nicht auf Grundlage
ihres Namens unterscheiden!
ID
(int)
Name
(string)
Straße
(string)
Hausnummer
(int)
Postleitzahl
(int)
Ort
(string)
Land
(string)
1
Schmidt
Gartenweg
10
01216
Dresden
Germany
2
Müller
Main
street
84
NULL
Cork
Ireland
3
Müller
Newtonstreet
...
...
...
Adresse von Müller?
Lösung: 2) Nutzung einer Spalte zur eindeutigen Identifikation von Zeilen,
z. B. neue Spalte ID
TU Dresden - Institut für Bauinformatik
9
Relationale Datenbanken
Beziehungen:
Zur Definition einer Referenz auf eine Spalte einer anderen Tabelle werden
Schlüssel benutzt.
Eine derartige Verknüpfung wird durch die Nutzung eines Schlüssels der
anderen Tabelle definiert, der als Fremdschlüssel bezeichnet wird.
Tabelle Personen
Tabelle Mitarbeiter
...
Mitarb_ID
(int)
Person_Nr
(int
referenziert Personen(ID))
1
2
ID
(int)
Name
(string)
1
Schmidt
2
Müller
2
1
3
Müller
..
...
...
Fremdschlüssel zur Tabelle Personen
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 10
Relationale Datenbanken
Empfehlung für das Datenbankschema (die dritte Normalformen):
Leitfaden zum Entwurf Relationaler Datenbanken, für einfach zu implementierende
Anwendungen und wartungsfreundliche Datenbanken.
1. Alle Spaltenwerten sind atomar
(z.B. die postalische Adresse ist nicht in einem String enthalten,
statt dessen ist jedes Element der Adresse in einer eigenen Spalten
gespeichert)
2. Alle Spaltenwerte hängen vom Wert des Primärschlüssels ab
(d.h. zur Abgrenzung von Information verschiedene Tabellen anlegen:
Mitarbeiter getrennt von Personen )
3. Kein Spaltenwert hängt vom Wert einer anderen Spalte ab,
ausgenommen vom Primärschlüssel (z.B. es existieren keine
abgeleiteten Werte)
4. Zusätzlich sollen keine NULL-Werte in den Tabellen enthalten sein
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 11
Transformation eines konzeptuellen objektorientierten
Modells in ein Relationales Datenmodel
Problematische objektorientierte Konzepte:
-
Vererbung
muß per Hand ausgeführt werden, bevor sie in Relationaler Datenbank
implementiert werden kann
-
Select-Typen
Nutzung eines diskriminierenden Attributes, das auf die richtige Sub-Tabelle
zeigt
-
Aggregationen
(kein Typ für Array, List, Set oder Bag von Werten, bzw. nicht empfohlen)
-
Bedingungen/Beschränkungen
(inverse Beziehungen, Kardinalitäten, optionale/obligatorische Attribute,
Regeln, abgeleitete Attribute)
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 12
Konzeptuelles Modell
nr
INTEGER
druck
REAL
REAL
nr
name
INTEGER
ZEICHENFOLGE
STRING
viskosität
geschwindigkeit
REAL
REAL
dichte
zeit
REAL
zeit
Knoten_Sensor
INTEGER
Rohr_Sensor
REAL
nr
Flüssigkeit
position
name
flüssigkeits_parameter position
ZEICHENFOLGE
STRING
x_coord
REAL
y_coord
Start_Knoten
(ABS)Knoten
nr
Rohr
INTEGER
End_Knoten
REAL
rohr_parameter
Q
z_coord
REAL
rohr_typ_select
REAL
druck
REAL
Input_Knoten
1
Output_Knoten
(OPT) parameter
Inner_Knoten
Rohr_Typ
name
verbrauch
erforderl_druck
wasser_input
REAL
STRING
ZEICHENFOLGE
REAL
REAL
Rohr_Parameter
durchmesser
PN
k
REAL
TU Dresden - Institut für Bauinformatik
REAL
REAL
nr
STRING
ZEICHENFOLGE
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 13
Vereinfachtes konzeptuelles Modell
INTEGER
Probleme:
nr
druck
REAL
REAL
nr
name
INTEGER
ZEICHENFOLGE
STRING
viskosität
geschwindigkeit
REAL
REAL
dichte
zeit
REAL
zeit
Knoten_Sensor
INTEGER
Rohr_Sensor
REAL
nr
Flüssigkeit
position
name
Vererbung
ZEICHENFOLGE
STRING
x_coord
REAL
y_coord
flüssigkeits_parameter position
Start_Knoten
(ABS)Knoten
nr
Rohr
Select
Typ
INTEGER
End_Knoten
REAL
rohr_parameter
Q
z_coord
REAL
rohr_typ_select
REAL
druck
1
REAL
Input_Knoten
Output_Knoten
Inner_Knoten
(OPT) parameter
Rohr_Typ
name
verbrauch
erforderl_druck
wasser_input
REAL
"als Konsequenz
erhalten wir NULL-Wert
für den Inner_Knoten"
STRING
ZEICHENFOLGE
REAL
REAL
Rohr_Parameter
durchmesser
PN
k
REAL
TU Dresden - Institut für Bauinformatik
REAL
REAL
nr
STRING
ZEICHENFOLGE
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 14
Identifikation der Tabellen
nr
Tabelle Knoten_Sensor
REAL
name
druck
REAL
nr
Tabelle
Rohr_Sensor
INTEGER
Tabelle
ZEICHENFOLGE
STRING
viskosität
REAL
Flüssigkeit
INTEGER
geschwindigkeit
REAL
dichte
zeit
REAL
zeit
Knoten_Sensor
INTEGER
Rohr_Sensor
REAL
nr
Flüssigkeit
position
name
flüssigkeits_parameter position
ZEICHENFOLGE
STRING
x_coord
REAL
y_coord
Start_Knoten
Tabelle
Start_Knoten
Knoten
(ABS)Knoten
REAL
nr
INTEGER
Tabelle
Rohr
Rohr
rohr_parameter
Q
z_coord
REAL
rohr_typ_select
REAL
druck
REAL
Input_Knoten
1
Output_Knoten
Inner_Knoten
Tabelle
Rohr_Parameter
(OPT) parameter
Rohr_Typ
name
verbrauch
erforderl_druck
wasser_input
REAL
STRING
ZEICHENFOLGE
REAL
REAL
Rohr_Parameter
durchmesser
PN
k
REAL
TU Dresden - Institut für Bauinformatik
REAL
REAL
nr
STRING
ZEICHENFOLGE
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 15
Tabellen
Tabelle Knoten:
Spaltenname
nr
name
X_Coord
Y_Coord
Z_Coord
Druck
Wasser_
Input
Verbrauch
erforderl_
druck
Datentyp
INTEGER
PRIMARY
KEY
STRING
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
Input_Knoten Output_Knoten
Knoten
Konzeptuelles
Modell
INTEGER
nr
Nachteil:
NULL-Werte
name
ZEICHENFOLGE
STRING
x_coord
REAL
y_coord
(ABS)Knoten
REAL
z_coord
REAL
druck
REAL
Input_Knoten
1
Output_Knoten
verbrauch
Inner_Knoten
erforderl_druck
wasser_input
REAL
REAL
TU Dresden - Institut für Bauinformatik
REAL
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 16
Tabellen
Tabelle Rohr:
Spaltenname
Nr
Start_Knoten
End_Knoten
Rohr_Parameter
Flüssigkeits_Name
Datentyp
INTEGER
PRIMARY KEY
INTEGER
referenziert
Knoten
(Nr)
INTEGER
referenziert
Knoten
(Nr)
STRING
referenziert
Rohr_Parameter
(Nr)
INTEGER
referenziert
Flüssigkeits_Parameter
(Nr.)
Rohr
Konzeptuelles Modell
Flüssigkeit
flüssigkeits_parameter
Start_Knoten
Rohr
(ABS)Knoten
nr
INTEGER
End_Knoten
Q
Rohr_Parameter
REAL
Rohr_Parameter
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 17
Tabellen
Tabelle Rohr_Parameter:
Spaltenname
Nr
Durchmesser
PN
K
Name
Datentyp
STRING
PRIMARY
KEY
DOUBLE
DOUBLE
DOUBLE
STRING
Rohr_Typ
Rohr_Parameter
rohr_typ_select
Nachteil:
NULL-Werte
Konzeptuelles
Modell:
(OPT) parameter
Rohr_Typ
name
STRING
ZEICHENFOLGE
Rohr_Parameter
durchmesser
PN
k
REAL
REAL
REAL
nr
STRING
ZEICHENFOLGE
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 18
Tabellen
Tabelle Fluessigkeit:
SpaltenName
Name
Viskositaet
Dichte
Datentyp
STRING
PRIMARY
KEY
DOUBLE
DOUBLE
Konzeptuelles
Modell:
name
ZEICHENFOLGE
STRING
viskosität
REAL
dichte
REAL
Flüssigkeit
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 19
Tabelle
Table Rohr_Sensor:
Spaltenname
Datentyp
Nr
Geschwindigkeit
INTEGER
PRIMARY KEY
DOUBLE
Zeit
Position
TIME
INTEGER
referenziert
Rohr
(Nr)
Rohr_Sensor
Konzeptuelles
Modell:
nr
INTEGER
geschwindigkeit
REAL
zeit
Rohr_Sensor
REAL
position
Rohr
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 20
Tabelle
Tabelle Knoten_Sensor:
Spaltenname
Nr
Datentyp
INTEGER
PRIMARY KEY
Druck
DOUBLE
Zeit
Position
TIME
INTEGER
referenziert
Knoten
(Nr)
Knoten_Sensor
Konzeptuelles
Modell:
nr
INTEGER
REAL
REAL
druck
zeit
Knoten_Sensor
position
(ABS)Knoten
TU Dresden - Institut für Bauinformatik
Bauinformatik II, Softwareanwendungen 1; 9. Vorlesung
Folie-Nr.: 21
Herunterladen