Социология. Моделирование данных hl. Системы управления базами данных
Скачать 0.68 Mb.
|
Контрольные вопросы и задания 1. Дайте определение модели данных. 2. Отобразите схематично три области представления данных и на основе рисунка дайте определения базовым понятиям моделирования данных: объекту, предметной области, атрибуту данных, домену и записи данных. 3. Перечислите виды атрибутов данных. 4. Что такое ключевой элемент данных. 5. Дайте определение концептуальной модели данных. 6. Перечислите типы связей и дайте их определения. 7. Перечислите виды зависимостей между атрибутами объекта. 8. Приведите пример частичной и полной функциональной зависимости. 9. Приведите пример транзитивной зависимости. 10. Дайте определение ER модели. 11. Назовите основные достоинства и недостатки ER модели. 12. Что такое слабый тип сущности. 13. Какие ограничения накладываются на связи между типами сущностей. 14. Разработайте ER модель расписания вылета самолетов, представленной на рис. 2. 15. Что такое ловушки разрыва и разветвления и когда они возникают. Дайте пример для каждой из ловушек. 12 2. МОДЕЛИ ДАННЫХ Хранимые в базе данные имеют определенную логическую структуру, т.е описываются некоторой моделью представления данных (в дальнейшем просто моделью данных). К числу классических относятся иерархическая, сетевая и реляционная. В последние годы появились и стали внедряться на практике постреляционная, многомерная и объектно-ориентированная модели. Разрабатываются также всевозможные системы, основанные на моделях данных, расширяющих известные модели. Например, объектно- реляционная модель данных. 2.1. Иерархическая модель Исторически первой была разработана и воплощена иерархическая модель данных. В 1960 году была разработана БД для большой ЭВМ IBM System 360. Первой коммерческой СУБД явилась СУБД IMS фирмы IBM. Среди отечественных можно назвать СУБД ОКА. Иерархическая модель данных представляется связным графом типа дерева, вершины (типы) которого расположены на разных иерархических уровнях (рис. 7). При этом одна вершина, расположенная на самом верху дерева, называется корнем и не подчиняется ни одной вершине, а все остальные вершины связаны с одной и только одной вершиной, расположенной на более высоком уровне. Элементы, расположенные в конце ветви, т.е. не имеющие порожденных, называются листьями. Потомки, одного и того же типа называют близнецами. Элементы могут быть простыми, а также представлять из себя записи. Можно привести достаточно много примеров, когда логическая структура данных некоторой предметной области идеально описывается иерархической моделью данных, например, родословная при указании одного родителя. Иерархическая БД представляет собой упорядоченную совокупность экземпляров типа «дерево», содержащих в свою очередь совокупность экземпляров типа «запись». Обход всех элементов иерархической БД обычно производится сверху вниз и слева направо. Иерархической модели присущи связи «один к одному» и «один ко многим». Связь «многие ко многим» не может быть реализована, так как вершина не может иметь более одного родителя. Давайте представим расписание занятий на факультете с помощью иерархической модели (рис. 8). Видим, что иерархической модели 13 Рис. 7. Иерархическая модель данных данных присуще дублирование информации. В нашем примере для каждой группы будут дублироваться записи расписания. При изменении расписания общих курсов придется менять записи расписания для всех групп. К тому же отсутствует связь расписания с препода- вателями и препода- вателей со студентами. К достоинствам иерархической модели данных относятся эффективность использования памяти ЭВМ и неплохие показатели времени выполнения основных операций с данными. К недостаткам можно отнести: • невозможность установления связи М:М; • сильную логическую зависимость данных. Добавление или удаление вершины невозможно без разрушения всей структуры данных; • избыточность информации; • затрудненный поиск «снизу вверх». Это приводит к простому перебору всех значений в БД. 2.2. Сетевая модель данных Впервые сетевые СУБД появились в 1970 году с появлением миникомпьютеров DEC. Это IDMS (Computer Association), VAX_DBMS (Digital), db_VistaIII и наша СЕТЬ. Если в отношении между данными порожденный элемент имеет более одного исходного элемента, то такое отношение уже нельзя описать как древовидное. Его описывают в виде сетевой структуры. Сетевая модель данных позволяет отображать взаимосвязи элементов данных в виде произвольного графа, обобщая тем самым иерархическую модель данных ( рис. 9 ). В сетевой модели данные представлены в виде записей и связей. Запись может иметь множество как подчиненных ей записей, так и записей, которым она подчинена. Такая сеть позволяет реализовывать отношение М:М на всех связях. С некоторой избыточностью сетевые модели всегда можно разложить на несколько древовидных, вводя дополнительные вершины. Рассмотрев обратный переход к сетевой модели легко заметить, 14 факультет преподаватели группы расписание студенты Рис. 8. Иерархическая модель расписания занятий что дублирование информации сильно уменьшается. К другим достоинствам этой модели данных можно отнести большую гибкость системы. В ней можно использовать не только предопределенные связи, а также и добавлять новые (наряду с узлами) в процессе работы. Разрешены также симметричные запросы (сверху вниз и снизу вверх), выполняющиеся по схожим алгоритмам. Сетевые модели получили достаточно широкое распространение. Результатом явился стандарт CODASYL. Основными языками программирования для создания сетевых, а также иерархических, БД можно считать PL/1 и COBOL. К недостаткам сетевой модели данных можно отнести: • недостаточную скорость выполнения поиска; • некоторую избыточность информации (для каждой записи дублируются ссылки на подчиненные и родительские элементы; • громоздкое и труднообозримое представление данных; • ослабление контроля целостности вследствие допустимости установления произвольных связей между записями. На рис. 10 представлена сетевая модель расписания занятий. Здесь связь типа М:М между группами и препода- вателями реализовано в виде записей Пересе- чения «расписание», указывающее день, время и номер аудитории. Между студентами и преподавателями также можно установить связь типа М:М с помощью записей пересечения «задание», например индивидуальные задания, курсовые работы и т.п. 15 факультет преподаватели группы задание студенты расписание Рис. 10. Сетевая модель расписания занятий Рис. 9. Сетевая модель данных 2.3. Реляционная модель 2.3.1. Основные понятия В реляционной модели данных информация хранится в одной или нескольких связанных таблицах. Отдельная таблица обычно представляет совокупность (группу) либо реальных объектов, либо некоторых абстрактных концепций, либо событий одного типа. Каждая запись в таблице идентифицирует один объект группы. Таблица состоит из строк и столбцов, называемых записями и полями соответственно. Таблицы обладают следующими свойствами: 1. Каждый элемент таблицы представляет собой один элемент данных, т.е. совокупность значений в одном столбце одной строки недопустима; 2. Все столбцы в таблице однородные. Это означает, что элементы столбца имеют одинаковую природу. Столбцам присвоены имена; 3. В таблице нет двух одинаковых строк; 4. Порядок размещения строк и столбцов в таблице может быть произвольным. В операциях с такой таблицей ее строки и столбцы могут просматриваться в любом порядке безотносительно к их информационному содержанию и смыслу. Таблицы, обладающие такими свойствами, являются точным прообразом математического двумерного множества – отношения (relation). Но эти два понятия не эквивалентны. Отношение – это абстрактный математический объект, а таблица – это конкретное изображение этого абстрактного объекта. Различие проявляется в их свойствах. В отношении строки и столбцы не могут быть упорядочены, а в таблице строки упорядочены сверху вниз, столбцы слева направо. В таблице могут повторяться строки, а в отношении нет. В реляционной модели каждая строка таблицы уникальна. Это обеспечивается применением ключей, которые содержат одно или несколько полей таблицы. Ключи хранятся в упорядоченном виде, обеспечивающем прямой доступ к записям таблицы во время поиска. Связь между таблицами осуществляется посредством значений одного или нескольких совпадающих полей (преимущественно ключевых). Приведем ряд терминов, применяющихся в реляционной модели: • Отношением (relation) называется двумерное множество – таблица, удовлетворяющая вышеперечисленным требованиям; • Атрибут – это свойство, характеризующие объект. В структуре таблицы каждый атрибут именуется и ему соответствует заголовок 16 некоторого столбца таблицы. Количество атрибутов называется степенью отношения; • Кортежом (tuple) называется строка таблицы. В общем случае кортежи представляют собой набор пар <атрибут>, <значение>. Каждое значение должно быть атомарным, т.е. не может быть многозначным или составным. Следовательно, многозначные и составные атрибуты в реляционной модели не поддерживаются. Количество кортежей называется кардинальным числом; • Домен представляет собой множество всех возможных значений определенного атрибута отношения. • Первичным ключом называется атрибут отношения, однозначно идентифицирующий каждый из его кортежей. Ключ может быть составным (сложным), т. е. состоять из нескольких атрибутов. • Потенциальный ключ – это подмножество атрибутов отношения, обладающего следующими свойствами: − Свойством уникальности. Нет одинаковых кортежей с теми же значениями потенциальных ключей; − Свойством неизбыточности. Никакое из подмножеств потенциального ключа не обладает свойством уникальности. Каждое отношение обязательно имеет комбинацию атрибутов, которая может служить ключом. Его существование гарантируется тем, что отношение – это математическое множество, которое не может содержать одинаковых кортежей, т.е. по крайней мере вся совокупность атрибутов обладает свойством однозначной идентификации кортежей отношения. Возможны случаи, когда отношение имеет несколько комбинаций атрибутов, каждая из которых однозначно определяет все кортежи отношения. Все эти комбинации атрибутов являются потенциальными или возможными ключами отношения. Один потенциальный ключ выбирается в качестве первичного, остальные будут называться вторичными (альтернативными). Могут быть даже такие ситуации, когда любой из потенциальных ключей может быть выбран в качестве первичного. Примером может служить таблица Менделеева, содержащая поля Имя, Символ и Атомное число. Потенциальные ключи имеют очень большое значение в реляционной теории. Они служат для адресации кортежей. Указав значение потенциального ключа мы гарантированно получим не более одного кортежа. Для отношений, связанных с другими «базовыми» отношениями, существуют еще внешние ключи, использующиеся для установления связи. • Внешний ключ – это такой атрибут подчиненного отношения, который используется для установления связи с базовым отношением. Он 17 содержит значения, всегда совпадающие с некоторыми значениями потенциального ключа базового отношения. Исходя их вышеприведенных понятий, математически отношение можно описать следующим образом. Пусть даны n множеств Dl, D2, D3,..., Dn, тогда отношение R есть множество упорядоченных кортежей<d1, d2, d3 ,..., dn>, где dk ∈ Dk, dk– атрибут, a Dk– домен отношения R. В середине 70-х годов инженером IBM Коддом (Codd) была предложена модель данных, основанная на математических операциях исчисления отношений и реляционной алгебре. Основной структурной единицей этой модели являлось отношение (relation). Поэтому такая модель данных получила название реляционной. Коддом был также разработан язык манипулирования данных, представленных в виде отношений. Он предложил два эквивалентных между собой по своим выразительным возможностям варианта языка манипулирования данными: 1. Реляционная алгебра. Это процедурный язык, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемых к отношениям. Операторы состоят из операндов, в роли которых выступают отношения, и реляционных операций. Результатом реляционной операции является отношение. Операции можно разделить на две группы. Первую группу составляют операции над множествами, к которым относятся операции объединения, пересечения, разности, деления и декартова произведения. Вторую группу составляют специальные операции над отношениями: проекция, выборка и соединение. 2. Реляционное исчисление. Это непроцедурный язык описательного или декларативного характера, содержащий лишь информацию о желаемом результате. Процесс получения этого результата скрыт от пользователя. К языкам такого типа относятся SQL и QBE. Первый основан на реляционном исчислении кортежей, второй – на реляционном исчислении доменов. С помощью этих языков можно извлекать подмножество столбцов и строк таблицы, создавая таблицы меньшей размерности, а также объединять связанные данные из нескольких таблиц, создавая при этом таблицы большей размерности. Результат каждой (реляционной) операции над отношениями является также отношением. Это реляционное свойство получило название свойства замкнутости. Следовательно, различные пользователи могут выделять в реляционной БД различные наборы данных и связей между ними. Этот способ представления данных наиболее естественен и обозрим для конечного пользователя. Реляционная модель 18 данных очень гибка, поскольку любое представление данных с некоторой избыточностью можно свести к двумерным таблицам. 2.3.2. Связи в реляционной БД Отношение между объектами определяет тип связи между таблицами. Поддерживаются связи четырех типов: «один к одному», «один ко многим», «много к одному» и «многие ко многим». Рассмотрим подробнее типы связей в применении к реляционной модели данных: • «один к одному» Связь «один к одному» означает, кто каждой записи из первой таблицы соответствует одна и только одна запись из другой таблицы. Рассмотрим таблицы, содержащие персональные и служебные сведения о работниках некоторой фирмы. Персональные сведения Код_пс_№_паспорта_Фамилия_Имя'>Код_пс № паспорта Фамилия Имя 1 AB 2358955 Сидоров Сергей 2 DB 2456886 Петров Петр 3 MA 8654212 Иванов Иван Служебные сведения Код_сс Место работы Должность Разряд 1 Бухгалтерия Бухгалтер 3 2 Цех № 2 Токарь 7 3 Лабаратория Начальник отдела Между таблицами «Персональные сведения» и «Служебные сведения» существует связь «один к одному», поскольку для одного человека, работающего в определенной фирме, может существовать только одна запись о его служебном положении. Табельные номера «Код_пс» и «Код_сс» были добавлены для однозначной идентификации записей. Эти же поля и приняты в качестве первичных ключей. Связь между этими таблицами поддерживается при помощи совпадающих значений полей 19 Персональные сведения Код_пс № паспорта Фамилия Имя Отчество Год рождения Адрес Телефон Пол Семейное положение Служебные сведения Код_сс Место работы Должность Разряд Зарплата Рейтинг Дата приема Дата увольнения Характеристика 1 1 «Код_пс» и «Код_сс». Легко убедится, что между двумя ключевыми полями может существовать только связь «один к одному», поскольку любые дублирования одного и того же табельного номера исключены с обеих сторон. • «один ко многим» и «много к одному» Связь «один ко многим» означает, кто каждой записи из первой таблицы может соответствовать одна либо много записей из другой таблицы. Рассмотрим таблицы, содержащие сведения о клиентах некоторой фирмы и сделанных ими заказах. Клиенты Код_клиента_№_паспорта_Фамилия_Имя'>Код_клиента № паспорта Фамилия Имя 1 AB 2358955 Сидоров Сергей 2 DB 2456886 Петров Петр 3 MA 8654212 Иванов Иван Заказы Код_заказа Код_клиента Дата заказа Наименование 1 1 05.03.2000 Пылесос Вихрь-150 2 2 15.04.2000 Холодильник Минск 131 3 2 21.04.2000 Телевизор Горизонт ТЦ 655 4 1 02.10.2000 Стол компьютерный 5 3 12.12.2000 Кресло «Президент» Предполагается, что один и тот же клиент может сделать несколько заказов. Таким образом, между этими таблицами существует связь «один ко многим». Для установления связи необходимо в таблицу «Заказы» ввести поле «Код_клиента», которое будет являться внешним ключом для таблицы «Заказы». Связь между таблицами будет осуществляться на основании значений полей «Клиенты.Код_клиента» и «Заказы.Код_клиента». Причем подчеркнем, что связь устанавливается на основе значений совпадающих полей, а не их наименований. Таким образом, если связь устанавливается между ключевым полем одной таблицы и неключевым полем второй таблицы, то это будет связь типа «один ко многим». 20 Клиенты Код_клиента № паспорта Фамилия Имя Отчество Год рождения Адрес Телефон Заказы Код_заказа Код_клиента Дата заказа Наименование Цена Количество Полная цена Отпущено 1 ∞ • «много ко многим» Связь «много ко многим» возникает между двумя таблицами в тех случаях, когда каждой записи из первой таблицы может соответствовать одна либо много записей из второй таблицы, и наоборот, одной записи из второй таблицы может соответствовать одна либо много записей из первой таблицы. Типичным примером является связь между клиентами некой фирмы и покупаемыми ими товарами. Каждый товар может быть куплен несколькими клиентами и наоборот, один клиент может купить несколько товаров. Такая связь может быть реализована с помощью дополнительной таблицы, содержащей ключевые поля обеих таблиц, участвующих в связи (являющимися для нее внешними ключами). Клиенты |