БАЗЫ ДАННЫХ. ИНФОРМАЦИОННЫЕ СИСТЕМЫ
- Информационные системы
- Базы данных (БД)
- Реляционные БД
БАЗЫ ДАННЫХ. ИНФОРМАЦИОННЫЕ СИСТЕМЫ
Тема 1. Информационные системы
Определения
База данных (БД) – это хранилище данных о некоторой предметной области, организованное в виде специальной структуры.
Важно :
- данные о некоторой области (не обо всем) упорядоченные
- данные о некоторой области (не обо всем)
- упорядоченные
Система управления базой данных (СУБД) – это программное обеспечение для работы с БД.
Функции :
- поиск информации в БД выполнение несложных расчетов вывод отчетов на печать редактирование БД
- поиск информации в БД
- выполнение несложных расчетов
- вывод отчетов на печать
- редактирование БД
!
Информационная система = БД + СУБД!
Типы информационных систем
- локальные ИС БД и СУБД находятся на одном компьютере.
- файл-серверные БД находится на сервере сети (файловом сервере), а СУБД на компьютере пользователя.
- клиент-серверные БД и основная СУБД находятся на сервере, СУБД на рабочей станции посылает запрос и выводит на экран результат.
Локальные ИС
- автономность (независимость)
- с БД работает только один человек
- сложно обновлять при большом количестве пользователей
- практически невозможно «стыковать» изменения, вносимые несколькими пользователями
5
Файл-серверные ИС
- несколько человек работают с одной базой
- основную работу выполняют рабочие станции (РС), они должны быть мощными
- для поиска строки на РС копируется вся БД – нагрузка на сеть
- слабая защита от взлома (только на РС)
- проблемы при одновременном изменении с разных РС
6
Клиент-серверные ИС
СУБД-сервер :
- MS SQL Server Oracle MySQL
- MS SQL Server
- Oracle
- MySQL
запрос
на SQL
ответ
SQL ( Structured Query Language ) – язык структурных запросов
- основную работу выполняет сервер
- проще модернизация (только сервер)
- по сети идут только нужные данные
- защита на сервере (сложнее взломать)
- разделение доступа (очередь заданий)
- сложность настройки
- высокая стоимость ПО (тысячи $ )
7
БАЗЫ ДАННЫХ. ИНФОРМАЦИОННЫЕ СИСТЕМЫ
Тема 2. Базы данных
Типы баз данных
- табличные БД данные в виде одной таблицы
- сетевые БД набор узлов, в котором каждый может быть связан с каждым.
- иерархические БД в виде многоуровневой структуры
- реляционные БД (99,9%) набор взаимосвязанных таблиц
Табличные БД
Модель – картотека
Примеры:
- записная книжка каталог в библиотеке
- записная книжка
- каталог в библиотеке
Суворовский пр., д. 32, кв. 11
275-75-75
поля
записи
Фамилия
Петров
Имя
Иванов
Адрес
Вася
Телефон
Дима
Суворовский пр., д. 32, кв. 11
Кирочная ул., д.25, кв.12
275-75-75
276-76-76
- самая простая структура
- все другие типы БД используют таблицы
во многих случаях – дублирование данных:
А.С. Пушкин
Сказка о царе Салтане
А.С. Пушкин
20 стр.
Сказка о золотом петушке
12 стр.
Табличные БД
- Количество полей определяется разработчиком и не может изменяться пользователем.
- Любое поле должно иметь уникальное имя .
- Поля могут иметь различный тип :
- строка символов (длиной до 255 символов) вещественное число (с дробной частью) целое число денежная сумма дата, время, дата и время логическое поле (истина или ложь, да или нет) многострочный текст (МЕМО) рисунок, звук или другой объект (объект OLE )
- строка символов (длиной до 255 символов)
- вещественное число (с дробной частью)
- целое число
- денежная сумма
- дата, время, дата и время
- логическое поле (истина или ложь, да или нет)
- многострочный текст (МЕМО)
- рисунок, звук или другой объект (объект OLE )
- Поля могут быть обязательными для заполнения или нет.
- Таблица может содержать сколько угодно записей (это количество ограничено только объемом диска); записи можно добавлять, удалять, редактировать, сортировать, искать.
Ключевое поле (ключ таблицы)
Ключевое поле (ключ) – это поле (или комбинация полей), которое однозначно определяет запись.
В таблице не может быть двух записей с одинаковым значением ключа.
Могут ли эти данные быть ключом?
- фамилия имя номер паспорта номер дома регистрационный номер автомобиля город проживания дата выполнения работы марка стиральной машины
- фамилия
- имя
- номер паспорта
- номер дома
- регистрационный номер автомобиля
- город проживания
- дата выполнения работы
- марка стиральной машины
?
Сетевые БД
Сетевая БД – это набор узлов, в которых каждый может быть связан с каждым (схема дорог).
Старые Васюки
Средние Васюки
А
Г
Б
В
Васюки
Новые Васюки
- лучше всего отражает структуру некоторых задач ( сетевое планирование в экономике)
- сложно хранить информацию о всех связях
- запутанность структуры
!
Можно хранить в виде таблицы, но с дублированием данных!
13
Иерархические БД
Иерархическая БД – это набор данных в виде многоуровневой структуры (дерева).
Рабочий стол
Сетевое окружение
Мой компьютер
Мои документы
Задания
Рисунки
A:
D:
Учебники
С :
Мои видеозаписи
Моя музыка
Мои рисунки
14
Иерархические БД
Прайс-лист:
Продавец (уровень 1)
Кей
Товар (уровень 2)
Мониторы
Принтеры
Samsung
Phillips
Sony
Изготовитель (уровень 3)
Модель (уровень 4)
X93B
S93
$ 312
$ 3 06
Цена (уровень 5)
14
Иерархические БД
Приведение к табличной форме:
Продавец
Товар
Кей
Кей
Монитор
Изготовитель
Монитор
Модель
Sony
Key
Цена
Монитор
S93
Sony
Кей
Монитор
X93B
Phillips
$ 306
…
190 B5 CG
$ 312
Samsung
SyncMaster 193P
$318
$452
- дублирование данных
- при изменении адреса фирмы надо менять его во всех строках
- нет защиты от ошибок ввода оператора ( Кей – Key ), лучше было бы выбирать из списка
16
БАЗЫ ДАННЫХ. ИНФОРМАЦИОННЫЕ СИСТЕМЫ
Тема 3. Реляционные базы данных
Реляционные БД
1970-е гг . Э. Кодд, англ. relation – отношение.
Реляционная база данных – это набор простых таблиц, между которыми установлены связи ( отношения ) с помощью числовых кодов.
Изготовители
Код
Название
Страна
Сайт
Прайс-лист
Код записи
Код продавца
Код изготовителя
Код товара
Код модели
Цена
Продавцы
Код
Название
Адрес
Телефон
Сайт
Модели
Код
Название
Код изготовителя
Товары
Код
Название
Реляционные БД
- нет дублирования информации;
- при изменении адреса фирмы достаточно изменить его только в таблице Продавцы ;
- защита от неправильного ввода: можно выбрать только фирму, которая есть в таблице Продавцы ;
- механизм транзакций : любые изменения вносятся в базу только тогда, когда они полностью завершены.
- сложность структуры (не более 40-50 таблиц);
- при поиске надо обращаться к нескольким таблицам;
- нужно поддерживать целостность : при удалении фирмы - продавца надо удалять все связанные записи (автоматически, каскадное удаление ).
19
Связи между таблицами
Один к одному («1-1») – одной записи в первой таблице соответствует ровно одна запись во второй. Применение: выделение часто используемых данных.
1
1
Код
Год рожд .
1
2
Адрес
1992
1993
…
Суворовский, д.20, кв. 6
Кирочная, д. 30, кв 18
Код
Фамилия
1
Имя
2
Иванов
Петров
…
Кузьма
Василий
Один ко многим («1- ») – одной записи в первой таблице соответствует сколько угодно записей во второй.
прайс-лист
товары
1
Код
1
Код
Название
2
123
Код товара
Монитор
1
Цена
345
…
Винчестер
…
10 999
1
11 999
Связи между таблицами
Многие ко многим (« - ») – одной записи в первой таблице соответствует сколько угодно записей во второй, и наоборот .
предметы
Код
Название
1
История
2
География
3
Биология
…
учителя
Код
1
Фамилия
Иванов
2
…
Петров
Реализация – через третью таблицу и две связи «1- ».
1
1
Код
1
Фамилия
2
Иванов
Петров
…
Код
Код учителя
1
2
Код предмета
1
Класс
3
1
1
…
2
2
9-А
3
8-Б
7-В
Код
1
Название
2
История
3
География
…
Биология
расписание
Нормализация базы данных
Нормализация – это разработка такой структуры БД, в которой нет избыточных данных и связей.
- Любое поле должно быть неделимым.
Фамилия
Иванов
Имя
Петр
Петров
Иван
…
…
Фамилия и имя
Иванов Петр
Петров Иван
…
- Не должно быть полей, которые обозначают различные виды одного и того же, например, товаров .
1
Год
2006
Код товара
1
Кол-во
2007
…
1200
2
1500
Код
1
Товар
2
Бананы
Киви
…
Год
2006
Бананы
Киви
2007
3200
…
1200
5600
1500
Нормализация базы данных
- Любое поле должно зависеть только от ключа ( ключ – это поле или комбинация полей, однозначно определяющая запись) .
зависит не только от названия товара!
товары
Код
Название
1
Монитор
Цена
2
Винчестер
9 000 р.
…
11 000 р.
прайс-лист
- Не должно быть полей, которые могут быть найдены с помощью остальных .
Код
1
Товар
2
Бананы
Цена за тонну
…
Кол-во, тонн
1200
Киви
1500
Стоимость
10
20
12 000
30 000
Поиск в базах данных
Линейный поиск – это перебор всех записей до тех пор, пока не будет найдена нужная.
Код
Фамилия
1
Сидоров
2
Ветров
…
1024
Померанцев
Иванов?
1024 сравнения!
- данные не надо предварительно готовить
24
Двоичный поиск
- Разделить область поиска на две равные части.
- Определить, в какой половине находится нужный объект.
- Перейти к шагу 1 для этой половины.
- Повторять шаги 1-3 пока объект не будет «пойман».
25
Поиск в базах данных
Двоичный поиск в БД – требует предварительной сортировки.
Иванов?
…
255
Журов
…
383
Игнатьев
…
512
Ковалев
…
1
Андреев
…
255
Журов
…
512
Ковалев
…
1024
Яшин
1
2
Андреев
Барсуков
…
512
Ковалев
…
1023
Юрьев
1024
Яшин
?
Сколько сравнений?
1 1 сравнений!
- записи надо отсортировать по нужному полю
- можно использовать только для одного поля.
26
Поиск по индексам
Индекс – это вспомогательная таблица, которая предназначена для быстрого поиска в основной таблице по выбранному столбцу.
Таблица
Номер
Дата
1
02.02.2006
Товар
2
3
Количество
Киви
01.11.2006
12.04.2006
6
Бананы
3
Апельсины
10
Индексы:
по дате
по количеству
по товару
Номер
Номер
Номер
1
2
3
Дата
Товар
Количество
1
2
3
3
02.02.2006
Апельсины
1
2
12.04.2006
6
3
Бананы
Киви
01.11.2006
10
Поиск по индексам
Алгоритм:
- двоичный поиск по индексу – найти номера нужных записей; выбрать эти записи по номерам из основной таблицы.
- двоичный поиск по индексу – найти номера нужных записей;
- выбрать эти записи по номерам из основной таблицы.
- двоичный поиск по всем столбцам, для которых построены индексы
- индексы занимают место на диске ;
- при изменении таблицы надо перестраивать все индексы (в СУБД – автоматически).
28