Базы данных § § § § § § § § § § § § 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Информационные системы Таблицы Многотабличные базы данных Реляционная модель данных Работа с таблицей Создание однотабличной базы данных Запросы Формы Отчёты Работа с многотабличной базой данных Нереляционные базы данных Экспертные системы 1 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 12. Информационные системы 2 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 3 Что такое информационная система? Информационная система (ИС) в широком смысле — это аппаратные и программные средства, предназначенные для того, чтобы своевременно обеспечить пользователей нужной информацией. Задачи: • хранение данных • доступ к данным К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 4 БД и СУБД База данных (БД) — это специальным образом организованная совокупность данных о некоторой предметной области, хранящаяся во внешней памяти компьютера. Система управления базой данных (СУБД) — это программные средства, которые позволяют выполнять все необходимые операции с базой данных. БД + СУБД = информационная система К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 5 БД и СУБД Задачи СУБД: • поиск данных • редактирование данных • выполнение несложных расчетов • обеспечение целостности (корректности, непротиворечивости) данных • восстановление данных после сбоев прикладная программа К.Ю. Поляков, Е.А. Ерёмин, 2013 СУБД БД http://kpolyakov.spb.ru Базы данных, 11 класс 6 Классификация ИС ИС локальные удалённые БД и СУБД на компьютере пользователя БД на удалённом компьютере (в сети) автономность все работают с одной БД нужно обновлять БД на каждом компьютере как учесть изменения, внесённые пользователями зависимость от сети К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 7 Как хранить данные? Текстовый формат: Иванов;Иван;Петрович;1968;«Audi»;20 000 р. Петров;Пётр;Иванович;1975;«Лада»;30 000 р. Сидоров;Семён;Иванович;1975;«Нива»;15 000 р. Собственный формат программы: ? Что плохо? нет переносимости (БД можно использовать только с этой программой) Переносимость – это возможность использовать БД в других информационных системах. Универсальный формат: БД: «данные о данных» метаданные К.Ю. Поляков, Е.А. Ерёмин, 2013 данные http://kpolyakov.spb.ru Базы данных, 11 класс 8 Файл-серверные СУБД рабочие станции сервер СУБД БД СУБД рабочие станции должны быть мощными высокая нагрузка на сеть слабая защита данных ненадежность при большом количестве пользователей ! Решение – перенести СУБД на сервер! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 9 Клиент-серверные СУБД рабочие станции (клиенты) запрос прикладная программа ответ сервер СУБД БД прикладная программа Задачи клиента: Задачи сервера: • отправить серверу • при получении запроса запрос на языке SQL поставить его в очередь • принять ответ сервера • выполнить запрос • вывести результаты • отправить ответ клиенту SQL = Structured Query Language – язык структурных запросов для управления данными К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 10 Клиент-серверные СУБД обработка данных на сервере рабочие станции могут быть маломощными проще модернизация надежная защита данных (на сервере) снижается нагрузка на сеть надежная работа при большом количестве пользователей нужен мощный сервер высокая стоимость коммерческих СУБД бесплатно! MS SQL Server Firebird (www.firebirdsql.org) PostgreSQL (www.postgresql.org) MySQL (www.mysql.com) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 11 Транзакции Задача: перевести 100 000 рублей со счета 12345 на счет 54321. • прочитать сумму на счету 12345 • уменьшить ее на 100 000 рублей сбой питания! • прочитать сумму на счету 54321 • увеличить ее на 100 000 рублей Транзакция – это группа операций, которая представляет собой одно законченное действие. Транзакция должна быть выполнена целиком или не выполнена вообще. • журналирование • создание новых записей (помечаются как действительные после завершения транзакции) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 13. Таблицы 12 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 13 Таблицы Примеры: • записная книжка • каталог в библиотеке Иванов Пётр Суворовский пр., д. 32, кв. 11 275-75-75 поля записи Фамилия Иванов Петров Васильев Имя Петр Василий Иван Типы полей: • целые числа • вещественные числа • денежные суммы • логические значения • текстовые данные К.Ю. Поляков, Е.А. Ерёмин, 2013 Адрес Суворовский пр., д. 32, кв. 11 Кутузовский пр., д. 12, кв. 20 Нахимовский пр., д. 23, кв. 33 Телефон 275-75-75 276-76-76 277-77-77 • время, дата • произвольные двоичные данные (рисунки, звук, видео) http://kpolyakov.spb.ru Базы данных, 11 класс 14 Ключ Ключ – это поле или комбинация полей, однозначно определяющие запись. Могут ли эти данные быть ключом? • фамилия Может ли быть несколько • имя ключей в таблице? • номер паспорта • номер дома • регистрационный номер автомобиля • город проживания • адрес электронной почты • дата выполнения работы • марка стиральной машины ? ? К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 15 Ключ Первичный ключ – это ключ, выбранный в качестве основного. Простой ключ – состоит из одного поля. Составной ключ – состоит из нескольких полей. Дата Время Температура Влажность Скорость ветра 21.07.2012 12:00 25 75 4 21.07.2012 15:00 23 70 3 … … … … … ? Какой ключ? Составной ключ Дата + Время Свойства ключа: • уникальность • несократимость (Дата + Время + Влажность) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 16 Суррогатный ключ Номер 1 2 3 Фамилия Иванов Петров Васильев Имя Петр Василий Иван ? Адрес Суворовский пр., д. 32, кв. 11 Кутузовский пр., д. 12, кв. 20 Нахимовский пр., д. 23, кв. 33 Телефон 275-75-75 276-76-76 277-77-77 Какой ключ? Суррогатный ключ – это дополнительное поле, которое служит первичным ключом. операции с числами выполняются быстрее уникальность поддерживается СУБД (поле-счётчик) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 17 Поиск в БД Линейный поиск – это перебор всех записей до тех пор, пока не будет найдена нужная. Код 1 Фамилия Сидоров 2 Ветров … 1024 Померанцев Иванов? 1024 сравнения! данные не надо предварительно готовить низкая скорость поиска К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 18 Двоичный поиск 1. Разделить область поиска на две равные части. 2. Определить, в какой половине находится нужный объект. 3. Перейти к шагу 1 для этой половины. 4. Повторять шаги 1-3 пока объект не будет «пойман». К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 19 Двоичный поиск в БД требует предварительной сортировки. Иванов? 1 Андреев 1 2 Барсуков … … 512 255 Ковалев … 1024 Яшин ? Журов Ковалев Игнатьев … 512 1024 Яшин Журов … 383 … Сколько сравнений? … 255 … 512 1023 Юрьев Андреев Ковалев … 11 сравнений! быстрый поиск записи надо отсортировать по нужному полю можно использовать только для одного поля К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 20 Индексный поиск в БД Индекс – это вспомогательная таблица, которая служит для ускорения поиска в основной таблице. Номер 1 2 3 Фамилия Иванов Петров Васильев Имя Петр Василий Иван отсортированы! Адрес Суворовский пр., д. 32, кв. 11 Кутузовский пр., д. 12, кв. 20 Нахимовский пр., д. 23, кв. 33 Фамилия Васильев Иванов Петров Телефон 275-75-75 276-76-76 277-77-77 Номера записей 3 1 2 двоичный поиск по всем столбцам, для которых построены индексы индексы занимают место на диске при изменении таблицы надо перестраивать все индексы (в СУБД – автоматически) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 21 Целостность БД Целостность базы данных означает, что она содержит полную и непротиворечивую информацию и удовлетворяет всем заданным ограничениям. Физическая целостность – сохранность данных в случае отказа оборудования: • транзакции • резервное копирование • RAID-массивы жёстких дисков (дублирование) Логическая целостность – непротиворечивость: • типы полей • обязательные поля • уникальные индексы • ограничения на значения • шаблоны ввода (###) ###-##-## • условия на несколько полей (увольнение позже приёма) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 22 Задача Постройте индексы по всем полям: Номер Дата Заказ 1 12.09.13 12 Ананасы 12 2 12.09.13 13 Апельсины 12 3 13.09.13 14 Ананасы 15 4 13.09.13 14 Бананы 13 5 13.09.13 15 Апельсины 11 К.Ю. Поляков, Е.А. Ерёмин, 2013 Товар Количество, т http://kpolyakov.spb.ru Базы данных § 14. Многотабличные базы данных 23 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 24 Однотабличная БД Альбомы Код Название Группа Год Число композиций 1 Реки и мосты Машина времени 1987 16 2 В круге света Машина времени 1988 11 3 Группа крови Кино 1988 11 4 Последний герой Кино 1989 10 ? Что плохо? дублирование данных при изменении каких-то данных, возможно, придется менять несколько записей нет защиты от ошибок ввода (опечаток) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 25 Многотабличная БД Группы Код Название Год создания 1 Машина времени 1969 2 Кино 1981 Альбомы Код Название Код группы 1 Реки и мосты 1 2 В круге света 1 3 Группа крови 2 4 Последний герой 2 ? К.Ю. Поляков, Е.А. Ерёмин, 2013 Год Число композиций 1987 16 1988 11 1988 11 1989 10 Что улучшилось? http://kpolyakov.spb.ru Базы данных, 11 класс 26 Многотабличная БД Группы Код Название Год создания Альбомы Код Название Код группы Год Число композиций Внешний ключ – это неключевое поле таблицы, связанное с первичным ключом другой таблицы. убрано дублирование изменения нужно делать в одном месте некоторая защита от опечаток (выбор из списка) усложнение структуры (> 40-50 таблиц – много!) при поиске нужно «собирать» данные разных таблиц К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 27 Ссылочная целостность ? Удаление группы: что делать с альбомами? СУБД: • запретить удаление записи • выполнить каскадное удаление (удалить все связанные с ней записи в других таблицах) • разрешить внести изменения нарушится ссылочная целостность! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 28 Типы связей между таблицами ключ Группы Код Название Год создания 1 Альбомы Код Название Код группы N Год не ключ Число композиций Связь 1:N – с одной записью в первой таблице могут быть связаны сколько угодно записей во второй таблице. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 29 Типы связей между таблицами Связь 1:1 – с одной записью в первой таблице связана ровно одна запись во второй таблице. Сотрудники Код Фамилия Имя 1 Иванов Петр 2 Петров Сидор 3 Сидоров Иван Отчество Сидорович Иванович Петрович Секретно Код Зарплата 1 20 000 р. 2 30 000 р. 3 40 000 р. ключ Сотрудники Код Фамилия Имя Отчество К.Ю. Поляков, Е.А. Ерёмин, 2013 1 1 ключ Секретно Код Зарплата http://kpolyakov.spb.ru Базы данных, 11 класс 30 Типы связей между таблицами Заказы Номер Дата ? N N Блюда Код Название Цена Может ли быть несколько одинаковых блюд в заказе? ? Может ли быть одно блюдо в нескольких заказах? Связь N:N – с одной записью в первой таблице могут быть связаны сколько угодно записей во второй таблице, и наоборот. в СУБД не поддерживаются К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 31 Типы связей между таблицами Связь N:N Заказы Номер Дата Заказано Код Номер заказа N Код блюда 1 1 N Блюда Код Название Цена Пример: Заказы Номер Дата 1 11.12.12 2 12.12.12 Код 1 2 3 4 5 6 7 К.Ю. Поляков, Е.А. Ерёмин, 2013 Заказано Номер Код заказа блюда 1 1 1 3 1 4 2 1 2 2 2 2 2 5 Блюда Код Название 1 борщ 2 бифштекс 3 гуляш 4 чай 5 кофе ? Цена 80 р. 110 р. 70 р. 10 р. 50 р. Состав заказов? http://kpolyakov.spb.ru Базы данных, 11 класс 32 Задачи Сколько заказчиков располагаются в Перми? Заказчики Код Название Код города 1 ООО «Альфа» 3 2 ЗАО «Бета» 2 3 ООО «Гамма» 3 4 ОАО «Дельта» 2 5 ООО «Каппа» 1 К.Ю. Поляков, Е.А. Ерёмин, 2013 Города Код Название 1 Москва 2 Санкт-Петербург 3 Пермь 4 Воронеж 5 Липецк http://kpolyakov.spb.ru Базы данных, 11 класс 33 Задачи Заказчики Код Название Код города 1 ООО «Альфа» 3 2 ЗАО «Бета» 2 3 ООО «Гамма» 3 4 ОАО «Дельта» 2 5 ООО «Каппа» 1 Заказы Код Кол-во Накладная Артикул заказчика упаковок 1011 3 7576 10 1012 5 7576 20 1013 4 3889 25 1014 1 7825 30 1015 3 7576 10 Товары Артикул Название Цена за упаковку 7576 Бумага 150 руб. 2325 Карандаши 200 руб. 3889 Фломастеры 350 руб. 2987 Дневники 400 руб. 7825 Пеналы 250 руб. К.Ю. Поляков, Е.А. Ерёмин, 2013 Код 1 2 3 4 5 Города Название Москва Санкт-Петербург Пермь Воронеж Липецк Определите: 1)какие товары отправлены в каждый из городов; 2)сколько бумаги отправлено в каждый из городов; 3)общую стоимость товаров, отправленных в каждый из городов. http://kpolyakov.spb.ru Базы данных, 11 класс 34 Задачи Персоны Дети Код ФИО Пол Код родителя Код ребенка 71 Иванов Т.М. М 23 71 85 Пановко И.Т. М 13 23 13 Черненко И.А. Ж 85 23 42 Пановко А.И. Ж 82 13 23 Иванова А.И. Ж 95 13 96 Пановко Н.Н. Ж 85 42 82 Черненко А.Н. M 82 10 95 Фукс Т.Н. Ж 95 10 10 Фукс Н.А. М … … … … … Определить фамилию и инициалы а) бабушки А.И.Ивановой б) родного брата И.А. Черненко в) прадеда Т.М. Иванова г) внука И.Т. Пановко К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 35 Задачи Персоны Код ФИО 86 Сизых И.Т. 83 Сизых А.И. 50 Малых А.Т. 79 Сидоров Т.М. 23 Сидоров А.Т. 13 Малых И.И. 98 Симоняк Т.Н. 11 Симоняк Н.И. … … Дети Пол Код родителя Код ребенка М 98 83 М 86 13 Ж 79 50 М 86 83 М 13 50 Ж 79 23 Ж 13 23 М 98 13 … 86 11 … … Определить фамилию и инициалы а) племянника Н.И. Симоняка б) всех родных братьев и сестёр Н.И. Симоняка в) бабушки А.Т. Малых г) дедушки А.Т. Сидорова К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 36 Задачи Код Персоны ФИО 11 12 24 45 56 83 94 115 140 162 171 186 201 … Косарева Л.П. Левитин И.А. Шумахер А.Ф. Бланш А.А. Васильева М.А. Левитин Б.И. Левитина В.И. Кузнецов А.П. Левитина Р.Б. Левитин Л.Б. Гайдарова З.Н. Мурина С.А. Кузнецов П.А. … Пол Ж М Ж М Ж М Ж М Ж М Ж Ж М … Дети Код родителя Код ребенка 11 11 12 12 24 56 56 83 83 94 94 115 115 … 83 94 83 94 115 140 162 140 162 186 201 186 201 … Определить фамилию и инициалы а) всех внуков и внучек И.А. Левитина; б) родной сестры П.А. Кузнецова; в) родного брата С.А. Муриной; г) бабушки Р.Б. Левитиной. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 15. Реляционная модель данных 37 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 38 Математическое описание БД Требуется: • описание БД, независимое от способа хранения данных • методы управления этими данными Эдгар Кодд Реляционная модель данных (Э. Кодд, 1970): • все данные – свойства некоторых объектов • объекты делятся на классы (сущности) • данные об объекте – набор свойств кортеж (атрибутов): (Название: «Кино», Лидер: «В. Цой») • порядок свойств не определён • отношение (relation) – множество кортежей, описывающих объекты одного класса • в отношении нет одинаковых кортежей • порядок кортежей в отношении не определен К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 39 Реляционные БД Реляционная БД – это БД, которая основана на реляционной модели, то есть представляет собой набор отношений. Удобно хранить в виде таблицы: отношение Название Машина времени Кино Аквариум сущность Группы Лидер А. Макаревич В. Цой Б. Гребенщиков атрибуты Год создания 1969 1981 1972 кортеж К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 40 Реляционные БД На языке таблиц: • каждая таблица описывает один класс объектов • порядок расположения полей в таблице не имеет значения • все значения одного поля относятся к одному и тому же типу данных • в таблице нет двух одинаковых записей • порядок записей в таблице не определён Реляционная БД – это база данных, которая представлена в виде набора таблиц и управляется с помощью языка SQL. SQL: обращение к данным по названиям таблиц (отношений) и полей (атрибутов). Основные операции: • создание и удаление таблиц • добавление, изменение и удаление записей • выборка данных К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 41 Нормализация Рейс ZX 001 ZX 002 ZX 003 ? От Москва Москва Санкт-Петербург Что плохо? До Берлин Санкт-Петербург Берлин ! Самолет Boeing 737 Airbus A321 Boeing 737 Дата 11.12.2013 12.12. 2013 13.12. 2013 Есть дублирование! Нормализация – это изменение структуры базы данных, которое устраняет избыточность и предотвращает возможные нарушения целостности. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 42 Нормализация на примерах 1. Любое поле должно быть неделимым: Сотрудник Иванов Петр Сидорович Петров Сидор Иванович ? Телефоны 123-45-67, (901) 111-22-33 345-67-89, (902) 222-33-44 Что плохо? Фамилия Имя Отчество Телефон-Дом Телефон-Моб Иванов Петр Сидорович 123-45-67 (901) 111-22-33 Петров Сидор Иванович 345-67-89 (902) 222-33-44 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 43 Нормализация на примерах 2. Любое неключевое поле должно зависеть от ключа: Номер Автомобиль А123АА47 «Лада-Калина» Иванов 155-77-23 Т234ТТ78 «Ока» Петров 277-34-67 В345ВВ98 «Мерседес» Васильев 322-98-44 А345CC47 «Ауди» Иванов 155-77-23 ? Владелец Телефон Что плохо? Номер А123АА47 Автомобили Автомобиль «Лада-Калина» Б234ББ78 «Ока» 2 2 Петров 277-34-67 В345ВВ98 «Мерседес» 3 3 Васильев 322-98-44 А345CC47 «Ауди» 1 К.Ю. Поляков, Е.А. Ерёмин, 2013 N Владельцы Код Фамилия Телефон 1 Иванов 155-77-23 1 Владелец 1 http://kpolyakov.spb.ru Базы данных, 11 класс 44 Нормализация на примерах 3. Не должно быть одинаковых по смыслу полей: ! Дата 21.05.2013 22.05.2013 23.05.2013 ? Бананы 120 153 87 Апельсины 78 99 55 Яблоки 101 65 123 Проблема: Что добавить плохо? новый товар! Продажи N Код Дата Товар 1 21.05.2013 1 2 21.05.2013 2 3 21.05.2013 3 4 22.05.2013 1 … … … К.Ю. Поляков, Е.А. Ерёмин, 2013 Продано 120 78 101 153 … 1 Код 1 2 3 Товары Название Бананы Апельсины Яблоки http://kpolyakov.spb.ru Базы данных, 11 класс 45 Нормализация на примерах 4. Не нужно хранить то, что может быть вычислено: Дата 03.2013 02.2013 01.2013 Доходы 155 178 194 Расходы 128 105 159 Дата 03.2013 02.2013 01.2013 Доходы 155 178 194 Расходы 128 105 159 можно вычислить! Что плохо? ! ?Прибыль Прибыль 27 73 35 прибыль вычисляется через запрос! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 46 Нормализация: «за» и «против» устранено дублирование все изменения делаются в одном месте некоторая защита от опечаток (выбор из списка) СУБД поддерживает ссылочную целостность усложнение структуры (> 40-50 таблиц – много!) замедляется поиск (нужно «собирать» данные из разных таблиц) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 47 Задача Выполните нормализацию: Год спуска на воду Название Проект Экипаж 1980 Удалой 1155 220 чел. 1985 Адмирал Трибуц 1155 220 чел. 1987 Североморск 1155 220 чел. 1982 Москва 1164 510 чел. 1983 Варяг 1164 510 чел. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 48 Задача Выполните нормализацию: Год Изготовитель Город Модель Скорость Цена 2007 ВАЗ Тольятти 1119 165 км/ч 120000 р. 1995 ВАЗ Тольятти 11113 130 км/ч 50000 р. 1992 КАМАЗ Набережные Челны 5320 90 км/ч 200000 р. 2006 КАМАЗ Набережные Челны 55102 90 км/ч 450000 р. 2007 БелАЗ Жодино 75600 64 км/ч 1200000 р. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 49 Задача Выполните нормализацию: Год Животные Район Количество 2009 белки Нижняя Балка 12 2009 бурундуки Верхняя Балка 5 2010 еноты Нижняя Балка 7 2010 еноты Овраг 3 2010 белки Верхняя Балка 10 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 50 Задача Выполните нормализацию: Страна Фамилия Инструмент Автор произведения Место Россия Иванов фортепьяно Рахманинов 1 Россия Петров флейта Лист 2 Германия Шмидт скрипка Моцарт 3 США Смит скрипка Рахманинов 4 США Браун гобой Моцарт 5 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 16. Работа с таблицей 51 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 52 Базы данных в OpenOffice.org Base «Форк» (ответвление): LibreOffice (www.libreoffice.org) Файлы *.odb • таблицы с данными • формы – диалоговые окна, с помощью которых пользователь вводит и изменяет данные • запросы – команды по управлению данными • отчеты – шаблоны документов для вывода на печать К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 53 Базы данных OO Base 2×ЛКМ выделено текущая запись К.Ю. Поляков, Е.А. Ерёмин, 2013 общее количество переходы по записям новая запись http://kpolyakov.spb.ru Базы данных, 11 класс 54 Поиск и сортировка Ctrl+F сортировка по текущему столбцу несколько уровней К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 55 Задача Фамилия Сомов Кротов Белочкина Окунев Судакова Щукина Пол Математика м м ж м ж ж 75 83 55 75 68 76 Русский язык 65 75 92 68 70 58 Химия 70 59 64 72 56 78 Информатика 90 87 65 70 58 80 Биология 58 60 86 56 60 85 Какой по счету будет запись с фамилией Белочкина, если отсортировать таблицу по полю: а) Фамилия (по алфавиту) б) Математика (по убыванию) в) Русский язык (по убыванию) г) Химия (по возрастанию) д) Информатика (по возрастанию) е) Биология (по убыванию) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 56 Фильтрация Фильтр – это условие для отбора записей. ! Остальные записи временно скрываются! быстрый фильтр (фильтр по выделенному) применить/отменить фильтр К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 57 Фильтрация редактировать текущий фильтр AND OR удалить фильтр с таблицей хранится только один фильтр какие нельзя? не все условия можно записать ! Для сложных случаев – запросы! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 58 Задача В чём разница между фильтрами: а) Предмет = 'Математика' AND Класс = 2 OR Год издания > 2009 б) Предмет = 'Математика' OR Класс = 2 AND Год издания > 2009 в) Предмет = 'Математика' OR Год издания > 2009 AND Класс = 2 г) Предмет = 'Математика' AND Год издания > 2009 OR Класс = 2 ? Какие фильтры дают одинаковый результат? К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 59 Задача Фамилия Сомов Кротов Белочкина Окунев Судакова Щукина Пол Математика м м ж м ж ж 75 83 55 75 68 76 Русский язык 65 75 92 68 70 58 Химия 70 59 64 72 56 78 Информатика 90 87 65 70 58 80 Биология 58 60 86 56 60 85 Сколько записей будет отобрано: а)Пол = 'ж' б)Пол = 'ж' в)Пол = 'м' г)Пол = 'м' д)Пол = 'ж' е)Пол = 'ж' ж)Пол = 'м' з)Пол = 'м' AND Химия > Биология OR Химия > Биология AND Математика > Информатика OR Математика > Информатика AND Русский язык > 70 OR Информатика > 80 OR Русский язык > 70 AND Информатика > 80 AND Информатика > 80 OR Русский язык > 60 OR Информатика > 80 AND Русский язык > 60 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 17. Создание однотабличной базы данных 60 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 61 Однотабличная БД К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 62 Создание базы данных ЛКМ ключ текущее поле свойства текущего поля К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 63 Типы полей ? Зачем нужны типы полей? • Текст [VARCHAR] • Памятка [LONGVARCHAR] Зачем? ? • Целое [INTEGER] • Десятичное [DECIMAL] (денежная сумма) • Вещественное [REAL] • Картинка [LONGVARBINARY] • Логическое [BOOLEAN] • Дата [DATE]; • Время [TIME]; • Дата/Время [TIMESTAMP]. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 64 Свойства полей • максимальный размер для текста • количество знаков в дробной части • значение по умолчанию • автозначение (да/нет) • обязательное (да/нет) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 65 Индексы ЛКМ создать удалить переименовать К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 66 Операции с таблицами открыть (редактирование данных) изменить (редактирование структуры) удалить переименовать К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 18. Запросы 67 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 68 Что такое запрос? Запрос – это обращение к СУБД для отбора записей или выполнения других операций с данными. • выборка данных • создание таблиц • редактирование таблиц и записей • изменение записей • удаление записей • удаление таблиц SQL (англ. Structured Query Language – язык структурных запросов). К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 69 Конструктор запросов ЛКМ ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 70 Конструктор запросов выполнить (F5) все поля перетащить ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 71 Режим SQL ЛКМ выбрать К.Ю. Поляков, Е.А. Ерёмин, 2013 из таблицы http://kpolyakov.spb.ru Базы данных, 11 класс 72 Сортировка К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 73 Запуск запроса 2×ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 74 Изменение запроса ЛКМ ПКМ – Изменить ПКМ – Редактировать в режиме SQL К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 75 Форматирование столбцов ПКМ – Формат столбца ! Формат столбца не сохраняется! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 76 Условия отбора Условие отбора К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 77 Сложные условия И К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 78 Сложные условия ИЛИ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 79 Шаблоны условие с шаблоном К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 80 Запросы с параметрами Параметры – это данные, которые пользователь вводит при выполнении запроса. параметр К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 81 Вычисляемые поля Очки = Ничьи + 3*Победы ПКМ – Формат столбца вычисляемое поле К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 82 Другие типы запросов ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 19. Формы 83 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 84 Зачем нужны формы? формы SQL прикладная программа СУБД БД Форма – это диалоговое окно, с помощью которого пользователь • просматривает • изменяет • добавляет • удаляет данные из базы. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 85 Создание формы ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 Таблицы и запросы http://kpolyakov.spb.ru Базы данных, 11 класс 86 Создание форм К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 87 Редактирование формы ЛКМ ПКМ - Изменить К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 88 Редактирование формы в режим просмотра и обратно свойства формы К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 89 Изменение фона ПКМ – Страница К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 90 Настройка элементов Выделение элемента: Выделяется поле и связанная надпись ЛКМ Ctrl+ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 91 Свойства элемента Добавить поле Свойства К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 92 Навигатор форм Навигатор форм К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 93 Оформление Элементы управления: поле метка Дополнительные элементы управления: дополнительные Вставка рисунка: меню Вставка – Изображение – Из файла Векторная графика: К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 20. Отчёты 94 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 95 Что такое отчёт? Отчет – это документ, предназначенный для вывода данных на печать. К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 96 Как создать отчёт? ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 97 Редактирование отчёта открыть (вывод данных) изменить (редактирование) удалить переименовать ПКМ – ... К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 98 Использование Oracle Report Builder http://extensions.openoffice.org/en/project/oracle-report-builder Свойства (F4) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 21. Работа с многотабличной базой данных 99 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 100 Многотабличная БД Заказы Номер Дата Заказано Код Номер заказа N Код блюда 1 1 N Блюда Код Название Цена Пример: Заказы Номер Дата 1 11.12.12 2 12.12.12 Код 1 2 3 4 5 6 7 К.Ю. Поляков, Е.А. Ерёмин, 2013 Заказано Номер Код заказа блюда 1 1 1 3 1 4 2 1 2 2 2 2 2 5 Блюда Код Название 1 борщ 2 бифштекс 3 гуляш 4 чай 5 кофе Цена 80 р. 110 р. 70 р. 10 р. 50 р. http://kpolyakov.spb.ru Базы данных, 11 класс 101 Создание таблиц Заказы Номер Дата Заказано Код Номер заказа Код блюда INTEGER К.Ю. Поляков, Е.А. Ерёмин, 2013 Блюда Код Название Цена DECIMAL http://kpolyakov.spb.ru Базы данных, 11 класс 102 Установка связей между таблицами Сервис – Связи добавить все ? Как определить, где 1 и N? перетащить ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 103 Заполнение таблиц Заказы Номер Дата 1 11.04.13 2 12.04.13 3 12.04.13 Код 1 2 3 4 5 6 7 8 8 К.Ю. Поляков, Е.А. Ерёмин, 2013 Заказано Номер Код заказа блюда 1 1 1 3 1 4 2 1 2 2 2 2 2 5 3 1 3 5 Блюда Код Название 1 борщ 2 бифштекс 3 гуляш 4 чай 5 кофе Цена 80 р. 110 р. 70 р. 10 р. 50 р. http://kpolyakov.spb.ru Базы данных, 11 класс 104 Запрос данных из нескольких таблиц Заказы Блюда ЛКМ добавить все ? Зачем добавлять все таблицы? К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 105 Запрос данных из нескольких таблиц перетащить нужные поля названия при выводе К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 106 Запрос данных из нескольких таблиц ПКМ – Редактировать в режиме SQL псевдоним связи К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 107 Запрос данных из нескольких таблиц ПКМ – Формат столбца ! Формат столбца не сохраняется! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 108 Итоговый запрос ? Почему? Название столбцов при выводе К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 109 Итоговый запрос Группировка по номеру и дате К.Ю. Поляков, Е.А. Ерёмин, 2013 Считать сумму цен http://kpolyakov.spb.ru Базы данных, 11 класс 110 Форма с подчинённой (субформой) Таблица Заказы ? Откуда брать данные? ЗапросЗаказы ЗапросКОплате ! Задача: объединить данные из трёх связанных источников! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 111 Форма с подчинённой (субформой) ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 112 Форма с подчинённой ПКМ – ИзменитьУдалить столбец Заказ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 113 Добавление третьей формы Навигатор форм К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 114 Добавление третьей формы ПКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 115 Добавление элементов на форму нарисовать область метка на форме ПКМ – Свойства ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 116 Добавление элементов на форму Дополнительные элементы управления Поле валюты К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 117 Добавление элементов на форму нарисовать область К.Ю. Поляков, Е.А. Ерёмин, 2013 Поле валюты на форме http://kpolyakov.spb.ru Базы данных, 11 класс 118 Добавление элементов на форму ПКМ – Свойства ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 изменить изменить http://kpolyakov.spb.ru Базы данных, 11 класс 119 Отчёт с группировкой ПКМ – Мастер отчётов К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 120 Отчёт с группировкой два уровня группировки К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 121 Редактирование отчёта ПКМ – Изменить ПКМ – … К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 122 Сумма заказа ! К.Ю. Поляков, Е.А. Ерёмин, 2013 Стандартными средствами OOBase не получить! http://kpolyakov.spb.ru Базы данных, 11 класс 123 Использование Oracle Report Builder http://extensions.openoffice.org/en/project/oracle-report-builder Свойства (F4) Навигатор отчёта (F5) или Ctrl+G К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 124 Использование Oracle Report Builder Поле Метка К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 125 Использование Oracle Report Builder ПКМ – Новая функция К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 126 Использование Oracle Report Builder ЛКМ К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 22. Нереляционные базы данных 127 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 128 Проблемы реляционных БД данные нужно разбить на множество таблиц человек мыслит не таблицами, а объектами данные об одном объекте разбросаны по нескольким таблицами замедление запросов структура хранимых объектов строго определена и не может меняться как хранить объекты с разными свойствами? как распределить нагрузку между серверами в Интернете? (реляционные БД плохо масштабируются) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 129 БД «ключ-значение» ! • добавление записи • поиск по ключу • удаление записи по ключу • изменение записи по ключу К.Ю. Поляков, Е.А. Ерёмин, 2013 Все данные об объекте в одном месте! ! Связи не поддерживаются! http://kpolyakov.spb.ru Базы данных, 11 класс 130 Документо-ориентированные БД хэш-код { ключ: 1231239786234762394769237 автор: «А.С. Пушкин» название: «Евгений Онегин» } набор полей произвольный документы в одной базе могут иметь разный набор полей К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 131 БД «ключ-значение» близость к человеческому восприятию масштабируемость ключи 1-1000 1-500 501-1000 не поддерживаются связи между объектами нет стандарта на язык управления данными запросы – только поиск по ключу (сортировка?) К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 132 Нереляционные БД NoSQL = Not Only SQL система хранения данных BigTable база данных SimpleDB www.facebook.com СУБД Cassandra twitter.com СУБД Cassandra Бесплатные СУБД: • MongoDB (www.mongodb.org) • CouchDB (couchdb.apache.org). К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных § 23. Экспертные системы 133 К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 134 Что такое экспертная система? Эксперт ? Кто такой эксперт? • обладает глубокими знаниями • имеет опыт работы в своей области • может ответить на вопросы, на которые нельзя найти ответы в Интернете • может предложить решение плохо поставленных задач • может примерно оценить вероятность своей версии Экспертная система – это компьютерная программа, задача которой – заменить человека-эксперта при выработке рекомендаций для принятия решений в сложной ситуации. искусственный интеллект К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 135 Состав экспертной системы • база знаний • блок получения решения («решатель») • интерфейс с пользователем База знаний эксперт Факты инженер по знаниям • у окуня есть жабры • Иван – отец Марьи • Волга впадает в Каспийское море Правила • если x – животное и x дышит жабрами, то x – рыба; • если x – отец y, и y – отец z, то x – дед z; • если x состоит из атомов углерода и обладает высокой твердостью, то x – алмаз. ! Оценка степени уверенности! К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 136 Экспертная система: пример • есть перья птица • дышит жабрами рыба • кормит детенышей молоком млекопитающее • млекопитающее и ест мясо хищник кормит детей молоком? да нет имеет перья? ест мясо? да нет дышит жабрами? нет да ? рыба К.Ю. Поляков, Е.А. Ерёмин, 2013 птица ! млекопитающее нет да ? хищник Язык программирования Пролог! http://kpolyakov.spb.ru Базы данных, 11 класс 137 Экспертные системы: итоги • ЭС применяется в достаточно узкой области • использует базу знаний, которая может расширяться • может применяться при неточных и противоречивых данных • выдает ответ в виде рекомендации • может показать, как получено решение опыт и интуицию экспертов сложно свести к правилам отладка и проверка ЭС очень сложна, трудно гарантировать правильность выводов ЭС неспособны самообучаться, необходима работа инженера по знаниям К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru Базы данных, 11 класс 138 Источники иллюстраций 1. 2. 3. 4. server.tkat.ru ru.wikipedia.org иллюстрации художников издательства «Бином» авторские материалы К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru