2009-11-12 3 views
7

Я знаю, как выглядит этот вопрос, но я довольно серьезный. Я пытаюсь создать приложение, которое поможет мне в изучении баз данных (sql, запросов, правильной конструкции базы данных и т. Д.). Я использую проект домашних животных на работе, поэтому у меня есть кое-что, чтобы сосредоточиться на реальных требованиях. Оригинальный проект был написан («Frankensteined together», как сказал автор оригинала) через MS Access. Я хотел бы узнать, как сделать это лучше с помощью SQLite, но не знаю, как воссоздать другие функции.Как мне сократить разрыв между моим дизайном базы данных и дизайном пользовательского интерфейса?

Использование этого сайта как способ взаимодействия с программистами и разработчиками (я не работаю с ними), я до сих пор читал все Database Design for Mere Mortals, как рекомендовано в this. Итак, у меня есть небольшой дизайн базы данных, который я планирую реализовать с помощью SQLite.

Я также проверил, как создать пользовательский интерфейс для приложения с помощью макетов Balsamiq, и представил некоторые идеи моей потенциальной базе пользователей (мои сверстники в моей команде), чтобы они дали отзыв.

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

Однако часть, которая выпадает для меня, заключается в том, как преодолеть разрыв между двумя проектами? Я понимаю, что, очевидно, здесь происходит кодирование, но на сегодняшний день я ничего не сделал с графическим интерфейсом. Поиск вокруг, я, кажется, не нашел ничего как окончательный, чтобы помочь мне (книга, веб-сайт, даже процесс, чтобы следовать), пытаясь на самом деле написать приложение.

Я знаю Perl в некоторой степени, но использовал его только для приложений с командной строкой; Я мог бы использовать модуль Win32 :: GUI, но я действительно не понимаю различия между программированием графического интерфейса и программированием в командной строке, кроме как просто знаю, что они разные.

Есть ли модель или руководство по разработке GUI? Существуют ли конкретные ресурсы для привязки приложения к базе данных?

+5

Вы просто задали вопрос, который потенциально может потреблять два или более семестра в учебной программе по информатике. –

+0

Я думал, что это возможно. Но эти семестры будут основаны на книге, верно? :) – romandas

+0

Вы обнаружили http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch – TrueWill

ответ

9

Общая картина, которая следует в настоящее время является:

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

Где

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

погуглить каждый из этих терминов должно дать вам достаточно хорошее представление о том, где начать. Обратите внимание, что вам не всегда нужен каждый слой. Например, BLL и View Model могут быть необязательными, если приложение достаточно мало.

См. Также Model View Controller (MVC) для веб-разработки и Model View Presenter (MVP) или Model View ViewModel (MVVM) для разработки настольных систем.

Хотя учебное пособие NerdDinner является специфичным для Microsoft/Web, оно содержит все эти понятия в одном месте.

+0

Хорошие моменты, однако я верю, что люди часто пытаются слишком сильно абстрагироваться от BLL. – Woot4Moo

+0

Что NerdDinner выглядит довольно полезно, спасибо! – romandas

0

Middleware - это еще один термин, который вы можете увидеть брошенным вокруг того, что вы описываете.

сама база данных может представлять собой сочетание нескольких различных точек:

  1. Хранимые процедуры - Это будет использоваться вместо прямого доступа к таблицам и обеспечивает уровень абстракции.
  2. Таблицы или представления - прямой доступ к именам столбцов, которые могут быть полезны, если вы создаете легкое приложение.
  3. Сочетание двух. Некоторым таблицам можно было получить прямой доступ, тогда как другие операции с базами данных выполняются с помощью хранимых процедур.

Пользовательский интерфейс может быть только слоем презентации или может иметь пару других слоев, привязанных к нему, поскольку для создания веб-приложений можно использовать комбинацию слоев ASP.Net, включая C#, HTML и JavaScript.

Смежные вопросы