8 Stimmen

Wie überbrücke ich die Kluft zwischen meinem Datenbankdesign und dem Design der Benutzeroberfläche?

Ich weiß, wie diese Frage aussieht, aber ich meine es ernst. Ich versuche, eine Anwendung zu erstellen, die mir beim Erlernen von Datenbanken (SQL, Abfragen, richtiges Datenbankdesign usw.) helfen soll. Ich verwende ein Lieblingsprojekt bei der Arbeit, damit ich etwas habe, auf das ich mich mit tatsächlichen Anforderungen konzentrieren kann. Das ursprüngliche Projekt wurde mit MS Access geschrieben ("zusammengebastelt", wie der ursprüngliche Autor sagte). Ich würde gerne lernen, wie man es mit SQLite besser machen kann, weiß aber nicht, wie man die anderen Funktionen von Access wiederherstellen kann.

Ich nutze diese Website, um mich mit Programmierern und Entwicklern auszutauschen (ich arbeite nicht mit ihnen zusammen), und habe bis jetzt alle folgenden Artikel gelesen Datenbankdesign für Normalsterbliche wie empfohlen in ce Frage. Also, ich habe einen netten kleinen Datenbankentwurf, den ich mit SQLite implementieren möchte.

Ich habe auch herausgefunden, wie man mit den Mockups von Balsamiq eine Benutzeroberfläche für die App entwirft, und habe meiner potenziellen Benutzerbasis (meinen Kollegen in meinem Team) einige Ideen vorgelegt, damit sie mir Feedback geben können.

            Database --> <insert code here> --> User Interface

Was ich jedoch nicht verstehe, ist, wie ich die Lücke zwischen den beiden Entwürfen schließen kann. Mir ist klar, dass da natürlich die Programmierung ins Spiel kommt, aber bisher habe ich noch nichts mit einer grafischen Benutzeroberfläche gemacht. Ich habe mich umgesehen und nichts gefunden. als endgültig (ein Buch, eine Website, sogar ein Verfahren, das ich befolgen muss), um die App tatsächlich zu schreiben.

Ich kenne Perl bis zu einem gewissen Grad, habe es aber nur für Befehlszeilenanwendungen verwendet; ich könnte das Win32::GUI-Modul verwenden, aber ich verstehe nicht wirklich die Unterschiede zwischen GUI-Programmierung und Befehlszeilenprogrammierung, außer dass ich weiß, dass sie verschiedene .

Gibt es ein Modell oder einen Leitfaden für die GUI-Entwicklung, dem man folgen kann? Gibt es spezielle Ressourcen für die Verknüpfung einer Anwendung mit einer Datenbank?

9voto

Robert Harvey Punkte 173098

Das allgemeine Muster, das heutzutage befolgt wird, ist folgendes:

Database -> DAL -> BLL -> Controller -> View Model -> UI

Wo

DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer

Wenn Sie jeden dieser Begriffe googeln, sollten Sie eine gute Vorstellung davon bekommen, wo Sie anfangen können. Beachten Sie, dass Sie nicht immer jede Ebene benötigen. Die BLL und das View Model können zum Beispiel optional sein, wenn die App klein genug ist.

Siehe auch Model View Controller (MVC) für die Web-Entwicklung und Model View Presenter (MVP) oder Model View ViewModel (MVVM) für die Desktop-Entwicklung.

Obwohl die NerdDinner Tutorial ist Microsoft/Web-spezifisch, es enthält alle diese Konzepte an einem Ort .

0voto

JB King Punkte 11972

Middleware ist ein weiterer Begriff, der für das, was Sie beschreiben, in den Raum geworfen wird.

Die Datenbank selbst kann eine Kombination aus verschiedenen Punkten sein:

  1. Gespeicherte Prozeduren - Diese werden anstelle des direkten Zugriffs auf Tabellen verwendet und bieten eine Abstraktionsebene.
  2. Tabellen oder Ansichten - Direkter Zugriff auf Spaltennamen, was bei der Erstellung einer leichtgewichtigen Anwendung nützlich sein kann.
  3. Kombination von beidem. Auf einige Tabellen kann direkt zugegriffen werden, während andere Datenbankaktivitäten durch gespeicherte Prozeduren ausgeführt werden.

Die Benutzeroberfläche kann nur eine Präsentationsschicht sein oder mit einer Reihe anderer Schichten verbunden sein, da man eine Kombination von ASP.Net-Schichten einschließlich C#, HTML und JavaScript für die Erstellung von Webanwendungen verwenden kann.

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