Tabellenbeziehungen im Dataset und Datenbank notwendig?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Tabellenbeziehungen im Dataset und Datenbank notwendig?

    Bitte nicht vierteilen,
    (macht 8 oder 9 Teile draus) :)
    Ich habe mich ma spaßenshalber mit Entity-Framework befasst, weil ich der Meinung war: Schöne Sache, Tabellen Easy zusammengeklickt, Beziehungen spielend hinzugefügt und denn machich da ne DB draus (am letzten Punkt bin ich gescheitert, is aber anneres Thema). Nachdem ich diesen Beitrag hier im Forum gelesen hab. hab ich das auch beendet.
    Mich stört es etwas, dass die Beziehungen der Tabellen im DB-Designer nicht graphisch dargestellt werden sondern erst im verbundenen Dataset. Auch Aktualisierungen nach Änderungen in der DB machen es oft schwer, weil die Tabelle neu auf den Designer gezogen werden muß usw.
    Ist es eigentlich zwingend notwendig, die Beziehungen schon in der DB hinzuzufügen oder reicht es evtl. dort die Tabellen "reinzuhaun" und die Beziehungen im Dataset-Designer zu pflegen. Ich find, des geht dort einfacher...

    Fiele Grütze

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Ich nehme an, die Rede ist vom SqlServer. Weil Access hat einen ganz fabelhaften Designer für Beziehungen.

    Und vmtl. meinst du mit "DB-Designer", wenn man im VS im Server-Explorer die Eigenschaften von Tabellen verändern will - das finde ich auch das letzte an Kultur, und ich kapier nicht, wies kommt, dass sich sone Gurke ("Designer" kann man das garnet nennen) unter den VisualStudio-Tools befindet - MS weiß doch, wies besser geht.

    Aber das SqlServer2008-Management-Studio hat die Option, "DatenbankDiagramme generieren", und mit diese Diagramme kann man glaub ganz gut arbeiten, vergleichsweise.

    ErfinderDesRades schrieb:

    Weil Access hat einen ganz fabelhaften Designer für Beziehungen.
    Hab ich leider nicht zur Verfügung.

    Und ja, ich mein diesen unseeligen Datenbankexplorer im VS :evil:

    ErfinderDesRades schrieb:

    Aber das SqlServer2008-Management-Studio hat die Option, "DatenbankDiagramme generieren"
    Und wie komm ich da dran?
    Sry, wenn ich mich so blöd anstelle :) Ich hab mir des Teil runtergeladen (~191MB) und denn kommt der SQL-Server Installationscenter und des wars 8| . Trotzdem hättich gern mal mit SqlServer2008-Management-Studio rumprobiert (Wegen Entity-Designer)...
    Nun kann ich mich nicht rühmen, mich mit Servergeschichten wirklich beschäftigt zu haben, das is für mich ne große Unbekannte, wo ich nicht wirklich verstehe. Und das, obwohl ich eigentlich mal in weiterer Zukunft ne Mehrbenutzergeschichte aufbauen will.

    Schließlich die Idee, die Beziehungen ausschließlich im Dataset Designer anzulegen. Im Grunde ist ja das Anlegen der Tabellen-Beziehungen im Datenbankexplorer nur interessant, um die Struktur für mehrere anwendungen identisch zur Verfügung zu haben. Solang nur 1 Anwendung auf die DB aufsetzt, könnte doch theoretisch das Pflegen der Beziehungen im Dataset-Designer reichen (Oder gibs da Fallen, die ich nur nicht überblicke?).
    Mein gestriger Versuch damit ist leider mißglückt, weil ich mir irgendwie Code im DS-Deseigner.vb abgeschossen hab. Tableadapter einzeln updaten ging, bei Updateall waren Tableadapters Nothig ?( und es wurde nicht gespeichert. Die laufenden Änderungen in DB und Dataset wurden da iwie nicht übernommen (Gibs da ne Möglichkeit, den Code im DatasetDesigner.vb neu generieren zu lassen?

    Fiel Grütze

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Vatter schrieb:

    ErfinderDesRades schrieb:

    Aber das SqlServer2008-Management-Studio hat die Option, "DatenbankDiagramme generieren"
    Und wie komm ich da dran?
    Also wenn du meinst, ich sei eine Leuchte, was Enrichten von EDV-Dingen jeder Art anginge - da mussichdich enttäuschen.
    In diesem Bereich lebe ich voll meine weibliche Seite aus, ums mal subtil sexistisch auszudrücken ;).

    ...in weiterer Zukunft ne Mehrbenutzergeschichte aufbauen will.
    wäre doch jetzt ein geeigneter Anlaß, sein Knowhow abzurunden.

    Schließlich die Idee, die Beziehungen ausschließlich im Dataset Designer anzulegen.
    Dassis das blöde an dieser ganzen Dataset/OR-Mapper - Geschichte: Das Datenmodell ist sowohl inne DB als auch im Client definiert - ganz klassische Redundanz-Kacke, mit vorbildlich typischen Wartungs-Problemen.
    Und logisch geht dir das auf die Nerven.
    Und ebenfalls logisch versucht MS (und ühaupt die Programm-Wissenschaft), mit Generatoren diese leider erforderlichen redundanten Definitionen wenigstens zu automatisieren, aber im Grunde ist das Workaround.
    Mit EF und SqlServer hat MS die Sache ziemlich rund gemacht, also SqlServer kann EF generieren, und EF kann SqlServer-DBs generieren - die wollen halt ihren Server verkaufen.

    Im Grunde ist ja das Anlegen der Tabellen-Beziehungen im Datenbankexplorer nur interessant, um die Struktur für mehrere anwendungen identisch zur Verfügung zu haben.
    Also meinem OrdnungsSinn widerstrebte es sehr, wenn man ein Datenmodell nicht aus der DB richtig erkennen könnte.

    Darüberhinaus tun die Relationen inne DB auch was, nämlich wenn Löschweitergabe eingestellt ist.
    Also meine DBExtensions verlassen sich darauf, dass wenn im Dataset Löschweitergabe besteht, dass dann die DB auch so funktioniert.
    Dann kann man sich sparen, ChildRows von gelöschten auch noch zur Löschung an die DB zu senden - ein enormer Performance-Boost für diesen Spezialfall.

    Weiters sorgen die für Sicherheit.
    Wenn du Mist abspeicherst, kriegst du gleich eine Exception, und das ist die Rettung.
    Andernfalls käme der Mist in die DB, und würde wahrscheinlich die Anwendung und v.a. den gesamten Datenbestandes schrotten.
    Denn die App würde anschließend bei jedem Start abstürzen. Das ist dann nicht mehr witzig, der Verlust zB des Kunden-Datenbestandes kann glaub eine Firma konkurs machen.
    (Also theoretisch - praktisch kann glaub eh keine Firma existieren, wo dermaßen dämliche Leuts arbeiten, dasses ühaupt möglich ist, den Kunden-Datenbestand vollständig zu verlieren. ;))

    Nee, denn doch lieber SqlManagementStudio installieren und bedienen lernen.

    Oder aber - meine Strategie - die gesamte App DatasetOnly ganz fertig entwickeln, und erst zuallerletzt eine DB hinterlegen.
    Weil während der Entwicklung nervt die Datenmodell-Redundanz doch zum Haare ausrupfen, findich.

    ErfinderDesRades schrieb:

    Oder aber - meine Strategie - die gesamte App DatasetOnly ganz fertig entwickeln, und erst zuallerletzt eine DB hinterlegen.
    Weil während der Entwicklung nervt die Datenmodell-Redundanz doch zum Haare ausrupfen, findich.
    Tät ich auch favorisieren. Nur denn schreibst man die ganzen Spaltennamens, unique-Einstellungen und Beziehungen gleich 2 mal. Oder versteh ich da was falsch?

    ErfinderDesRades schrieb:

    Darüberhinaus tun die Relationen inne DB auch was, nämlich wenn Löschweitergabe eingestellt ist.
    Das war der entscheidende Hinweis!
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Vatter schrieb:

    Nur denn schreibst man die ganzen Spaltennamens, unique-Einstellungen und Beziehungen gleich 2 mal. Oder versteh ich da was falsch?

    Erstmal schreibt man sie ja nur einmal, nämlich im Dataset.

    Tatsächlich schreibt man sie aber ziemlich viele Male, denn im Verlauf der Entwicklung isses durchaus üblich, dass ein DatenModell verbessert werden kann.
    Auch hier ist DatasetOnly IMO die beste Strategie, denn je umständlicher solche Änderungen sind, desto mehr ist man geneigt, irgendwie weiteruwursteln, ohne Revision des Datenmodells.
    Geneigt also, sich auf Holzwege zu begeben.
    Und Holzwege sind numal um so schrecklicher, je weiter man auf ihnen "vorankommt".

    Jo, und ganz zuletzt schreibste dann halt die letzte Version 2 mal - aber dassisdoch zu verschmerzen und in wenigen Stunden erledigt, bei Anwendungen, an denen man Monate gesessen ist.

    Also je später, desto besser, und sollte am Ende "niemals" dabei herauskommen - umsobesser :)