Лекции по теме «Базы данных » Подготовил доцент В.Н. Египко Санкт-Петербург2012 Санкт-Петербургский торгово-экономический институт Кафедра информационных систем и информационных технологий и информационных технологий © В.Н. Египко Версия от
Базовые понятия База данных (БД) – это структура, содержащая данные, их описания и связи. БД представляет собой самостоятельный информационный ресурс, который может многократно использоваться различными приложениями. Система управления базами данных (СУБД) – инструментальная программная среда, обеспечивающая создание баз данных, их обновление, доступ к базам данных и их использование.
Модели построения баз данных 1.Иерархическая 1.Иерархическая, основанная на древовидной структуре, которая поддерживает отношение данных типа «один ко многим». 2.Сетевая 2.Сетевая в виде графа, поддерживающая отношение данных типа «многие ко многим». 3.Реляционная 3.Реляционная с представлением данных в виде взаимосвязанных двумерных таблиц. 4.Постреляционная 4.Постреляционная более сложной структуры, например, со вложением одной таблицы в другую таблицу. 5.Объектно-ориентированная 5.Объектно-ориентированная. 6.Многомерная 6.Многомерная с таблицами в виде гиперкуба.
Реляционная база данных Реляционная модель БД, предложенная Е. Коддом в 1970-х гг., основана на математической теории отношений и опирается на систему понятий реляционной алгебры, важнейшими из которых являются: - двумерная таблица (отношение); - строка-запись (кортеж); - столбец-поле (атрибут); - множество значений столбца (домен); - первичный и внешний ключи. В целом реляционная БД – это несколько связанных между собой плоских таблиц.
Реляционная база данных В реляционной БД данные представляются в виде таблиц, связанных между собой. Каждая таблица состоит из однотипных строк (записей-кортежей) и столбцов (полей-атрибутов). Таблице присваивается имя, уникальное в пределах БД. Внутри таблицы каждому столбцу присваивается имя, уникальное в пределах данной таблицы, и устанавливается формат значений (домена). Порядок следования столбцов фиксируется при создании таблицы. Строки таблицы не имеют имен, порядок их следования не определён, а количество строк не оговаривается. Новая запись добавляется просто в конец таблицы.
Реляционная база данных В таблице должен быть уникальный атрибут со значениями, однозначно определяющими строки-записи, называемый первичным ключом. Примеры первичного ключа: [Код товара], [Табельный номер работника]. Такой ключ может быть составным, например, [Номер заказа]+[Код товара]. Для связи таблиц используются атрибуты, называемые внешними ключами, в роли которого в одной из таблиц может выступать первичный ключ.
Достоинства реляционной базы данных 1.Данные в РБД представляются в простой, традиционной, естественной форме – в виде таблиц, что наилучшим образом соответствует структуре экономической информации. 2.Исключается дублирование данных, обеспечивая экономию объёма памяти компьютера. 3.Автоматически поддерживается целостность БД с блокировкой удаления данных, нарушающего связи таблиц. 4.Новые записи добавляются в БД простым образом – в конец таблиц.
Недостатки реляционной базы данных Основной недостаток РБД проистекает из главного её достоинства – простоты структуры хранимых в ней данных. А именно - невозможность представить данные сложной структуры, например, для систем автоматизированного проектирования. В настоящее время РБД до сих пор широко используются, особенно для представления данных в экономической сфере. В других сферах переход на более совершенные модели данных связан со значительными затратами и пока носит ограниченный характер.
Нормализация отношений в РБД В процессе создания РБД следует минимизировать дублирование данных, упростить структуру их представления, оптимизировать процедуры обработки и обновления хранимых данных. нормализацияотношений» Такой многоэтапный процесс носит название «нормализация отношений» (таблиц). Нормализация отношений заключается в декомпозиции (разложении) исходных таблиц на более простые отношения с поэтапным учётом ряда ограничений (нормальных форм ).
Этапы (формы) нормализации отношений в РБД 1NFПервая нормальная форма (1NF). 2NFВторая нормальная форма (2NF). 3NFТретья нормальная форма (3NF). BCNFНормальная форма Бойса-Кодда (BCNF). 4NFЧетвёртая нормальная форма (4NF). PJ/NF лучшеНормальная форма проекции-соединения (PJ/NF). Примечание: Каждая следующая NF лучше предыдущей с сохранением положительных свойств предыдущей NF.
Первые три нормальные формы (1-3 NF) 1NF Отношение считается приведённым к 1NF, если все его атрибуты – атомарные, т.е. неделимые. 2NF 1NF Отношение находится во 2NF, если в дополнении к требованию 1NF каждый неключевой атрибут функционально полно зависит от первичного ключа (не должен зависеть лишь от части составного ключа). 3NF 3NF подразумевает дополнительно, что каждый неключевой атрибут нетранзитивно (не опосредованно) зависит от первичного ключа. Т.е. недопустима зависимость от ключа через другой неключевой атрибут. Один из полезных выводов: Атрибут отношения не может представлять собой расчётное выражение, например, [Стоимость товара]=[Цена товара]*[Количество товара], т.к. атрибут [Стоимость товара] не является атомарным. Такой атрибут следует исключить из таблицы. Вычисления же можно предусмотреть не в таблице, а в запросе.
Примеры нормализации отношений в РБД Исходное отношение: Сотрудники=([Таб_номер];[Фамилия];[Должность];[Оклад]) находится в 1 и 2 NF, но не соответствует 3NF, т.к. неключевой атрибут [Оклад] опосредованно зависит от ключа [Таб_номер] через другой неключевой атрибут [Должность] (при условии однозначного определения оклада по должности работника). Для приведения отношения к 3NF необходимо декомпозировать его на следующие три отношения: Сотрудники=([Таб_номер];[Фамилия]) Должности=([Таб_номер];[Код_должности]) Оклады=([Код_должности];[Оклад])
Объекты реляционной базы данных 1)таблицы-отношения с данными; 2)схема связи таблиц; 3)запросы различных видов; 4)формы для наглядного ввода данных; 5)отчёты для представления графически оформленных результатов запросов; 6)программные модули; 7)макросы.
Типы данных в таблицах базы данных –числовой (целый или вещественный с двойной точностью); –денежный; –текстовый (фиксированной или переменной длины); –логический (булевский); –«Дата/Время»; –ёмкий текст (memory), хранящийся в виде файла вне таблицы; –большой двоичный объект (BLOB), например, фотография или видеоролик, хранящийся в виде файла вне таблицы; –гиперссылка на внешний ресурс.
Этапы создания базы данных КонцептуальноеКонцептуальное, инфологическое, проектирование с использованием вербальных средств, формул, таблиц, графиков, в частности, ER-моделей. ЛогическоеЛогическое проектирование с выбором модели для базы данных. ФизическоеФизическое проектирование с выбором носителей информации и оптимизацией доступа к данным на физическом уровне.
Стадии логического проектирования РБД –Распределение данных по нескольким таблицам, соблюдая правила нормализации. –Формирование структуры отдельных таблиц: определение количества полей (столбцов); определение количества полей (столбцов); задание имен полей и их псевдонимов; задание имен полей и их псевдонимов; выбор типа и формата данных в каждом поле; выбор типа и формата данных в каждом поле; назначение первичного ключа; назначение первичного ключа; назначение индексируемых полей (для ускорения поиска). назначение индексируемых полей (для ускорения поиска). –Формирование схемы связи таблиц по внешним ключам. –Ввод данных в таблицы: непосредственно в рабочие таблицы; непосредственно в рабочие таблицы; с помощью разработанных предварительно форм. с помощью разработанных предварительно форм.
Типы запросов к базе данных –выборка по задаваемым условиям (с возможностью вычислений и сортировки); –создание новой таблицы; –добавление записей в таблицу; –обновление записей по условиям; –удаление записей по условиям; –перекрестный запрос.
Пример запроса-выборки «по образцу» - QBE Пример запроса-выборки «по образцу» - QBE (в диалоге с Конструктором) Запрос объединяет выбранные данные из двух таблиц и вычисляет: [Всего]=[Премия]+[Оклад]. Выполняется также сортировка в столбце [Фамилия] по алфавиту.
Пример запроса типа SQL Пример запроса типа SQL (на языке структурированных запросов) SELECT [Сведения о работниках].Фамилия, [Сведения о работниках].Имя, [Сведения о работниках].Отчество, [Сведения о работниках].[Дата рождения] FROM [Сведения о работниках] WHERE ((([Сведения о работниках].[Дата рождения])>= #1/1/1970# And ([Сведения о работниках].[Дата рождения])