Структура данных

Важнейшим элементом любой базы данных, независимо от ее представления, является структура данных, которая отражает возможные представления сведений для хранения, выборки и обработки. Структуры данных необходимы для работы с документарными данными, не связанными с компьютерной обработкой, и сданными, представляемыми в автоматизированных системах.

В смысле под терминов "Структура данных" понимается единица сведений, позволяющая хранить и обрабатывать множество однотипных и (или) логически связанных данных

Одним из представлений структуры данных может являться форма документа, которая показывает правила представления сведений, отражая их местоположение, последовательность отражения, правила отображения, вид представления и т.д.

Фактическое появление термина "Структура данных" основано на необходимости документарного представления сведений и возникновении документа в качестве источника и средства передачи информации, что нашло отражение в возникновении правил оформления документов и представления в них сведений.

Структурированность документов, подчиненная определенным правилам, позволяет человеку лучше понимать особенности внесения в документ данных. Так, например, документ "Товарный чек" (рис. 1.7) содержит указание на необходимость отражения наименования организации в ноле "Фирма". Понимание сути данной характеристики и знаний правил заполнения бухгалтерских документов дает возможность продавцу правильно заполнить поле документа, указав не только наименование организации, по и ее организационно-правовую форму в соответствии с данными в учредительных и регистрационных документах (устав, свидетельство о регистрации организации) ООО "Электроника".

Рис. 1.7. Пример структуры данных в виде документа


Наряду с полем "Фирма" в представленном примере документа указан ряд прочих характеристик — "Дата", "Наименование товара", "Количество", "Цена", "Сумма", "Всего". Часть из указанных характеристик представляют независимыми атрибутами, предполагая указание несвязанных с другими характеристиками данных. Некоторые характеристики ("Наименование товара", "Количество", "Цена", "Сумма") являются взаимосвязанными атрибутами, характеризующими проданный товар и представленными в определенной структуре, давая понять продавцу, что необходимо по каждому товару указать дополнительные характеристики, имеющие к нему отношение, раскрывая полную информацию о проведенной торговой операции. При этом, стоит заметить, что одна из характеристик ("Сумма") является вычисляемой характеристикой, зависящей от значений двух характеристик в строке таблицы ("Количество", "Цена"). Эта характеристика вычисляется но вполне определенной формуле путем перемножения значения колонки "Количество" на значение колонки "Цена" в рамках каждой заполненной строки таблицы данных о товарах.

Еще одна характеристика ("Всего"), которая присутствует в документе, обладает особенными свойствами. Эта характеристика, расположенная внизу таблицы с данными о проданных товарах, говорит продавцу о необходимости посчитать общую сумму но всем проданным товарам, формируя агрегированные сведения финансового характера. Нужно обратить внимание на размещение и форму представления данной характеристики. Структура данных документа ясно даст понять, что в этом иоле должна отражаться только одна агрегированная характеристика, а поскольку документ относится к финансовым, то эта характеристика отражает именно финансовые сведения — общую сумму но проданным товарам.

Однако, если эту характеристику внести в структуру таблицы и разделить на соответствующие таблице колонки ("Количество", "Сумма"), то характеристика поменяет свою суть и предстанет в форме групповой агрегированной характеристики, предполагающей указание общего количества проданных единиц товаров (при возможности проведения данной операции, учитывая единицы измерения количества товара) и общей стоимости. Естественно, что, читая структуру документа, продавец, основываясь на условиях и правилах работы с документом, заполняет только теми значениями соответствующие характеристики, которые объективно целесообразны для заполнения.

Таким образом, структура данных документа "Товарный чек", учитывая правила отражения и обработки отдельных сведений в данной структуре, даст продавцу исчерпывающую информацию о вносимых в документ данных.

На примере документа видно, что для описания структур данных используется ряд элементов, отражающих составляющие таких структур. Одним из таких элементов является атрибут, который но мере развития технологий работы с данными стал базовым, отражающим характеристику сведений.

Под термином "Атрибут" понимают необходимое существование свойство объекта.

