Подтвердить что ты не робот

Каковы наилучшие методы разработки баз данных с Delphi?

  • Как я могу использовать продукт RAD продуктивно (повторное использование кода). Любые образцы, существующие библиотеки, базовые crud генераторы?
  • Как я могу создать способ ООП? Который   шаблоны проектирования для   соединение, абстрагирование разных   уровни доступа для двигателей /db   (bde-dbexpress-ado), базовый CRUD   операции.
4b9b3361

Ответ 1

У меня есть собственная платформа Delphi/MySQL, которая позволяет мне быстро добавлять новые экраны. Я не буду делиться этим, но я могу описать подход, который я принимаю:

Я использую интерфейс с вкладками с иерархией на основе TFrame. Я создаю вкладку и свяжу TFrame с ней.

Я позабочусь о всех кроп-сантехнике и concurrency, используя стандартную реализацию хранимой процедуры mysql. CustomerSEL, CustomerGET, CustomerUPD, CustomerDEL и т.д.

Моя основная форма по существу содержит панель навигации и панель, содержащую TPageControl

Пример классов в моей иерархии

TFrame TMFrame - мой вывод, с реализациями интерфейса, которые захватывают OnShow, OnHide и некоторые другие особенности

- TWebBrowserFrame --TDataAwareFrame --TObjectEditFrame   --TCustomerEditFrame   --TOrderEditFrame и т.д... --TObjectListFrame   --TCustomerListFrame

и т.д...

и некоторые диалоги.

TDialog TMDialog --TDataAwareDialog   --TObjectEditDialog     - TContactEditDialog     и т.д..   --TObjectSelectDialog     --TContactSelectDialog

и т.д...

Когда я добавляю новый объект для управления, это может быть новый атрибут клиентов, скажем, мы хотим отслеживать, какие транспортные средства принадлежит клиенту.

создать таблицу CustomerVehicles Я запускаю свой специальный генератор sproc, который создает мои SEL, GET, UPD, DEL проверьте эти...

Выведите из базовых классов, упомянутых выше, отбросьте некоторые элементы управления. Добавьте вкладку в TCustomerEdit.

Delphi всегда представляет собой набор данных как абстрактный слой, выставляя это в свой графический интерфейс через DataSources. Добавьте набор данных в модуль данных клиента и "зарегистрируйте его". Моя собственная пользовательская функция в моем классе datamodule, TMDataModule

Контроль безопасности аналогичным образом рассматривается в рамках. Я регистрирую компоненты, для которых требуется, чтобы флаг безопасности был видимым или включенным.

Обычно я могу добавить новый объект, построить sprocs, добавить экраны обслуживания в течение часа.

Конечно, это обычно просто начало, обычно когда вы что-то добавляете, вы используете его больше, чем отслеживание. Если это приложение для гаража, мы хотим добавить автомобиль, привезенный клиентом в гараж, удостоверьтесь, что мы можем отслеживать историю. Но даже так, это быстро.

Я попробовал субконтрактинг для младших парней, использующих "новые инструменты для разработки", и они никогда, кажется, не верят мне, когда я говорю, что я могу сделать это все в десять раз быстрее с Delphi! Я могу сделать через два часа без ошибок, что, кажется, займет у них два дня, и у них все еще есть ошибки...

DO - будьте осторожны, планируя свой VFI! Как уже упоминалось, если вы хотите изменить имя компонента на одном из родительских классов, будьте готовы к неприятностям. Вам нужно будет открыть и "отредактировать" каждого ребенка в иерархии, даже если вы очистите DCU, у вас все еще может быть адский DFM. Уверяю вас, в 2006 году это все еще проблема.

НЕ создайте один datamodule монстра

Не торопитесь в авангарде дизайна, рефакторинг после того, как вы создали тонну иждивенцев, может быть интересной задачей, но это кошмар, когда вам нужно быстро получить что-то новое!

Ответ 2

Будьте очень осторожны, если вы используете "поместить каждый объект БД в один большой модуль данных" (или "несколько больших датамодулей" в огромных приложениях). Это может сделать ваш проект имеющим модуль данных настолько большим, что вам придется используйте HD-монитор, чтобы увидеть все TXDataset на этом datamodule
Итог: переключиться на использование специализированных классов для бизнес-логики вместо больших глобальных модулей данных. Использовать глобальные модули данных с логикой ТОЛЬКО в очень маленьких проектах.

Ответ 3

Хорошо, я настоятельно рекомендую вам использовать Actions (TActionList) при разработке вашего пользовательского интерфейса. Существует множество предопределенных действий, включая операции Next/Prev/Insert/Delete/Edit/Update, которые могут выполняться на наборах данных, поэтому рекомендуется использовать эти действия и связывать их с кнопками/меню в ваших формах. Это предотвращает повторный код для логики пользовательского интерфейса.

Нет необходимости в генераторе CRUD для Delphi!! Добавьте TDataSource, TDBGrid и TActionList в форму, добавьте предопределенные действия источника данных в список действий, привяжите эти действия к кнопкам или меню, и все готово!

Ответ 4

Для больших приложений я использую tiopf. Это позволяет мне легко обращаться с объектами, а не с наборами данных и свопами баз данных. Большая часть моей бизнес-логики перемещается в модель бизнес-объекта (BOM), и мои формы довольно тупые. tiopf имеет несколько способов связать спецификацию с формами; контролируемые с точки зрения устойчивости, Ttidataset для управления данными и классы посредников Mogel Gui для подключения к обычным элементам управления.

Для небольших и быстрых приложений я просто использую модули данных и компоненты базы данных. Главное, что нужно запомнить:

  • Поместите как можно больше кода в модули данных (и как можно меньше в формах).
  • Разделите несколько модулей данных по функциональности, например, модуль электронной почты, модуль дохода, модуль выставления счетов...
  • Тестирование, тестирование, тестирование

Ответ 5

Использовать VFI (наследование визуальной формы). Создайте стандартную форму БД. Например, пустой DataSet, DataSource, PageControl, состоящий из 2-х листов. Сначала будет пусто, позже вы добавите элементы управления редактирования для управления данными в дочерних формах. Добавьте DBGrid ко второму листу. Остерегайтесь, но это не способ ООП, но это легко и быстро.