UML für
Datenbankdesign |
|
UML --> DB Mapping |
|
Table Student:
Name |
I-Nummer |
Maria D |
123456 |
Stefan K |
987654 |
Tobi A |
543221 |
.. |
.. |
|
|
|
Geht man von einer relationalen Datenbank aus (RDBMS), so kann man
die objektorientierte Modellierung auf die Tabellen und Relationen abbilden.
-
Bei komplexeren Architekturen sollte das Datenbankmodell gewissenhaft überprüft
werden. Die automatische Abbildung kann zu mehr Overhead und Laufzeitproblemen
führen.
-
Nur Klassen mit Persistenz sind relevant.
-
Pro Klasse eine Tabelle.
-
Für jedes Attribut eine Spalte.
-
Jedes Objekt dieser Klasse (bzw. dessen Attribute) wird dann in einer Zeile
abgespeichert.
|
|
Table Student:
Name |
iNummer |
ID_Planung
(Fremdschlüssel) |
Maria D |
123456 |
1 |
Stefan K |
987654 |
99 |
Tobi A |
543221 |
3 |
.. |
.. |
.. |
Table Planung:
ID_Planung
(PrimaryKey) |
Semester |
3 |
Sommer03 |
1 |
Winter02 |
99 |
Sommer03 |
.. |
.. |
|
|
|
-
Assoziationen können über Primarykeys und Fremdschlüssel
umgesetzt werden.
-
Über den Fremdschlüssel als Primärschlüssel einer
anderen Tabelle können die Daten referenziert werden.
-
Meist ist es wesentlich performanter, die Schlüssel als Zahlenwerte
statt als String zu definieren.
-
UML Tools können aus Klassendiagrammen DTD Beschreibungen erzeugen.
Die DTD kann als Input für Datenbanksysteme verwendet werden um die
Datenbanktabellen zu erzeugen. Eine nachträgliche Änderung der
Datenbanktabellen ist meist nicht automatisch möglich!
|
DTD verzeugt von Together
CREATE TABLE Student
(
inummer bigint(1),
name varchar(1),
ID_Planung int(1) NOT NULL
)
CREATE TABLE Planung
(
ID_Planung int(1) NOT NULL,
semester varchar(1),
CONSTRAINT PK_Planung PRIMARY KEY (ID_Planung)
)
ALTER TABLE Student ADD CONSTRAINT lnkPlanung
FOREIGN KEY (
ID_Planung
)
REFERENCES Planung (
ID_Planung
) |
|
|
DTD erzeugt von ROSE
-
Rose verzichtet auf die automatische Umsetzung von Klassendiagrammen in
Datenbankschemas.
-
Es steht eine manuelle Möglichkeit zur Verfügung um Datenbanktabellen
zu definieren.
-
Die DDL von Together kann nicht in Rose eingelesen werden (parsing error).
Getestet wurde die DDL für Oracle 7x und MySQL.
-
Rose unterstützt keine DDL ausgabe für MySQL, evtl. kann
jedoch ein anderes Exportformat auch für MySQL verwendet werden.
|
Stored Procedures
-
Die Datenbank selbst kann Aufgaben übernehmen. Dazu können Skripte
erstellt und als Stored Procedures in der Datenbank abgelegt werden.
|
|
Vorteile:
-
Schnelle Berechnung, wenn viele Werte verwendet werden müssen.
-
Gut für Plausibilitätsprüfung über mehrere Tabellen
hinweg.
-
Netzwerklast wird reduziert (die Daten bleiben in der Datenbank).
-
Verarbeitung auf dem Server.
Nachteile:
-
Es entsteht eine "denkende" Datenbank. Diese versteckte Logik kann zu scherwiegenden
Problemen führen.
-
Es entsteht eine verteilte Programmlogik. Ein Teil der Logik wird in der
Datenbank versteckt.
-
Abhängig von der verwendeten Datenbank.
Tip: Nur Einsetzen, wenn wegen Performance notwendig. |
|
|