Это определение является общеупотребимым с философской точки зрения, но хорошо отражающим суть термина в общем его понимании. Распространяя его на работу с данными, можно говорить о его рассмотрении в качестве основного элемента, который позволяет, с учетом знаний и предметной области, описать не только характеристическую сущность объекта, по и отразить форму и особенности представления. Конечно, не каждая характеристика объекта может быть настолько однозначно интерпретироваться атрибутом, но при правильном именовании атрибута, как правило, это возможно сделать.

Таким образом, с точки зрения работы с данными под термином "Атрибут" следует понимать характеристическое свойство объекта, отражающее отдельное смысловое значение объекта.

Правильное выделение атрибутов для описания характеристик объекта является одной из самых сложных задач в разработке баз данных, поскольку зачастую сложно определить необходимость использования той или иной характеристики при представлении данных об объекте.

Так, например, при рассмотрении объекта "Товар" возникает вопрос, насколько необходимо в базе данных отражать такие характеристики: "Наименование", "Артикул", "Цена приобретения", "Количество поставки", "Цвет", "Размер" и т.д. Очевидно, что на выбор используемых атрибутов влияет несколько факторов, к которым можно отнести сферу рассматриваемой деятельности (склад, магазин и др.), виды товаров для хранения данных (обувь, одежда, компьютеры, продукты и т.д.), цели хранения данных (аналитическая обработка поступлений товаров, учет имеющихся товаров на складе или в магазине, публикация каталога товаров и т.д.), многие другие.

К тому же, важным является правильность наименования атрибута, что позволяет без лишнего дополнительного анализа однозначно интерпретировать указанную в атрибуте характеристику. Как правило, в анализируемых документах, при построении базы данных, уже указаны необходимые наименования, но документ представляет цельную структуру данных, которая позволяет точно выделить необходимые характеристики объекта.

Например, в документе на рис. 1.7 атрибут документа "Цена" может быть однозначно интерпретирован как "Цена продаваемого товара", хотя это и не написано в самом документе. Определить это можно из самой структуры документа. Данный атрибут размещен в документе "Товарный чек", который выдается клиенту при продаже товара, а значит, речь в документе будет идти о продаваемых товарах. Также этот атрибут размещен в документе в рамках таблицы, где рядом размещены и связаны с ним другие атрибуты: "Наименование", "Количество", "Сумма". Ввиду того, что речь в документе идет о товарах, которые являются основными элементами данных, то однозначно ясны возможные значения в таблице документа. Поскольку одним из атрибутов строк в таблице является характеристика "Наименование", то при рассмотрении атрибута "Цена" становится понятно, что речь идет о цене товара, указанного своим наименованием в соответствующей строке таблицы. В результате, интерпретация атрибута "Цена" понимается однозначно.

Но для представления атрибута в базе данных такое именование атрибута может оказаться невозможным, поскольку на него влияет не только месторасположение (сущность модели базы данных), но и размещение прочих атрибутов в этой же сущности (рис. 1.8).

Рис. 1.8. Пример указания атрибутов в сущностях


Представим, что в сущности модели базы данных "Товар на складе" указаны два атрибута: "Цена" и "Дата". Наименование сущности "Товар на складе" позволяет понять, что в соответствующем элементе базы данных будет храниться информация о товарах, которые размещены на складе, но нет никакого указания на то, каким статусом будут обладать эти товары: приобретенные, проданные, переучтенные и т.д. Наличие атрибута "Дата" не дает однозначной интерпретации сути учитываемых товаров, поскольку под этим атрибутом можно понимать дату приобретения, дату выбытия, дату переучета и т.д. В таком же неопределенном состоянии находится атрибут "Цена". Для того чтобы понять смысл этих двух характеристик, необходимо возвратиться к анализу предметной области и понять суть ставящихся для информационной системы задач.

