Bauinformatik II Softwareanwendungen 1 Relationale Datenbanken für Bauingenieurprobleme 5. Semester 10. 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 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.: 2 Relationale Datenbanken Empfehlung für das Datenbankschema (die drei Normalformen): Leitfaden zum Entwurf Relationaler Datenbanken, für einfacher (zu implementierende) Anwendungen und wartungsfreundlichere 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 (z.B. Abgrenzung von Information in verschiedene Tabellen: Personen und Mitarbeiter) 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.: 3 Datenbankschema Nutzung eines objektorientierte konzeptuellen Modells für das Datenbankschema: 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.: 4 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.: 5 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.: 6 Identification of tables 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.: 7 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.: 8 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.: 9 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.: 10 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.: 11 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.: 12 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.: 13