Praxiserfahrung für Datenbank-Projekt gefragt!

17/12/2007 - 21:07 von Peter Charwat | Report spam
Hallo an alle dot.net - Experten.
Nach meinem Umstieg von VB6 stehe ich nun vor meinem ersten Projekt mit
vb.net und Datenbankanbindung. In meinem Fall handelt es sich um eine
MySQL-Datenbank 5. Also habe ich mir auf Empfehlung hin den MySQL-Provider
von CoreLabs besorgt und stehe nun vor dem Design.Das Datenbank-Design steht
bereits (von den DB-Admins), es sind etwa ein dutzend Tabellen, keine
'stored procedures'.
Ich habe mich bereits in die Objekte des dot.net-Datenbank-Framkworks
eingelesen und mir die Assistenten in der Entwicklungsumgebung angesehen.
Die umfangreichen Assistenten legen ein Haufen verschiedener Objekte an,
meistens an das Form gebunden und schlecht im gesamten Projekt zu verwenden.
Die Fragen, die sich für mich daraus ergeben sind folgende:
- welche Objekte brauche ich einmalig (z.B. DB-Connection ?!) und welche
mehrfach?
- sollte man eher den Assi oder besser die 'zu Fuß'-Methode im Code
verwenden, inbesondere dann, wenn man die Konfigurationen aus
Konfigurationsdateien einlesen und zur Laufzeit festlegen möchte? Oder
sollte man eine 'gesunde Mischung' aus beidem Einsetzen
- Welche Objekte und Methoden verwendet Ihr um Daten zu manipulieren oder
neue Datensàtze anzulegen?
- Verwendet Ihr Relationen auf dem Datenbankserver oder stellt ihr die
Integritàt der Datenbank durch Clientprozeduren sicher?
Ich würde ich freuen, wenn sich hier ein kleiner aber offener
Meinungsaustausch zu den angesprochenen Themen entwickeln könnte denn ich
kann mir vorstellen, dass viele dot.net-Anfànger vor solchen Design-Fragen
stehen, weil man Ihnen das gelibete DataSet geraubt hat :-)
Danke für jeden Tipp, Peter Charwat
 

Lesen sie die antworten

#1 Peter Fleischer
18/12/2007 - 06:06 | Warnen spam
"Peter Charwat" schrieb im Newsbeitrag
news:%

Nach meinem Umstieg von VB6 stehe ich nun vor meinem ersten Projekt mit
vb.net und Datenbankanbindung. In meinem Fall handelt es sich um eine
MySQL-Datenbank 5.



Hi Peter,
die erste Gegenfrage, die sich mir aufdràngt ist: "Warum gerade MySQL und
nicht eine zum .NET besser passende Datenbank, wie den kostenlosen SQL
Server 2005 Express, der auch .NET versteht?".

Also habe ich mir auf Empfehlung hin den MySQL-Provider von CoreLabs
besorgt und stehe nun vor dem Design.Das Datenbank-Design steht bereits
(von den DB-Admins), es sind etwa ein dutzend Tabellen, keine 'stored
procedures'.



Und warum ohne SP's?

Ich habe mich bereits in die Objekte des dot.net-Datenbank-Framkworks
eingelesen und mir die Assistenten in der Entwicklungsumgebung angesehen.
Die umfangreichen Assistenten legen ein Haufen verschiedener Objekte an,
meistens an das Form gebunden und schlecht im gesamten Projekt zu
verwenden. Die Fragen, die sich für mich daraus ergeben sind folgende:
- welche Objekte brauche ich einmalig (z.B. DB-Connection ?!) und welche
mehrfach?



Ohne die konkrete Aufgabenstellung zu kennen, kann man diese Frage nicht
erschöpfend beantworten. Wenn du mit ConnectionPooling arbeitest, ist es in
ADO.NET egal, wie viele Connection-Objekte angelegt werden. Wichtig ist bei
ConnectionPooling, dass die Verbindung nur so lange offen gehalten wird, wie
erforderlich. Eine starke Aufgliederung der Datenzugriffschicht in einzelne
Komponenten macht auch die Nutzung vieler Connection-Objekte erforderlich.
Andererseits bedeutet, dass viele Connection-Objekte auch mehr Ressourcen
erfordern. Wo da der Kompromiss liegt muss die Aufgabenstellung erkennen
lassen, ggf. auch eine Variantensimulation.

- sollte man eher den Assi oder besser die 'zu Fuß'-Methode im Code
verwenden, inbesondere dann, wenn man die Konfigurationen aus
Konfigurationsdateien einlesen und zur Laufzeit festlegen möchte? Oder
sollte man eine 'gesunde Mischung' aus beidem Einsetzen



Wie immer wird der optimale Weg die gesunde Mischung verschiedener Techniken
sein. Designer erlauben sehr effektiv ein Projekt zu erstellen. Der vom
Designer erzeugte Code bietet einen Standardablauf und ein abweichender
Ablauf erferdert u.U. einen gewaltigen Mehraufwand, den man sich bei
Programmierung ohne Designer ersparen kann. Ggf. muss auch hier über
Variantenbetrachtungen optimiert werden.

- Welche Objekte und Methoden verwendet Ihr um Daten zu manipulieren oder
neue Datensàtze anzulegen?



In der Oberflàche ist das eine Befehlsschaltflàche, eine Zeile für einen
neuen Datensatz in einen Listensteuerelement oder die Bedientechnologie, die
nach Ablauf der festgelegten Bedienfolgen automatisch einen neuen Datensatz
anlegt.

In der Geschàftslogik ist es der Aufruf einer Methode der
Datenzugriffschicht, die den verweis auf ein neues Datenobjekt zurückgibt.

In der Datenzugriffschicht ist die Erzeugung eines neuen Datenobjektes je
nach Ziel ein INSERT auf die Datenbank mit einer impliziten Instanzierung
eines Datenobejtes oder auch nur eine eplizite Instanzierung eines
Datenobjektes mit ggf. spàterer Ablage in den externen Datenspeicher.

- Verwendet Ihr Relationen auf dem Datenbankserver oder stellt ihr die
Integritàt der Datenbank durch Clientprozeduren sicher?



Relationen zwischen den Tabellen im externen Datenspeicher bietet Vorteile
bei Kontrolle der Integrietàt, bei Lösch- und Aktualisierungsweitergabe.
Viel wichtiger sind aber SP's, ggf. mit Triggern, eingebettet Logik, UDP',
UDF's und ggf. auch UDT's und CTE's. So etwas ist aber mit MySQL nicht
machbar und muss in die im Client zu implentierende Logik eingebaut werden.

Ich würde ich freuen, wenn sich hier ein kleiner aber offener
Meinungsaustausch zu den angesprochenen Themen entwickeln könnte denn ich
kann mir vorstellen, dass viele dot.net-Anfànger vor solchen Design-Fragen
stehen, weil man Ihnen das gelibete DataSet geraubt hat :-)



Wer hat denn das DataSet geraubt? Wenn man den Designer und beispielsweise
den SQL Server 2005 nutzt, wird auch ein typisiertes DataSet angelegt. Warum
das bei dir mit MySQL nicht funktioniert, kann ich nicht sagen.

Peter

Ähnliche fragen