28 Stimmen

Was ist wichtiger? DB-Design oder Kodierung?

Was ist wichtiger: Der Entwurf der Datenbank? Oder das Design des Anwendungscodes?

Es gibt eine Menge Informationen über wiederverwendbaren Code (von Carl Franklin bei dnrtv.de , CSLA.net et. al.), aber ich sehe nicht allzu viele Informationen über das Datenbankdesign und seine Auswirkungen auf die Lebensdauer einer Anwendung (insbesondere, wie sich schlechte Designentscheidungen in der Anfangsphase auf die Anwendung in ihrem späteren "Leben" auswirken).

3 Stimmen

Subjektiv und argumentativ, Sie müssen wahrscheinlich zwei Fragen stellen, und zwar getrennt nach den Gründen für die jeweilige Bedeutung, nach den Vor- und Nachteilen des jeweiligen Ansatzes usw.

11 Stimmen

Ich denke, die Frage ist in Ordnung.

3 Stimmen

Ich stimme zu, ich denke, die Frage ist in Ordnung, da es sich um eine vergleichende Frage handelt.

2voto

dkretz Punkte 36862

Ich sehe schon, dass ich stromaufwärts schwimmen werde, aber ich bin ziemlich stark davon überzeugt, dass Software die Antwort auf Ihre Frage ist.

Während sich Ihre Software an ein schwaches Schema anpassen kann, kann Ihnen Ihre Datenbank nicht viel helfen, wenn Ihre Software nicht funktioniert. Ich hatte schon einige Fälle, in denen ich eine beliebte Front-End-Anwendung komplett neu aufbauen konnte, ohne dass es zu ernsthaften Störungen kam, weil die Benutzer die Datenbank nicht direkt sehen. (Was nicht der Fall sein wird, wenn die Software Mist ist.)

Ich würde also sagen, dass man sich zuerst um die Dinge kümmern sollte, die dem Nutzer am nächsten sind.

1 Stimmen

Das Problem ist, dass ein schlechtes Datendesign die Entscheidungen für das Codedesign beeinflussen kann. Zum Beispiel, wenn Sie feststellen, dass Sie aufgrund eines Leistungsdefizits, das durch eine schlechte Datenbankstruktur oder -beziehung entsteht, einen Designkompromiss eingehen müssen. Dies geschieht häufig, wenn Datenbanken nicht auf der richtigen Ebene normalisiert sind (entweder zu stark normalisiert oder nicht normalisiert).

1 Stimmen

Um meinen Gedanken zu Ende zu führen: Es ist viel einfacher, Code zu refaktorisieren als eine Datenbank zu refaktorisieren.

0 Stimmen

Da ich viel mit beidem zu tun hatte, ist meine Erfahrung eher andersherum. Ein guter Datenbankentwickler kann eine Datenbank viel effektiver und schneller refaktorisieren, als es nötig ist, eine umfangreiche Codebasis zu refaktorisieren. Ich würde mich gerne jederzeit mit Ihnen im Einzelkampf messen.

2voto

yetanotherdave Punkte 234

Ich werde nicht versuchen, viele der bisher gemachten guten Kommentare zu wiederholen. Auch werde ich keine Zeit darauf verwenden, die ebenfalls gemachten zweifelhaften Aussagen zu identifizieren.

Ich möchte jedoch folgende Punkte hinzufügen.

Wenn Sie wie die meisten Menschen sind, beziehen Sie sich in Ihrer Frage auf ein RDBMS als Datenbank. Ein RDBMS ist im Wesentlichen ein Slave. Es lauscht an einem Port und ist verpflichtet, alle Anfragen zu bearbeiten, die über diesen Port eingehen. Es hat keine Möglichkeit zu wissen, welche dieser Anfragen einfach nur dumm oder unklug sind. Daher kann auch die perfekteste DB so missbraucht werden, dass sie den Server blockiert. Dies impliziert, dass der Code wichtiger ist. DBAs sind überall zu finden, wo sie sich die Haare raufen angesichts der dummen Dinge, die Anwendungsentwickler auf die von ihnen verwalteten Server werfen.

Der beste Rat, den ich Ihnen zu diesem Thema geben kann, ist also sicherzustellen, dass der Zugriff auf die DB über eine API erfolgt, die von demselben Entwickler geschrieben wurde, der auch die DB entworfen hat. Machen Sie es zur Aufgabe eines Mannes (oder einer Gruppe, die demselben Mann unterstellt ist), dafür zu sorgen, dass solide Designentscheidungen für beide getroffen werden. Wenn Sie dieser Typ sind, dann sparen Sie nicht an dem einen auf Kosten des anderen. Entwerfen Sie Ihre API so, dass ein Refactoring der DB für die Clients der API transparent durchgeführt werden kann.

2voto

Dan Breslau Punkte 11294

In gewisser Weise kann man beides nicht trennen: DB-Design ist Kodierung - es ist nur keine Kodierung in einer prozeduralen Sprache.

Ich habe jedoch auch schon mit Systemen gearbeitet, die schlecht konzipierte prozedurale Software hatten, und ich habe mit Systemen gearbeitet, die schlecht konzipierte Datenbankschemata (Schemata?) hatten. Meiner Erfahrung nach ist es aufgrund von Upgrade- und Kompatibilitätsproblemen viel schwieriger, die Schemata zu reparieren. Ich kann mir Systeme vorstellen, bei denen dies nicht der Fall war.

2voto

Rob Allen Punkte 16773

Ich glaube nicht, dass man die beiden so trennen kann, wie Sie es beschreiben. Das eine beeinflusst unweigerlich das andere. Ein solides Datenbankdesign, das leicht zu pflegen ist und eine gute Leistung erbringt, bedeutet beispielsweise weniger Codeänderungen. Eine gute Code-Architektur und ein gutes Verständnis Ihrer Anwendungsfälle führen zu einem sauberen und wartbaren Datenbankschema.

Für mein Geld würde ich mehr für eine solide Geschäftsschicht ausgeben und meine Datenbank so aufbauen, dass sie diese unterstützt, aber das ist mein Wissensvorsprung.

1voto

Dhaust Punkte 5430

Beide sind natürlich wichtig, es ist eine symbiotische Beziehung.

Aber wenn Ihre DB defekt ist, kann kein noch so guter Code Ihre Anwendung zum Strahlen bringen.

Wenn Ihre DB jedoch wirklich gut ist, kann guter Code sie noch besser machen (aber schlechter Code kann sie immer noch ruinieren).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X