Системные ограничения в работе с базой данных
При проектировании объектной модели следует учитывать системное ограничение СУБД. Важно:
- хранить в объектах только необходимые поля;
- удалять неактуальные поля.
Рассмотрим этот вопрос подробнее.
Для выборки экземпляров объектов из базы данных (БД) используется SQL-запрос вида SELECT Field1, Field2… FieldN FROM Table, где Field – поля объекта.
Количество полей, которые можно запросить из БД, ограничивается системными возможностями СУБД:
- MS SQL ограничивает выборку 4098 полями;
- СУБД Oracle ограничивает выборку 1000 полями.
Каждое поле таблицы запрашивается поименно, чтобы в дальнейшем перевести его в правильное свойство объекта. Поэтому нельзя использовать SQL-запрос вида SELECT * FROM Table.
Важно: для иерархических сущностей в SQL-запросе указываются поля наследников. Возможны два варианта:
- При получении конечного типа сущности, у которого уже нет наследников, выборка состоит из таблицы этого типа и таблиц его родительских типов.
- При получении объектов базового типа выборка состоит из таблицы базового типа, таблиц родительских типов и всех таблиц наследников. Например, при поиске объектов типа Документ система выбирает все поля типа Документ и все поля его наследников (Файл, Акт и др.). Таким образом, в выборке накапливаются все поля всех документов и их число может превысить ограничение БД на количество выбираемых полей.