Wie viele Tabellen in einem Dataset - Design

05/02/2009 - 19:24 von Michael Glander | Report spam
Hallo community,

meine Frage betrifft den Softwareentwurf.

Ich habe eine SQL-Datenbank mit knapp 200 Tabellen, auf die diverse
Anwendungen zugreifen. Diese Anwendungen stelle ich seit geraumer Zeit auf
.Net um. Ich benutze eine Datenzugriffsschicht in der im wesentlichen ein
typed dataset den Zugriff auf die Datenbank regelt. Nun bin ich wieder mit
der Frage konfrontiert, die mich von Anfang an quàlt: wie viele Tabellen darf
ich in mein DataSet stopfen? Viele Tabellen führen zu einer hohen
Speicherauslastung, abgesehen davon leidet die Übersichtlichkeit. Bei wenigen
Tabellen muss ich mehrfach codieren und bekomme den Wartungsalbtraum.
Isolierte Inseln gibt es in meiner Datenbank nicht, alle Tabellen stehen
miteinander in Beziehung.

Ich bin über jeden Tip dankbar.

Michael
 

Lesen sie die antworten

#1 Peter Fleischer
06/02/2009 - 07:15 | Warnen spam
"Michael Glander" schrieb im
Newsbeitrag news:

Ich habe eine SQL-Datenbank mit knapp 200 Tabellen, auf die diverse
Anwendungen zugreifen. Diese Anwendungen stelle ich seit geraumer Zeit auf
.Net um. Ich benutze eine Datenzugriffsschicht in der im wesentlichen ein
typed dataset den Zugriff auf die Datenbank regelt. Nun bin ich wieder mit
der Frage konfrontiert, die mich von Anfang an quàlt: wie viele Tabellen
darf
ich in mein DataSet stopfen? Viele Tabellen führen zu einer hohen
Speicherauslastung, abgesehen davon leidet die Übersichtlichkeit.



Hi Michael,
eine SQL-Datenbank mit 200 Tabellen ist nichts besonderes. Ich kann mir aber
nicht vorstellen, dass ein Anwender alle diese 200 Tabellen in einem
technologischen Ablauf benötigt. Viele Anfànger machen den Fehler, dass sie
im Client ein Abbild der externen Datenbank halten wollen. Das ist überhaupt
nicht nötig. Zuerst sollte man seine Bedienablàufe in horizontale Prozesse
zergliedern. Am Beispiel einer Software zur Lagerverwaltung kann die
Anwendung vereinfacht in folgende Prozesse zergliedert werden:
- Verwaltung des Lagerortverzeichnisses
- Verwaltung der Artikelstammdaten
- Einbuchung von Lagerzugàngen
- Einbuchung von Materialentnahmen
- Inventur

Jeder dieser horizontalen Prozess nutzt eine eigene Inline-Datenbank für die
von ihm benötigten Geschàftsobjeke. In erster Nàherung können als
Geschàftsobjekte typisierte DataRows und als Container für die
Geschàftsobjekte typisierte DataSet-Objekte dienen, d.h. für die obige
Zergliederung gibt es 5 verschiedene typisierte DataSet-Klassen. In jedem
der DataSets gibt es Tabellen, die mit Join aus mehreren Tabellen der
Datenbank geladen werden und die durch den Prozess nur zum Lesen (z.B. als
Nachschlagetabellen) genutzt werden. Die eigentliche Tabelle im DataSet, in
der geàndert wird, entspricht teilweise der externen Datenbanktabelle;
teilweise in bezug auf die Spalten und teilweise in Bezug auf die benötigten
Datensàtze. Das bedeutet, dass die Struktur eines DataSets nur in seltenen
Fàllen zufàllig der Struktur der externen Datenbank entspricht.

Diese Herangehensweise sichert, dass auch funktionell auf der Ebene
horizontaler Prozesse gekapselt werden kann. Realisiert wird jeder
horizontale Prozesse in der entsprechenden Ebene durch eigene
Programmablàufe, z.B. eine UI, eine BL und eine DAL. Zwischen den Schichten
wird die Inline-Datenbank bzw. deren Objekte für die Datenübergabe genutzt.

Im Rahmen der Optimierung kann man natürlich auch mehrere DataSets, die in
naheliegenden Prozesse genutzt werden, vereinen und gemeinsam nutzen. Wo da
der Kompromiss liegt, muss der Entwickler entscheiden.

Problematisch sind prinzipielle Änderungen der Datenbankstruktur, die sich
auf mehrere DataSets auswirken. Bei einer ausreichenden konzeptionellen
Vorarbeit ist das aber praktisch selten der Fall. In einem laufenden
Anwendungssystem ist für solche Fàlle der Änderung der Datenbankstruktur
sowieso eine komplexe Änderungstechnologie zu erarbeiten die sowohl die
Konvertierung der vorhandenen Daten als auch die Änderung und Einführung der
geànderten Programmkomponenten enthàlt.

... Bei wenigen
Tabellen muss ich mehrfach codieren und bekomme den Wartungsalbtraum.
Isolierte Inseln gibt es in meiner Datenbank nicht, alle Tabellen stehen
miteinander in Beziehung.



Unter den obigen Gesichtspunkten verstehe ich diese Aussagen nicht.
Vielleicht kannst du dazu noch etwas schreiben.

Viele Grüsse
Peter

Ähnliche fragen