ЛЕКЦИИ 3-4 Проектирование баз данных Реляционная модель данных 1 Проектирование базы данных Полный цикл разработки базы данных включает: • концептуальное проектирование • логическое проектирование • физическое ее проектирование 2 Концептуальное проектирование БД Цель - создании концептуальной модели БД для анализируемой предметной области Этапы построения: • выделение сущностей • выделение ключевых атрибутов для каждой сущности • добавление неключевых атрибутов • определение связей между сущностями 3 Логическое проектирование БД Цель - создание логической модели БД для исследуемой предметной области Разрабатывается модель БД, опирающаяся на конкретную модель данных (реляционная, сетевая, иерархическая), которая определяется типом СУБД, предполагаемой для БД Концептуальное и логическое проектирование — это итеративные процессы, которые включают в себя ряд уточнений с возвратом к предыдущему этапу 4 Физическое проектирование БД Цель - создание модели БД, ориентированной на конкретную СУБД Для реляционной модели данных физическое проектирование включает: • создание набора реляционных таблиц на основе информации, представленной в логической модели данных; • определение конкретных структур хранения данных и методов доступа к ним; • разработка средств защиты создаваемой системы. 5 Концептуальное проектирование БД Модель «сущность - связь» В концептуальном проектировании БД применяется семантическое моделирование, опирающееся на смысл моделируемых данных Основной инструмент - различные варианты диаграмм «сущность-связь» (ER-диаграмм) Первый вариант модели сущность-связь был предложен в 1976 г. Питером Ченом. Позже появились другие варианты подобных моделей (нотация Мартина, нотация IDEF1X, нотация Баркера и др.) 6 Модель «сущность – связь» Сущность – класс однотипных объектов, информация о которых имеет существенное значение для рассматриваемой предметной области Экземпляр сущности – конкретный представитель данной сущности Например, сущность: ТОВАР Экземпляр сущности: конкретный товар, например, телевизор 7 Модель «сущность – связь». Атрибуты Атрибут сущности – поименованная характеристика, являющаяся некоторым свойством сущности Экземпляр атрибута – определенная характеристика конкретного экземпляра сущности, значение атрибута Например, сущность ТОВАР может иметь атрибуты: Наименование_товара, Индекс_товара, Цена_товара Экземпляр атрибута Наименование_товара: Телевизор Samsung QE49Q67RAU 8 Модель «сущность – связь». Атрибуты Значения каждого атрибута выбираются из некоторого множества, включающего все возможные значения, которые могут быть присвоены атрибуту домена Примеры доменов: • множество допустимых значений даты; • диапазон целых чисел; • список компаний-поставщиков. Ключевые атрибуты выделяются подчеркиванием. 9 Модель «сущность – связь». Нотация Питера Чена 10 Модель «сущность – связь» в нотации Питера Чена. Пример 11 Модель «сущность – связь». Ключи Атрибут или несколько атрибутов, значения которых уникальным образом идентифицируют каждый экземпляр сущности, являются потенциальным ключом данной сущности Потенциальных ключей может быть несколько. Например, экземпляр сущности ФАКУЛЬТЕТ (Код_факультета, Название_факультета, ФИО_декана) может однозначно идентифицироваться любым из первых двух указанных атрибутов Один из потенциальных ключей может быть выбран в качестве первичного ключа, остальные называются альтернативными ключами 12 Другой способ указания атрибутов 13 Модель «сущность – связь». Атрибуты Идентификацию некоторых сущностей иногда приходится осуществлять при помощи составных ключей, которые включают несколько атрибутов Например, сущность ЛЕЧЕНИЕ (ФИО_врача, ФИО_пациента, Дата_назначения, Лекарство) однозначно идентифицировать можно только составным ключом (ФИО_врача, ФИО_пациента, Дата_назначения) 14 Связи между сущностями Связь между двумя сущностями осуществляется через связь экземпляров одной сущности с экземплярами другой сущности, образуя набор экземпляров связи между ними Экземпляры связи ЧИТАЕТ Диаграмма связи ЧИТАЕТ 15 Модель «сущность-связь»: связь Связь — это ассоциация (объединение), установленная между несколькими сущностями и показывающая, как взаимодействуют сущности между собой Связь определяет взаимосвязь между экземплярами сущностей Связь также может иметь атрибуты 16 Модель «сущность-связь»: связь 17 Нотация Чена. Атрибуты и связи 18 Модель «сущность-связь»: связь Степени бинарных связей: 19 один-к-одному (1:1) один-ко-многим (1:M) многие-ко-многим (M:N) Модель «сущность-связь»: пример 20 Связь между сущностями Сущности: СТУДЕНТ (Номер_зачетной_книжки, ФИО ) ГРУППА (Код_группы, Количество_студентов, Староста) Для связи в число атрибутов сущности СТУДЕНТ добавим атрибут Код_группы, значение которого будет использовано для связи Новая сущность СТУДЕНТ: СТУДЕНТ (Номер_зачетной_книжки,ФИО, Код_группы) 21 Виды связей. Неидентифицирующая связь Неидентифицирующая связь – первичный ключ родительской сущности включается в состав неключевых атрибутов дочерней сущности с созданием внешнего ключа (FK) 22 Виды связей. Идентифицирующая связь Идентифицирующая связь – первичный ключ родительской сущности включается в состав первичного ключа дочерней сущности 23 Независимая сущность Независимая сущность – её существование не зависит от других сущностей Для идентификации уникального экземпляра она не нуждается в дополнительной информации, взятой из другой сущности 24 Зависимая сущность Если идентификация данных сущности зависит от идентификации данных в других сущностях, то такая (первая) сущность называется зависимой сущностью В состав атрибутов зависимой сущности должен входить первичный ключ родительской сущности 25 Ассоциативная сущность Сущность, которая представляет данные, поясняющие характеристики связи между двумя и более сущностями, называется ассоциативной сущностью 26 Нотация Баркера Каждая сущность изображается в виде прямоугольника с именем сущности в верхней части Атрибуты изображаются в пределах прямоугольника, определяющего сущность Ключевые атрибуты выделяются символом # 27 Нотация Баркера Связь – сплошная или пунктирная линия до середины в зависимости от того, является она обязательной или необязательной Сплошная линия - обязательное участие в связи каждого экземпляра сущности, со стороны которой эта линия проведена, пунктирная – необязательное участие Слева направо: «Каждый сотрудник может иметь несколько детей". Справа налево: "Каждый ребенок обязан принадлежать ровно одному сотруднику" 28 Нотация Баркера. Пример 29 Нотация IDEF1X Атрибуты - список имен внутри блока сущности Атрибуты, входящие в первичный ключ, размещаются в верхней части списка, отделяются от других атрибутов горизонтальной чертой Атрибуты - внешние ключи (Foreign Key) отмечаются FK в скобках 30 Реляционная модель РМД предметной области - набор связанных между собой отношений, изменяющихся во времени. Принципы реляционной модели были сформулированы в 1969—1970 годах Э. Ф. Коддом (E. F. Codd). Строгое изложение теории реляционных баз данных (реляционной модели данных) в современном понимании можно найти в книге К. Дж. Дейта «C. J. Date. An Introduction to Database Systems» («Дейт, К. Дж. Введение в системы баз данных»). 31 Состав РМД Структурная часть - описывает, какие объекты рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в РМД, являются нормализованные отношения Целостная часть - описывает ограничения, которые должны выполняться для любых отношений в любых РБД - целостность сущностей и целостность внешних ключей Манипуляционная часть - описывает два эквивалентных способа манипулирования реляционными данными - реляционную алгебру и реляционное исчисление 32 Структурная часть РМД Типы данных: символьные, числовые, специализированные («деньги»), дата, время и др. Домен в РМД — допустимое потенциальное множество значений данного типа Свойства домена: домен имеет уникальное имя в пределах базы данных домен определен на некотором простом типе данных или на другом домене домен несет определенную смысловую нагрузку 33 Структурная часть: Элементы РМД Элемент реляционной модели Отношение Двумерная плоская таблица Атрибут Заголовок столбца таблицы Кортеж (запись) Строка таблицы (единица информации БД) Схема отношения Строка заголовков столбцов таблицы (заголовок таблицы) Количество атрибутов, которое содержит отношение Степень отношения Мощность отношения 34 Форма представления Количество кортежей, которое содержится в отношении Мощность Структурная часть: Элементы РМД Степень 35 Характеристики отношений отношение имеет уникальное в реляционной схеме имя; каждая ячейка отношения содержит только одно элементарное (атомарное, неделимое) значение; каждый атрибут имеет уникальное для отношения имя; значения атрибута берутся из одного и того же домена; каждый кортеж является уникальным; порядок следования атрибутов и кортежей не имеет значения. 36 РМД: целостная часть Целостность сущностей Целостная часть 37 Целостность внешних ключей Целостная часть: первичные ключи Первичный ключ – Primary Key - (ключ отношения, ключевой атрибут,PK): атрибут (или группа атрибутов) отношения, однозначно идентифицирующий каждый из его кортежей Первичный ключ Потенциальный ключ Альтернативный ключ Альтернативный ключ - это атрибут (или группа атрибутов), несовпадающий с первичным ключом и однозначно идентифицирующий каждый из его кортежей 38 Цели использования ключей исключение дублирования значений в ключевых атрибутах (следствие – исключение дублирования кортежей в отношении) организация связывания таблиц упорядочение кортежей (по возрастанию или убыванию) ускорение работы с кортежами отношения (поиск) 39 Целостная часть: целостность сущностей Атрибуты, входящие в состав некоторого потенциального (первичного или альтернативного) ключа не могут принимать null-значений Null-значение - это не значение, а некий маркер, показывающий, что значение неизвестно 40 Внешний ключ: определение Пусть в отношении R1 имеется атрибут А, значения которого являются значениями ключевого атрибута В другого отношения R2. Тогда говорят, что атрибут А отношения R1 есть внешний ключ (Foreign Key, FK) R2 Родительское 41 R1 Дочернее Ссылочная целостность - ограничения, которые накладывает реляционная модель на внешние ключи для обеспечения целостности данных 42 Правило целостности внешних ключей Внешние ключи не должны быть несогласованными: для каждого значения внешнего ключа должно существовать соответствующее значение первичного ключа в родительском отношении 43 Ссылочная целостность Ссылочная целостность может нарушиться в результате операций, изменяющих состояние базы данных. Таких операций три – вставка (INSERT) , обновление (UPDATE) и удаление (DELETE) кортежей в отношениях при выполнении одной из четырех операций: • Обновление кортежа в родительском отношении • Удаление кортежа в родительском отношении • Вставка кортежа в дочернее отношение • Обновление кортежа в дочернем отношении 44 Стратегии поддержания ссылочной целостности Для поддержания ссылочной целостности обычно используются две основные стратегии: RESTRICT (ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности CASCADE (КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести каскадные изменения в другие отношения так, чтобы не допустить нарушения ссылочной целостности 45 Стратегии поддержания ссылочной целостности Дополнительными стратегиями поддержания ссылочной целостности являются: SET NULL (УСТАНОВИТЬ В NULL) - все некорректные значения внешних ключей изменять на null-значения. SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - все некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию. IGNORE (ИГНОРИРОВАТЬ) - выполнять операции, не обращая внимания на нарушения ссылочной целостности. 46 РМД: манипуляционная часть Доступ к реляционным данным осуществляется при помощи реляционной алгебры или эквивалентного ей реляционного исчисления 47 Таблица есть Отношение, если каждая строка представляет собой кортеж из k значений, принадлежащих k столбцам; порядок строк безразличен; любые две строки различаются хотя бы одним элементом; строки и столбцы таблицы могут обрабатываться в любой последовательности. 48 Реляционная алгебра - теоретический язык запросов, представляющий из себя набор операций, которые принимают отношения в качестве операндов и возвращают отношение в качестве результата 49 Реляционная алгебра 8 операций Э.Кодда основные (базовые теоретико-множественные) 1. 2. 3. 4. объединение разность (вычитание) пересечение декартово (прямое) произведение специальные реляционные 1. 2. 3. 4. 50 выборка (селекция, ограничение) проекция деление соединение Объединение Совместимые отношения имеют одинаковую размерность (степень) и, возможно, одинаковые атрибуты Объединением двух совместимых отношений R1 и R2 является отношение R, содержащее все элементы исходных отношений (с исключением повторений) R R1 R2 R1 UNION R2 51 Объединение: пример Отношение R1 ID1 F1_1 1 A 2 B 3 C 4 D Схема от левого отношения (СУБД) Кортежи отличаются, хотя ID совпадают! Дубликатов нет 52 Отношение R2 ID2 F2_1 F2_2 10 Ж десять 20 Ы двадцать 3 Ъ три 4 D four F1_2 one two three four R R1 R2 ID1 1 2 3 3 4 10 20 F1_1 A B C Ъ D Ж Ы F1_2 one two three три four десять двадцать Разность (вычитание) Вычитание совместимых отношений R1 и R2 является отношение R, которое состоит из множества кортежей, принадлежащих R1, но не принадлежащих R2 R R1 R2 R1 MINUS R2 R1 R2 R2 R1 53 Разность: пример Отношение R1 ID1 F1_1 1 A 2 B 3 C 4 D Отношение R2 ID2 F2_1 F2_2 10 Ж десять 20 Ы двадцать 3 Ъ три 4 D four F1_2 one two three four R R1 R2 54 ID1 F1_1 F1_2 1 A one 2 B two 3 C three Пересечение Пересечением двух совместимых отношений R1 и R2 является отношение R, которое включает в себя кортежи, одновременно принадлежащие обоим исходным отношениям R R1 R2 R1 INTERSECT R2 R1 R1 R2 55 Пересечение: пример Отношение R1 ID1 F1_1 1 A 2 B 3 C 4 D Отношение R2 ID2 F2_1 F2_2 10 Ж десять 20 Ы двадцать 3 Ъ три 4 D four F1_2 one two three four R R1 R2 56 ID1 F1_1 F1_2 4 D four Декартово произведение Пусть даны два отношения R1 степени k1 и R2 степени k2 и эти отношения не имеют одинаковых имен атрибутов. Тогда декартовым произведением отношений R1 и R2 является отношение R степени k1+k2, состоящее из множества кортежей, в котором первые k1 элементов образуют кортеж из отношений R1, а последние k2 элементов образуют кортеж из отношения R2 R R1 R2 57 Отношение R1 ID1 F1_1 1 A 2 B 3 C 4 D 58 ID1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 F1_1 A A A A B B B B C C C C D D D D Отношение R2 ID2 F2_1 F2_2 10 Ж десять 20 Ы двадцать 3 Ъ три 4 D four F1_2 one two three four F1_2 one one one one two two two two three three three three four four four four ID2 10 20 3 4 10 20 3 4 10 20 3 4 10 20 3 4 F2_1 Ж Ы Ъ D Ж Ы Ъ D Ж Ы Ъ D Ж Ы Ъ D F2_2 десять двадцать три four десять двадцать три four десять двадцать три four десять двадцать три four R R1 R2 Теоретические (абстрактные) языки запросов В реализациях конкретных реляционных СУБД сейчас реляционная алгебра не используется в чистом виде. Фактическим стандартом доступа к реляционным данным стал язык SQL 59