Уточним указанные атрибуты и добавим новый атрибут, связанный с атрибутом "Дата" (рис. 1.9). Теперь атрибут "Цена приобретения" позволяет понять, что этот атрибут однозначно интерпретируем и отражает цепу, по которой был приобретен товар, а атрибут "Дата" не имеет к нему никакого отношения и характеризует переоценку товаров в определенный период. Добавление атрибута "Цена текущая" уточняет описание объекта "Товар на складе". В предыдущем варианте модели невозможно было указать этот атрибут, не дополнив его понятием "текущая". Эго привело бы к появлению двух атрибутов с идентичными наименованиями, что только усложнит понимание сути хранимых данных. Уточнение атрибута в наименование "Цена текущая" в связке с атрибутом "Дата переоценки" однозначно может быть интерпретировано в понимание того, что здесь будут храниться сведения о текущей цене товара на момент его переоценки, а цена приобретения во все даты переоценки товара будет оставаться неизменной.

Другим элементом структуры данных в документе является "Тип данных". Этот элемент в явном виде в документе не представлен, но понимание предметной области и логический анализ используемых атрибутов позволяют с высокой вероятностью быть уверенным в том, какие данные

и какого типа должны быть представлены в соответствующих местах документа.

Рис. 1.9. Уточнение атрибутов в сущности


По сути, тип данных определяет форму и правила представления определенных данных. В качестве формы тип данных определяет возможное использование символов в написании данных. Для строки и текста такими могут выступать любые символы от цифр до букв и специальных символов. Для числового типа данных используются только цифры и знак "," в качестве разделителя целой и дробной части. Логический тип данных может представляться различными вариантами, в зависимости от выбранной СУБД: "Истина" или "Ложь", "True" или "False", 1 или 0 и т.д. Правила для типа данных определяют законы, по которым данные должны быть выведены в документ или на экран компьютера. Для символьно-числового типа данных таким правилом может являться необходимость вывода числового значения с возможностью представления ведущего знака "О" (например, БИК банка представляется значением "044525225").

Под термином "Тип данных" понимается характеристическое свойство атрибута, определяющее форму, размер и правила представления данных.

Если рассмотреть атрибут "Фирма", то, учитывая особенности представления данных об организации, разработчик однозначно определит необходимость представления данных в виде тестовой строки, содержащей, как минимум, наименование организации, а дополнительно — еще и организационно-правовую форму (например, ООО "Чайник"). Конечно, даже в данном простом примере нс существует однозначности в понимании того, как конкретные данные должны быть представлены, но характеристику "Тип данных" определить возможно, что формирует более четкое понимание используемой структуры данных.

Для атрибута "Фирма" представление однозначное, но для некоторых атрибутов в документах не всегда можно однозначно определить тип данных. Например, рассмотрим атрибут документа "Всего". Этот атрибут, если не знать особенностей заполнения документа "Товарный чек" и правил представления финансовой информации в итоговой строке, может быть представлен любым из двух типов данных: текстовой строкой или вещественным числом с двумя знаками после десятичной запятой. Стоит обратить внимание па описание числового типа данных по данному атрибуту. Он представляется достаточно большим набором характеристических особенностей, что позволяет точно понять правила и форму представления данных. В некоторых СУБД для отражения финансовой информации используется денежный тип данных, который является производным типом из вещественного типа данных с заданной точностью. Обычно значение атрибута суммы привычно записать таким числовым значением (например, "25 637,54").

Однако для финансовых документов есть правило в предметной области о том, что итоговые суммы должны записываться символьным значением (например, двадцать пять тысяч шестьсот тридцать семь рублей 54 коп.). Здесь используют именно тип данных текстовой строки, учитывая необходимость использования символов алфавита с включением цифровых символов. Забегая немного вперед, стоит сказать, что подобное представление данных документа обычно не хранится в базе данных, представляется числовым значением, а отображение в печатном или электронном документе в виде текстовой строки осуществляется на основании программных правил текстового представления числового значения. Таким образом, понимание предметной области позволило более точно определить правильность представления данных в документе и определить тип данных, которым описывается атрибут "Всего" в документе "Товарный чек".

Рассматривая структуры данных в качестве иллюстрации и модели представления данных в информационных системах, разработчики используют структуры данных, представленные в документах, но выстраивают их в такой форме, чтобы при реализации можно было использовать программные инструменты храпения и обработки, к которым относятся СУБД. Известно достаточно большое количество моделей данных, которые применяются для описания структур данных: иерархическая, сетевая, реляционная, пост реляционная, объектно-реляционная, объектная и пр.