logo

Системные ограничения в работе с базой данных

При проектировании объектной модели следует учитывать системное ограничение СУБД. Важно:

  • хранить в объектах только необходимые поля;
  • удалять неактуальные поля.

Рассмотрим этот вопрос подробнее.

Для выборки экземпляров объектов из базы данных (БД) используется SQL-запрос вида SELECT Field1, Field2… FieldN FROM Table, где Field – поля объекта.

Количество полей, которые можно запросить из БД, ограничивается системными возможностями СУБД:

  • MS SQL ограничивает выборку 4098 полями;
  • СУБД Oracle ограничивает выборку 1000 полями.

Каждое поле таблицы запрашивается поименно, чтобы в дальнейшем перевести его в правильное свойство объекта. Поэтому нельзя использовать SQL-запрос вида SELECT * FROM Table.

Важно: для иерархических сущностей в SQL-запросе указываются поля наследников. Возможны два варианта:

  1. При получении конечного типа сущности, у которого уже нет наследников, выборка состоит из таблицы этого типа и таблиц его родительских типов.
  2. При получении объектов базового типа выборка состоит из таблицы базового типа, таблиц родительских типов и всех таблиц наследников. Например, при поиске объектов типа Документ система выбирает все поля типа Документ и все поля его наследников (Файл, Акт и др.). Таким образом, в выборке накапливаются все поля всех документов и их число может превысить ограничение БД на количество выбираемых полей.