- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект DreamHome
- •Реляционная алгебра (продолжение)
- •Выборка (или ограничение)
- •Проекция
- •Декартово произведение
- •Объединение
- •Разность
- •Операции соединения
- •Tema-соединение (θ-join)
- •Естественное соединение
- •Внешнее соединение
- •Полусоединение
- •Пересечение
- •Деление
- •Другие языки
- •Примеры применения реляционной алгебры
- •Обзор жизненного цикла информационных систем
- •Жизненный цикл приложения баз данных
- •Проектирование базы данных
- •Проектирование баз данных на основе восходящего подхода (Метод нормализации или декомпозиции)
- •Цель нормализации
- •Проблемы, вызываемые использованием единственного отношения (аномалии обновления)
- •Проблема вставки
- •Проблема обновления
- •Проблемы удаления
- •Функциональные зависимости
- •Процесс нормализации
- •Декомпозиция без потерь и функциональные зависимости
- •Первая нормальная форма (1 нф) (из Коннолли)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (знф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 И 5 нормальные формы (4нф и 5нф)
- •Пример нормализации
- •. Другая декомпозиция отношения консультант
- •Некоторые комментарии к декомпозиционному алгоритму проектирования
- •Некоторые модификации алгоритма проектирования Избыточные функциональные зависимости
- •Транзитивные зависимости
- •Добавление атрибутов в фз
- •Правила вывода
- •Алгоритм проектирования бд методом декомпозиции (восходящий метод)
- •Проверка отношений на завершающей фазе их проектирования
- •Задачи к текущему материалу
- •Пример аномалий для 2нф
- •Нормальная форма Бойса—Кодда (нфбк) с примером аномалий для 3 формы
- •Язык sql
- •Запрос одиночной таблицы
- •Проектирование в sql
- •Выборка в sql
- •Сортировка
- •Встроенные функции sql
- •Встроенные функции и группировка
- •Запрос нескольких таблиц
- •Вложенные запросы
- •Соединение с помощью sql
- •Сравнение вложенного запроса и соединения
- •Внешнее соединение
- •Операторы exists и not exists
- •Изменение данных
- •Insert into запись
- •Insert into запись
- •Insert into третьекурсник
- •Удаление данных
- •Модификация данных
- •Запрос на sql с exist и not exist (реализация реляционной операции Деления)
- •Операция внешнего соединения таблиц в access (Мои замечания)
- •Псевдонимы столбцов и таблиц
- •Уточнения запроса
- •Теоретико-множественные операции
- •Декартово произведение наборов записей
- •Объединение наборов записей (union)
- •Пересечение наборов записей (intersect)
- •Intersect corresponding (id_компонента, Тип_компонента)
- •Вычитание наборов записей (except)
- •Операции соединения
- •Естественное соединение (natural join)
- •Условное соединение (join... On)
- •Соединение по именам столбцов (join... Using)
- •Внешние соединения
- •Левое соединение {left outer join)
- •Правое соединение {right outer join)
- •Внешнее соединение Преподаватель-Изучение-Предмет. Создание в access. Пример
- •Операторы exists и not exists
- •Низходящее проектирование бд на основе er-модели Модель «сущность—связь» и ее варианты
- •Реализация низходящего проектирования бд на основе er-модели
- •Типы сущностей
- •Способы представления сущностей на диаграмме
- •Атрибуты
- •Типы связей
- •Представление связей на диаграммах
- •Атрибуты связей
- •. Структурные ограничения
- •Показатель кардинальности
- •Степень участия
- •Примеры er-проектирования
- •Модель «сущность—связь» в другом рассмотрении
- •Элементы модели «сущность—связь»
- •Сущности
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность—связь»
- •Изображение атрибутов в диаграммах «сущность—связь»
- •Слабые сущности
- •Представление многозначных атрибутов при помощи слабых сущностей
- •Подтипы сущностей
- •Пример er-диаграммы
- •Документирование делового регламента
- •Модель «сущность—связь» и case-средства
- •Диаграммы «сущность—связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Роль uml в базах данных на сегодняшний день
- •Примеры
- •Вопросы группы I
- •Вопросы группы II
- •Литература по курсу «базы и банки данных»
Способы представления сущностей на диаграмме
Каждый сильный тип сущности изображается в виде прямоугольника с именем сущности внутри него, а каждый слабый тип сущности — в виде прямоугольника с двойным контуром. На рис. 5.2 показан пример представления на диаграммах сильных (Staff и Branch) и слабых (Next of Kin) типов сущностей.
Рис. Представление на ER-диаграмме сильных (Сотрудник, Кафедра) и слабых (Родственник сотрудника) типов сущностей.
Атрибуты
Атрибут - свойство типа сущности или типа связи.
Отдельные свойства сущностей называются атрибутами. Например, сущность КАФЕДРА может быть описана номером кафедры, названием, адресом, номером телефона и номером факса. Атрибуты сущности содержат значения, описывающие каждую сущность. Значения атрибутов представляют основную часть сведений, сохраняемых в базе данных.
Связь, которая соединяет две сущности, также может иметь атрибуты, аналогичные атрибутам типа сущности.
Домен атрибута - набор значений, которые могут быть присвоены атрибуту.
Каждый атрибут связан с набором значений, который называется доменом. Домен определяет все потенциальные значения, которые могут быть присвоены атрибуту. Например, количество комнат в объекте недвижимости может варьироваться от одной до пятнадцати для каждого экземпляра этой сущности. Следовательно, набор допустимых значений для атрибута «количество комнат» (Rooms) сущности Ргорerty_for_Rent можно определить как набор целых чисел от 1 до 15.
Различные атрибуты могут совместно использовать один и тот же домен. Например, атрибуты адреса (Address) сотрудников компании (сущность Staff) и владельцев объектов недвижимости (сущность Owner) могут совместно использовать один и тот же домен всех возможных адресов. Домены также могут представлять собой комбинацию, состоящую из нескольких других доменов. Например, домен даты рождения (DOB) сущности Staff состоит из таких подчиненных доменов, как день, месяц и год.
Домен атрибута имени FName определить труднее, потому что он состоит из множества всех возможных имен. Очевидно, что это — текстовая строка, но она может состоять не только из букв, но также из дефисов или других специальных символов. Полностью разработанная модель данных включает домены каждого атрибута, присутствующего в ER-модели.
Атрибуты делятся на простые и составные, однозначные и многозначные, а также производные.
Простой атрибут - Атрибут, состоящий из одного компонента с независимым существованием.
Простые атрибуты не могут быть разделены на более мелкие компоненты. Примерами простых атрибутов являются атрибут пола (Sex) или зарплаты (Salary) работника. Простые атрибуты иногда называют атомарными.
Составной атрибут - Атрибут, состоящий из нескольких компонентов, каждый из которых характеризуется независимым существованием.
Некоторые атрибуты могут быть разделены на более мелкие компоненты, которые характеризуются независимым существованием. Например, атрибут адреса (Address) сущности, представляющей отделение компании, (Branch) со значением '163 Main St, Partick, Glasgow, Gil 9QX' может быть разбит на отдельные атрибуты улицы (Street) со значением '163 Main Sf, района (Area) со значением 'Partick', города (City) со значением 'Glasgow' и почтового индекса (Postcode) со значением 'Gil 9QX'.
Решение о моделировании атрибута Address в виде простого атрибута или разбиении его на атрибуты Street, Area, City и Postcode зависит от того, как рассматривается атрибут Address в пользовательском представлении — как единое целое или как набор отдельных компонентов.
Однозначный атрибут - Атрибут, который содержит одно значение для одной сущности.
Большинство атрибутов типов сущностей являются однозначными для каждого отдельного экземпляра этой сущности. Например, сущность Кафедра всегда имеет единственное значение в атрибуте номера кафедры ВУЗа (Kaf_No), например '303'. Поэтому атрибут Kaf_No является однозначным.
Многозначный атрибут - Атрибут, который содержит несколько значений для одной сущности.
Некоторые атрибуты могут иметь несколько значений для одной сущности. Например, сущность Кафедра может иметь несколько значений для атрибута номера телефона кафедры (Tel No), например: '0171-886-1212' и '0171-886-1233'. Следовательно, атрибут Tel_No в этом случае будет многозначным. Многозначный атрибут допускает присутствие определенного количества значений (возможно, в заданных пределах — максимальном и минимальном количестве). Например, атрибут Tel_No отделения компании может иметь от одного до десяти значений. Иными словами, любая кафедра должна иметь минимум один номер телефона и максимум десять собственных телефонных номеров.
Производный атрибут - Атрибут, который представляет значение, производное от значения связанного с ним атрибута или некоторого множества атрибутов, принадлежащих некоторому (не обязательно данному) типу сущности.
Некоторые атрибуты могут быть связаны с определенной сущностью. Например, возраст сотрудника (Age) является величиной, производной от его даты рождения (DOB), и поэтому атрибуты Age и DOB являются связанными. Причем атрибут Age является производным атрибутом, значение которого вычисляется на основании значения атрибута DOB.
В некоторых случаях значение атрибута является производным от многих сущностей одного и того же типа сущности. Например, атрибут общего количества сотрудников отделения компании (Total Staff) сущности типа Staff (Работник) может быть вычислен на основе подсчета количества сущностей Staff.
Производные атрибуты могут также вычисляться на основе нескольких взаимосвязанных атрибутов различных сущностей. Например, рассмотрим атрибут Deposit (Задаток) сущности Rental_Agreement (Договор на аренду). Значение задатка связано с договором аренды (сущность Rental_Agreement) и вычисляется как удвоенная месячная плата за аренду данного объекта недвижимости. Следовательно, значение атрибута Deposit сущности Rental Agreement вычисляется на основе атрибута Rent (Арендная плата) сущности Rental Agreement.
Ключи
Под ключом подразумевается элемент данных, который позволяет уникально идентифицировать отдельные экземпляры некоторого типа сущности. Рассмотрим более строгое определение ключа.
Потенциальный ключ - Атрибут или набор атрибутов, который уникально идентифицирует отдельные экземпляры типа сущности.
Потенциальный ключ — это один или несколько атрибутов, значения которых уникальным образом идентифицируют каждый экземпляр сущности данного типа. Например, номер отделения компании (Branch No) является потенциальным ключом типа сущности Branch, поскольку он содержит разные значения для каждой отдельной сущности Branch. Потенциальный ключ должен содержать значения, которые уникальны для каждого отдельного экземпляра сущности данного типа. Например, каждое отделение компании обладает уникальным номером (например, 'ВЗ'), и не существует отделений с одинаковыми номерами.
Первичный ключ - Потенциальный ключ, который выбран в качестве первичного ключа.
Тип сущности может иметь несколько потенциальных ключей. Например, каждый сотрудник может иметь уникальный номер социального страхования NIN (National Insurance Number), а также уникальный личный (табельный) номер
Staff No, присваиваемый сотрудникам этой организации. Таким образом, сущность Staff обладает двумя потенциальными ключами, каждый из которых может быть выбран в качестве первичного ключа.
Выбор первичного ключа сущности осуществляется исходя из соображений суммарной длины атрибутов, минимального количества атрибутов в ключе, а также наличия гарантий уникальности его значений в текущий момент времени и в обозримом будущем. В частности, личный номер сотрудника (например, 'SG14') меньше по размеру, а потому предпочтительнее, чем номер социального страхования (например, 'WL220658D'). Следовательно, первичным ключом сущности Staff целесообразно выбрать именно атрибут Staff No, а атрибут NIN в этом случае будет называться альтернативным ключом.
Составной ключ – потенциальный ключ, который состоит из двух или больше атрибутов.
В некоторых случаях ключ сущности состоит из нескольких атрибутов, значения которых, взятые вместе, а не по отдельности, уникальны для каждого экземпляра сущности. Например, сущность Advert (Рекламное объявление) обладает следующими атрибутами Property Ко, Newspaper Name, Date Advert и Cost. Многие объекты недвижимости одновременно рекламируются во многих газетах. Для уникальной идентификации каждого рекламного объявления необходимо использовать значения Ргорerty_No (Номер объекта недвижимости), Newspaper_Name (Название газеты) и Date Advert (Дата рекламного объявления). Таким образом, сущность Advert (Рекламное объявление) обладает составным первичным ключом, состоящим из атрибутов Property_No, Newspaper_Name и Date_Advert.
