# Semantische Datenmodellierung und Relationenmodell ## Lifecycle von Informationssystemen ![image_644.png](image_644.png) ### 1. Planungsphase - Informationsbedarf der zu untersuchenden Organisation ermitteln - Informationsstrategie erarbeiten #### Beispiel: CRUD-Matrix (Create - Read - Update - Delete) - Ergebnis: **Informationsprojekte** - Zusammenfassung von Funktionen, die gleiche Informationsobjekte verwenden - _Funktionsbereiche_ sind definiert - strukturieren Organisationsbereich - ![image_645.png](image_645.png) ### 2. Analysephase - _Informationsprojekte_ aus Planung weiter detaillieren - Daten- und Prozesssicht - durchgehende Konsistenz zwischen Daten- und Prozessmodell! - Ergebnis: **Datenmodell** (UML) und **Prozessmodell** (Analysesicht) ### 3. Designphase - Berücksichtigung des Datenbankmodells, Implementierungsplattform (DBMS) - Implementierung von Beziehungen - Definition von Referenzen - Festlegung der Datentypen (DBMS-spezifisch) - _CASE-Tools_ (_computer aided software engineering_) - generieren Datenmodelle für 3. aus Datenmodellen aus 2. - umgekehrt: Round-Trip-Engineering - Ergebnis: - Datenmodell - z.B. **[Relationenmodell](#relationenmodell)**, ergänzt um Datentypen des Ziel-DBMS beim Einsatz von RDBMS - Prozessmodell der Designsicht ### 4. Implementierungsphase - Güte von Analyse und Design zeigen sich in relativ problemloser Implementierung - RDBMS: Implementierung DB-Schema durch deklarative Sprachkomponente von SQL (SQL DDL) - CASE-Tools: SQL-Skript direkt aus Relationenmodell generieren ### Beispiel Phasen des DB-Entwurfs ![image_646.png](image_646.png) ## Relationenmodell - Grundlage des von E. F. Codd vorgestellten RDB-Modells bildet der Relationenbegriff aus Mathe - eine **n-stellige (n-äre) Relation in einer Menge M** ist eine Beziehung, die zwischen je n Elementen aus M besteht oder nicht - vorstellbar als Menge von Tupeln gleicher Länge n - auch n-Tupel genannt - ![image_647.png](image_647.png) - Spalten - Attribute - einzelne Zeilen - Tupel / Datensätze ### Definitionen Relationenmodell - Eine **n-stellige Relation R** ist definiert als Untermenge des kartesischen Produkts der Wertebereiche der zugehörigen Attribute $A_1$, $A_2$, ..., $A_n$ - $$R(A_1, A_2, ..., A_n) ⊆ W(A_1) x ... x W(A_n)$$ - Beispiel: _Student (MatrNr, Name, Geb.) ⊆ integer x string x date_ - Ein Element der Menge R wird als **Tupel** bezeichnet → $$t ∈ R$$ - Beispiel: _t= (123456, 'Schmidt', 30.01.2014)_ - Ist der Wert eines Attributs in einem Tupel unbekannt/nicht vorhanden - **NULL-Wert** - kann für jedes Attribut festgelegt werden, ob erlaubt ist oder nicht - **Schlüssel** p minimale Menge von Attributen - Werte identifizieren Tupel eindeutig - Wert von p bestimmt die Attributwerte aller anderen Attribute des Tupels eindeutig - Man kann (im zusammengesetzten Fall) kein Attribut aus p entfernen, ohne dass das verletzt wird - ![image_648.png](image_648.png)