Фреймворк для работы с БД в Lazarus
Задумываюсь о создании своего набора компонентов для комфортной работы с БД (предполагаю поддержку пока только MySQL). Зачем нужно? Ну тут развернутый ответ. Есть вероятность что просто не умею работать правильно с БД, потому и вывешиваю данный пост здесь, народ чего скажет…
В бытность разработки приложения для учета оргтехники (обсуждение здесь, ссылка на сайте разработчика здесь) столкнулся со следующими проблемами:
- трудно отслеживать взаимосвязи между таблицами. Т.е. например удалил одну запись в какой-то таблице, нужно самому программно отслеживать чтоб были удалены все связанные записи в других таблицах.
- трудно реализуемо понятие «помечено на удаление». Все приходится отслеживать самому программно. Собственно потому в программе такое и не реализовал, гемор страшнейший.
- затруднительна работа с «блокировкой» записи, при многопользовательской работе. Возможно и есть что-то на уровне MySQL, но хотелось бы реализовать более внятно и понятно на уровне «да запись редактируется уже тем то и темто».
Что планирую реализовать:
- компонент который позволит создавать структуру БД и хранить оную (структуру) в XML файле. В нем будут описываться все взаимосвязи между таблицами.
- компонент который будет использовать этот XML файл, и собственно будет «прослойкой» при работе с БД. Т.е. все запросы будут выполнятся через него. Как то, добавление, удаление,редактирование.
- прозрачно будет реализовано понятие «помечено на удаление». Т.е. например ставишь «помеченными на удаление» запись в таблице, все связанные записи тоже автоматически будут «помечены на удаление».
- точно также с «физическим» удалением записей. Все связанные записи будут удалены автоматически.
- упрощена работа с блокировками. При запросе редактирования/удаления компонент будет проверять редактируется эта таблица уже кем-то или нет.
Не хочется изобретать велосипед. Если нечто подобное уже где-то реализовано, ткните носом?
Осуждение поста здесь