Тема 6. Технология разработки реляционной модели данных Вопросы 1.Объекты реляционных БД, терминология 2.Разработка структуры БД 3.Нормализация отношений 4.Схемы данных в РБД 5.Грамматика SQL
1. Объекты реляционных баз данных Элемент данных (атрибут), который соответствует одному реквизиту Элемент данных (атрибут), который соответствует одному реквизиту Запись (кортеж) соответствует показателю и несет данные об одном из однородных объектов, например, одном счете, одном работнике и т.п. Запись (кортеж) соответствует показателю и несет данные об одном из однородных объектов, например, одном счете, одном работнике и т.п. агрегат данных - занимает промежуточное положение между элементом данных и записью. агрегат данных - занимает промежуточное положение между элементом данных и записью. Файл базы данных- набор из однотипных записей, который в некоторых случаях называют таблицей и который обычно соответствует массиву информации. Файл базы данных- набор из однотипных записей, который в некоторых случаях называют таблицей и который обычно соответствует массиву информации.
Элементы БД (иллюстрация)
Отношения в реляционных БД Табельный Табельный Фамилия И.О. Код отдела Рабочий телефон РОМАНЕНКО С.Т Код Наименование отдела 024 ОТДЕЛ КАДРОВ = Табельный Табельный Фамилия И.О. Код отдела Рабочий телефон Наименование отдела РОМАНЕНКО С.Т ОТДЕЛ КАДРОВ
2. Разработка структуры БД Построение реляционной БД включает следующие этапы: 1.Определение объектов, которые являются информационными единицами 2.Описание связей между объектами 3.Определение свойств и методов объектов 4.Определение связей между свойствами различных объектов 5.Создание предварительного словаря БД, в котором описаны все таблицы будущей БД 6.Определение связей между таблицами БД 7.Определение способов выполнения и типов транзакций, с помощью которых создаются и изменяются данные таблиц 8.Определение индексов для ускорения выполнения запросов 9.Определение прав доступа к таблицам на изменение их структуры или данных 10.Документирование всей структуры БД
3. Нормализация отношений в реляционных БД Сведения о кредитах Сведения о заемщиках Вид кредита СуммаСтавкаСрокОрганизация Юридический адрес Вид кредита СуммаСтавкаСрокОрганизация Юридический адрес Таблица ненормализованных отношений Агрегат данных Атрибут данных 1-я нормальная форма – схема отношений находится в 1 НФ тогда и только тогда, когда все входящие в него атрибуты являются атомарными (нет агрегатов данных) В 1 НФ есть избыточность данных
Схема отношений находится во 2-й НФ тогда и только тогда, когда она находится в 1 НФ и каждый ее непервичный атрибут функционально полно зависит от первичного ключа Вид кредита суммаставкасрокзаемщик ЗаемщикАдрес Код кредита ставка Наимен ование Ключ Фирмы Заказы Ключ Схема отношения находится в 3-й НФ тогда и только тогда, когда она находится во 2-й НФ и каждый ее не первичный атрибут не транзитивно зависит от первичного ключа Таблица не плоская Код кредита договора договораСуммаСрок Код заемщика ЗаемщикАдрес Кредиты Заемщики Ключ В третьей НФ каждая таблица содержит сведения об однородном объекте
4. Схемы данных в реляционных БД В реляционных базах данных схемы данных устанавливают связь между записями двух таблиц. Код Наименование отдела 010ДИРЕКЦИЯ 023БУХГАЛТЕРИЯ 024 ОТДЕЛ КАДРОВ 025КАНЦЕЛЯРИЯ Табельный Табельный Фамилия И.О. Код отдела Рабочий телефон ПЕТРОВ А.В РОМАНЕНКО С.Т СТЕПАНОВА И.С. 025 Отделы Сотрудники
5. Грамматика SQL SQL (Structured Query Language) – язык структурированных запросов включает шесть групп команд: 1.Язык запросов (Data Query Language – DQL)- для извлечения данных из таблиц 2.Язык манипулирования данными (Data Manipulation Language - DML)- добавление и удаление данных 3.Язык обработки транзакций (Transaction Processing Language - TPL) 4.Язык описания данных (Data Definition Language – DDL) 5.Язык управления курсором (Cursor Control Language – CCL) 6.Язык управления данными (Data Control Language - DCL) – для выполнения административных функций, определяющих права доступа
Ключевые слова SQL подразделяются на следующие категории: Команды. Они представляют собой глаголы, определяющие действия, которые нужно выполнить (например SELECT) Условия. Ограничивают диапазон значений элементов, входящих в запрос (например WHERE). Модификаторы. Изменяют выполнение команды (например ORDER BY) Операторы. Сравнивают значения, применяются в условиях отбора записей, а также для создания многотабличных связей (=, ) Статистические функции (агрегатные). Возвращают одно результирующее значение, вычисленное в выбранном наборе данных (например MIN(), SUM(), COUNT(). В MS ACCESS используется подмножество языка SQL – Jet SQL, инструкции которого распознаются ядром СУБД MS ACCESS – Microsoft Jet. При создании запроса на выборку в режиме конструктора Access одновременно создает и инструкцию SELECT языка Jet SQL. Чтобы просмотреть эту инструкцию, нужно выполнить команду меню ВИД – РЕЖИМ SQL (VIEW – SQL)
SELECT Клиенты.[Фамилия клиента], Кредиты.[Сумма кредита], [Виды Кредитов].[вид кредита] FROM [Виды Кредитов] INNER JOIN (Клиенты INNER JOIN Кредиты ON Клиенты.[Код клиента] = Кредиты.[Код клиента]) ON [Виды Кредитов].Код = Кредиты.[Вид кредита] WHERE (((Кредиты.[Сумма кредита])
Select – основная команда запроса на выборку. Синтаксис: Select список_полей В списке полей указываются поля, которые должны быть выведены в результирующую таблицу запроса. Список_полей =: Имя_таблицы. Имя_атрибута, … ; From имена_таблиц ; – определяет имена таблиц, из которых запрос должен отобрать данные WHERE критерий_отбора ;. Определяет условие для отбора записей указанных таблиц ORDER BY столбцы_сортировки ;. Определяет порядок сортировки записей в результирующей таблице. Операция INNER JOIN Объединяет записи из двух таблиц, если связующие поля этих таблиц содержат одинаковые значения. Синтаксис FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле2 GROUP BY поле_группировки;
SELECT [Виды Кредитов].[вид кредита], Sum(РасчетыПоКредитам.[Фактическая сумма]) AS [Sum-Фактическая сумма] FROM [Виды Кредитов] INNER JOIN (Кредиты INNER JOIN РасчетыПоКредитам ON Кредиты.[ договора] = РасчетыПоКредитам.[ договора]) ON [Виды Кредитов].Код = Кредиты.[Вид кредита] GROUP BY [Виды Кредитов].[вид кредита];