ГРУЗИНСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ С. М. ПОЧОВЯН, Г. Р. МАЙСУРАДЗЕ ПРОЕКТИРОВАНИЕ БAЗ ДАННЫХ Регистрировано редакционноиздательским советом ГТУ Тбилиси 2008 УДК 658.012.011.56 Рассмотрены методология и методика проектирования баз данных. Изложены основные концепции, архитектура базы и банка данных, методы представления предметной области, основные подходы и модели построения баз данных, вопросы поддержания целостности, нормализации и построения канонической структуры базы данных. Предназначено для студентов, магистрантов и докторантов, разработчиков и администраторов баз и банков данных, специалистов по автоматизированным системам управления. Рецензент: проф. Сургуладзе Г. Г. © Издательский дом “Технический университет”, 2008 ISBN 978-9941-14-032-7 2 Предисловие Содержание учебного пособия соответствует программе курса «Проектирование баз данных», читаемого студентам по специальности «Автоматизированные системы обработки информации и управления». Кроме того, учебное пособие построено таким образом, чтобы его могли использовать магистранты, докторанты, разработчики баз и банков данных, а также специалисты по автоматизированным системам управления. Книга предназначена для того, чтобы дать знания о теоретических основах, то есть методологии и методике, проектирования баз и банков данных. Базы и банки данных проектируются, внедряются и используются в составе автоматизированных систем управления различных уровней управления. Разраработка баз данных обеспечивает эффективтивную организацию данных в сфере управления фирмами, организациями, предприятиями, банками и в научных исследованиях. В первой главе рассматриваются следующие вопросы: приведены основные концепции и определения баз и банков данных; логическое и физическое описания данных, определения виртуальных и прозрачных данных; основные типы организации данных, назначение администратора базы данных, необходимость двух уровней независимости (логической и физической) данных; определения модели данных, схемы, подсхемы, основных структур и видов описания данных; описание архитектуры базы и банка данных; основные типы связей в схемах и подсхемах; разработка модели предметной области. 3 Во-второй главе рассматриваются следующие вопросы: моделирование локальных проектных представлений; объединение моделей локальных представлений с описанием используемых основных концепций; организация иерархических, сетевых и реляционных моделей и представлений баз данных, описания ограничений целостности; определения и описания основных нормальных форм схем отношений и операций реляционной алгебры; основные этапы и процедура построения канонической структуры базы данных. 4 Введение Появление баз и банков данных изменило природу эволюции общества. Базы данных разрабатывают поэтапно и представляют собой совокупность взаимосвязанных хранящихся вместе данных. Существующие и разрабатываемые базы данных предназначены для ограниченного ряда приложений. Назначение базы данных заключается в том, чтобы одну и ту же совокупность данных можно было использовать для максимального возможного числа приложений. Использование баз данных позволяет обеспечить многоаспектный доступ к совокупности взаимосвязанных данных, интеграцию и централизацию управления данными, устранение излишней избыточности данных, возможность эффективного совмещения различных режимов обработки данных. Вместе с потребностями в базах данных в различных сферах управления возрастают требования на технические и программные средства обслуживания баз данных. Базы и банки данных разрабатываются в составе информационного обеспечения автоматизированных систем управления, и поэтому являются одними из основных компонентов автоматизированных систем различных типов и уровней управления. Концепция баз данных стала определяющим фактором при создании эффективных систем автоматизированной обработки данных. 5 Глава 1. Методология проектирования баз данных 1.1. Современная концепция баз данных Разработка баз данных является одним из основных направлений деятельности в области обработки данных. Данные рассматриваются как жизненно важные ресурсы, которые должны быть организованы так, чтобы ценность их была по возможности максимальной. Новый подход к организации процессов обработки данных нашёл наиболее яркое выражение в концепциях баз и банков данных. Концепция баз данных стала определяющим фактором при проектировании эффективных автоматизированных систем управления Проектирование и использование баз и банков данных изменило природу эволюции общества, так как объём массивов данных, которые можно накапливать и обрабатывать на современных персональных компьютерах, непрерывно возрастает. На практике существует известное, но трудно реализуемое понятие базы данных как хранилища большого обьёма данных, в которое можно помещать все обрабатываемые данные и из которого пользователи могут эти данные получать. Такая база данных представляется очень сложной и нереальной. Тем не менее базы данных необходимо поэтапно разрабатывать. Существующие и разрабатываемые базы данных предназначены для ограниченного ряда приложений. На практике часто на одном компьютере создаются и используются несколько баз данных. Базы данных реализующие отдельные функции можно затем объединять, если это будет способствовать увеличению 6 эффективности и интенсивности использования всей системы. Назначение базы данных заключается в том, чтобы одну и ту же совокупность данных можно было использовать для максимального возможного числа приложений. Базы данных необходимо разрабатывать в качестве хранилища такой информации, необходимость в которой возникает в процессе выполнения определённых функций в организации, предприятии, фирме и т.д. Такая база данных должна обеспечивать не только поиск и получение необходимой информации, но и постоянную модификацию данных, необходимую для процессов управления. Определённые совокупности данных баз данных могут быть использованы другими организациями. Понятие об информации как о знании о чём-либо сложилось давно. Информация создаётся и используется во всех сферах человеческой деятельности. Человек создаёт информационные системы как для обработки и передачи информации, так и для принятия управленчесих решений. Представим следующую ситуацию: имеются некоторая система, информация о состоянии которой представляет интерес, и наблюдатель, способный воспроизводить состояния системы и в определённой форме фиксировать их в своей памяти. В этом случае говорят, что в памяти наблюдателя находятся «данные», описывающие состояние системы. В качестве такого «наблюдателя» в общем случае и выступает информационная система. Соответственно двум понятиям – «информация» и «данные» – в базах данных различают два аспекта рассмотрения вопросов: инфологический и датологический. Инфологический аспект употребляется при рассмотрении вопросов, связанных со смысловым содержанием данных, независимо от способов их представления в памяти системы. На 7 этапе инфологического проектирования информационной системы должны быть решены вопросы: 1) о каких объектах или явлениях реального мира требуется накапливать и обрабатывать информацию в системе; 2) какие их основные характеристики и взаимосвязи между собой будут учитываться; 3) уточнение вводимых в информационную систему понятий об объектах и явлениях, их характеристиках и взаимосвязях. Таким образом, на этапе инфологического проектированая выделяется часть реального мира, определяющая информационные потребности системы, то есть её предметная область. Датологический аспект употребляется при рассмотрении вопросов представления данных в памяти информационной системы. При датологическом проектировании системы исходя из возможностей имеющихся средств восприятия, хранения и обработки информации разрабатываются соответствующие формы представления информации в системе посредством данных, а также приводятся модели и методы представления и преобразования данных, формируются правила смысловой интерпретации данных. Данные соответствуют зарегистрированным фактам об объектах или явлениях реального мира. Чтобы в дальнейшем использовать данные, требуется их смысловое содержание – семантика данных. Поэтому в информационной системе должны быть сформулированы правила смысловой интерпретации данных. В некоторых случаях известно смысловое содержание поступающих данных на основе априорной информации о местах, способах и времени их формирования. Тогда семантика данных определяется контекстом их применения в системе, поэтому достаточно обрабатывать только конкретные значения поступающих данных. На практике встречаются информаци- 8 онные системы, для которых данный способ интерпретации данных не обеспечивает нормальное функционирование. Для таких систем более характерны способы, позволяющие семантику данных выражать в самих данных, что диктуется необходимостью выполнения определённых видов смысловой обработки данных, то есть, данные уже нельзя рассматривать просто как совокупность некоторых значений. Это представление носит абстрактный характер, поскольку в соответствии с целями системы при формировании данных выполняется абстрагирование от несуществующих деталей описания фактов, то есть является целевой информационной моделью предметной области, реализованной в системе посредством данных. Основными средствами представления семантики данных являются естественные и формализованные языки. Формализованные языки позволяют эффективно организовать обработку данных на компьютере и представить необходимую семантику данных, удовлетворяющую практическим потребностям пользователей. Базы данных относятся к этому классу информационных систем. Таким образом, по своему назначению база данных – это информационная система. Базы данных применяют в сфере управления организациями, предприятиями и фирмами, транспортом, в медицине и сельском хозяйстве, научных исследованиях и т.д. Базы данных проектируются в составе автоматизированных систем управления различных уровней управления. Базу данных можно определить как совокупность взаимосвязанных хранящихся вместе данных при выполнении следующих условий: наличие такой минимальной избыточности, которая допускает их использование оптимальным образом для одного или нескольких условий; 9 данные запоминаются так, чтобы они были независимы от программ, использующих эти данные; для модификации и поиске данных применяется общий управляемый способ; данные структурируются таким образом, чтобы была обеспечена возможность дальнейшего наращивания приложений; на одном компьютере может быть создана одна или несколько баз данных, и кроме того, одна база данных может быть организована на нескольких компьютерах; к совокупности данных должны иметь доступ программы; одну и ту же совокупность данных можно использовать для для максимально возможного числа приложений. Система баз данных содержит совокупность баз данных, если эти базы данных структурно полностью самостоятельны. Совокупность баз данных называется банком данных. 1.2. Основные определения базы и банка данных Под информацией понимают любые сведения о каком-либо событии, сущности, процессе и т.д., являющиеся объектом некоторых операций: восприятия, хранения, преобразования, использования и передачи. Данные можно определить как информацию, фиксированную в определённой форме, используемой для последующей обработки, хранения и передачи. Байт – наименьшая адресуемая группа битов. Элемент данных (или поле в файлах) – наименьшая едини- 10 ца поименованных данных. Он может состоять из любого количества битов и байтов. Агрегат данных – поименованная совокупность элементов данных внутри записи, рассматриваемая как единое целое. Например, агрегат ДАТА может состоять из элементов данных: ЧИСЛО, МЕСЯЦ и ГОД. Часто агрегат называется группой или групповым элементом. Существуют два типа агрегата данных: векторы и повторяющиеся группы. Вектор – одномерная упорядоченная совокупность элементов данных. Например, приведённая выше совокупность ДАТА. Повторяющаяся группа – совокупность данных, которые встречаются несколько раз в экземпляре записи. Например, приём и выдача вкладов в записи счёта сберкассы. В повторяющую группу могут входить отдельные элементы данных, векторы, агрегаты данных или другие повторяющие группы. Логическая запись (или запись) – поименованная совокупность элементов данных или агрегатов данных. При поиске и чтении из базы данных программы прочитывают логические записи. Физическая запись – злементарная единица данных, которая может быть считана или записана одной командой ввода-вывода программы. Одна физическая запись может содержать одну или множество логических записей. Набор данных (или набор) – поименованная совокупность физических записей. (или записей), образующих двухуровневую иерархическую структуру. Группа – это поименованная совокупность элементов данных или элементов и других групп. Различают группы: простую и составную, повторяющуюся и неповторяющуюся. Файл – поименованная совокупность всех экземпляров ло- 11 гических записей заданного типа. В простом файле в каждой логической записи содержится одинаковое число элементов данных. В сложном файле из-за наличия повторяющихся групп записи могут состоять из различного числа элементов данных. База данных – совокупность экземпляров различных типов записей и отношений между записями, агрегатами данных и элементами данных. Предметная область – это область применения базы данных. Банк данных или система баз данных – совокупность баз данных. В одной системе может использоваться несколько баз данных, в каждой из которых используются не все типы записей, а только их совокупность. Но в этом случае предполагается, что различные базы данных разделены и не связаны между собой. И для обозночения этой совокупности баз данных потребляется термин банк данных. Банк данных – зто информационная система, включающая в свой состав комплекс специальных методов и средств для поддержания динамической информационной модели предметной области с целью обеспечения информационных запросов пользователей. Граница банка данных определяется задачами поддержания информационной модели в требуемом состоянии и обеспечения информационных запросов пользователей. Задача поддержания информационной модели в требуемом состоянии требует чтобы в банке данных выполнялись операции хранения и модификации (то есть операции исправления, дополнения и удаления данных) в информационной модели, в соответствии с изменениями состояний, состава и связей между объектами предметной области. Задача обеспечения инфомационных запросов пользователей имеет два аспекта. Первый 12 аспект – это определение границ предметной области и разработка описания информационной модели. Банк данных должен обеспечивать автоматизированную систему всей необходимой информацией, включая и ту, которая может потребоваться при расширении автоматизированной системы. Второй аспект – разработка банка данных, ориентированного на эффективное обслуживание запросов пользователей. Для этого анализируют типы и виды запросов пользователей, а также функциональные задачи автоматизированной системы, для которых банк данных является источником информации. Банк данных включает следующие основные компоненты: базу данных, систему управления базой данных (СУБД), администратора базы данных (АБД), словарь данных, одну или несколько персональных компьютеров и обслуживающий персонал. База данных (БД) – это датологическое представление информационной модели предметной области. Система управления базой данных – это специальный пакет программ, посредством которого реализуется централизованное управление базой данных и обеспечивается доступ к данным. Для этого использутся языки описания данных (ЯОД) и языки манипулирования данными (ЯМД). Банк данных может включать в свой состав несколько разнотипных СУБД. ЯОД – это язык высокого уровня, декларативного типа, предназначенный для задания подсхем и схемы базы данных. С его помощью описываются типы данных, их структура и связи между собой. ЯМД (или называемый языком запросов) представлен системой команд манипулирования данными. Например, 1) произвести выборку из базы данных конкретного данного, значение которого удовлетворяет заданному условию; 2) произвести выборку из базы данных всех данных определённого типа, 13 значения которых удовлетворяют заданным условиям и т.д. Словарь данных представляет собой специальную систему, предназначенную для хранения единообразной и централизованной информации обо всех ресурсах банка данных. В словаре данных содержатся следующие сведения: об объектах, их свойствах и отношениях; о хранимых данных (наименования, шифры, смысловые описания, структура, связи с другими данными и т.д.); о форматах представления данных и возможных значениях; о источниках возникновения данных; о разграничениях доступа к данным со стороны пользователей и кодах защиты, описания моделей баз данных и отображений между ними и т.д. Администратор базы данных – это лицо (или группа лиц), реализующее управление базой данных. Если в качестве объекта управления выступает база данных, то качестве управляющего органа – один или несколько специалистов, знакомых с теорией систем обработки данных и со спецификой предметной области и реализующих централизованное управление базой данных, включая принятия и реализацию решений об изменениях в состоянии базы данных. 1.3. Логическое и физическое описания данных Описания данных и отношения между ними бывают двух видов: логическое и физическое. Логическое описание данных указывает на то, в каком виде данные представляются пользователю или программисту. Физическое описание данных определяет способ физического хранения данных во внешней памяти. Термины логический и физический используются для описания различных аспектов данных: логический – указывает 14 на то, как данные представляются пользователю или программисту, а физический – указывает, каким образом данные хранятся в среде хранения. Для уменьшения объёма памяти и времени доступа физическая запись может содержать несколько логических записей. Структура данных и их взаимосвязь в физической и логической организациях данных могут не совпадать. Терминами логическое описание, логическая структура и логическое отношение данных описываются представление данных с точки зрения пользователя или программиста. Термины физическое описание, физическая структура и физическое отношение данных описывают способы хранения данных. Программное обеспечение передаёт программам логические записи в требуемых последовательностях. Преобразование логических описаний в физическую выполняется программным обеспечением. Слово виртуальный, относящееся к данным и техническим запоминающим устройствам, указывает на то, что некоторый элемент в запросе представляется прикладному программисту или пользователю существующим, тогда как фактически в таком виде он отсутствует. Например, программист может писать программу в предположении, что память бесконечна, в то же время как на самом деле память ограниченна. Аналогично программист может обращаться за виртуальными данными, которые предполагаются существующими, но не существуют фактически, по крайней мере в данной представленной форме, или располагаются на винчестере другого персонального компьютера. В то время как виртуальное представляется только существующим, прозрачное представляется несуществующим, но на самом деле существует. Прозрачными для прикладных программистов, пользователей и прикладных программ являются механизмы хранения и передачи данных, а также процессы 15 преобразования логических файлов в физически хранящиеся данные и обратно. Например, когда программа запрашивает логическую запись, она может получать только необходимые ей поля. В физически хранимой записи могут существовать ещё другие элементы данных, требуемые для других приложений, но они являются прозрачными для данной программы. Только используя прозрачность можно строить сложные структуры баз данных. Элементы, информацию о которых мы сохраняем, называют объектами. Объект может быть материальным (например, служащий, студент, изделие) и нематериальным (например, событие, название курсового проекта, счёт покупателя). Объект имеет различные свойства, которые можно запоминать (например, ФИО, цвет). При обработке данных имеют дело с совокупностью однородных объектов (например, служащие, студенты) и записывают информацию об одних и тех же свойствах каждого из них. Совокупность однородных объектов называют набором объектов. Информация может находиться на бумажных документах или во внешней памяти персональных компьютеров. Программисты и пользователи имеют дело с записью о каждом объекте и записями об однородных объектах, сгруппированных в наборы записей об объектах. Записи связаны с атрибутами объектов (то есть названиями, идентификаторами полей записей) и содержат значения этих атрибутов. При обсуждении понятия информация выделяют три области. Первая область – реальный мир, в котором объекты существуют и имеют определённые свойства. Вторая область – область идей и информация, существующая в представлении пользователей и программистов. В этой области имеют дело с атрибутами объектов, обозначают атрибуты символически (на естественном 16 языке и языке программирования), а также атрибутам приписывают значения. Третья обл которой используются строки символов и битов для кодирования элементов информации, Эту область затем разделяют: 1) на данные в представлении пользователей и прикладных программистов; 2) общую логическую структуру данных в представлении администратора базы данных; 3) на физическое представление данных. Совокупность символов или битов, представляющая значение конкретного элемента данных, должна быть связана с тем элементом данных, который имеет это значение. Элемент данных представляет атрибут, и атрибут должен быть связан с соответствующим объектом. Один атрибут имеет конкретное значение, которым он идентифицирует объект. Самый простой способ связи величины с элементом данных и связи элементов данных с атрибутами соответствующих объектов – это запоминание элементов данных вместе в виде фиксированной последовательности. Такое простое двумерное отображение элементов данных называют плоским. Многие файлы представляют собой плоские, или двумерные файлы. Фиксированную последовательность элементов данных, то есть записи таких двумерных плоских файлов, представляют в виде таблицы (прямоугольника) (рис. 1.1.÷1.3.). В прямоугольнике представлен набор элементов данных. Приведено значение каждого элемента данных. В каждой строке перечислены элементы данных, относящиеся к конкретному объекту. Каждая колонка (столбец) содержит имя (название) атрибута (то есть поля записи). Крайные левые колонки содержат те элементы данных (в прямоугольнике они подчёркнуты), которые идентифицируют объект. Вверху над прямоугольником для каждой колонки приведены шифр, тип и длина элемента данных (то есть 17 поля записи), связанные с атрибутом конкретного типа. Имена, шифры, тип и длина атрибутов не записываются в файле, а записываются в словаре данных. Некоторые значения (шифры и имена) атрибутов (например, Шифр-отдела, Шифр-профессии) могут быть именами и идентификаторами объектов в других файлах. Группа элементов данных, формирующая строку на рис 1.1.÷1.3., составляет запись об объекте. Хранимая запись может отличаться от записи, представляемой программистом, а также может отличаться от физической записи. Физическая запись может содержать много хранимых записей. Совокупность данных, показанная на рис. 1.1.÷1.3., представляет собой взаимосвязь между этими элементами данных. Такой набор взаимосвязанных величин называется записью, кортежем или группой элементов данных. Программист, пользователь и администратор базы данных должны иметь возможность обращаться к записи (кортежу), связанному с данным объектом. Прикладная программа должна иметь возможность идентифицировать запись (записи) и располагать средствами их обнаружения на запоминающем устройстве. С этой целью один или несколько элементов данных определяются в качестве идентификатора объекта (например, идентификаторами объекта СВЕДЕНИЯ-О-РЕЙСАХ-САМОЛЁТОВ являются Номер-рейса и Дата-вылета (число, месяц и год); идентификаторами объекта СЛУЖАЩИЕ (рис. 1.3.) являются Шифр-организации и Шифр-служащего). Идентификатор объекта рассматривается как ключ записи или группы записей и называется первичным ключом (на рис. 1.1.÷1.3. первичные ключи подчёркнуты). В тех случаях, когда в качестве ключа используются несколько элементов данных (то есть два, три и более элементов данных), они должны соединяться символом „+“ (например, 18 ОРГАНИЗАЦИИ BIWOR1 N(6) BIWNO2 C(16) BIWAO3 C(30) BIWWR4 C(18) BIWTR5 C(8) Шифр организации Наименование организации Адрес организации ФИО руководителя Рабочий телефон руков. 1 2 3 4 5 104715 Фирма «Компсервис» Фирма «Комптехобслуживание» 104716 г. Тбилиси, пр. Махарад- 39-17-45 Важа Пшавела 476 зе В. С. г. Тбилиси, пр. Ломидзе 34-95-77 Т. А. А. Церетели 392 Рис. 1.1. Набор элементов данных (простое двумерное отображение элементов данных) записи типа «ОРГАНИЗАЦИИ» ОТДЕЛЫ BITOR1 BITOT2 BITNT3 BITAT4 BITWT5 BITTT6 N(6) N(3) C(18) C(30) C(18) C(8) Наименование отдела Адрес отдела ФИО зав. отделом Рабочий телефон зав. отд. Шифр Шифр органи- отдела зации 1 2 3 4 5 6 104715 104715 104715 104716 104716 104716 104716 201 202 203 301 302 303 304 Отдел кадров Бухгалтерия Сервисный Канцелярия Отдел кадров Бухгалтерия Техобслуживание ––״ ––״ ––״ ––״ ––״ ––״ ––״ Каладзе А.С. Метревели Г.В. Парфёнов Н.Б. Васильева Т.А. Каландадзе Н.Г. Пирцхалава Д.К. Балашов И.И. 39-17-45 39-17-46 39-35-36 34-95-77 34-08-42 34-95-18 34-08-42 Рис. 1.2. Набор элементов данных (простое двумерное отображение элементов данных) записи типа «ОТДЕЛЫ» 19 СЛУЖАЩИЕ BICOR1 BICCL2 BICOT3 N(6) N(4) N(3) Шифр Шифр Шифр органи- служа- отдела и- зации щего BICWC4 C(18) ФИО служащего BICDO5 BICPR6 BICPO7 BICTC8 N(2) N(4) N(1) C(8) Шифр Шифр Рабочий долж- профес- Пол телефон ности сии служащ. 1 2 3 4 5 6 7 104715 3003 202 Метревели Г. В. 12 2105 1 104715 3004 201 Каладзе А. С. 15 1940 1 104715 3005 203 Парфёнов Н. Б. 16 1800 1 104715 3006 203 Сахаров С. В. 16 1800 1 104716 1004 302 Каландадзе Н.Г. 15 1940 2 104716 1005 301 Васильева Т. А. 14 1642 2 104716 1006 304 Балашов И. И. 16 1800 1 104716 1007 303 Пирцхалава Д.К. 12 2105 2 8 39-1746 39-17– 45 39-35– 36 39-3536 34-9577 34-9577 34-0842 34-9518 Рис. 1.3. Набор элементов данных (простое двумерное отображение элементов данных) записи типа «СЛУЖАЩИЕ» Номер-рейса + Дата-вылета; Шифр-организации + Шифр-служащего). Первичный ключ – это такой элемент данных или такая совокупность элементов данных, которая единственным образом идентифицирует одну запись или группу записей. Кроме того, первичный ключ должен включать в свой состав минимально необходимое количество элементов данных. 20 Значения атрибутов не обязательно должны запоминаться вместе с ключами таким способом, как это показано на рис. 1.1.÷1.3, так как в этом случае почти всегда существует избыточность значений атрибутов. Для того чтобы устранить избыточность, значения атрибутов могут храниться отдельно от ключей и снабжаться указателями на них со стороны ключей. Прикладная программа может использовать ключ, который идентифицирует не уникальную запись (кортеж), а все записи или группы записей, имеющие определенное свойство. Такой ключ называется вторичным. Вторичный ключ не идентифицирует объект единственным образом. Например, значение атрибута Цвет может быть использовано как вторичный ключ, например Зелёный. Этот ключ может быть использован для идентификации объектов, которые имеют например Зелёный цвет или для тех записей (кортежей), для которых элемент данных Цвет имеет значение Зелёный. Файл может иметь несколько вторичных ключей, которые используются для поиска записей с данными характеристиками. Например, на рис. 1.3. вторичными ключами могут быть – Шифр-профессии и Пол. Связь вторичного ключа с элементами данных или группами элементов данных, к которым он относится, может быть реализована различными способами. Один из таких способов – использование вторичного индекса. Вторичный индекс использует вторичный ключ как вход, а на выходе предоставляет первичный ключ, в результате чего идентифицируется нужная запись. Элементарная форма вторичного индекса – инвертированный список. Инвертированный список содержит все значения вторичного ключа и хранит вместе с каждым его значением соответствующие идентификаторы записи. Например, на основе файла на рис. 1.3. для каждого вторичного ключа может 21 быть получен свой инвертированный список: 1) Шифр-профессии, Шифр-организации и Шифр-служащего; 2) Пол, Шифр-организации и Шифр-служащего. Списки не содержат других, представленных на рис. 1.1.÷1.3., атрибутов. Списки должны использоваться вместе с файлом (рис. 1.1.÷1.3.) для получения информации, касающейся других атрибутов. Существуют два основных метода, с помощью которых данные могут быть организованы и использованы. Первый способ определяется тем, что каждая запись (кортеж) содержит значения атрибутов данного объекта, Второй способ является инверсией первого; с помощью этого способа могут быть получены идентификаторы объектов, связанных с данным атрибутом. Первый способ используется для получения информации на вопрос: каковы свойства данного объекта? Второй способ используется для получения информации на вопрос: какие объекты имеют данное свойство? Полностью инвертированный файл – это такой файл, который хранит идентификаторы объектов, связанные с конкретным значением каждого атрибута. Частично инвертированный файл является более простым и хранит идентификаторы объектов, связанные со значением некоторых (но не всех) атрибутов. 22 1.4. Типы организации данных. Администратор базы данных. Логическая и физическая независимость данных Существуют три типа организации данных: 1) Внешняя организация данных – связана с таким представлением данных, каким его понимают прикладные программисты и конечные пользователи. Например, программисты описывают свои представления о файлах в прикладных программах; 2) Глобальная логическая организация данных – это общая организация или концептуальная модель базы данных, на основании которой могут быть получены различные внешние организации данных. Такое логическое представление данных является полностью независимым от физической организации данных. Оно описывается на языке описания данных (ЯОД), который является частью программных средств управления базами данных; 3) Физическая организация данных – это физическое представление данных и расположение их на запоминающих устройствах. Она зависит от средств физического поиска записей – индикаторов, указателей, цепочек и т.д. – и определяется наличием областей переполнения и средств дозаписи (включения) новых записей и удаления ненужных и старых записей. Таким образом, эти три типа организации данных отличаются друг от друга. Для проектирования и обслуживания структур баз данных необходим администратор базы данных. Администратор базы данных – это лицо (или группа лиц), реализующее управление 23 базой данных. Администратор базы данных имеет глобальное представление об организации данных, отвечает за сохранность и защиту данных в базе данных и осуществляет контроль за всей структурой данных в базе данных. Данные из базы данных должны представляться только тем лицам, которые получили разрешение на их использование. Администратор базы данных, выполняя функции управления базой данных, не знает содержимое записей файлов, то есть не знает величин, записанных в элементах данных. Прикладные программисты и конечные пользователи, – при модификации записей путём добавления (или удаления) новых элементов данных, при изменении (то есть увеличении и уменьшении) размеров элементов данных, при создании новых типов записей (то есть новых файлов), – обращаются к администратору базы данных. Администратор базы данных выполняет соответствующие действия по модификации и организации соответствующих структур данных в базе данных, Прикладным программистам и конечным пользователям не разрешается изменять общую структуру данных. Только администратор базы данных, ответственный за систему в целом, может иметь дело со структурой данных в целом, то есть общей структурой данных в базе данных. Общая логическая структура данных, сложная, и по мере роста базы данных изменяется, то есть находится в состоянии постоянного развития. Поэтому необходимо обеспечить возможность изменения общей логической структуры данных без изменения при этом использующих её прикладных программ. Поэтому требуются два уровня независимости данных: 1) Логическая независимость данных – означает, что общая логическая структура данных может быть изменена без изменения прикладных программ (при изменении – нельзя 24 удалять из базы данных таких элементов, которые используются прикладными программами); 2) Физическая независимость данных – означает, что физическое расположение и организация данных могут изменяться, не вызывая при этом изменений ни общей логической структуры данных, ни прикладных программ. Программное обеспечение баз данных будет фактически получать представление данных прикладного программиста из общей логической структуры данных, а затем будет отображать общую логическую структуру данных в физическое представление данных. 1.5. Модель данных. Виды описания данных Если бы назначением базы данных было бы только хранение данных, то структура её была бы простой. Причина сложности базы данных объясняется тем, что она должна обеспечивать ещё и связи между различными элементами данных. Минимальным фрагментом данных является элемент данных (поле, элемент), который не может подразделяться на меньшие типы данных, не теряя при этом смысла. Для представления элемента данных используется эллипс, внутри которого записывают имя типа элемента данных (или шифр типа элемента данных): . Шифрдолжности о Сам по себе элемент данных ничего не представляет. Он 25 приобретает смысл только тогда, когда он связан с другими элементами данных,. Эта связь изображается следующим образом: Шифрслужащего Шифрдолжности База данных состоит из элементов данных и связей между ними. В базе данных много различных типов элементов данных, и поэтому необходима специальная схема, позволяющая изобразить логические связи между типами элементов данных. Эта схема называется моделью данных. Модели данных необходимо рассматривать до их описания физического размещения данных. Модели данных являются логическим представлением данных. До описания физической реализации связей между данными, необходимо определить способ, с помощью которого конечные пользователи и прикладные программисты представляют эти связи. Например, схема метрополитена не имеет отношения к физическому расположению путей и станций. На ней не показаны реальные расстояния между станциями и реальные изгибы путей. На этой схеме, подобно схеме базы данных, представлены логические связи между станциями. Строители могли изменить физические пути, но при этом логическая схема не изменилась бы. Поэтому её можно рассматривать как модель данных. Программные средства управления данными должны отделять физическую структуру данных от представления конечных пользователей и прикладных программистов, и от логической организации данных. Этим конечным пользователям и прикладным программистам предоставляется возможность 26 представлять логическую структуру данных независимо от физической реализации. Структуру данных описывают формальным образом. Описание логической и физической структур базы данных используются программными средствами управления базами данных при обработке требований пользователей и программистов на получение информации из базы данных. Описание общей логической структуры базы данных называют схемой, общей моделью данных, концептуальной схемой или концептуальной моделью. Схема представляет собой таблицу типов используемых данных. Она содержит имена объектов и их атрибуты и определяет существующие связи между ними. Схема представляет собой структуру, в которой могут быть помещены значения элементов данных. Например, табло в аэропорту можно представить как схему, в которой высвечивается информация о прибытии и отправлении самолётов. Схема не меняется, а величины, помещённые в ней, изменяются. Рис. 1.4. можно рассматривать как схему, так как из неё убраны значения атрибутов объектов. Если схема содержит значения элементов данных, то её называют экземпляром схемы. Рис. 1.4. можно рассматривать как экземпляр схемы, если в ней оставить только значения элементов данных. Используются следующие формы представления схемы базы данных: 1) Графовая форма представления схемы (графическая диаграмма схемы). При данной форме представления схемы агрегаты атрибутов, используемые для представления сущностей (то есть понятий существующих объектов), изображаются вершинами графа, а связи (отношения) отображаются соответствующими дугами. Для построения графической диаграммы схемы в терминах групп и групповых отношений (то есть 27 связей между группами в базе данных, – от группы-владельца к группе-члену), – типы групп изображаются прямоугольниками, над левым верхним углом которых указывается имя группы. Внутри прямоугольников указываются имена элементов данных, агрегированных в группу. Первичный ключ, идентифицирующий конкретный экземпляр типа группы, в каждом прямоугольнике диаграммы подчёркивается. Групповые отношения обозначаются стрелками (направленными дугами) от группы-владельца к группе-члену с указанием имени отношения (связи) и вида (коэффициента) группового отношения; 2) Табличная форма представления схемы. При данной форме представления схемы таблицу рассматривают как совокупное описание экземпляров сущности (то есть понятия существующего объекта, например, представленного на рис. 1.4.), или как совокупное описание экземпляров связи некоторого типа между сущностями (то есть понятиями существующих объектов, например, между объектами ОРГАНИЗАЦИИ и ОТДЕЛЫ, представленными на рис.1.4., таблица может быть представлена со столбцами идентифицирующих атрибутов рассматриваемых объектов), или можно использовать математическое понятие отношения для формального описания таблицы (как это используется при разработке реляционных моделей данных). Сущность представляется агрегатом атрибутов, а связь представляется агрегатом идентифицирующих атрибутов сущностей, между которыми она рассматривается. Используя столбцы таблицы для задания атрибутов и представляя экземпляр сущности агрегатом значений соответствующих атрибутов, а экземпляр связи представляя агрегатом значений идентифицирующих атрибутов сущностей, между которыми эта связь рассматривается, получим строку соответствующей таб- 28 лицы. В качестве аналогов таблиц и их элементов при компьютерной обработке выступают файлы, записи и поля; 3) Представление схемы базы данных в виде исходного текста на языке описания данных (ЯОД) системы управления базой данных (СУБД). Когда говорят о записи, то имеют в виду тип записи, а не связанные с ней значения данных. Запись (подобно схеме) – такая структура, в которую можно помещать конкретные значения данных. Каждая строка записи (типа записи), с значениями данных, называется экземпляром записи. Этим различаются понятия тип записи и экземпляр записи. Таким образом, каждая строка записи на рис. 1.4., с значениями данных, представляет экземпляр записи Подобное отличие между записью и экземпляром записи существует и для элементов данных, и для агрегатов данных, и для других категорий данных. Изображения схем и записей также представляют в виде расположенных одного за другим прямоугольников (диаграмм) так, чтобы они определяли все значения каждого элемента данных (рис. 1.4.). Таким образом, схемы можно изображать в форме диаграмм, используя для этого блоки. Сплошные линии, соединяющие блоки, отображают связи между блоками. Например, на рис. 1.4. запись типа ОРГАНИЗАЦИИ связана с многими записями типа ОТДЕЛЫ, а запись типа ОТДЕЛЫ связана с многими записями типа СЛУЖАЩИЕ. Штриховые линии могут отображать перекрёстные ссылки. Например, на рис. 1.4. могли штриховой линией от записи типа ОРГАНИЗАЦИИ отобразить перекрёстную ссылку к записям типа СЛУЖАЩИЕ. Таким образом, если штриховые линии опушены, диаграмма тем не менее представляет информацию полно. Линии перекрёстных ссылок указывают такие связи, которые обеспечива- 29 ют более быстрый поиск информации. Термин схема используется для определения полной таблицы всех типов элементов данных и типов записей, хранимых в базе данных (рис. 1.4.). Термином подсхема определяют описание данных, которое используют конечные пользователи и прикладные программисты. На основе одной схемы можно составить много различных подсхем. И наоборот, на основе различных подсхем составляется одна схема, удовлетворяющая все подсхемы. Конечные пользователи и прикладные программисты не знают о схеме базы данных, а имеют дело только с теми конкретными приложениями и записями, которые им нужны, то есть они имеют различные представления о данных, ОРГАНИЗАЦИИ Шифр организации Наименование организации Адрес организации ФИО руководителя Рабочий телефон руков. ОТДЕЛЫ Шифр Наименование отдела отдела Адрес отдела ФИО зав. отделом Рабочий телефон зав. отд. СЛУЖАЩИЕ Шифр ФИО Шифр Шифр служа- служащего долж- профес- Пол щего ности сии Рабочий телефон служащ. Рис. 1.4. Схема (описание логической организации базы данных) 30 которые получают из схемы. На рис. 1.5. и 1.6. представлены две подсхемы конечных пользователей (или прикладных программистов), полученные администратором базы данных из схемы, приведённой на рис. 1.4. Программы управления базой данных получают данные, соответствующие подсхеме, на основе данных, описанных в схеме, и передают их прикладной программе. Ни схемы, ни подсхемы не отражают способов физического хранения данных. Для каждой логической структуры возможны различные формы физической организации данных. Существуют четыре различных вида описания данных: 1) Подсхема, или подмодель, или логическая организация данных, или частное представление, или внешняя схема, – таблица, описывающая ту часть данных, которая ориентирована на нужды одной или нескольких прикладных программ (организация файлов конечных пользователей и прикладных программистов); 2) Схема, или глобальное описание логической структуры базы данных, или общая логическая организация данных, или концептуальная схема, – таблица, логически описывающая всю базу данных. Она отражает представление о данных администратора базы данных и системных разработчиков, имеющих дело с глобальным описанием данных; 3) Описание физической организации базы данных, или внутренняя схема, – таблица физического расположения данных на носителях информации. Она отражает представление о данных раэработчиков баз данных и системных программистов, связанных с вопросами производительности системы; 4) Описание данных конечных пользователей терминалов, или структуры данных, предназначенные для вывода на терминалы, – представлены средствами диалога человек – ком- 31 СВЕДЕНИЯ О ОТДЕЛАХ Шифр отдела Наименование отдела ФИО зав. отделом СВЕДЕНИЯ О СЛУЖАЩИХ Шифр служащего ФИО Шифр служащего должности Рабочий телефон служащ. Рис. 1.5. Подсхема первого пользователя (или программиста) ОРГАНИЗАЦИИ Шифр организации Наименование организации Адрес организации ФИО руководителя ДАННЫЕ О ОТДЕЛАХ Шифр отдела Наименование отдела ФИО зав. отделом Рабочий телефон зав. отд. Рис. 1.6. Подсхема второго пользователя (или программиста) пьютер. Описание данных, которое система передаёт конечным пользователям терминалов, должно быть близким к тому описанию данных, которое они используют в своей работе. Способ, с помощью которого описание передаётся конечному пользователю терминала, зависит от возможностей, запроекти- 32 рованных для диалога человек – компьютер. Система управления базами данных не используют сразу все описания данных системы. При необходимости изменения одного описания данных – другие описания данных сохраняются неизменными. Этот принцип позволяет избежать необходимости изменять одновременно все описания данных. 1.6. Структуры данных Для обозначения типов структур данных используется следующая терминология (см. § 1.2.): байт, элемент данных, агрегат данных, логическая запись (или запись), физическая запись, набор данных (или набор), группа, файл, база данных и банк данных. Элемент данных – это минимальная единица данных, к которой система управления базой данных (СУБД) может адресоваться непосредственно и с помощью которой выполняется построение всех остальных структур. Элементы данных используются для представления отдельных элементарных свойств объектов (например, Шифр-организации, Шифр-служащего, Шифр-должности и т.д.). Имя элемента данных используется для его идентификации в подсхемах и схеме структуры данных более высокого уровня. Максимальное количество экземпляров для вектора и повторяющейся группы ограничено и задаётся при спецификации подсхем и схемы записи. Агрегат данных может быть простым, если состоит только из элементов данных, и составным, если включает в свой состав другие агрегаты данных. Имя агрегата данных используется для его идентификации в под- 33 схемах и схеме структуры данного более высокого уровня. Имя записи используется для идентификации типа записи в подсхемах и схемах типов структур более высокого уровня. Запись – это агрегат, не входящий в состав никакого другого агрегата. Запись может иметь сложную иерархическую структуру, поскольку допускается многократное применение агрегации, то есть композиции полей в запись. Каждый тип набора представляет собой отношение (связь) между двумя или несколькими типами записей. Для каждого типа набора один тип записи может быть объявлен «владельцем», тогда остальные типы записей – его «члены», то есть различают «запись-владелец» и «запись-член» набора. Каждый экземпляр набора должен содержать один экземпляр записи, имеющий тип «запись-владелец», и может содержать любое количество зкземпляров записей типа «запись-член». Основное назначение набора – представление отношений (связей) между записями. Если запись используется для представления сущности (то есть понятия существующего объекта), то набор используется для представления отношений (связей) между рассматриваемыми сущностями, представленными записями, входящими в набор. В подсхемах и схеме набора задаются типы составляющих его записей, определяется тип записи владельца и типы записей членов, присваивается имя набора. Схема составной группы, в которую входит повторяющаяся группа, предусматривает включение некоторого числа реализации (экземпляров) этой повторяющейся группы. Понятие «группа» одновременно соответствует и понятию «агрегат» и понятию «запись». Групповое отношение используется для задания связей между группами в базе данных. Групповое отношение определяется как поименованное бинарное отношение, 34 заданное на двух множествах экземпляров рассматриваемых групп. Тип группового отношения задаётся между двумя типами групп. В групповом отношении один тип группы назначается владельцем отношения, а другой назначается членом отношения. Экземпляр группового отношения представлен одним экземпляром группы типа группа-владелец и совокупностью связанных с ним экземпляром групп-членов. Набор файлов (или библиотека) – поименованная совокупность файлов, обрабатываемых в системе. База данных – поименованная совокупность экземпляров записей различного типа, содержащая ссылки между записями, представленные экземплярами наборов. Описание структуры базы данных задаётся её схемой (глобальным описанием логической структуры базы данных, общей логической организацией данных, концептуальной схемой). База данных – поименованная совокупность экземпляров групп и групповых отношений. В схеме базы данных задаются типы групп и групповых отношений. Структуризация данных базируется на использовании концепций типа «агрегация» и «обобщение». Агрегация используется для композиции полей в запись. Обобщение используется для представления множества экземпляров записей одного типа одной общей структурой более высокого уровня – файлом, а также для выборки из файла прикладной программой некоторого подмножества экземпляров записей, удовлетворяющих заданному критерию выборки. 35 1.7. Основные операции над данными. Ограничения целостности Динамические свойства модели данных выражаются множеством операций языка манипулирования данными (ЯМД) системы управления базой данных (СУБД), которые определяют допустимые действия над некоторой реализацией базы данных для её перевода из одного состояния в другое. Реализация операций над данными включает в себя селекцию данных, то есть выделение из всей совокупности тех данных, над которыми должна быть выполнена требуемая операция, и действие над выделенными данными, которое определяет характер операции. Условие селекции специфицируется в виде некоторого критерия отбора данных, над которыми должно быть произведено требуемое действие. Селекция выполняется с использованием (то есть следующими способами): 1) Логической позиции данного (селекции посредством текущей). Этот способ базируется на определённой упорядоченности данных в памяти системы. Выполняется селекция данных, находящихся на первой или последней позиции, следующей или предыдущей позиции, на n - й позиции (например, НАЙТИ-СЛЕДУЮЩУЮ запись или НАЙТИ-ПРЕДЫДУЩУЮ запись); 2) Значений данных. По данному способу критерий селекции может определять простые или булевы условия отбора данных. Простое условие задаётся на одном атрибуте и одном значении атрибута (например, Шифр-служащего = 3001). Оператор условия – это один из операторов: = , ≠ , > , ≥ , < , ≤ . На основе простых условий строятся булевы условия с ис- 36 пользованием операторов И (AND), ИЛИ (OR), НЕ (NOT). С помощью условия селекции выполняется идентификация требуемых данных в базе данных (например, Шифр-организации = = 104715.AND.Шифр-профессии = 2105 означает селекцию описаний сотрудников в организации с шифром 104715 и шифром профессии 2105); 3) Связей между данными. Например, выполнить селекцию описаний всех отделов в данной организации, в которых работают служащие с шифром профессии 2105. По характеру производимого действия различают следующие основные виды операций: 1) идентификация данного и нахождение его позиции в базе данных; 2) выборку (чтение) данного из базы данных; 3) включение (запись, дозапись) данного в базу данных; 4) удаление данного из базы данных; 5) исправление (изменение) данного в базе данных. Первые две операции часто объединяются. Модели данных также предусматривают специальные операции для установления и разрыва связей между данными в базе данных. В терминологии групп и групповых отношений (см. §§ 1.2. и 1.6.) различают следующие основные виды операций: 1) идентифицировать экземпляр группы и найти его позицию в базе данных (по значениям элементов данных или по связам с другими экземплярами групп в указанных экземплярах групповых отношений); 2) выборка (чтение) идентифицированного экземпляра группы из базы данных; 3) включить (записать, дозаписать) экземпляр группы в базу данных, устанавливая одновременно связи с другими экземплярами групп в соответствующих экземплярах групповых отношений (в соответствии со схемой базы данных); 4) удалить идентифицированный экземпляр группы из базы данных, одновременно скор- 37 ректировав соответствующие экземпляры групповых отношений; 5) исправить (изменить) значения данных в идентифицированном экземпляре группы и выполнить коррекцию соответствующих экземпляров групповых отношений, если это требуется в соответствии с новыми (изменёнными) значениями данных; 6) установить (разорвать) связь между двумя идентифицированными экземплярами групп (с целью модификации соответствующего экземпляра группового отношения). По характеру способа получения результата различают навигационные и спецификационные операции. Если результат операции получается путём прохождения по связам, реализованным в структуре базы данных, то такие операции называются навигационными. Результат навигационной операции – это единственный объект базы данных (например, экземпляр записи). Если в операции определяются только требования к результату, но не задаётся способ его получения, то операции называются спецификационными. Для спецификационных операций спецификация требований к результату может выполняться, например, с помощью теоретико-множественных операций или операций исчисления предикатов. Результат спецификационной операции – некоторое множество объектов базы данных. Рассмотренные виды операций подчиняются простой схеме – вначале выполняется селекция трубуемых данных, сопровождаемая установкой требуемых значений «текущих», а затем выполняется – выборка (чтение), включение (запись, дозапись), удаление или исправление (изменение) данных. Часто применяют более обобщённые операции, называемые процедурами базы данных, которые реализуют выполнение более сложных действий над данными. Процедура базы данных – это последовательность операций, позволяющих реали- 38 зовать определённый алгоритм обработки данных. Например, при выполнении операции удаления из базы данных экземпляра группы, относящегося к типу группы-владельца некоторого группового отношения, система управления базой данных (СУБД) автоматически выполняет коррекцию группового отношения, запустив процедуру базы данных, которая удалит экземпляры групп-членов, связанных с удаляемым экземпляром группы-владельца. Процедуры, выполняющие одну или более операций включения (записи, дозаписи), удаления или обновления (исправления, изменения), также называют запускаемым включением, запускаемым удалением, запускаемым обновлением. Особенность процедуры базы данных и отдельной операции – неделимость их действия. Процедура базы данных рассматривается как единая макрооперация, при выполнении которой ни одна другая процедура или прикладная программа не могут обратиться к данным, обрабатываемым стартовавшей процедурой, до её окончания. Поэтому процедуры базы данных или такие операции ещё называют транзакциями. СУБД с помощью процедур базы данных выполняет: обработку различных ситуаций, возникающих при функционировании системы; контроль целостности данных; контроль доступа к данным; сбор статистики обращения к данным; реализацию основных функций управления данными базы данных. Особый вид процедуры базы данных – вычисляющие значения атрибутов отсутствующих в базе данных, но которые можно вычислить на основании других атрибутов или значений других атрибутов. Например, вычисление количества служащих в организации, имеющих шифр профессии 2105 по данному атрибуту в схеме базы данных, представленной на рис 1.4.; или вычисление возраста служащих по дате рождения и текущей ка- 39 лендарной дате. В этом случае атрибуты Количество-служащих и Возраст являются виртуальными атрибутами (согласно их определения в § 1.3.). Для многих процедур базы данных алгоритмы их выполнения зависят от значений данных и управляются этими данными. Таким образом, запуск процедур базы данных может выполняться либо конечными пользователями и прикладными программистами, либо автоматически СУБД при возникновении определённых ситуаций. Поэтому процедуры базы данных – мощные и гибкие средства, позволяющие существенно расширять динамические свойства модели данных. Логические ограничения, которые накладываются на данные базы данных, называются ограничениями целостности. Ограничения целостности используются: 1) в моделях данных для поддержания целостности данных при функционировании системы, то есть СУБД должна обеспечивать непротиворечивость данных заданным ограничениям целостности при переводе базы данных из одного состояния в другое; 2) для адекватного отражения предметной области с помощью данных, хранимых в базе данных. Ограничения целостности, задаваемые для данных в базе данных, специфицируются не для одной реализации, а для множества реализаций. Ограничения целостности можно специфицировать для элементов, групп и групповых отношений. Существуют следующие виды ограничений целостности: 1) Внутренние ограничения целостности. Внутренние ограничения целостности представлены в модели данных правилами композиции допустимых структур данных и в схеме базы данных отражаются в структурных спецификациях. Модель данных определяет допустимые структуры данных, которые 40 поддерживаются СУБД, реализующих модель данных, с множеством операций над данными для заданных типов структур данных. Например, «запись типа ОРГАНИЗАЦИИ состоит из 5 полей» (согласно рис. 1.4.); или в иерархической модели данных (рассматриваемой в § 2.3.) связи между сущностями (группами) ограничены древовидной иерархической структурой, то есть сетевые структуры недопустимы. Нарушение внутренних ограничений целостности приводит к некорректности структур данных в базе данных; 2) Явные ограничения целостности. Явные ограничения целостности явно специфицируются в базе данных с помощью специальных конструкций (средств) языка описания данных (ЯОД), или в системе разрабатывается специальный язык спецификаций ограничений, или для описания явных ограничений целостности используются средства исчисления предикатов. Контроль выполнения явных ограничений целостности связан с проверкой некоторого множества значений данных, часть из которых должна быть получена путём многократного обращения к базе данных. Например, для всех типов записей, хранящихся в базе данных, определяются первичные ключи. Это означает, что множество экземпляров записей одного типа не может содержать двух или более экземпляров с одинаковым значением первичного ключа; или в схеме базы данных (рис. 1.4.) значение атрибута Шифр-отдела представляется целым числом из трёх цифр. Это означает, что шифры отделов, описания которых будут обрабатываться в системе, должны состоять из трёх цифр; или сумма значений по определённому атрибуту по всем экземплярам записей одного типа должна совпадать со значением определённого атрибута в экземпляре записи некоторого другого типа. 41 1.8. Архитектура базы и банка данных Наибольшее распространение получил трёхуровневый подход к построению баз и банков данных (рис. 1.7.). На внешнем уровне реализуются модели предметной области в виде, требуемом для отдельных программистов и пользователей. В базе данных имеются столько внешних схем (подсхем), сколько требуется, чтобы описать различные внешние модели данных, подлежащие реализации. Объекты во внешних моделях («внешние» записи) создаются при реализации Внешний пользователь Администратор базы данных Прикладной программист Внешний уровень Внешняя модель данных Концептуальный уровень Концептуальная модель данных Внутренний уровень Внутренняя модель данных ФБД Рис. 1.7. Трёхуровневая архитектура базы и банка данных 42 приложений, по требованию программистов и пользователей, и перестают существовать, когда в них отпадает необходимость. Необходимость внешнего уровня представления данных обусловлена тем, что отдельные программисты и пользователи, согласно их логического представления, имеют отношение к небольшой, определённой, части данных, хранимых в базе данных, и кроме того, обеспечивается защита данных, не имеющих отношения к конкретному программисту или пользователю, от его некомпетентных действий. Администратор базы данных по внешним приложениям формирует в словаре данных банка данных требуемые внешние схемы (подсхемы) и отвечает за их согласованность с концептуальной схемой базы данных. На концептуальном уровне поддерживается модель предметной области для всех приложений. В базе данных имеется одна концептуальная схема, описывающая концептуальную модель данных. Администратор базы данных формирует в словаре данных банка данных концептуальную схему, отвечает за её состояние, чтобы она удовлетворяла всем внешним приложениям программистов и пользователей, согласно внешних схем (подсхем), а также при необходимости вносит необходимые модификации, согласно внешних схем (подсхем) и требований нормализации схем отношений базы данных. На внутреннем уровне администратор базы данных формирует внутреннюю схему, описывающую внутреннюю модель данных, и отвечает за её соответствие концептуальной схемы. Администратор базы данных по внутренней модели данных отвечает за рациональную организацию данных в памяти системы, за обеспечение требуемой производительности системы, и таким образом обеспечивается экономичное использование 43 ресурсов системы и относительная независимость системы от используемых технических средств. Поэтому при использовании системы управления базами данных (СУБД) не разрабатывают программы манипулирования данными на физическом уровне, а используют программы методов доступа операционной системы. И таким образом обеспечивается относительная независимость операций хранения и обработки данных от используемых технических средств и операционной системы. Поэтому во внутренней модели базы данных, то есть в модели представления хранимых данных, база данных представлена в виде совокупности хранимых файлов, для которых известна структура хранимых записей, определены служебные поля, реализующие связи между записями, известны методы доступа СУБД к этим записям и т.д. Таким образом, для базы данных имеется одна внутрення схема, описывающая внутреннюю модель базы данных. Если администратор базы данных реорганизует базу данных, то одновременно вносит соответствующие коррективы в внутреннюю схему, хранимую в словаре данных банка данных. В трёхуровневой архитектуре базе данных СУБД реализует следующие (прямые и обратные) отображения: «Внешняя модель концептуальная модель внутренняя модель физическая база данных». СУБД реализует необходимые преображения данных, в соответствии с интерфейсами системы, на основе программ преображения внутренней схемы, концептуальной схемы и внешних схем (подсхем), выполнения отображений «внешний – концептуальный», «концептуальный – внутренний», «внутренний – память». СУБД обращается к словарю данных банка данных, считывает внутреннюю схему, концептуальную схему, внешние 44 схемы (подсхемы), считывает требуемые данные из базы данных и, выполняя все преобразования, передаёт их в прикладную программу. Таким образом в базе данных реализуются логическая и физическая независимости данных. СУБД реализует обмен данными между рабочей областью ввода-вывода прикладных программ и физической базой данных (ФБД). Все запросы прикладных программ поступают в СУБД. На основании описания внешних, концептуальной и внутренней моделей и описания отображения между этими моделями, СУБД обращается к методам доступа операционной системы для выполнения операций на физическом уровне. Последовательность действий СУБД при формировании записи внешней модели данных для прикладной программы, то есть для процесса чтения записи из ФБД, состоит из следующих шагов: 1) прикладная программа обращается к СУБД с запросом на чтение записи внешней модели данных; 2) СУБД, используя схему (подсхему) внешней модели данных, схему концептуальной модели данных и описание отображения внешней модели данных на концептуальную модель данных, определяет, какие записи концептуальной модели данных необходимы для формирования записи внешней модели данных; 3) используя схемы концептуальной модели данных и внутренней модели данных и описание отображения концептуальной модели данных на внутреннюю модель данных, СУБД определяет, какие хранимые записи необходимы для построения записей концептуальной модели данных и какая совокупность физических записей необходима для считывания из ФБД; 4) СУБД выдаёт операционной системе запрос на считывание в свою буферную область памяти необходимых записей из ФБД; 5) операционная система с помощью своих методов доступа считывает из фи- 45 зической памяти (ФБД) затребованные СУБД физические записи и помещает их в буферные области памяти СУБД (сообщения операционной системы о выполнении своих операций добавляются к сообщениям СУБД); 6) на основании имеющихся схем и подсхем моделей данных и описаний соответствующих отображений СУБД формирует в буферной области памяти запись внешней модели данных в виде, который требуется прикладной программе; 7) СУБД пересылает сформированную запись внешней модели данных в рабочую область ввода-вывода прикладной программы; 8) СУБД передаёт в прикладную программу свои сообщения и сообщения операционной системы о результатах выполнения запроса; 9) прикладная программа обрабатывает запись, поступившую в её рабочую область вводавывода. В процессе формирования и модификации записи в ФБД запись сначала считывается и модифицируется в рабочей области программы, а затем СУБД передаётся команда записать данные в ФБД. СУБД в этом случае осуществляет в системной буферной области памяти необходимые преобразования данных – обратные тем преобразованиям, которые были сделаны при считывании данных из ФБД. Выбор варианта реализации функций отображения между моделями данных и функций манипулирования данными определяется компромиссным решением между производительностью системы и её функциональной гибкостью. В одном случае каждой концептуальной записи соответствует внутренняя запись, и каждой внешней записи соответствует концептуальная запись. Таким образом, внешняя запись реализуется непосредственно из внутренней записи. В этом случае система обладает как высокой производительностью при обработке данных, так и наибольшей избыточностью. В другом случае на осно- 46 вании схем сразу создаётся программа для реализации требуемого отображения, и с её помощью выполняется непосредственное формирование внешней записи из внутренних записей. На практике чаще используются СУБД, которые вначале формируют концептуальные записи из различных внутренних записей, а затем из концептуальных записей извлекаются необходимые данные и формируется внешняя запись, которая требуется прикладной программе. 1.9. Связь. Ассоциации элементов Схемы и подсхемы (см. § 1.5.) представляют собой диаграммы, отображающие типы элементов данных и связи между ними. Связи между двумя элементами данных могут быть трёх типов. Первый тип – связь «один-к-одному», то есть связь элемента данных А с элементом данных В. Она означает, что в каждый момент времени, каждому значению элемента A (например: Шифр-служащего) соответствует одно и только одно значение ассоциированного с ним элемента В (например: Шифр-должности). Такую связь изображают стрелкой, связывающей А с В (рис. 1.8.). Такой тип связи называется одномерной ассоциацией элементов А и В. Это означает, что А идентифицирует В. Если известна величина А, то можно узнать величину В. Одиночная стрелка означает, что А идентифицирует В (А В), то есть если А имеет значение а, то В должен иметь значение в. Одномерную ассоциацию называют простой связью. Второй тип – связь «один-ко-многим», устанавливается между элементами А и В. Она означает, что одному значению элемента А (например: Шифр-служащего) соответствует 0, 1 47 А В Шифрслужащего Шифрдолжности Рис. 1.8. Тип связи «один-к-одному» или несколько значений ассоциированного с ним элемента В (например: Имя-ребёнка). Такую связь изображают двойной стрелкой от А к В (рис. 1.9.) (А В). Такой тип связи называется М-ассоциацией элементов А и В. В этом случае А не идентифицирует В. М-ассоциацию называют сложной связью. А В Шифрслужащего Имяребёнка Рис. 1.9. Тип связи «один-ко-многим» Между двумя любими элементами данных существует связь в обоих направлениях. Таким образом, возможны четыре представления прямой и обратной связи: 1 : 1, 1 : М, М : 1 и М : М. По характеру бинарных связей между экземплярами рассматриваемых групп (например, типа A и типа B) различают групповые отношения вида: 1 : 1; 1 : M; M : 1; M : М. Пары чисел: 1 : 1, 1 : M, M : 1, M : М, – называют коэффициентами группового отношения. Групповые отношения вида: 1 : 1, 1 : M, M : 1, – называют функциональными. 48 Третий тип – условная связь элемента А с элементом В. Она означает, что каждому значению элемента А (например: Шифр-служащего) может соответствовать 1 или 0 значений ассоциированного с ним элемента В (например: Имя-супруги). Такую связь изображают одиночной стрелкой от А к В с буквой С над ней (рис. 1.10.). Такой тип связи называется С-ассоциацией элементов А и В. Этот тип ассоциации представляет собой особый случай М-ассоциации. А Шифрслужащего С С В Имясупруги Рис. 1.10. Тип – условная связь Схемы и подсхемы можно проектировать, изображая каждый элемент данных и необходимые связи между ними в виде овал-схемы (рис 1.12.) и овал-подсхем (рис. 2.16. и 2.17. в § 2.8.). Разработка баз данных осуществляется поэтапным объединением представлений пользователей и программистов о данных (подсхем) с целью формирования такой схемы, на основании которой могут быть получены все представления пользователей и программистов. Базы данных содержат сотни или даже тысячи типов элементов данных. Между N типами элементов данных возможно N(N − 1) связей. Для уменьшения количества связей в базах данных элементы данных объединяются в группы, называемые записями или кортежами. Каждая запись должна содержать ключевой элемент данных, называемый первичным ключом, который идентифициру- 49 ет другие элементы данных, называемые атрибутами. Первичный ключ – это атрибут или совокупность атрибутов, значения которых уникально идентифицируют другие атрибуты в записи. Кроме того, первичный ключ должен включать в свой состав минимально необходимое количество атрибутов. Если первичный ключ состоит из нескольких элементов данных, то он называется сцеплённым (составным). Сцеплённый (составной) первичный ключ обрабатывается как один элемент данных, и на овал-диаграммах (овал-подсхемах и овал-схеме) занимает один овал, в котором символ « + » используется для объединения элементов данных сцеплённого ключа (рис.1.11.): Номер-рейса + Дата Рис. 1.11. Сцеплённый первичный ключ Первичные ключи в овал-диаграммах, то есть в овал-подсхемах и овал-схеме, подчёркиваются. В овал-диаграммах первичным ключом может быть определён такой элемент данных (или несколько элементов данных), от которого исходит одна или несколько простых стрелок, связывающих элементы записи, то есть остальные атрибуты записи. Простыми атрибутами в овалдиаграммах являются любые элементы данных, которые не имеют направленных от них простых стрелок, но могут иметь двойные стрелки к первичному ключу (если они определяются в овал-схемах и овал-подсхемах как вторичные ключи). Вторичный ключ – это атрибут или совокупность атрибутов, значения которых уникально не идентифицируют другие атрибуты в записи, а все записи, имеющие определённые значения этих атрибутов, то есть вторичный ключ необходим для выде- 50 ления записей, обладающих необходимыми нам свойствами. Записи изображаются также в виде прямоугольников (диаграмм), которые имеют имена атрибутов, а также могут быть поименованы именем типа записи (см. рис. 1.4.÷1.6. в § 1.5.). BIWOR1 BIWNO2 BIWWR4 BITOT2 BITNT3 BITWT5 BICCL2 BICWC4 BICPR6 BIWAO3 BIWTR5 BITAT4 BITTT6 BICDO5 BICPO7 BICTC8 Рис. 1.12. Овал-схема (овал-диаграмма) для схемы, приведённой на рис. 1.4. 51 Первичные ключи в таких диаграммах, то есть в схеме (рис. 1.4.) и подсхемах (рис. 1.5.÷1.6.), также подчёркиваются. Подсхемы и схема создаются по следующим правилам: 1) Каждая запись имеет простую структуру, и некоторые записи могут иметь сцеплённый ключ; 2) Записи и элементы данных поименованы; 3) Никакие две записи и два элемента даннах в записи не могут иметь одно и то же имя; 4) Связи между записями изображаются с использованием одного из трёх типов асасциаций 1, М или С; 5) Первичный ключ каждой записи подчёркивается; 6) Показываются связи вторичных ключей. Часто для максимальной декомпозиции базы данных подсхемы и схему представляют в виде списков двоичных связей, эквивалентных овал диаграмм. Для этого для каждой подсхемы и схемы в отдельных таблицах описываются все двоичные связи между элементами данных. В первом столбце таблицы перечисляются имена всех элементов данных, от которых исходят стрелки (согласно овал-диаграммы) к другим элементам данных (перечисленные во-втором столбце таблицы), и для каждой связи в третьем столбце указывается один из трёх типов ассоциаций 1, М или С. 1.10. Предметная область. Моделирование предметной области Для семантического описания предметной области и представления информации необходимо разработать модель типа «сущность – связь». Предметная область – это область применения проектируемой базы данных. Модель типа «сущность – связь» – это неформальная модель предметной области, кото- 52 рая используется на этапе инфологического проектирования базы данных. Данная модель позволяет моделировать объекты и взаимоотношения объектов предметной области. При разработке модели типа «сущность – связь» в виде графической диаграммы (рис. 1.13.), для представления составляющих предметной области, используются три конструктивных основных элемента – сущность, атрибут и связь. Сущность – это собирательное понятие, некоторая абстракция реально существующего объекта, процесса или явления, о котором необходимо хранить информацию в системе. В качестве сущности в моделях предметной области рассматриваются материальные (организации, отделы, служащие, студенты, изделие и т.п.) и не материальные (курсовая работа, реферат диссертации и т.п.) объекты реальной действительности. Тип сущности определяет набор однородных объектов, а экземпляр сущности – конкретный объект в наборе. Каждый рассматриваемый в модели предметной области тип сущности должен быть поименован и обозначают прямоугольником. Атрибут – это поименованная характеристика сущности, которая принимает значения из некоторого множества значений. В модели предметной области атрибут выступает в качестве средства, с помощью которого моделируются свойства сущностей. Кроме присвоения атрибутам наименований, приводят смысловое описание атрибутов, указывают, для чего они используются, и определяют множество их допустимых значений. В модели предметной области каждый атрибут обозначают овалом, соединяя его с соответствующим типом сущности ненаправленным ребром. Основное назначение атрибута – описание свойства сущности, а также идентификация экземпляров сущности. Для идентификации конкретных экземпляров сущностей 53 Наименование -организации Адресорганизации ФИОр руководителя Шифрорганизации ОРГАНИЗАЦИИ Рабочий-телефон-руков. Находятся-в Состоит-из Шифротдела ФИО-зав.отделом Наименование -отдела Рабочий-телефон-зав.-отд. ОТДЕЛЫ Адресотдела Работают Входят-в Шифрслужащего Шифрдолжности СЛУЖАЩИЕ ФИОслужащего Шифрпрофессии Рабочий-телефон-служащ. Пол Рис. 1.13. Модель предметной области (графическая диаграмма) в некотором типе используются специальные атрибуты – идентификаторы. Идентификатором может быть один или не- 54 сколько атрибутов, значения которых позволяют однозначно отличать один экземпляр сущности от другого. Таким образом определяется первичный ключ – это атрибут или совокупность атрибутов, значения которых уникально идентифицируют другие атрибуты, то есть значения которых уникально идентифицируют каждый объект в наборе объектов. Кроме того, первичный ключ должен включать в свой состав минимально необходимое количество атрибутов. Если первичный ключ состоит из нескольких атрибутов, то он называется сцеплённым (составным). Сцеплённый (составной) первичный ключ обрабатывается как один атрибут, и на графических диаграммах занимает один овал, в котором символ « + » используется для объединения атрибутов сцеплённого ключа. Идентифицирующие атрибуты, то есть первичные ключи в графических диаграммах, как и в овал-диаграммах, то есть в овал-схеме и овалподсхемах, подчёркиваются. Атрибут можно использовать и для представления связей (отношений) между сущностями, поскольку связь (отношение) характеризует именно те объекты, между которыми она существует. Также определяются вторичные ключи – это атрибут или совокупность атрибутов, значения которых уникально не идентифицируют другие атрибуты, то есть идентифицируют не уникальный объект в наборе объектов, а все объекты, имеющие определённые значения этих атрибутов. Вторичный ключ (например: Шифр-профессии, – согласно рис. 1.13.) необходим для выделения из набора объекты, обладающих необходимыми нам свойствами. Вторичный ключ называют также ключом поиска. Связи – выступают в модели предметной области в качестве средства, с помощью которого представляются отношения между сущностями, имеющими место в предметной области. 55 Тип связи рассматривается между типами сущностей (например: тип связи «Состоит-из» рассматривается между типами сущностей «ОРГАНИЗАЦИИ – ОТДЕЛЫ», а тип связи «Находятся-в» рассматривается между сущностями «ОТДЕЛЫ – – ОРГАНИЗАЦИИ», – согласно рис. 1.13.), а конкретный экземпляр связи рассматриваемого типа существует между конкретными зкземплярами рассматриваемых типов сущностей. Связи (отношения) между сущностями специфицируются выражениями реляционного вида, в которых сущности представлены своими идентифицирующими атрибутами. Во многих случаях интересен не сам факт наличия отношения между сущностями, а свойства этого отношения. При анализе связей между сущностями могут встречаться бинарные (между двумя сущностями), тернарные (между тремя сущностями) и, в общем случае n-арные связи. Для определения характера взаимосвязей между двумя типами сущностей используются прямое и обратное отображения между двумя соответствующими множествами экземплярами сущностей. Приведём классификацию бинарных связей. Отображение 1 : 1 (связь «один-к-одному»). С помощью отображения 1 : 1 (рис 1.14.) определяет такой тип связи между типами сущностей А (например: КВАРТИРА) и В (например: КВАРТИРОСЪЁМЩИК), когда каждому экземпляру сущности А соответствует один и только один экземпляр сущности В и, наоборот, каждому экземпляру сущности В соответствует один и только один экземпляр сущности А. Это означает, что один 1 1 КВАРТИРОСЪЁМЩИК КВАРТИРА Рис. 1.14. Отображение 1 : 1 56 экземпляр сущности, от которого направлена связь, например А, идентифицирует один и только один экземпляр другой сущности В (к которому направлена связь) и наоборот. Идентификация экземпляров сущностей уникальна в обоих направлениях для отображений 1 : 1. Отображение 1 : М (связь «один-ко-многим»). С помощью отображения 1 : М (рис. 1.15.) определяется тип связи между типами сущностей A (например: ОТДЕЛЫ) и B (например: СЛУЖАЩИЕ), когда одному экземпляру сущности A может соответствовать 0, 1 или несколько экземпляров сущности В, однако каждому экземпляру сущности В соответствует только один экземпляр сущности А. Это означает, что с одним экземпляром сущности А может быть связано либо несколько экземпляров сущности В, либо один, либо ни одного. Но при этом каждый экземпляр сущности В связан только с одним экземпляром сущности А, то есть идентификация экземпляров при отображении 1 : М уникальна только в направлении от В к А. 1 М СЛУЖАЩИЕ ОТДЕЛЫ Рис. 1.15. Отображение 1 : М Отображение М : 1 (связь «многие-к-одному»). Это отображение является обратным отображением 1 : М (рис. 1.16.). Отображение М : N (связь «многие-ко-многим»). С помощью М 1 ОТДЕЛЫ СЛУЖАЩИЕ Рис. 1.16. Отображение М : 1 57 отображения М : N (рис. 1.17.) определяется тип связи между типами сущностей А (например: СТУДЕНТ) и В (например: ДИСЦИПЛИНА), при котором каждому экземпляру сущности М N ДИСЦИПЛИНА СТУДЕНТ Рис. 1.17. Отображение М : N А может соответствовать 0, 1 или несколько экземпляров сущности В и наоборот. Это означает, что с одним экземпляром сущности А может быть связано либо несколько экземпляров сущности В, либо один, либо ни одного. И наоборот, с одним экземпляром сущности В также может быть связано либо несколько экземпляров сущности А, либо один, либо ни одного, то есть идентификация экземпляров сущностей неуникальна в обоих направлениях. В некоторых случаях рассматривают однонаправленную связь от сущности А к сущности В. В зависимости от количественных характеристик отображения различают простую и многозначную однонаправленную связь. При простой однонаправленной связи (рис. 1.18.) от сущности А (например: СУПРУГ) к сущности В (например: СУПРУГА) одному и тому же экземпляру сущности А соответствует один и тот же экземпляр сущности В. При этом обратная связь от сущности В к сущности А не определена. Идентификация эк1 СУПРУГА СУПРУГ Рис. 1.18. Однонаправленная простая связь 58 земпляров сущности В экземплярами сущности А – уникальна (однозначна). При многозначной однонаправленной связи (рис. 1.19.) от сущности А (например: ПАЦИЕНТ) к сущности В (например: ЗАБОЛЕВАНИЕ) одному и тому же экземпляру сущности А соответвует 0, 1 или несколько экземпляров сущности В. При этом обратная связь от сущности В к сущности А не определена. Идентификация экземпляров сущности В экземплярами сущности А не уникальна. м ЗАБОЛЕВАНИЕ ПАЦИЕНТ Рис. 1.19. Однонаправленная многозначная связь В модели предметной области каждая связь (отношение) должна быть поименована и обозначается ромбом. При моделировании предметной области используются следующие общие правила: 1) используются только три типа конструктивных элементов – сущность, атрибут, связь, – по которым составляются спецификации; 2) Каждый компонент информации моделируется только одним конструктивным элементом – сущностью, атрибутом или связью. 59 Глава 2. Методика проектирования баз данных 2.1. Моделирование локальных представлений Моделирование локальных представлений завершается построением модели локального представления (рис. 2.1.). Выбор локального представления зависит от масштабов предметной области. Для удобства проектирования в отдельном локальном представлении используются шесть-семь типов сущностей. Локальное представление соответствует отдельной функциональной задаче либо отдельному пользователю. При построении каждой модели локального представления выполняются следующие работы: формулирование сущностей, выбор идентифицирующего атрибута для каждой сущности, назначение сущностям описательных атрибутов и спецификация связей. Формулирование сущностей. Для каждого локального представления необходимо сформулировать сущности (например: ОТДЕЛЫ и СЛУЖАЩИЕ, – согласно рис. 2.1.). Каждый рассматриваемый в модели локального представления тип сущности должен быть поименован и обозначают прямоугольником. Каждой выбранной сущности должно быть присвоено чёткое наименование, отражающее смысловое содержание вводимого понятия. Расплывчатые наименования, наличие синонимов (одно и то же понятие имеет различные наименования) и омонимов (различные понятия имеют одно и то же наименование) приводят к ошибкам в проектировании и недопустимы. Так как некоторая порция информации может быть представлена любым из типов конструктивных элементов: сущность, атрибут 60 Шифротдела ФИО-зав.отделом фон зав. отд. ОТДЕЛЫ Наименование -отдела Числятся Работают-в Шифрслужащего Рабочий-телефон-служащ. СЛУЖАЩИЕ ФИОслужащего Шифрдолжности Рис. 2.1. Модель локального представления (графическая диаграмма) или связь – необходимо проработать и выбрать такой вариант модели локального представления, чтобы удовлетворить информационные потребности всех пользователей и программистов, то есть обеспечить возможность совместного использования данных в базе данных пользователей и программистов. Выбор идентифицирующего атрибута для каждой сущности. Для каждой сущности необходимо указать идентификатор (например: Шифр-отдела и Шифр-служащего, – согласно рис 2.1.), служащий для однозначного распознавания экземпляров сущности. В качестве идентификатора служит один атрибут или совокупность из нескольких атрибутов, в этом случае идентифицирующий атрибут является сцеплённым (составным) атрибутом, набор значений которого уникален, то есть значения идентифицирующего атрибута находятся во взаимно однозначном соответствии с экземплярами сущности. Идентификатор, то 61 есть атрибут или совокупность атрибутов, значения которых уникально идентифицируют каждый объект в наборе объектов, называют ключом. Каждый объект в наборе объектов различим, то есть каждый набор объектов имеет ключ. Один и тот же набор объектов может иметь несколько ключей. Один из них назначается первичным ключом набора объектов и называется первичным ключом записи. Все остальные ключи набора объектов называются возможными ключами. Таким образом, первичный ключ – это атрибут или совокупность атрибутов, значения которых уникально, то есть однозначно идентифицируют другие атрибуты. Кроме того, первичный ключ должен включать в свой состав минимально необходимое количество атрибутов. В моделях локального представления каждый первичный ключ, как и идентифицирующие ими другие атрибуты, обозначают овалом, соединяя их с соответствующим типом сущности ненаправленным ребром. Сцеплённый (составной) первичный ключ обрабатывается как один атрибут, и на графических диаграммах занимает один овал, в котором символ « + » используется для объединения атрибутов сцеплённого ключа. Идентифицирующие атрибуты, то есть первичные ключи, в графических диаграммах подчёркиваются. Назначение сущностям описательных атрибутов. Выделенным сущностям, и дополнение к идентифицирующим атрибутам, то есть первичным ключам, назначаются описательные атрибуты (например: Наименование-отдела, ФИО-зав.-отделом, ФИО-служащего и т.д., – согласно рис 2.1.). В моделях локального представления каждый описательный атрибут, как и первичные ключи, обозначают овалом, соединяя их с соответствующим типом сущности ненаправленным ребром. Также определяются вторичные ключи – это атрибут или совокуп- 62 ность атрибутов, значения которых уникально не идентифицицируют другие атрибуты, то есть идентифицируют не уникальный объект в наборе объектов, а все объекты, имеющие определённые значения этих атрибутов. Вторичный ключ (например: Шифр-должности, – согласно рис. 2.1.) необходим для выделения из набора объекты, обладающих необходимыми нам свойствами. Вторичный ключ называют также ключом поиска. Спецификация связей. Специфицируются связи типов: 1) «сущность – сущность»; 2) «сущность – атрибут»; 3) «атрибут – атрибут». Для спецификации связей типа «сущность – сущность» выявляются зависимости между сущностями (например: между сущностями «ОТДЕЛЫ – СЛУЖАЩИЕ», – согласно рис 2.1.). Определяется, какие связи необходимые, а какие избыточные. Для выявленных связей определяются их характеристики (см. § 1.10.), и каждый тип связи «сущность – сущность» именуется (например: тип связи «Работают» рассматривается между типами сущностей «ОТДЕЛЫ – СЛУЖАЩИЕ», а тип связи «Входят-в» рассматривается между сущностями «СЛУЖАЩИЕ – ОТДЕЛЫ», – согласно рис. 2.1.). В модели локального представления каждая связь (отношение) типа «сущность – – сущность» обозначается ромбом. В спецификациях связей типа «сущность – атрибут» для каждой сущности указываются все атрибуты (идентифицирующий (то есть первичный ключ) и описательные (включая и вторичные ключи) атрибуты), описывающие свойства сущности (например, для сущности «СЛУЖАЩИЕ» указывается атрибут «Шифр-служащего» и т.д., – согласно рис. 2.1.). В модели локального представления каждую связь (отношение) типа «сущность – атрибут» обозначают ненаправленным ребром. 63 В спецификациях связей типа «атрибут – атрибут» для каждой сущности указываются связи (отношения) как между атрибутами, описывающие данную сущность (то есть между идентифицирующим атрибутом (то есть первичным ключом) и описательными атрибутами, – на основании бинарных связей (отношений) между атрибутами в овал-диаграмме, в которой связи (отношения) представлены направленными дугами, – см. рис. 1.12.), так и между атрибутами, описывающими связи (отношения) типа «сущность – сущность». Моделирование каждого локального представления заканчивается графическим оформлением всех выявленных сущностей, связей между ними и атрибутов (рис. 2.1.) и составлением всех спецификаций. 2.2. Объединение моделей локальных представлений При объединении моделей локальных представлений формируются конструкции, являющиеся производными по отношению к использованным в локальных представлениях. Вводимые производные конструкции должны обеспечивать непротиворечивое представление данных. Образование производных конструкций выполняется введением понятий более высокого уровня по отношению к понятиям исходных объектов предметной области. Цель введения подобных абстракций: – ввести абстрактные понятия, удобные для решения задач системы, и установить связи этих понятий с более конкретными понятиями, использованными в модели (например, «Договор-Фирма»); 64 – образовать классы и подклассы подобных объектов и ввести соответствующие абстрактные понятия (например, понятия «Изделия-фирмы» вводятся как класс, а понятия «Типы-изделий» вводятся как подклассы), классифицировать объекты по некоторым условиям (например, «Покупные-детали» и «Детали-собственного-производства»); – объединить в композиционно единое представление представления о различных свойствах одного и того же объекта; – образовать производные типы объектов, соответствующие объединению, пересечению, разности и т.д. исходных объектов; – устранить несущественные различия в представлении подобных объектов. Перед объединением моделей локальных представлений необходимо решить вопрос о порядке их объединения. Используется бинарное (попарное) объединение моделей локальных представлений. При бинарном (попарном) объединении N1 объектов одного представления с N2 объектами другого представления результат даёт (N1 + N2 – X) объектов, где X – количество совпадающих объектов в объединяемых локальных представлениях, что минимизирует число сравниваемых объектов при объединении локальных представлений на последующих шагах процесса. Для упорядочения шагов процесса объединения локальных представлений необходимо выполнить группировку локальных представлений перед процессом объединения, и таким образом увеличивается значение фактора X и тем самим уменьшается количество операций сравнения при выполнении объединений локальных представлений. При объединении локальных представлений используются три основополагающие концепции: идентичность, агрегация и обобщение. 65 Два и более элементов модели идентичны, если имеют одинаковое семантическое (смысловое) значение. Агрегация позволяет рассматривать связь между элементами модели как новый элемент. При объединении локальных представлений агрегация встречается в следующих трёх формах: 1. В одном локальном представлении агрегатный объект определён как единое целое (например, объект A – некоторое изделие), а во-втором локальном представлении – рассматриваются его составные части (например, объекты B1, B2, B3 – некоторые детали, являющиеся составными частями объекта A, но сам объект A не определён). Чтобы включить эту информацию в модель объединённого представления, для совместного использования данных, выполняется объединение локальных представлений с использованием агрегации, – введением в рассмотрение нового агрегата (рис. 2.2.). A B1 B2 B3 Рис. 2.2. Объединение с использованием агрегации 2. Агрегатный объект как единое целое не определён ни в одном из локальных представлений, но в обоих локальных представлениях рассматриваются его различные составные части (например, в одном локальном предсталении определены объекты B1, B2, а в другом локальном представлении определены объекты B3, B4, B5, – которые являются составными частями объекта A, который не назван ни в одном локальном представлении). Чтобы включить эту информацию в модель объе- 66 динённого представления, для совместного использования данных, выполняется объединение локальных представлений с использованием агрегации, – введением в рассмотрение нового агрегата (рис. 2.3.). A B1 B2 B3 B4 B5 Рис. 2.3. Объединение с использованием агрегации 3. Один и тот же агрегатный объект рассматривается в обоих локальных представлениях, но составляющие различаются (например, в одном локальном представлении рассматривается агрегат представленный на рис. 2.4. а, а в другом локальном представлении рассматривается агрегат представленный на рис. 2.4. б). Чтобы включить эту информацию в модель объединённого представления, для совместного использования данных, а) A B1 B2 б) B3 B4 A B1 B2 B3 A B5 B6 B1 B2 B3 B4 B5 в) B6 Рис. 2.4. Объединение с использованием агрегации 67 выполняется объединение локальных представлений с использованием агрегации, – введением в рассмотрение нового агрегата (рис. 2.4. в). Обобщением называется абстракция данных, позволяющая трактовать класс различных подобных типов объектов как один поименованный обобщённый тип объекта. В обобщении подчёркивается общая природа объектов. В случае многоуровневой иерархии обобщений структура обобщения образует родовую иерархию, что приводит к появлению понятий родовой и видовой сущности. Вид есть род в совокупности с видовым отличием. Это означает, что все свойства родовой сущности должны наследоваться её видом, но при этом у вида могут появиться свои дополнительные свойства. При построении обобщений вводятся смысловые категории (обычно категории типа или роли), относительно которых формируются родовые иерархии. Процесс объединения локальных представлений продолжается до тех пор, пока не будут интегрированны все представления. После завершения объединения локальных представлений результат проектирования представляет собой концептуальную инфологическую модель предметной области. 2.3. Иерархическая модель данных. Иерархическое представление базы данных Древовидная структура, или дерево (рис. 2.5.), – это связный неориентированный граф, который не содержит циклов, то есть петель из замкнутых путей. При работе с деревом выделяют одну вершину (узел), определяют её как корень дерева и в 68 эту вершину (узел) не заходит ни одно ребро (узел). В этом случае дерево становится ориентированным. Ориентация на корневом дереве обычно определяется от корня. Корневое дерево как ориентированный граф определяется следующим образом: 1) имеется единственная вершина, называемая корнем, в которую не заходит ни одно ребро (узел); 2) во все остальные вершины (узлы) заходит только одно ребро (узел), и исходит произвольное (0, 1, 2, …, n) количество рёбер (узлов). Каждый узел, кроме корня, связан с одним узлом на более высоком уровне, называемым исходным узлом для данного узла. Ни один узел, со второго уровня, не имеет более одного исходного узла. Каждый узел может быть связан с одним или несколькими узлами на более низком уровне, называемых порождёнными узлами. Узлы, расположенные в конце ветви, то есть не имеющие порождённых узлов, называются листьями (узлы – G, L, M, N, O ÷ U, – на рис. 2.5.). Если ориентацию всех Уровень 1 A Уровень 2 Уровень 3 Уровень 4 C B E M F N H G O D P R K S L T Рис. 2.5. Дерево (с выделенным иерархическим путём доступа к узлу N – ABEN) 69 U рёбер поменять на противоположную, то получим также определение корневого дерева. Иерархическая древовидная структура, ориентированная от корня, удовлетворяет следующим условиям: – иерархия всегда начинается с корневого узла; – на первом уровне (i = 1, самый верхний уровень иерархии дерева) может находится только один узел – корневой; – каждый порождённый узел, находящийся на уровне i, связан только с одним непосредственно исходним узлом (непосредственным родительским узлом), находящимся на более верхнем уровне (i – 1) иерархии дерева; – каждый исходный узел может иметь один или несколько непосредственно порождённых узлов, которые называются подобными узлами; – доступ к каждому порождённому узлу выполняется через его непосредственно исходный узел; – существует единственный иерархический путь доступа к любому узлу начиная от корня дерева (например, выделенный на рис. 2.5. иерархический путь доступа к узлу N – ABEN); Иерархический путь включает все связанные между собой узлы, начиная с корневого узла и кончая заданным узлом. Так как узлы, входящие в иерархический путь, могут встречаться не более одного раза, следовательно, в древовидной структуре иерархические пути – линейные. Любой узел, находящийся на иерархическом пути выше рассматриваемого узла, является для последнего исходным узлом (родительским). Любой узел, находящийся на иерархическом пути ниже рассматриваемого узла, является для него порождённым узлом. Если между рассматриваемыми узлами нет других узлов, то тогда это будут соответственно непосредственно исходный и непосредственно 70 порождённый узлы. Различают сбалансированные и несбалансированные деревья. Дерево называется сбалансированным, если каждый узел имеет одинаковое число ветвей, причём процесс включения новых ветвей в узлы дерева идёт сверху вниз, а на каждом уровне дерева – слева направо. Если для древовидной структуры допускается не более двух ветвей для каждого узла, то такая структура называется двоичным деревом. Различают сбалансированные и несбалансированные двоичные деревья. Любые связи в дереве можно представить как двоичные деревья. В древовидной структуре существует простой переход от порождённого элемента (узла) к исходному (то есть для порождённого элемента (узла) имеется только один исходный, то есть «один-к-одному» – 1 : 1) и что обратный переход (то есть от исходного элемента (узла) к порождённым) является сложным (то есть «один-ко-многим» – 1 : M). Иерархическим файлом называется файл, в котором записи связаны в виде древовидной структуры. Данные подразделяются на иерархические категории. Одна категория данных является подмножеством другой. Различают однородные и неоднородные деревья. В однородном дереве каждый узел представлен одним и тем же типом записи. Рекурсивное определение дерева позволяет рассматривать дерево как структуру, состоящую из меньших деревьев (называемых поддеревьями), то есть как рекурсивную структуру. Рекурсивное дерево определяется как конечное множество T, состоящее из одного или более вершин (узлов), таких, что: 1) имеется один специально выделенный узел, называемый корнем дерева; 2) остальные узлы разбиты на m≥0 непересекающихся 71 подмножеств T1, T2, …, Tm, каждая из которых в свою очередь является деревом. Деревья T1, T2, …, Tm называются поддеревьями данного корня. Любой узел дерева является корнем некоторого поддерева, содержащегося в полном дереве. Число поддеревьев узла называют степенью узла. Узлы называются концевыми (то есть листьями), если имеют нулевую степень. Узел, не являющийся ни корнем, ни концевым узлом, нызывается узлом ветвления. В иерархических моделях данных используется ориентация древовидной структуры от корня, то есть дуги, соответствующие функциональным связам, направлены от корня к листьям дерева. Графическая диаграмма схемы базы данных (см. рис. 1.4. в § 1.5.) для иерархической базы данных называется деревом определения. В графической диаграмме схемы базы данных вершины (узлы) графа используются для интерпретации типов сущностей, а дуги графа используются для интерпретации типов связей между типами сущностей. Основными внутренними ограничениями целостности иерархической модели данных являются: 1) все типы связей функциональные, то есть 1 : 1, 1 : M, M : 1; 2) структура древовидная. Вершины (узлы) дерева определения базы данных соответствуют введённым типам групп записей, с помощью которых выполнена интерпретация типов сущностей. Допускаются только простые типы групп, то есть группа, представляющая вершину дерева определения, не должна включать составные и повторяющие группы, поскольку их можно представить как самостоятельные вершины дерева определения. Корневой вершине (узлу) дерева определения соответствует тип корневой группы, остальным вершинам (узлам) соответствуют типы зави- 72 симых групп. Дуга дерева определения, соответствующая групповому отношению, представляет некоторый тип связи между рассматриваемыми типами сущностей (которые представлены соответствующими типами групп). Дуга исходит из типа исходной (родительской) группы и заходит в тип порождённой группы. Дуги обычно называют связью исходный – порождённый. В графической диаграмме схемы иерархической базы данных между двумя типами групп может быть не более одной такой связи. Тип зависимой группы можно идентифицировать соответствующей последовательностью связей исходный – порождённый. Иерархический путь дерева определения представляется последовательностью групп, начинающейся типом корневой группы и заканчивающейся типом заданной группы. Следствием внутренних ограничений иерархической модели данных является то, что каждому экземпляру зависимой группы в иерархической базе данных соответствует уникальное множество экземпляров исходных (родительских) групп (по одному экземпляру каждого типа исходной (родительской) группы). На внутреннем уровне отдельный экземпляр древовидной структуры, соответствующий схеме базы данных, определяется как экземпляр записи файла. Иерархическая база данных на внутреннем уровне представляется одним экземпляром этого файла. Каждая древовидная база данных на внутреннем уровне представляется одним файлом, который объединяет экземпляры записей одного типа со структурой, соответствующей схеме этой базы данных. 73 2.4. Сетевая модель данных. Сетевое представление базы данных В сетевой структуре любой элемент (узел) любого уровня может быть связан с любым другим элементом (узлом) любого уровня (рис 2.6.). Каждый элемент (узел) может быть связан с одним или несколькими элементами (узлами) на более высоком уровне, называемых исходными элементами (узлами) для данного элемента (узла). Каждый элемент (узел) может быть связан с одним или несколькими элементами (узлами) на более низком уровне, называемых порождёнными элементами (узлами) для данного элемента (узла). Сетевые модели данных базируются на использовании графовой формы представления данных. Вершины (узлы) графа используются для интерпретации типов сущностей, а дуги графа (связи между вершинами) используются для интерпретации типов связей между типами сущностей. При реализации вершины (узлы) графа представляются совокупностью описаний экземпляров сущностей соответствующего типа. Типы записей используются для представления типов сущностей и в графической диаграмме схемы базы данных изобраA B C D F H K E G Рис. 2.6. Примеры сетевых структур 74 L жаются вершинами (узлами) диаграммы. Модель данных допускает существование записей с простой (то есть запись состоит из элементов данных) и сложной (то есть запись имеет многоуровневую древовидную иерархическую структуру) внутренней структурой записи. Типы наборов используются для представления типов связей между типами сущностей, которые представлены соответствующими типами записей. Тип набора – это основной структурный элемент, с помощью которого выполняется построение сетевой структуры базы данных. На графической диаграмме схемы базы данных тип набора изображается поименованной дугой между соответствующими типами записей. Сетевые структуры базы данных строятся на основании следующих композиционных правил: 1) база данных может содержать любое количество типов записей и типов наборов; 2) между двумя типами записи может быть определено любое количество типов наборов; 3) тип записи может быть владельцем и одновременно членом нескольких типов наборов. Основным внутренним ограничением сетевой модели данных являются функциональность связей, то есть с помощью наборов можно реализовать связи типа 1 : 1 (такая сетевая структура называется простой), 1 : M, M : 1. В модели данных это внутреннее ограничение выражается утверждением: в конкретном экземпляре набора экземпляр записи-члена набора может иметь не более одного экземпляра записи-владельца набора. Следовательно, число экземпляров набора некоторого типа равно числу экземпляров записей-владельцев этого типа набора в базе данных. При этом экземпляр набора может быть и пустым, 75 то есть состоять из экземпляра записи-владельца (экземпляры записей-членов могут отсутствовать в некоторые моменты времени). Из функционального характера реализуемых в сетевой модели данных связей следует второе внутреннее ограничение целостности: экземпляр записи может быть членом только одного экземпляра набора среди всех экземпляров набора одного типа (он может входить в состав двух и более экземпляров наборов, но различных типов). В сетевых структурах, для представления отношений (связей) между исходными и порождёнными элементами (узлами, то есть между типами записей или типами агрегатов), – отношение (связь) исходный-порождённый является сложным, а отношение (связь) порождённый-исходный является простым. В сетевых структурах один элемент данных может быть связан с целой совокупностью других элементов данных. Данные, ассоциированные с совокупностью записей, называют данными пересечения (например, изделие может поставляться несколькими поставщиками, каждый из которых устанавливает свою цену на изделие. Поэтому, элемент данных Цена не может быть ассоциирован только с записью ИЗДЕЛИЕ или только с записью ПОСТАВЩИК, а должен быть связан одновременно с этими двумя записями). Функциональность связей в сетевой модели данных не позволяет представлять связи типа M : N, то есть «многие-ко-многим» (такие сетевые структуры называются сложными, например, представленные на рис. 2.7. а и 2.18. а). Практически всегда, когда существуют связи типа M : N, имеются и данные пересечения. Для представления в схеме базы данных связи типа M : N вводится вспомогательный тип записи со сцеплённым ключом (например, вспомогательный тип записи ИЗДЕЛИЕ- 76 -ДЕТАЛЬ со сцеплённым ключом Шифр-изделия + Шифр-детали, представленные на рис. 2.7. б и 2.18. б) и две функциональные связи типа 1 : M (рис. 2.7. б и 2.18. б). Каждый экземпляр вспомогательной записи типа ИЗДЕЛИЕ-ДЕТАЛЬ (рис. 2.7. б) имеет по одному экземпляру записей-владельцев типа ИЗДЕЛИЕ и типа ДЕТАЛЬ в одном экземпляре набора типа Имеет-в-составе и в одном экземпляре набора типа Входит-в-состав. Введение вспомогательного типа записи позволяет при необходимости ввести данные, характеризующие рассматриваемый тип связи (например, в запись типа ИЗДЕЛИЕ-ДЕТАЛЬ (рис. 2.7. б) можно добавить элемент данных типа Количество-требуемых-деталей, который характеризует связь между сущностями ИЗДЕЛИЕ и ДЕТАЛЬ). Третьим внутренним ограничением в сетевой модели данных является невозможность непосредственного представления данных, описывающих связи между сущностями. В сетевой модели данных с помощью тиШифризделия ИЗДЕЛИЕ Названиеизделия фон зав. отд. M Спецификация Размерыизделия N Шифрдетали ДЕТАЛЬ Названиедетали Рис. 2.7. а. Сложная сетевая структура (с типом связи «многие-ко-многим» – M : N) 77 Шифризделия ИЗДЕЛИЕ Названиеизделия 1 Имеет-всоставе Размерыизделия M Шифр-изделия +Шифр-детали отдела ИЗДЕЛИЕДЕТАЛЬ N Входит-всостав 1 Шифрдетали ДЕТАЛЬ Названиедетали Рис. 2.7. б. Реализация сложной сетевой структуры, с типом связи «многие-ко-многим» – M : N (представленного на рис. 2.7. а), на основании вспомогательного типа записи со сцеплённым ключом и двух функциональных связей типа 1 : M пов наборов можно представить типы связей (между сущностями), не имеющие собственных атрибутов. Если необходимо представить тип связи, имеющий атрибуты (например, представленный на рис. 2.8. а тип связи Чтение-лекции, имеющий атрибуты – Тема-лекции + Дата и Факт.-колич.-слушателей), то в схеме базы данных вводят вспомогательный тип записи, с помощью которого и представляются совокупности атрибу- 78 тов, описывающих тип связи (например, на рис 2.8. б введён вспомогательный тип записи (сущность) ЛЕКЦИИ с совокупностью атрибутов – Тема-лекции + Дата (сцеплённый ключ) и Факт.-колич.-слушателей (описывающих тип связи Чтение-лекции, представленный на рис. 2.8. а), а также введены два типа связи – Прослушанные-лекции и Прочитанные-лекции). Сетевые структуры могут содержать циклы, то есть ситуации в которых предшественник вершины (узла) является и его последователем. Отношение исходный-порождённый образуют при этом замкнутый контур. В сетевой структуре записи файла могут быть связаны с другими записями этого же файла, и такая ситуация называется петлёй. В петле содержится только Шифрфирмы Адресфирмы ФИРМА M Тема-лекции +Дата План.-колич. -слушателей Чтениелекции ФИОлектора 1 Номерпаспорта 1 ЛЕКТОР Рис. 2.8. а. Пример типа связи, имеющий описательные атрибуты 79 Факт.-колич. -слушателей Местоработы Специальность Шифрфирмы ФИРМА Адресфирмы 1 Прослушанные-лекции План.-колич. -слушателей M Тема-лекции +Дата ЛЕКЦИИ Факт.-колич. -слушателей N ФИОлектора Прочитанные-лекции Местоработы 1 Номерпаспорта ЛЕКТОР Специальность Рис. 2.8. б. Пример схемы базы данных, представленная с типом связи, имеющий описательные атрибуты один тип записи (такие сетевые структуры называются однородными), то есть тип порождённой записи совпадает с типом исходной записи. На диаграмме схемы контур и петля состоят из линий с двойными стрелками. Любая сетевая структура может быть приведена к более простому виду введением избыточности, – представляя её в виде эквивалентных древовидных структур. В сетевой модели данных можно представлять типы связей, 80 заданных между несколькими типами сущностей. Для этого используют многочленные наборы, которые представляют собой отношение между тремя и более типами записей, один из которых назначают владельцем набора, а остальные назначают членами набора (например, для многочленного набора (отношения) Научные-труды, владельцем набора является тип записи НАУЧНЫЙ-СОТРУДНИК, а членами набора являются типы записей – СТАТЬЯ-В-ЖУРНАЛЕ, ДОКЛАД-НА-КОНФЕРЕНЦИИ, МОНОГРАФИЯ). Экземпляр типа многочленного набора включает в себя один экземпляр типа записи-владельца набора и все связанные с ним экземпляры типов записей-членов набора. Сингулярный набор – это особый набор, так как его владельцем является система, то есть это тип набора без записи-владельца. При его реализации возможен только один экземпляр набора этого типа. Сингулярные наборы используются при создании простых файлов, каждый из которых представлен своим одним и тем же типом записи. Один и тот же тип записи может быть объявлен членом сингулярного набора и одновременно владельцем либо членом других наборов. Введение в схему базы данных любого типа набора определяется необходимостью реализации соответствующего пути доступа к специфицированным в этом наборе записям, то есть к данным в базе данных. 81 2.5. Реляционная модель данных. Реляционное представление базы данных Для избежания растущей сложности древовидных и сетевых структур при появлении новых приложений, так как возникает необходимость вводить новые элементы данных, записи и связи, – разработан метод, называемый нормализацией. Любое представление данных может быть сведено к двумерным таблицам, то есть сведено к двумерным («плоским») файлам. Связи между данными могут быть представлены в форме двумерных таблиц. Этот процесс, выполняемый шаг за шагом для каждой связи между данными в базе данных, нызывается нормализацией. Рассматриваемые таблицы – это прямоугольные массивы, обладающие следующими свойствами: 1) каждый элемент таблицы представляет собой один элемент данных; повторяющие группы отсутствуют; 2) все столбцы в таблице однородные, то есть элементы столбца имеют один и тот же тип; 3) столбцам присвоены имена и шифры; 4) в таблице нет одинаковых строк. Таблица такого вида называется отношением. База данных, построенная с помощью отношений, называется реляционной базой данных, то есть в основе реляционной модели данных используется понятие «отношение», представляющего собой подмножество декартова произведения доменов. Таким образом, реляционная база данных строится из двумерных («плоских») наборов элементов данных. Домен – это некоторое множество элементов (например, множество целых чисел или множество допустимых значений, которые может принимать объект по 82 некоторому свойству). Таким образом, набор значений элементов данных одного типа, то есть один столбец таблицы, называется доменом. Столбец с номером k называется k-м доменом отношения. Декартовым произведение доменов D1 , D2 , …, Dk : D = D1 x D2 x … x Dk , называется множество всех кортежей длины k, то есть состоящих из k элементов – по одному из каждого домена « Di » ( d1.i1 , d 2.i2 , …, d k .ik ), где: D1 = { d1.1 , d1.2 , …, d1.i1 , …, d1.n1 }, D2 = { d 2.1 , d 2.2 , …, d 2.i2 , …, d 2.n2 }, . . . . . . . . . . . . . . . . . . . . D k = { d k .1 , d k . 2 …, d k .ik , …, d k .nk }. Таким образом, декартово произведение: ( d1.1 , d 2.1 , ..., d ( k 1).1 , d k .1 ), ( d1.1 , d 2.1 , …, d ( k 1).1 , d k . 2 ), . . . . . . . . . . . . . . . . ( d1.1 , d 2.1 , …, d ( k 1).1 , d k .nk ), ( d1.1 , d 2.1 , …, d ( k 1).2 , d k .1 ), ( d1.1 , d 2.1 , …, d ( k 1).2 , d k . 2 ), D = ( d1.1 , d 2.1 , …, d ( k 1).2 , d k .3 ), . . . . . . . . . . . . . . . . ( d1.1 , d 2.1 , …, d ( k 1).2 , d k .nk ), ( d1.1 , d 2.1 , …, d ( k 1).3 , d k .1 ), ( d 1,1 , d 2,1 , …, d ( k 1).3 , d k . 2 ), . . . . . . . . . . . . . . . . . . ( d1.n1 , d 2.n2 , …, d( k 1).n( k 1) , d k .nk ). Декартово произведение позволяет получить все возможные 83 комбинации элементов исходных множеств – элементов рассматриваемых доменов (например, если D1 ={A, B}, D2 ={C, H}, D3 ={E, F, G}, то k = 3 и соответственно декартово произведение: D = D1 x D2 x D3 ={(A, C, E), (A, C, F), (A, C, G), (A, H, E), (A, H, F), (A, H, G), (B, C, E), (B, C, F), (B, C, G), (B, H, E), (B, H, F), (B, H, G)}). Отношением R на множествах D1 , D2 , …, Dk называется подмножество декартова произведения D1 x D2 x … x Dk . Отношение R , определённое на множествах D1 , D2 , …, Dk , есть некоторое множество кортежей арности «k» ( d1.i1 , d 2.i2 , …, d k .ik ), таких, что d 1.i1 принадлежит D1 , d 2.i2 принадлежит D2 и т. д.: R D1 x D2 x … x Dk (примеры нескольких отношений: R1 = {(A, C, E), (A, H, E)} D1 x D2 x D3 ; R2 = {(A, H, F)} D1 x D2 x D3 ; R3 = {(B, H, G), (A, C, F), (A, C, E), (B, C, G)} D1 x D2 x D3 ; R4 = {(A, C, E), (A, C, F), (A, C, G), …, (B, H, G)} D1 x D2 x D3 ; R5 = 0). Отношение, или таблица, – это набор кортежей. Если кортежи являются k-мерными, то есть если таблица имеет k столбцов, отношение называется отношением степени k. Таким образом, элементами отношения являются кортежи. Арность кортежа определяет арность отношения. Отношение арности 1 называют унарным, арности 2 – бинарным, арности 3 – тернарным, арности «k» – k-арным. Так как отношение есть множество, то в нём не должно быть одинаковых кортежей и порядок кортежей в отношении несуществен. Таким образом, отношение представляют как таблицу, где каждая строка есть кортеж, а каждый столбец соответствует одному и тому же компоненту декартова произведенения, то есть в нём мо- 84 гут появляться только элементы из соответствующего домена (рис. 2.9.). Таблица, представляющая k-арное отношение обладает следующими свойствами: 1) каждая строка представляет собой кортеж из k значений, принадлежащих k столбцам; 2) любые две строки различаются хотя бы одним элементом; 3) строки и столбцы таблицы могут обрабатываться в любой последовательности; 4) порядок столбцов фиксирован (1, 2, ..., k); 5) порядок строк беразличен. R1 R2 A C E A H E A R4 R3 H F B H G A C E A C F A C F A C E A C G B C G A H E A H F A H G B C E B C F B C G B H E B H F B H G Рис. 2.9. Представление отношений в форме таблиц Отношения используются: 1) для представления набора объектов (набор объектов – 85 это множество подобных объектов); 2) для представления связей между наборами объектов. Для представления набора объектов атрибуты интерпретируются столбцами отношения. Множество допустимых значений атрибутов интерпретируется соответствующим доменом. Каждый кортеж отношения описывает отдельный объект из набора. Отношение выполняет роль описания всего набора объектов. Для устранения фиксированного порядка столбцов в отношениях, ввиду того, что в приложениях возникает необходимость перестановки столбцов в отношении в любом порядке, – столбцы именуют, то есть столбцам присваиваются шифры и названия (см. представленные в § 1.3. таблицы (отношения) на рис. 1.1.÷1.3.). Таким образом, столбцы отношения определяются не по порядковым номерам, а по их именам, то есть шифрам и названиям. В этом случае оказываются эквивалентными отношения, которые не были эквивалентными ранее, например два отношения, отличающиеся только порядком столбцов. Столбцы отношения называются атрибутами, с присвоенными им именами, то есть шифрами и названиями. Таким образом, происходит отображение имён (то есть шифров и названий) атрибутов в значения, принадлежащие доменам атрибутов. Ввиду того, что в двумерных («плоских») файлах (то есть в таблицах), должны отсутствовать повторяющиеся группы, то для устранения повторяющихся групп (например, на рис. 2.10. а в файле (то есть таблице) ЗАКАЗ-НА-ПОКУПКУ повторяющейся группой являются элементы данных (то есть атрибуты) – Шифр-изделия, Цена и Количество) – выполняют нормализацию файлов (то есть таблиц) путём выделения этих повто- 86 ряющихся групп в отдельные файлы (то есть таблицы), на основании расщепления исходных файлов (то есть таблиц) на новые файлы (то есть таблицы). Полученным новым файлам (то есть таблицам) присваиваются имена, а также первичные ключи, для однозначной идентификации кортежей (например, на рис 2.10. б представлены два новых файла (то есть таблицы) ЗАКАЗ-НА-ПОСТАВКУ и ЗАКАЗАННЫЕ-ИЗДЕЛИЯ с первичными ключами Номер-заказа и Номер-заказа + Шифр-изделия соответственно, полученные на основании нормализации (путём расщепления) исходного файла (то есть таблицы) ЗАКАЗ-НА-ПОКУПКУ, представленного на рис. 2.10. а). Каждый кортеж отношения должен иметь ключ – идентификатор. Кортеж может идентифицироваться значением одного атрибута, то есть ключ состоит из одного атрибута (наприа) ЗАКАЗ-НА-ПОКУПКУ НомерШифрДатаДатаШифр- Цена Количество Итого заказа поставщика заказа поставки изделия б) ЗАКАЗ-НА-ПОСТАВКУ НомерШифрДатаДатаИтого заказа поставщика заказа поставки ЗАКАЗАННЫЕ-ИЗДЕЛИЯ Номер- Шифр- Цена Количество заказа изделия Рис. 2.10. Пример выделения повторяющейся группы (атрибутов Шифр-изделия, Цена и Количество) (а) в отдельный файл (таблицу) путём расщепления исходного файла (таблицы) (а) на два файла (таблицы) (б) 87 мер, на рис. 2.10. а, б атрибут (то есть ключ) Номер-заказа однозначно определяет файлы (таблицы) ЗАКАЗ-НА-ПОКУПКУ и ЗАКАЗ-НА-ПОСТАВКУ), или кортеж может идентифицироваться значениями нескольких (двух и более) атрибутов, то есть ключ состоит из нескольких (двух и более) атрибутов (например, на рис. 2.10. б для определения кортежа файла (таблицы) ЗАКАЗАННЫЕ-ИЗДЕЛИЯ ключ состоит из двух атрибутов – Номер-заказа и Шифр-изделия). Ключ должен обладать двумя свойствами: 1) Однозначная идентификация кортежа, то есть кортеж должен однозначно определяться значением ключа; 2) Отсутствие избыточностми, то есть никакой атрибут нельзя удалить из ключа, не нарушая при этом свойства однозначной идентификации. Если для кортежей одного файла (то есть таблицы, отношения) может существовать несколько ключей (то есть несколько наборов атрибутов), удовлетворяющих двум приведённым свойствам, то такие ключи (то есть такие наборы атрибутов) называются возможными. Тот ключ, который будет использоваться для идентификации кортежей (то есть записей) называется первичным ключом, который в таблице подчёркивается. Если первичный ключ состоит из нескольких (двух и более) атрибутов, то он называется составным (сцеплённым) (например, на рис. 2.10. б для кортежей (то есть записей) файла (таблицы) ЗАКАЗАННЫЕ-ИЗДЕЛИЯ необходим составной (сцеплённый) первичный ключ, состоящий из двух атрибутов – Номер-заказа и Шифр-изделия, которые в таблице подчёркнуты). Аналогичным образом нормализуются древовидные и сетевые структуры. Гибкость реляционной базы данных определяется лёгкос- 88 тью, с которой можно манипулировать отношениями, с целью получения необходимых форм табличного представления данных. Основными операциями для манипулирования отношений являются – проецирование и соединение. Они позволяют разрезать и склеивать (то есть соединять) столбцы реляционных таблиц для образования новых отношений. Оператор проецирования позволяет отобрать из отношения необходимые столбцы (домены), а также задать порядок, в котором их нужно расположить (например, на рис. 2.11 представлены две проекции (то есть отношения) – ИНФОРМАЦИЯ-О-ОРГАНИЗАЦИЯХ и РУКОВ.-ОРГАНИЗАЦИЙ, полученные оператором проецирования, на основании отношения ОРГАНИЗАЦИИ, представленного на рис. 1.1. в § 1.3.). Так как в отношении нет повторяющихся кортежей, то в проекции отношения может оказаться меньше кортежей, чем в исходном отношении. Операция проецирования не задаёт порядка, в котором следуют кортежи, то есть он может быть произвольным. Оператор соединения позволяет собирать в новое отношение столбцы (домены) из различных (двух и более) отношений, если они имеют общий тип элемента (или элементов) данных. Возможны следующие типы соединения отношений (двух и более) в новое по элементу (или элементам) данных некоторого типа, которые отбирают домены (столбцы) в исходном домене (или в исходных доменах) по значениям – равным, не равным, большим или меньшим. Следовательно, результирующее отношение может иметь меньше кортежей (записей), чем любое из исходных. Пример операции соединения по значению – «равно» в исходных общих доменах, представлен на рис. 2.11. и 1.1.: из исходных отношений ИНФОРМАЦИЯ-О-ОРГАНИЗАЦИЯХ и РУКОВ.-ОРГАНИЗАЦИЙ (рис. 2.11.) по 89 значению – «равно» элемента данных Шифр-организации в результирующем отношении ОРГАНИЗАЦИИ (рис. 1.1.) сохраняются те кортежи (записи), которые имеют одно и то же значение этого элемента данных. Кроме того, можно создать результирующее отношение из двух и более отношений, но не ИНФОРМАЦИЯ О ОРГАНИЗАЦИЯХ BIWOR1 N(6) BIWNO2 C(16) BIWAO3 C(30) Шифр организации Наименование организации Адрес организации 104715 104716 Фирма г. Тбилиси, пр. «Компсервис» Важа Пшавела 476 Фирма «Комптехг. Тбилиси, пр. обслуживание» А. Церетели 392 РУКОВ. ОРГАНИЗАЦИЙ BIWOR1 N(6) BIWWR4 C(18) BIWTR5 C(8) Шифр организации ФИО руководителя Рабочий телефон руков. 104715 104716 Махарад- 39-17-45 зе В. С. Ломидзе 34-95-77 Т. А. Рис. 2.11. Две проекции (отношения), полученные на основании отношения ОРГАНИЗАЦИИ, представленного на рис. 1.1. в § 1.3. 90 не включать в него все атрибуты этих отношений. Соединение, которое создано на основании равенства значений элементов данных в общих доменах и не повторяет общих доменов в результирующем отношении, называется естественным соединением. Список имён (то есть шифров и названий) атрибутов отношения называется схемой отношения. Если отношение называется R и его схема имеет атрибуты с именами A1 , A2 , …, Ak , то схема отношения R ( A1 , A2 , …, Ak ). Чтобы не чертить таблицы, приведённые например на рис 2.10. б, можно использовать следующую систему обозначений нормализованной формы схемы: ЗАКАЗ-НА-ПОСТАВКУ (Номер-заказа, Шифр-поставщика, Дата-заказа, Дата-поставки, Итого) ЗАКАЗАННЫЕ-ИЗДЕЛИЯ (Номер-заказа, Шифр-изделия, Цена, Количество) Реляционная база данных – это набор экземпляров конечных отношений. Схему реляционной базы данных представляют в виде совокупности схем отношений R1 ( A1.1 , A1.2 , …, A1.k1 ), R2 ( A2 .1 , A2.2 , …, A2.k1 ), . . . . . . . . . . . . . . . R m ( Am.1 , Am.2 , …, Am.k m ). Отношения в базе данных обладают всеми свойствами множеств. Основным ограничением реляционной модели данных является невозможность представления в отношении кортежей – дубликатов. Это ограничение означает, что каждое отношение имеет один первичный ключ (в крайнем случае первичный ключ 91 состоит из всех атрибутов). В реляционной модели данных ключ определяется как неизбыточное подмножество атрибутов схемы отношения, совокупность значений которых однозначно идентифицирует кортеж в отношении. Вторым ограничением реляционной модели данных является то, что при традиционной форме представления отношения порядок столбцов в отношении фиксирован. Поэтому, для снятия этого ограничения, столбцы именуют (то есть столбцам присваивают шифры и названия), и при выполнении операций над данными, представленными в отношении, обращаются к столбцам по их именам, а не по порядковому номеру (например, представленые отношения на рис. 2.11.). На значения атрибутов в реляционной модели данных задают ограничения в явном виде. Специфицируют область значений атрибутов, – задают тип значений атрибутов (как представленные на рис. 2.11.). Для задания общих ограничений на значения атрибутов можно использовать предикаты. Большинство явных ограничений, – ограничения на зависимости между атрибутами (например, на рис. 2.11. значение атрибута Шифр-организации (то есть первичного ключа) определяет значения атрибутов Наименование-организации и Адрес-организации в отношении ИНФОРМАЦИЯ-О-ОРГАНИЗАЦИЯХ). 2.6. Нормализация отношений Базы данных непрерывно изменяются, – добавляются новые типы записей (кортежей), новые элементы данных, между ними устанавливаются новые связи и определяются новые способы их использования. При изменении базы данных необходимо сохранять старые представления пользователей и прог- 92 раммистов. Поэтому одной из основных проблем, возникающих при разработке баз данных, является рациональная группировка элементов данных (атрибутов) в записи (кортежи). В реляционной базе данных задача группировки атрибутов (элементов данных) в отношении приводит к проблеме выбора рационального варианта из множества вариантов схемы отношения. Рациональные варианты группировки атрибутов в отношениях должны отвечать следующим требованиям: 1) выбранные для отношений первичные ключи должны быть минимальными; 2) выбранный состав отношений (то есть группированных в отношениях атрибутов) базы данных должен быть минимальным; 3) при выполнении операций модификации (то есть включения (дозаписи), удаления и исправления) данных, а также при введении новых типов данных в базе данных не должно быть трудностей. Введено четыре уровня нормализации схем отношений и соответственно четыре нормальные формы отношений: первая нормальная форма, вторая нормальная форма, третья нормальная форма, четвёртая нормальная форма. Эти нормальные формы подчиняются правилам вложенности по возрастанию номеров (рис. 2.12.): если отношение находится в четвёртой нормальной форме, то оно будет соответственно в третьей нормальной форме, второй нормальной форме и первой нормальной форме; если отношение находится в третьей нормальной форме, то оно будет соответственно во-второй нормальной форме и первой нормальной форме; если отношение находится во-второй нормальной форме, то оно будет соответственно в первой нормальной форме. И наоборот, если отно- 93 Отношения в первой нормальной форме Отношения во-второй нориальной форме Отношения в третьей нормальной форме Отношения в четвёртой нормальной форме Рис. 2.12. Нормальные формы отношений шение находится в первой нормальной форме, но не во-второй нормальной форме, то оно не будет соответственно ни в третьей нормальной форме, ни в четвёртой нормальной форме; если отношение находится во-второй нормальной форме, но не в третьей нормальной форме, то оно не будет соответственно ни в четвёртой нормальной форме. Первая нормальная форма. Первая форма нормализации получается тогда, когда в процессе нормализации данные (атрибуты) свёртываются в двумерные таблицы со столбцами простейшей структуры (например, представленные на рис. 2.11.). Схема отношения R находится в первой нормальной форме тогда и только тогда, когда все входящие в неё атрибуты являются атомарными, то есть значения соответствующих доменов рассматриваются как неделимые, а не как множества или кортежи из более элементарных доменов. Дальнейший процесс нормализации состоит в том, что проверяются отношения, заданные в первой нормальной форме, и некоторые из них расщепляются на более простые. Процесс состоит из трёх шагов: на первом – получается вторая нормальная форма, на втором – третья нормальная форма, на третьем – четвёртая нормальная форма. 94 Вторая нормальная форма. Задавая отношения над элементами данных (атрибутами) необходимо определить – какие из атрибутов являются зависимыми. Термин функциональная зависимость означает следующее – атрибут В отношения R функционально зависит от атрибута А того же отношения, если в каждый момент времени каждому значению атрибута А соответствует не более чем одно значение атрибута В, связанного в отношении R . Утверждение, что В функционально зависит от А, означает то же самое, что А однозначно определяет В, то есть если в какой-то момент времени известно значение А, то можно получить и значение В (например, на рис. 2.11 в отношении ИНФОРМАЦИЯ-О-ОРГАНИЗАЦИЯХ атрибуты Наименование-организации и Адрес-организации функционально зависят от атрибута (первичного ключа) Шифр-организации). Это условие представляется одиночными стрелками в простых связах от А к В (см. рис. 1.8. в § 1.9.). Атрибут может функционально зависеть не от какого-то одного атрибута, а от целой группы атрибутов. Атрибут (или набор атрибутов) В из отношения R называется функционально полностью зависимым от другого набора атрибутов А отношения R , если В функционально зависит от всего множества А, но не зависит ни от какого подмножества А (например, на рис. 2.10. б в отношении ЗАКАЗАННЫЕ-ИЗДЕЛИЯ атрибуты Цена и Количество полностью функционально зависят от атрибутов (составного (сцеплённого) первичного ключа) Номер-заказа и Шифр-изделия). Отношение R задано во-второй нормальной форме, если оно является отношением в первой нормальной форме, и каждый атрибут, не являющийся первичным атрибутом в этом отношении, функционально полно зависит от любого возможного ключа этого отношения R . Если все возможные ключи 95 отношения содержат по одному атрибуту, то это отношение задано во-второй нормальной форме, так как в этом случае все атрибуты, не являющиеся первичными ключами, функционально полно зависят от возможных ключей. Если Х – первичный ключ отношения R , Y X, А – непервичный атрибут отношения R , то в отношении R имеет место частичная зависимость (неполная функциональная зависимость), когда X A и Y A. Если это условие не выполняется, то атрибут А функционально полно зависит от Х в отношении R . Схема отношения R находится во-второй нормальной форме, если она находится в первой нормальной форме и каждый её непервичный атрибут функционально полно зависит от первичного ключа. Если ключи состоят более чем из одного атрибута, отношение, заданное в первой нормальной форме, может не быть отношением во-второй нормальной форме. Подобные трудности устраняют расщеплением исходного отношения на несколько (два и более) отношений, заданные во-второй нормальной форме (например, представленное на рис. 2.13. a. отношение ПОСТАВЛЯЕМЫЕ-ИЗДЕЛИЯ не является отношением вовторой нормальной форме, так как атрибуты Название-поставщика и Адрес-поставщика функционально зависят от атрибута Шифр-поставщика, который является подмножеством составного (сцеплённого) первичного ключа Шифр-изделия и Шифр-поставщика. Только атрибут Цена функционально полно зависит от данного составного (сцеплённого) ключа. Поэтому, расщепляем исходное отношение на два отношения – СВЕДЕНИЯ-О-ПОСТАВЩИКЕ и ПОСТАВКА-ИЗДЕЛИЙ (рис. 2.13. б), заданные во-второй нормальной форме). 96 а) ПОСТАВЛЯЕМЫЕ-ИЗДЕЛИЯ Шифризделия ШифрНазваниеАдреспоставщика поставщика поставщика Цена б) СВЕДЕНИЯ-О-ПОСТАВЩИКЕ ШифрНазваниеАдреспоставщика поставщика поставщика ПОСТАВКА-ИЗДЕЛИЙ ШифрШифризделия поставщика Цена Рис. 2.13. Пример расщепления исходного отношения, не находящемся во-второй нормальной форме (а) на два отношения, заданные во-второй нормальной форме (б) Третья нормальная форма. Пусть А, В, и С – три атрибута или три набора атрибутов отношения R . Если С зависит от В, а В зависит от А, то С зависит от А. Если при этом обратное соответствие неоднозначно (то есть А не зависит от В или В не зависит от С), то говорят, что С транзитивно зависит от А. На диаграмме транзитивную зависимость С от А изображают следующим образом: А В С Преображение в третью нормальную форму состоит в рас- 97 щеплении исходного отношения на два отношения: А В В С Например, представленное на рис. 2.14. a. отношение ИНФОРМАЦИЯ-О-ПРОЕКТАХ не является отношением в третьей нормальной форме, так как атрибут Дата-окончания-проекта зависит от атрибута Номер-проекта, который в свою очередь зависит от атрибута Шифр-служащего. Таким образом, атрибут Дата-окончания-проекта транзитивно зависит от атрибута Шифр-служащего. Поэтому, отношение ИНФОРМАЦИЯ-О-ПРОЕКТАХ приводим к третьей нормальной форме путём его расщепления на два отношения – ВЫПОЛНЯЕМЫЕ-ПРОа) ИНФОРМАЦИЯ-О-ПРОЕКТАХ ШифрФИОЗарплата- Номер- Дата-окончаслужащего служащего служащего проекта ния-проекта б) ВЫПОЛНЯЕМЫЕ-ПРОЕКТЫ Шифрслужащего ФИОЗарплата- Номерслужащего служащего проекта ПРОЕКТЫ Номер- Дата-окончапроекта ния-проекта Рис. 2.14. Пример расщепления исходного отношения, не находящемся в третьей нормальной форме (а) на два отношения, заданные в третьей нормальной форме (б) 98 ЕКТЫ и ПРОЕКТЫ (рис. 2.14. б). Отношение R задано в третьей нормальной форме, если оно задано во-второй нормальной форме и каждый атрибут из отношения R , не являющийся первичным атрибутом, нетранзитивно зависит от каждого возможного ключа этого отношения R . Схема отношения R находится в третьей нормальной форме, если не существует первичного ключа Х для отношения R , множества атрибутов Y R и непервичного атрибута А из отношения R , таких, что: X Y – справедливо в отношении R , Y A – справедливо в отношении R , но Y X не имеет места в отношении R . Схема отношения R находится в третьей нормальной форме, если она находится во-второй нормальной форме и каждый непервичный атрибут нетранзитивно зависит от первичного ключа. Когда отношение имеет только один первичный ключ и другие зависимости, в том числе многозначные, в нём отсутствуют, то третья нормальная форма освобождает от избыточности и аномалий выполнения операций модификации (то есть включения (дозаписи), удаления и исправления) атрибутов в базе данных Усиленная третья нормальная форма. Если в отношении, находящемся в третьей нормальной форме, отсутствуют многозначные зависимости, но имеются другие зависимости, кроме зависимости от ключа, то третья нормальная форма будет иметь аномалии выполнения операций в базе данных. В этом случае рассматривают усиленную третью нормальную форму. Схема отношения R с множеством функциональных зависи- 99 мостей между атрибутами в отношении R находится в усиленной третьей нормальной форме, если всякий раз, когда в отношении R имеет место зависимость X A и А не принадлежит Х, то Х является возможным ключом отношения R (например, для представленного на рис. 2.13. б отношения СВЕДЕНИЯ-О-ПОСТАВЩИКЕ возможными ключами являются Шифр-поставщика (выбранный как первичный ключ) и Название-поставщика). Атрибут (или комбинация атрибутов), от которого какойлибо другой атрибут зависит функционально полно, называют детерминантой. В этом случае нормализованная схема отношения R находится в усиленной третьей нормальной форме, если каждая детерминанта является возможным ключом. Четвёртая нормальная форма. Если в отношения R присутствуют многозначные зависимости, то схема отношения R должна находится в четвёртой нормальной форме. Схема отношения R находится в четвёртой нормальной форме, если всякий раз, когда существует многозначная зависимость X Y (где: Х – первичный ключ отношения R , Y – не пустое множество и не является подмножеством Х и XY состоит не из всех атрибутов R ), также существует зависимость X A для любого атрибута А в отношении R . Например, в представленном на рис. 2.10. а (§ 2.5.) отношении ЗАКАЗ-НА-ПОКУПКУ существует многозначная зависимость атрибутов – Шифр-изделия, Цена и Количество от первичного ключа Номер-заказа. Поэтому, данное отношение приводим к четвёртой нормальной форме путём его расщепления на два отношения – ЗАКАЗ-НА-ПОСТАВКУ и ЗАКАЗАННЫЕ-ИЗДЕЛИЯ с первичными ключами Номер-заказа и Номер-заказа + Шифр-изделия соответственно (рис. 2.10. б). 100 Таким образом, нормализация отношений выполняется декомпозицией схем отношений. Декомпозиция схемы отношения R = ( A1 , A2 , …, Ak ) называется замена схемы отношения на совокупность схем отношений ={ R1 , R2 , ..., Rn } подмножеств, таких, что R1 R2 ... Rn = R = ( A1 , A2 , …, Ak ). При этом не требуется, чтобы схемы отношений Rm были непересекающимися. 2.7. Реляционная алгебра Для выполнения операций над отношениями в реляционной базе данных, при реализации приложений, по требованиям пользователей и программистов, разработаны следующие языки запросов реляционной модели данных: реляционная алгебра, – позволяющая выражать запросы средствами специализированных операторов, применяемых к отношениям; реляционные исчисления с переменными, – кортежами и доменами отношений, – позволяют выражать запросы путём спецификации предиката, которому должны удовлетворять требуемые кортежи или домены отношений. При определении операций реляционной алгебры порядок столбцов в отношении фиксирован и сами отношения конечны. Основными операциями реляционной алгебры являются: объединение отношений, разность отношений, декартово произведение отношений, проекция отношения, селекция отношения. 1. Объединение отношений R1 и R2 : R = R1 R2 . Операция применяется только к отношениям R1 и R2 одной 101 и той же арности. Отношение R – той же арности (рис. 2.15. а, б). 2. Разность отношений R1 и R2 : R = R1 – R2 . Разностью ( R1 – R2 ) называется множество кортежей, принадлежащих R1 , но не принадлежащих R2 . Отношения R1 и R2 . должны быть одинаковой арности. Отношение R – той же арности (рис. 2.15. а, в). 3. Декартово произведение отношений R1 и R2 : R = R1 х R2 . Если отношение R1 имеет арность k1 , а отношение R2 – арность k2 , то декартовым произведением отношений R1 и R2 является множество кортежей арности (k1 + k2). Причём в отношении R первые k1 элементов образуют кортеж из отношения R1 , а последние k2 элементов – из отношения R2 (рис. 2.15. а, г). 4. Проекция отношения R на компоненты i1 , i 2 , …, ir : R = i1 ,i2 , … ,i r ( R1 ), где: i1 , i 2 , …, ir – номера столбцов отношения R1 . Операция проекции заключается в том, что из отношения R1 выбираются указанные столбцы и компонуются в указанном порядке в отношении R (рис. 2.15. а, д). 5. Селекция отношения R по формуле F : R = F ( R1 ), где: F – формула, образованная: а) операндами, являющимися номерами столбцов; б) логическими операторами . (И), (ИЛИ), (НЕ); в) арифметическими операторами сравнения: , , , , , В формуле могут использоваться скобки (рис. 2.15. а, е). 102 а) R2 R1 б) Б В И К Л Д Е А Г Д E И К Л в) R = R1 R2 г) R = R1 – R2 R = R1 х R2 А Б В А Б В A Б В И К Л Д Е А Д Е А Д Е А И К Л И К Л И К Л И К Л Г Д Е A Б В Г Д E Д Е А Г Д Е И К Л Г Д Е д) е) А R = 1 АV 1 Д ( R1 ) А Б В Д Е А R = 3,1 ( R1 ) R = 1, 2 ( R1 ) А Б В А Д Е А Д И К Л И R = 2 К ( R1 ) И К Л Рис. 2.15. Примеры операций реляционной алгебры 103 R = 13 ( R1 ) А Б В Д Е А И К Л ж) R = R1 R2 R2 R1 И К А Н И К Н А С А М Д С А М Д С А М Д О Л Р Б И К Б В Р К Б В О Л Р Б О Л Р Б Д В Е И Е Д В И з) R = R1 ÷ R2 R2 R1 И О Р К С А И О О Р С А Р К С К С К Р К И О С А С К С А И О К С и) R = R1 R2 R2 R1 S=U R S T U W R S T U W А Б С А И Д Е Ж Е К А И Р Е К Д Е Ж Рис. 2.15. Примеры операций реляционной алгебры (продолжение) 104 к) R = R1 R2 R2 R1 R S T S T U R S T U К О Р И К О К О Р С И O P О Р С К О Р К P И К О Р К И О Р С O O А И О Р К Р И К О Рис. 2.15. Примеры операций реляционной алгебры (продолжение) Следующие операции реляционной алгебры (пересечение отношений, частное отношений, соединение отношений и естественное соединение) можно получить с помощью основных операций. В реляционной алгебре конечность отношений делает недопустимой операцию дополнения «– R », поскольку отношение «– R » – это бесконечное множество всех кортежей, не принадлежащих R . 6. Пересечение отношений R1 и R2 (рис. 2.15. ж): R = R1 R2 = R1 – ( R1 – R2 ). 7. Частное отношений R1 и R2 (рис. 2.15. з): = 1, 2, ( n m ) ( R1 ) – 1, 2 , R = R1 ÷ R2 = ..., ( n m ) (( 1, 2 , ( R1 ) х R2 ) – R1 ), где: n – арность отношения R1 ; m – арность отношения R2 ; причём n m, R2 0. 8. Соединение отношений R1 и R2 (рис. 2.15. и): R = R1 R2 = i ( n j ) ( R1 х R2 ), ..., i j 105 ..., ( n m ) где: θ – арифметический оператор сравнения; n – арность отношения R1 ; i и j – номера столбцов соответственно в отношениях R1 и R2 . Если θ – арифметический оператор равенства, то операция называется эквисоединением. В приведённых операциях использовано обращение к элементам кортежей по номерам столбцов отношения R . Можно обращаться по именам столбцов, при этом должны выполняться преобразования имени столбца в его порядковый номер и обратно. Тогда в случае использования имён атрибутов отношения R можно подставлять имена в формулы. 9. Естественное соединение отношений R1 и R2 (рис. 2.15. к). Эта операция применяется тогда, когда столбцы отношений R1 и R2 имеют имена. Пусть отношения R1 и R2 имеют со- ответственно схемы: R1 = ( A1 , A2 , …, Ak , B1 , B2 , …, Bn ), R2 = ( A1 , A2 , …, Ak , C1 , C2 , …, C m ). Имена A1 , A2 , …, Ak у обоих отношений R1 и R2 совпадают, а остальные – различаются. Естественное соединение отношений R1 и R2 : R = R1 R2 = B1 , B2 , ..., х ( R1 A1 R2 A1 B n , A1 , A2 , ..., Ak , C1 , C 2 , ..., C m ... R1 Ak R2 Ak х ( R1 х R2 )), где: R1 A1 – имя столбца отношения ( R1 х R2 ), соответствующего столбцу A1 в отношении R1 ; R2 A1 – имя столбца отношения ( R1 х R2 ), соответствующего столбцу A1 в отношении R2 . 106 2.8. Каноническая структура базы данных Администратор базы данных, в результате объединения групп элементов данных (то есть записей, кортежей) в логическую структуру данных, то есть в результате объединения подсхем (то есть совокупности логических локальных представлений о данных) пользователей и программистов (например, на рис. 2.16. и 2.17. представлены две подсхемы) в схему базы данных (например, на рис. 1.12. в § 1.9. представлена схема), – разрабатывает каноническую структуру базы данных, то есть такую минимальную структуру данных базы данных, которая называется канонической схемой. Для этого используется процедура конструирования канонической структуры базы данных. Канонической схемой называется такая модель данных, с помощью которой представляются существующие в реальном мире структуры данных, вне зависимости от конкретных приложений или от программного обеспечения и аппаратных средств, используемых для представления данных и их эксплуатации. Процедура конструирования канонической структуры базы данных представляет собой средство получения канонической схемы; она начинается с сопоставления логических локальных представлений всех пользователей и программистов. Подсхемы содержат локальные представления пользователей и программистов о данных, типы записей (кортежей), документы и видеограммы, а также такие представления о данных, которые будут применяться в будущем. Подсхемы и схемы, то есть представления данных, изображают с помощью овал-диаграмм, то есть овал-подсхем и овал-схемы (например, представленных на рис. 2.16. и 2.17. овал-подсхем и на рис. 1.12. овал-схемы базы данных). Каноническая форма данных не зависит от 107 того, каким образом эти данные представлены: в виде иерар- о Шифротдела Наименование -отдела р о Шифрслужащего ФИО-зав.отделом Шифрдолжности ФИОслужащего Рабочий-телефон-служащ. Рис. 2.16. Овал-подсхема (овал-диаграмма) для подсхемы первого пользователя (программиста), приведённой на рис. 1.5. Шифро организации Наименование -организации Адресорганизации ФИОр руководителя о Шифротдела Наименование -отдела ФИО-зав.отделом Рабочий-телефон-зав.-отд. Рис. 2.17. Овал-подсхема (овал-диаграмма) для подсхемы второго пользователя (программиста), приведённой на рис. 1.6. 108 хических, сетевых или реляционных структур. В иерархических и сетевых моделях данных, логическое представление данных содержит информацию о путях использования данных. В реляционной модели данных, логическое представление данных не включает информацию о путях использования данных, которую содержит физическое представление данных. Простейшей группой элементов данных, как в овал-диаграммах, так и в канонической схеме, является запись, включающая один первичный ключ, идентифицирующий n атрибутов. Первичный ключ – это узел с выходящими из него одной или несколькими однонаправленными (простыми) стрелками. Если для записи может существовать несколько таких ключей, то они называются возможными ключами. Тот ключ, который будет использоваться для идентификации записи называется первичным ключом, который подчёркивается. Если первичный ключ состоит из нескольких (двух и более) атрибутов, то он называется составным (сцеплённым) и обрабатывается как один атрибут, и на овал-диаграммах занимает один овал, в котором символ « + » используется для объединения атрибутов сцеплённого ключа. Кроме того, определяются вторичные ключи – это атрибут или совокупность атрибутов, значения которых уникально не идентифицируют другие атрибуты, а все объекты, имеющие определённые значения этих атрибутов. Вторичный ключ необходим для выделения из набора объекты, обладающих необходимыми нам свойствами. Вторичный ключ называется также ключом поиска. В овал-диаграммах и в канонической схеме атрибуты, снабжённые двойными выходящими из них стрелками к первичному ключу, называются вторичными ключами. Элементы данных, не являющиеся ключами, называются атрибутами. Атрибут – это узел, из которого не выхо- 109 дит ни одна простая стрелка. Каждая запись должна находиться во всех нормальных формах (первой, второй, третьей и четвёртой нормальных формах). Для этого выполняется нормализация (см. § 2.6.). В процессе объединения логических представлений пользователей и программистов в каноническую структуру устраняются избыточные связи. Часто первичные ключи идентифицируют другие первичные ключи. Исходные первичные ключи изображаются над порождёнными (зависимыми) первичными ключами. Самый верхний первичный ключ в овалдиаграмме называют корневым ключом. Корневой ключ – это первичный ключ, который не имеет ни одной простой стрелки, направленной от него к другому первичному ключу. Первичный ключ, который не имеет направленных к нему простых стрелок, называется исходным ключом. Каноническая схема базы данных не должна содержать отшения типа M : N (то есть «многие-ко-многим») между первичными ключами. Если в результирующей овал-диаграмме есть такие отношения (например, представленной на рис. 2.18. а), то они реализуются на основании вспомогательного типа записи со сцеплённым ключом и двух функциональных связей типа 1 : M (рис. 2.18. б). Результирующая овал-диаграмма, в результате объединения логических локальных представлений пользователей и программистов, в процессе выполнения нормализации и устранении избыточных связей, может содержать изолированные и пересекающиеся атрибуты, которые в канонической схеме должны отсутствовать. Изолированный атрибут – это атрибут, который не идентифицируется первичным ключом, то есть нет одиночных стрелок, направленных к нему или от него, хотя может иметь двойные стрелки, направленные к нему. Пересекающий- 110 ся атрибут – это атрибут, который связан с несколькими первичными ключами, то есть имеет несколько направленных на него простых стрелок от первичных ключей (например, на рис. 2.19. а представлен пересекающийся атрибут H, а рис 2.19. б, в, г показаны три способа его обработки). Изолированные и пересекающиеся атрибуты обрабатываются одним из способов, указанных соответственно в пунктах 8 и 9 процедуры конструирования канонической структуры базы данных. Процедура конструирования канонической структуры базы данных: 1. Рассматривается первое логическое локальное представление пользователя (или программиста) о данных и представляют его в виде овал-диаграммы, то есть в виде графа со связами между элементами данных, заданных только двумя типами ассоциаций: 1 и M (см. § 1.9.). Когда используется сцеплённый ключ, то он представляется одним овалом, а элементы данных, являющиеся его компонентами, изображаются в виде отдельных овалов. Проверяется первое представление пользователя (или программиста), – находится оно во всех нормальных формах (первой, второй, третьей и четвёртой нормальных формах) или нет. Если обнаружены нарушения условий нормальных форм, то выполняется нормализация (см. § 2.6.) путём декомпозиции. При этом выполняется устранение избыточных связей в овал-диаграмме. 2. Рассматривается второе логическое локальное представление пользователя (или программиста) о данных и для него выполняются все действия перечисленные для первого пункта. При этом проверяется наличие синонимов и омонимов и удаляют их, если они есть. 3. Выполняется объединение рассмотренных логических ло- 111 кальных представлений пользователей (или программистов) в результирующей овал-диаграмме. В результирующей овал-диаграмме выделяют узлы первичных ключей и узлы атрибутов. Первичные ключи помечают каким-нибудь способом (например, подчёркивают или штрихуют). 4. В результирующей овал-диаграмме, в каждой связи между первичными ключами, добавляют обратные связи, если они отсутствуют. Так как каноническая схема базы данных не должна содержать отношения типа M : N (то есть «многие-комногим») между первичными ключами, то проверяется наличие таких отношений в результирующей овал-диаграмме. Если в результирующей овал-диаграмме есть такие отношения, то они реализуются на основании вспомогательного типа записи со сцеплённым ключом и двух функциональных связей типа 1 : M (рис. 2.18. а, б). 5. В результирующей овал-диаграмме проверяются связи между первичными ключами и устраняются избыточные связи. 6. Повторяют предыдущие пять пунктов для всех логических локальных представлений о данных пользователей и программистов, которые объединяются в результирующей овал-диаграмме. 7. В результирующей овал-диаграмме идентифицируют корневые ключи. Овал-диаграмму перечерчивают таким образом, чтобы корневые ключи размещались в её вершине. 8. Проверяют, не содержит ли результирующая овал-диаграмма изолированные атрибуты. Изолированный атрибут может быть обработан одним из трёх способов: а) как одиночный первичный ключ, то есть запись, состоящая из одного элемента данных; б) представлен как повторяющийся атрибут в записи пере- 112 менной длины; Шифризделия Названиеизделия Шифрдетали Названиедетали Размерыизделия Рис. 2.18. а. Отношения типа M : N («многие-ко-многим») между первичными ключами Шифризделия Названиеизделия Размерыизделия Шифр-изделия +Шифр-детали Шифрдетали Названиедетали Рис. 2.18. б. Реализация отношения типа M : N («многие-ко-многим») между первичными ключами, на основании вспомогательного типа записи со сцеплённым ключом и двух функциональных связей типа 1 : M 113 в) может быть следствием ошибки, возникшей при интерпретации данных (в процессе выполнения нормализации и устранении избыточных связей). 9. Проверяют, не содержит ли результирующая овал-диаграмма пересекающиеся атрибуты (например, представленный на рис. 2.19. а пересекающийся атрибут H). Пересекающийся атрибут может быть обработан одним из трёх способов: а) заменяя все связи, кроме одной, эквивалентными связами с существующим первичным ключом (рис. 2.19. б); б) присоединяя его к соответствующим первичным ключам (рис. 2.19. в); в) как одиночный первичный ключ, то есть запись, состоящая из одного элемента данных (рис. 2.19. г). 10. В результирующей овал-диаграмме идентифицируют все имеющиеся вторичные ключи. 11. В результирующей овал-диаграмме, в процессе объединения элементов данных в записи (кортежи), проверяют чтобы каждая запись (кортеж) имела первичный ключ и ассоциированные с ним атрибуты. Затем овал-диаграмму представляют в виде канонической схемы (рис. 1.4. в § 1.5.). 12. Преобразуют каноническую схему в рабочую схему, то есть преобразуют каноническую форму данных в структуру, которая поддерживается и обрабатывается используемым программным обеспечением. Для преобразования канонической схемы в рабочую схему необходимо учитывать эффективность, то есть оценивать используемые пути доступа к данным и связи в схеме, и таким образом выявлять частоты, с которыми используются выделенные пути обращения к данным. Это выполняется следующим образом: а) помечают все пути доступа к данным в схеме для каждого пользователя и программиста; 114 а) F H G б) F H G в) F H G H г) F H G Рис. 2.19. Три способа (б, в, г) представления пересекающегося атрибута H (а) 115 б) оценивают частоту использования выделенных путей доступа к данным каждым пользователем и программистом, а также частоту использования каждой связи в схеме; в) оценивают в схеме для ассоциаций типа M размер M, то есть число порождённых записей (кортежей), связанных с одной исходной записью, или среднее число значений элемента данных, ассоциированных с одним значением другого элемента данных. При необходимости, в результате выполнения перечисленных действий или из-за ограничений, накладываемых используемым программным обеспечением, модифицируют схему (например, делят на части из-за её сложности). 13. Проверяют реализацию (обработку) всех логических локальных представлений пользователей и программистов, на основании разработанных рабочей и канонической схем базы данных. 116 Литература 1. Дейт К. Введение в системы баз данных: Пер. с англ.– М.: Наука, 1980. 2. Мартин Дж. Организация баз данных в вычислительных системах: Пер. с англ.–М.: Мир, 1980. 3. Скворцов В. И., Щукин Б. А. Реляционная модель данных.–М.: МИФИ, 1983. 4. Ульман Дж. Основы систем баз данных. Пер. с англ.–М.: Финансы и статистика, 1983. 5. Хаббард Д. Автоматизированное проектирование баз данных. Пер. с англ.–М.: Мир, 1983. 6. Уэлдон Д.-Л. Администрирование баз данных. Пер. с англ. –М.: Финансы и статистика, 1984. 7. Цикритзис Д., Лоховский Ф. Модели данных. Пер. с англ. –М.: Финансы и статистика, 1985. 8. Четвериков В. Н., Ревунков Г. И., Самохвалов Э. Н. Базы и банки данных.–М.: Высшая школа, 1987. 9. Чоговадзе Г. Г., Качибая В. В., Сургуладзе Г. Г. Теория реляционных зависимостей и проектирование логической схемы баз данных.–Тбилиси: Тбилисский университет, 1988. 10. Полищук Ю. М., Хон В. Б. Теория автоматизированных банков информации.–М.: Высшая школа, 1989. 11. Бойко В. В., Савинков В. М. Проектирование баз данных информационных систем.–М.: Финансы и статистика, 1989. 117 Содержание Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Глава 1. Методология проектирования баз данных . . . . . 6 1.1. Современная концепция баз данных . . . . . . . . 6 1.2. Основные определения базы и банка данных . . 10 1.3. Логическое и физическое описания данных . . . 14 1.4. Типы организации данных. Администратор базы данных. Логическая и физическая независимость данных . . . . . . . . . . . . . . . . 22 1.5. Модель данных. Виды описания данных . . . . . 25 1.6. Структуры данных . . . . . . . . . . . . . . . . . . 33 1.7. Основные операции над данными. Ограничения целостности . . . . . . . . . . . . . . 35 1.8. Архитектура базы и банка данных . . . . . . . . 42 1.9. Связь. Ассоциации элементов . . . . . . . . . . . 47 1.10. Предметная область. Моделирование предметной области . . . . . . . 52 Глава 2. Методика проектирования баз данных . . . . . . 60 2.1. Моделирование локальных представлений . . . . 60 2.2. Объединение моделей локальных представлений 64 2.3. Иерархическая модель данных. Иерархическое представление базы данных . . . 68 2.4. Сетевая модель данных. Сетевое представление базы данных . . . . . . . 73 118 2.5. Реляционная модель данных. Реляционное представление базы данных . . . . . 81 2.6. Нормализация отношений . . . . . . . . . . . . . . 92 2.7. Реляционная алгебра . . . . . . . . . . . . . . . . 101 2.8. Каноническая структура базы данных . . . . . . 106 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 119