Моделирование квазиструктурированных данных
Использование квазиструктурироваииой информации в базах данных встречается значительно реже, чем иерархические структуры. Это возникает в большей части из-за того, что такого рода информация редко появляется в предметных областях и сложна в обработке. Тем не менее, когда структура данных имеет сложности в ее определении, возникает потребность в организации квазиструктурированных представлений данных.
Под квазиструктурированными данными понимается такой набор данных, для которого на момент моделирования и реализации базы данных частично или полностью неизвестна структура (состав атрибутов), либо структура может изменяться с течением времени, либо она должна формироваться в соответствии с потребностями конечного пользователя.
Некоего стандарта по выделению квазиструктурированных данных не существует. Основным критерием является возможность выделения фиксированной на всем протяжении жизни информационной системы (от моделирования до использования и ликвидации или модернизации) структуры данных. Если такую структуру выделить невозможно и "стоимость" изменения базы данных при появлении новых атрибутов достаточно высока, то целесообразно использовать технологию обработки квазиструктурированной информации.
Моделируя базу данных для работы с квазисгруктурированной информацией, разработчик фактически описывает метаданные, которые будут использоваться для построения динамически изменяемой структуры данных. В этом случае разработчик частично перекладывает задачи моделирования структуры данных на пользователя, обеспечивая его необходимым инструментарием.
Первым вариантом, когда целесообразно использовать технологию обработки квазисгруктурированной информации, является частично или полностью неизвестная на момент разработки базы данных структура данных. Ситуация, когда структура данных неизвестна полностью, встречается достаточно редко и чаще всего определяется в процессе использования информационной системы, а ситуация, когда структура известна частично и впоследствии должна пополняться, может встречаться существенно чаще.
Например, вариантом с частично неизвестной структурой может являться описание товара в магазине, где необходимо предоставить спецификацию, которая у разных товаров будет описываться различными характеристиками (атрибутами). Можно, конечно, попытаться проанализировать все виды товаров, которые продаются в магазине, но, во-первых, этот перечень будет достаточно большим и количество анализируемых атрибутов предметной области многократно увеличится, во-вторых, с течением времени может появиться какой-нибудь товар, структура спецификации которого не удовлетворяет уже реализованной базе данных, что приведен к дополнительной разработке базы данных, учитывая изменившиеся условия.
Вторым вариантом применения технологии обработки квазиструктурированной информации является требование необходимости обработки изменения состава атрибутов, характеризующего определенный объект предметной области. В таких случаях объект предметной области на момент реализации базы данных обладает определенными характеристиками, которые могут быть учтены при моделировании, но после создания физической базы данных и начала ее использования может появиться требование, например, законодательного характера, добавить или заменить какие-либо характеристические свойства. Если эти свойства объекта обладают информационным характером и изменяются редко, а также используются, как правило, только для представления отчетов, то использование технологии квазиструктурированного представления данных вполне обосновано.
Примером объекта с измененяемым с течением времени набором свойств может быть набор регистрационных данных об организациях. Например, введение в 2001 г. в России ОГРН (Основной государственный регистрационный номер) в дополнение к другим кодам, описывающим организацию, потребовало исправления большого количества информационных систем не только в части добавления нового атрибута, но также механизмов его обработки и представления в отчетах и экранных формах. Изменение
в 2013 г. кодов ОКАТО на ОКТМО, также характеризующих организацию, привело к подобной же ситуации. Использование технологии квазиструк- турированных данных, где определены динамически изменяемые свойства объекта, позволило бы исключить проблемы с модернизацией программного продукта вообще и базы данных в частности.
Третий вариант применения технологии квазиструктурироваиной информации представляет собой необходимость в течение использования информационной системы пополнять базу данных но определенным объектам пользовательскими свойствами с последующим их использованием. Обычно такая проблема решалась введением атрибута с типом больших текстовых данных (например. Text или CLOB). Это решение допустимо, но только до того момента, пока не потребуется по определенным характеристикам сделать выборку совокупности объектов. Здесь возникает проблема, поскольку сложно отделить в текстовых данных наименования свойств от их значений. Технология квазиструктурированных данных дает возможность пользователю, по мере необходимо наполнять или сокращать наборы свойств, которыми необходимо описывать те или иные объекты предметной области.
Примером такой необходимости может быть описание достижений учащихся в высшем учебном заведении, зачастую группируя их в иерархической структуре, объединяя отдельные свойства в группы и подгруппы. Другим примером может быть объект "Оценка", выставляемая преподавателем по различным характеристическим свойствам, формируя более точное оценивание знаний учащихся. В обоих случаях применение технологии квазиструктурированных данных будет обоснованным и целесообразным.
Основной особенностью структурирования квазиструктурированных данных является формирование метаданных, описывающих соответствующие объекты, классифицируя их или используя линейный классификатор. Эти метаданные описываются комплексом из трех сущностей: классификатор экземпляров объекта, классификатор атрибутов объекта, связка атрибутов с экземплярами и набором значений.
Предположим, что товары в рассматриваемом электронном магазине необходимо описывать не только обязательными свойствами (например, цена и наименование), но и множеством разных дополнительных характеристик, перечень которых на момент моделирования и разработки базы данных точно не определен и содержит слишком большое количество вариантов (рис. 4.61). Тогда в рамках моделирования создают сущность "Свойства товаров", которая описывает соответствующее отношение, содержащее все возможные характеристики, которыми в магазине специфицируются товары, предполагая, что этот справочник свойств можно будет пополнять новыми свойствами.
В результате рассмотрения связей между этими двумя сущностями: "Товары" и "Свойства товаров", — будет установлена связь многие — ко — многим (iV:M), которая должна быть нормализована в сущность-связку с добавлением в новую сущность дополнительного атрибута "Значение свойства". В ходе нормализации достаточно создать идентифицирующую связь, поскольку обычно сущность значений свойств объектов не используется в качестве родительской в модели базы данных и сцепленный первичный ключ связями с другими сущностями нигде больше представлен не будет.
Рис. 4.61. Пример простой квазиструктуры |
В случае описания метаданных для нескольких объектов или классифицируемых объектов добавляется еще сущность, отражающая классификатор классов объектов (рис. 4.62). Поскольку в рассматриваемом примере все товары группируются в категории и набор товаров одной категории характеризуются общим набором атрибутов, то в модель была добавлена сущность-связка "Свойства категории товаров", связывающая категории из классификатора категорий с перечнем свойств, которыми могут характеризоваться товары. Тогда каждый товар, связанный с определенной категорией, получает только те свойства, которые определены для его категории, и пользователь сможет заполнить только их, не получая никаких других характеристик. Именно поэтому созданная сущность-связка является родительской сущностью для сущности со значениями свойств каждого товара.
Другими примерами объектов, которые могут описываться подобным образом, являются:
- учащиеся учебного заведения — данный объект обладает рядом предопределенных атрибутов (ФИО, адрес, паспортные данные и т.д.), но также у него могут существовать атрибуты, которые будут определяться преподавателями или административным персоналом по мере необходимости учета той или иной информации (например, психологический портрет, особенности характера, участие в олимпиадах и т.д.), причем набор атрибутов определяется типом учащегося — абитуриент, студент, аспирант и т.д.;
— организации-партнеры — данный объект может содержать сведения, которые будут вноситься по мере их появления, к тому же часть сведений может соответствовать только отдельным экземплярам данного объекта (например, объем экспортных операций, объем импортных операций, адреса филиалов, контактные телефоны, фамилии контактирующих сотрудников и т.д.), определяя набор атрибутов для каждой конкретной организации ее видом деятельности.
Обычно представление объекта в виде квазиструктурированной информации делается в том случае, если основная предметная область не предполагает учета комплекса показателей и по этим данным не требуется постоянных операций выборки и наполнения данными.
Если предположить, что набор свойств представляется иерархической структурой, где одни свойства входят в состав свойств более крупной группы, то для этого необходимо наложить технологию работы с иерархией на соответствующую сущность (рис. 4.63).
В данной модели свойства связаны иерархически с применением одной рекурсивной связи. Обусловлено это тем, что условиями предметной области предполагается использование всей совокупности свойств, начиная с самого верхнего уровня до самого нижнего. Для такой организации нет необходимости использовать другую модель иерархии.
Одной из существенных проблем применения квазиструктурированной информации является определение типа данных, которые должны храниться в качестве значения, вводимого пользователем. Наиболее универсальным является использование символьных типов данных, но тин данных "Character" не позволит сохранить данные больших размером. Чтобы это сделать, в сущность "Свойства категорий товаров" добавляется еще одно поле, которое характеризуется типом "CLOB", обозначающим хранение больших текстовых данных[1].
Другой проблемой является предоставление пользователю в экранных формах корректных элементов управления. Например, для указания логического выбора на экранной форме должен представляться элемент управления "флажок", но отсутствие среди метаданных свойств квазиструктурированного объекта указания типа данных не позволяет определить правильное использование элементов управления экранных форм. Также отсутствие такого указания не дает возможности в программной логике корректно произвести преобразование данных для последующей обработки, например для математического вычисления.
Добавление новой сущности "Тип данных свойств" позволяет определиться с правилами обработки данных, представленных символьным типом данных (рис. 4.64). Важно обратить внимание на атрибут этой сущности "Код тип данных". Такой атрибут очень часто встречается в базах данных, определяя аббревиатурное неизменяемое значение, которое характеризует определенный экземпляр данных. Поскольку экземпляр данных описывается обычно на национальном языке и может меняться при изменении языка, то должен быть некий атрибут, который не будет зависеть от национального языка. Таким атрибутом указывают шифр или код типа данных, который формируется и определяется разработчиком.
Одной из особенностей моделирования базы данных для хранения квазиструктурированной информации является определения принципов связи метаданных с данными в реляционной части базы данных (рис. 4.65). Зачастую бывает, что некоторая часть информации, хранящаяся в структуре квазиструктурированной информации, будет связана с классификаторами предметной области или данными, которые целесообразно хранить в базе данных с целью облегчения работы пользователя по наполнению информации об объектах данными. Для реализации подобной задачи в модель базы данных вводятся дополнительные элементы (сущности-связки).
Рис. 4.64. Модель квазиструктуры с типизацией свойств |
Рис. 4.65. Пример связи квазиструктуры с реляционной структурой |
Например, при необходимости указать, что товар "Телевизор" характеризуется определенным типом экрана, перечень которых точно определен и представляется соответствующим классификатором "Типы экрана", создается сущность-связка "Связка с типом экрана", где присутствуют только два ключа, связывающие определенное свойство конкретного товара с экземпляром значения этого свойства. Для обработки такого представления необходимо, чтобы в типах данных свойств было указано соответствующее свойство, по которому приложение сможет понять, что необходимо предоставить пользователю возможность выбора типа экрана.
В зависимости от накладываемых ограничений на предметную область в связках внешние ключи могут составлять сцепленный первичный ключ. Реализация модели квазиструктурированной информации накладывает на базу данных и приложение некоторые серьезные ограничения:
— для обработки данных необходимо однозначно определить правила типизации данных и реализовывать обработку значений в соответствии с определенными правилами (например, если значения могут быть различных типов и предполагается ограничить пользователю работу в части правильности вносимых значений, то необходимо создать дополнительную сущность "Тип данных", связанную с сущностью "Свойства");
— при обработке квазизначений, связанных с классификаторами или таблицами реляционной базы данных, необходимо в сущности "Значение" или в сущности "Свойства" определить атрибуты, которые укажут, где находятся необходимые данные. Дополнительно это ограничение требует от разработчика четкости в именовании сущностей, обеспечивающих хранение данных классификаторов и связок.
Учитывая эти и некоторые другие особенности работы с квазиструк- турированными данными, необходимо руководствоваться принципами эффективности выборки и обработки данных, поскольку такая организация накладывает очень серьезные ограничения на скорость обработки данных.