Мне нужно заново реализовать приложение, использующее базу данных с плохой структурой таблиц.
У таблиц есть первичный ключ, но они не используют никаких внешних ключей. Все «контролируется» логикой приложения.
Но я не могу нормализовать таблицы, потому что они используются другим приложением, которое заполняет таблицы.
Есть ли возможность реализовать в моем новом приложении уровень абстракции, чтобы упростить доступ к базе данных?
Но что, если я хочу сохранить данные обратно в базу данных? В этом случае представление SQL не подходит.
Вы не указываете, какую базу данных используете, но в большинстве из них вы можете обновлять представления, если представления созданы в соответствии с некоторыми рекомендациями. Наиболее важным является то, что представление должно включать PK и иметь отношение 1: 1 с базовыми таблицами. Проверьте вашу конкретную базу данных на предмет правил.


Добавление уровня доступа к данным или шаблона репозитория создаст красивую абстракцию над вашей базой данных, которую вы можете программировать, и скроет уродство этой структуры базы данных. Затем вы можете представить, что внизу есть красивая, чистая, нормализованная структура. Это также дает вам возможность усилить часть этой ссылочной целостности и создать компенсирующее поведение при ее нарушении (создание исключений, исключение детей-сирот и т. д.).
Попробуйте использовать просмотры.