2 Проектирование баз данных.ppt
- Количество слайдов: 56
Архитектура баз данных
Файловая архитектура Классическим примером такой архитектуры является СУБД MS Access СУБД системные средства коммуникации С базой данных БД При работе с ней пользователю предоставляется полный доступ к файлу БД. При попытке подключиться к файлу другим клиентом СУБД мы получим ошибку доступа.
Архитектура (клиент сервер) Серверная часть СУБД предоставляет интерфейс взаимодействия с Базами данных на средствами клиентского ПО разработанного создателями СУБД и поддерживающая все возможности работы пользователей, программистов и администраторов с удаленной СУБД Клиентский ПК Сервер Баз дынных (Библиотека данных) БД Клиентская часть СУБД Серверная часть СУБД Сетевые средства коммуникации системные средства коммуникации С базой данных БД БД Такая архитектура не обязательно подразумевает несколько компьютеров современные СУБД позволяют соединяться средствами сети и с локальной машины при этом предоставляя более расширенный спектр функций, таких как отладка кода процедур или расширенные средства администрирования.
Прикладное приложения для Android Прикладное приложения для Apple Сервер приложений системные средства коммуникации С базой данных Сетевые средства коммуникации Прикладное приложения для Linux Серверная часть прикладных приложений Прикладное приложения для Windows Сетевые средства коммуникации для конкретного приложения Трехзвенная архитектура Серверная часть СУБД БД БД Сервер Баз дынных (Библиотека данных)
Проектирование баз данных
Системный анализ предметной области Во время проектирования баз дынных необходимо пройти несколько этапов: 1) Провести подробное словесное описание объектов предметной области. 2) Провести подробное словесное описание реальных связей, которые присутствуют между описываемыми объектами. 3) Корректно определить все взаимосвязи между объектами предметной области.
Системный анализ предметной области В общем случае существуют два подхода к выбору состава и структуры предметной области: 1) Функциональный подход – он реализует принцип движения «от задач» и применяется тогда, когда заранее известны функции некоторой группы лиц и комплексов задач, для обслуживания информационных потребностей для которых создается рассматриваемая БД. 2) Предметный подход – когда информационные потребности будущих пользователей БД жестко не фиксируются.
Системный анализ предметной области ориентирован на конкретные задачи ориентирован функциональные потребности пользователей Рекомендуемый Компромиссный вариант Аналитический отчет учитывает возможность наращивания новых приложений
Системный анализ предметной области Отчет должен включать в себя : 1) Подробным описанием информации об объектах предметной области, которая требуется для решения конкретных задач и которая должна храниться в БД 2) Формулировкой конкретных задач, которые будут решаться с использованием данной БД с кратким описанием алгоритмов их решения 3) описанием выходных документов, которые должны генерироваться в системе 4) описанием входных документов, которые служат основанием для заполнения данными БД
Инфологическое (семантическое) моделирование Вторым этапом моделирования БД является инфологическое моделирование (иногда используется термин семантическое моделирование) 1) Необходимо сформировать понятия о предметах, фактах и событиях, которыми будет оперировать БД 2) Определить структуры данный, опираясь на смысл этих данных 3) Сформировать модель “сущность - связь” Связь - это ассоциация, установленная между несколькими сущностями, и показывающая как взаимодействуют сущности между собой. Обычно, но необязательно, связь обозначается глаголом или двойным названием сущностей, между которыми установлена эта связь Пример связи: продукты в магазин поставляют поставщики, то между сущностями Продуты и поставщики существует связь «поставка» или Продукты-Поставщики
Связь Бинарная связь – это связь, существующая между двумя сущностями. Товар Поставщик n-арной связью - это связь, существующая между n сущностями. Поставщик Полка Заказ … Категория Отдел Товар … … корзина Рекурсивная связь – это связь между экземплярами одной сущности Клиент адрес телефон Очень важным свойством модели "сущность-связь" является то, что она может быть представлена в виде графической схемы (диаграммы). Это значительно облегчает анализ предметной области.
Инфологическое (семантическое) моделирование Сущность - это реальный или представляемый объект, информация о котором должна сохраняться в проектируемой системе. Свойства сущности: 1) Сущность имеет имя, уникальное в пределах системы. 2) Сущность соответствует некоторому классу однотипных объектов Примеры сущностей: люди, продукты, студенты и т. д. Примеры экземпляров сущностей: конкретный человек, конкретный продукт, конкретный студент и т. д.
Связь Бинарная связь – это связь, существующая между двумя сущностями. n-арной связью - это связь, существующая между n сущностями. Рекурсивная связь – это связь между экземплярами одной сущности Очень важным свойством модели "сущность-связь" является то, что она может быть представлена в виде графической схемы (диаграммы). Это значительно облегчает анализ предметной области. Сущность A Атрибут n . . . Сущность B Атрибут 1 . . . Атрибут n
степени связей один-к-одному (обозначается 1: 1). Это означает, что в такой связи в каждый момент времени каждому экземпляру сущности A соответствует 1 или 0 экземпляров сущности B. Сущность A Сущность B Атрибут 1 1 Атрибут пример: Если рассматривать традиционный брак, то степень связи между сущностями Мужчина и Женщина будет 1: 1. Кроме того, каждый мужчина, состоящий в браке, обязательно ДОЛЖЕН иметь жену.
степени связей один-ко-многим (1: N). Одному экземпляру сущности A соответствуют 0, 1 или N экземпляров сущности B. Сущность A Сущность B 1 8 Атрибут пример: Каждая группа может содержать множество студентов, а каждый студент может входить только в одну группу, т. е. степень связи 1: N
степени связей многие-к-одному (N: 1). Эта связь аналогична отображению 1: N. Одному экземпляру сущности B соответствуют 0, 1 или N экземпляров сущности A Сущность B 8 Атрибут 1 Атрибут пример: В одном городе МОГУТ находиться один поставщик, несколько или ни одного поставщика. Т. е. связь будет N: 1
степени связей многие-ко-многим (M: N). В этом случае одному экземпляру сущности A соответствуют 0, 1 или N экземпляров сущности B, и наоборот, одному экземпляру сущности B соответствуют 0, 1 или N экземпляров сущности A. Сущность A Сущность B 8 8 Атрибут Продукты в магазин поставляются поставщиками. Каждый продукт, имеющийся в магазине, ДОЛЖЕН быть поставлен одним или несколькими поставщиками, а каждый из поставщиков МОЖЕТ поставлять один или несколько продуктов или не поставлять ни одного. Т. е. степень связи многие ко многим M: N
Вопросы: 1) Перечислите виды архитектур БД и опишите их особенности 2) Перечислите этапы системного анализа предметной области 3) Перечислите подходы к системному анализу предметной области и их отличие друг от друга 4) Какие пункты должен включать в себя отчет об анализе предметной области 5) Дайте определение связи 6) Перечислите типы связей и их отличие друг от друга 7) Какие 2 свойства сущностей нужно учитывать при моделировании
Основные модели разработки проекта
Каскадная модель Каждый этап разработки может начаться только в тот момент когда заканчивается предыдущий Анализ Проектирование Особенность заключается в том что каждый этап должен быть тщательно продуман и описан. разработка тестирование внедрение Отрицательный эффект таков При выявлении ошибок на какой либо стадии работу начинают сначала. сопровождение
Каскадная модель в возвратом Каждый этап разработки может начаться только в тот момент когда заканчивается предыдущий Особенность заключается в том при появлении ошибок на следующем этапе можно вернуться на предыдущий и внести исправления. Анализ Проектирование разработка тестирование внедрение сопровождение
Спиральная модель Анализ Проектирование сопровождение внедрение разработка тестирование Продукт развивается в как бы по кругу на каждом витке анализируются выявленные ошибки и вносятся исправления.
Функциональный подход
Функциональный подход Клиент просмотрел наш ассортимент товара и сделал заказ , оплатив его наличными, товар доставил ему курьер точно в срок. заказ товара клиентом продажа товара клиенту Доставка товара клиенту
Функциональный подход Ограничения накладываемые на выполняемую функцию Товар есть на складе В нужном количестве Наш список товаров Срок годности товара деньги Название товара заказ товара клиентом Наш список товаров Количество товара Количество нужное клиенту Входные данные Дата заказа Выходные данные клиент продавец Участники действия витрина
Функциональный подход Ограничения накладываемые на выполняемую функцию Товар есть на складе В нужном количестве Срок годности товара Сумма заказа Квитанция об оплате товара Дата продажи товара Дата заказа продажа товара клиенту Название товара Чек на покупку товара Накладная на товар Количество товара Входные данные У клиента есть деньги в нужном количестве Выходные данные клиент продавец Участники действия поставщик
Функциональный подход Ограничения накладываемые на выполняемую функцию Срок годности товара Время на доставку товара Возможность доставить товар Время доставки Адрес доставки Доставка товара клиенту Накладная на товар подписанная накладная на товар Квитанция о получении товара Выходные данные Входные данные клиент курьер Участники действия
Функциональный подход Таким образом из перечисленных схем действий мы можем выделить определенный перечень сущностей: 1) Сущность Товар и его свойства 1) Уникальный номер товара (ID_T)– будем считать этот атрибут первичным ключом. Он нам будет нужен при связи с заказом 2) Название товара (Name_T) 3) Цена (Price) 4) Количество товара на складе (amount) 5) Срок годности товара expiration date (ED) Товар Name_T amount Price ED ID_T
Функциональный подход 1) Сущность клиента его свойства 1) Уникальный номер клиента (ID_K)– будем считать этот атрибут первичным ключом. Он нам будет нужен при связи с заказом 2) ФИО (FIO) 3) Адрес (address) клиент ID_K FIO Adress
Функциональный подход 1) Сущность заказ его свойства 1) Уникальный номер заказа (ID_Z) – будем считать этот атрибут первичным ключом. Уникально идентифицирующим заказ. 2) Уникальный номер товара (ID_T) – в данное свойство сущности будет являться вторичным ключом. Определяющим товар из другой таблицы. 3) Уникальный номер клиента (ID_K)–– в данное свойство сущности будет являться вторичным ключом. Определяющим покупателя из другой таблицы. 4) Количество одного товара в заказе (amount_T) 5) Сумма заказа (Summa) – Данное поле пример рекурсивного свойства так как оно на прямую зависит от количества выбранного товара. 6) Дата заказа (Date) Вторичный ключ - это одно или несколько полей (столбцов) в таблице, содержащих ссылку на поле или поля первичного ключа в другой таблице.
Функциональный подход Заказ summa amount_T Date ID_K ID_T ID_Z На схемах будет означать какое либо действие со свойствами Пример: Товар добавлен в заказ Курьер доставил заказ.
Функциональный подход Таким образом у нас должна получиться следующая логика действий: клиент 1 Создает заказ Заказ 1 В один момент времени он Создает 1 заказ Товар 8 Добавляет товары И в него может добавить Несколько товаров
Пример построения модели «сущность-связь» amount Товар клиент Name_T 1 ED Price 1 ID_T ID_K FIO Address Заказ Товар добавлен в заказ 8 summa ID_T ID_Z ID_K amount_T Date По сути если на схеме видно одну небольшую ошибку которая снижает функционал нашей системы: Если клиент будет добавлять в такую схему новый товар то система сгенерирует ему новый заказ при добавлении каждого нового товара и тоже самое будет происходить с датой если ее точность выставлена до минут
Пример построения модели «сущность-связь» Для этого сущность заказ делят на 2 сущности 1) Сущность Заказ будет содержать 1) Дату заказа 2) Уникальный номер заказа 3) Уникальный номер клиента (ID_K)–– в данное свойство сущности будет являться вторичным ключом. Определяющим покупателя из другой таблицы. 4) И сюда же можно добавить поле расчета общей суммы заказа 5) И любую другую информацию которая относиться к заказу и не повторяется например статус заказа 2) Сущность Описание заказа будет содержать описное товаров которые входят в заказ 1) Уникальный номер заказа (ID_Z) – в данное свойство сущности будет являться вторичным ключом. Определяющим заказ из другой таблицы. 2) Количество одного товара в заказе (amount_T) 3) Сумма заказа (Summa) – Данное поле пример рекурсивного свойства так как оно на прямую зависит от количества выбранного товара.
Клиент создает заказ клиент FIO Address Заказ ID_K Товар summa Date ID_Z Price ED Name_T ID_T Клиент добавляет товар в заказ amount Заказ описание Клиент выбирает товар ID_T ID_Z summa amount_T
этап инфологического моделирования
Определение типов данных свойств сущностей У каждой сущности есть набор свойств, чтобы преобразовать наши сущности из функциональной модели в реляционную нам необходимо определить какие типы данных будут у наших свойств. Для этого перечисляются все свойства сущностей в виде таблицы: Название свойства Тип данных Уникальный номер заказа Числовой Уникальный номер товара Числовой Название товара Текстовый Срок годности товара Дата … И так далее …
Следующим этапом определяются степени связей между сущностями Название сущности Атрибут (свойство) Тип данных Допустимость пустого значения Первичный ключ Вторичн ый ключ Заказ Уникальный номер заказа Числовой нет да нет Описание заказа Уникальный номер заказа Числовой нет да товар Название товара текстовый да нет товар Срок годности товара Дата нет нет Описание заказа Количество одного товара в заказе числовой да нет
Создание БД в Access Открываем MS Access Создаем новую базу данных :
Создаем Базу данных на своей флешке указав для нее путь и название базы Далее последовательно создаем таблицы в режиме конструктора указав для каждой набор свойств и типы данных Для этого выбираем в списке объектов пункт таблицы а в списке таблиц Выбираем пункт «Создание таблиц в режиме конструктора» откроется окно конструктора таблиц
В открывающемся списке перечисляем название свойств ( Имена полей) нашей первой сущности (таблицы) с указанием типа данных Если поле у нас является первичным кличем то нажимаем на нем правой кнопкой мыши и выбираем из пункт из меню первичный ключ Закончив заполнять все имена полей и типы данных таблицы сохраняем ее под нужным именем: Закрыв окно конструктора таблиц повторяем действия по созданию следующей таблицы.
Создав все таблицы Вашей предметной области: Необходимо настроить отношение каждой сущности (таблицы) между собой Для этих целей Access предоставляет средство создания схемы данных При первом вызове схемы данных она предложит добавить таблицы в схему с помощью клавиши Shift и курсора выделяем все таблицы и нажимаем «Добавить»
Для настройки отношений выделяем указателем мыши ключ из одной таблицы и тащим указатель к той с которой он должен быть соединен Появившееся диалоговое окно позволяет настроить правильную связь Позволяет обеспечить целостность данных при изменении данных в одной таблице в другой они будут автоматически изменяться И информирует какой тип связи будет создан
Таким образом у нас получается реляционная модель данных
Этап дата логического или логического проектирования БД
Для продолжения процесса проектирования необходимо проверить полученную схему БД на отсутствие избыточных функциональных зависимостей и при необходимости нормализовать схему БД. Процесс нормализации может быть проведен уже к функциональной модели , тогда после перехода к реляционной модели получим нормализованную схему БД. Построение схемы БД может быть выполнено двумя путями: 1) путем декомпозиции (разбиения), когда исходное множество отношений, входящих в схему БД заменяется другим множеством отношений (их число при этом возрастает), являющихся проекциями исходных отношений 2) путем синтеза, то есть путем компоновки из заданных исходных элементарных зависимостей между объектами предметной области схемы БД
Функциональные зависимости определяют не текущее состояние БД, а все возможные ее состояния, то есть они отражают те связи между атрибутами, которые присущи реальному объекту, моделируемые в БД. Функциональная зависимость. Атрибут Y некоторого отношения функционально зависит от X (атрибуты могут быть составными), если в любой момент времени каждому значению X соответствует одно значение Y. Функциональная зависимость обозначается X > Y. X ID_клиента ФИО Адресс Y Телефон
Избыточная функциональная зависимость – это зависимость, заключающая в себе такую информацию, которая может быть получена на основе других зависимостей, имеющихся в базе данных. Заказ описание ID_Заказа ID_товара Количество Сумма Название Количество цена Товары ID_Товара Так как сумму конкретного товара можно посчитать по полям: Заказ описание: Количество * Товары: Цена Избыточная функциональная зависимость
Полная функциональная зависимость – Если первичный ключ состоит из единого атрибута и однозначно определяет все свойства сущности Сотрудник Должность Зарплата Наличие компьютера Гришин Кладовщик 20000 Нет Васильев Программист 40000 Есть Иванов Кладовщик 25000 Нет Зарплату сотруднику каждый начальник устанавливает сам (хотя её границы зависят от должности). Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа неполная. В результате приведения к получаются два отношения: Сотрудник Должность Зарплата Должность Наличие компьютера Гришин Кладовщик 2000 Васильев Программист 4000000 Кладовщик Нет Иванов Кладовщик 2500 Программист Есть
Транзитивная функциональная зависимость. Пусть X, Y, Z – три атрибута некоторого отношения. При этом X>Y (Х зависит от Y) и Y > Z (Y зависит от Z), но обратное соответствие отсутствует, т. е. Z <> Y (Z не зависит от Y) и Y <> X (Y зависит от X). Тогда Z транзитивно зависит от X. X, Пример Y, Сотрудник Z Отдел Телефон Гришин Бухгалтерия 11 -22 -33 Васильев Бухгалтерия 11 -22 -33 Петров Снабжение 44 -55 -66 Отдел >Телефона Отдел Сотрудник >Отдела Телефон Сотрудник Отдел Бухгалтерия 11 -22 -33 Гришин Бухгалтерия Снабжение 44 -55 -66 Васильев Бухгалтерия Петров Снабжение Сотрудник <>Телефона Сотрудник Телефон Гришин 11 -22 -33 Васильев 11 -22 -33 Петров 44 -55 -66
Многозначная зависимость. Пусть X, Y, Z – три атрибута отношения R. В отношении R существует многозначная зависимость R. X ->> R. Y только в том случае, если множество значений Y, соответствующее паре значений X и Z, зависит только от X и не зависит от Z. Пример: у нас есть отношение, в которое входит список учебных дисциплин, рекомендованная литература и имена лекторов, читающих соответствующие курсы: Дисциплина Книга Лектор Мат. Ан Кудрявцев Иванов А. Мат. Ан Фихтенгольц Петров Б. Мат. Ан Кудрявцев Петров Б. Мат. Ан Фихтенгольц Иванов А. Так как лекторы, читающие предмет, и книги, рекомендованные по предмету, друг от друга не зависят, то данное отношение содержит многозначную зависимость.
нормальные формы отношений в БД
Первая нормальная форма Отношение находится в 1 НФ, если значения всех его атрибутов атомарно. Иначе можно сказать, что в каждой позиции пересечения столбца и строки таблицы расположено в точности одно значение, а не набор значений. Не нормальная форма 1 Нормальная форма ФИО Фамилия Имя Отчество Иваныч Иванович Петров Петрович Сидоров Алексей Петрович Под атомарностью понимается степень структурирования и детализации информации в БД.
Вторая нормальная форма (2 НФ): Отношение (таблица) находится во 2 НФ, если оно находится в 1 НФ, и каждый не ключевой атрибут функционально полно зависит от всего ключа. Должность Наличие компьютера Кладовщик Нет Программист Есть Если какой-либо атрибут зависит от части составного первичного ключа, то необходимо: 1) создать новое отношение, атрибутами которого будут: А) часть составного ключа (первичный ключ нового отношения) Б) атрибут, зависящий от нового ключа В) из исходного отношения исключить атрибут, включенный в новое отношение
Сотрудник Должность Зарплата Наличие компьютера Гришин 20000 Нет Васильев Программист 40000 Есть Иванов Сотрудник Кладовщик Нет Должность Зарплата Гришин Кладовщик 20000 Васильев Программист 40000 Иванов Кладовщик 25000 От должности зависит зарплата 25000 Должность Наличие компьютера Кладовщик Нет Программист Есть От должности зависит есть ли компьютер
Третья нормальная форма (3 НФ): Отношение находится в 3 НФ, если оно находится во 2 НФ и каждый не ключевой атрибут не транзитивно зависит от первичного ключа. Группа специальность ID_группы ID группы зависит от ее названия ID Группы зависит от специальности Специальность и Группа зависят от ID
2 Проектирование баз данных.ppt