Фреймворк для работы с БД в Lazarus

Задумываюсь о создании своего набора компонентов для комфортной работы с БД (предполагаю поддержку пока только MySQL). Зачем нужно? Ну тут развернутый ответ. Есть вероятность что просто не умею работать правильно с БД, потому и вывешиваю данный пост здесь, народ чего скажет…

В бытность разработки приложения для учета оргтехники (обсуждение здесь, ссылка на сайте разработчика здесь) столкнулся со следующими проблемами:

  • трудно отслеживать взаимосвязи между таблицами. Т.е. например удалил одну запись в какой-то таблице, нужно самому программно отслеживать чтоб были удалены все связанные записи в других таблицах.
  • трудно реализуемо понятие «помечено на удаление». Все приходится отслеживать самому программно. Собственно потому в программе такое и не реализовал, гемор страшнейший.
  • затруднительна работа с «блокировкой» записи, при многопользовательской работе. Возможно и есть что-то на уровне MySQL, но хотелось бы реализовать более внятно и понятно на уровне «да запись редактируется уже тем то и темто».

 

Что планирую реализовать:

  • компонент который позволит создавать структуру БД и хранить оную (структуру) в XML файле.  В нем будут описываться все взаимосвязи между таблицами.
  •  компонент который будет использовать этот XML файл, и собственно будет «прослойкой» при работе с БД. Т.е. все запросы будут выполнятся через него. Как то, добавление, удаление,редактирование.
  • прозрачно будет реализовано понятие «помечено на удаление». Т.е. например ставишь «помеченными на удаление» запись в таблице, все связанные записи тоже автоматически будут «помечены на удаление».
  • точно также с «физическим» удалением записей. Все связанные записи будут удалены автоматически.
  • упрощена работа с блокировками. При запросе редактирования/удаления компонент будет проверять редактируется эта таблица уже кем-то или нет.

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

Осуждение поста здесь

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.