Базы данных Коробецкая А.А. 1 Самара 2014. 2 Баллы 10Посещение лекционных занятий 20Самостоятельные работы 40Лабораторный практикум 30Экзамен Опоздание.

Презентация:



Advertisements
Похожие презентации
Тема 6. Технология разработки реляционной модели данных Вопросы 1.Объекты реляционных БД, терминология 2.Разработка структуры БД 3.Нормализация отношений.
Advertisements

СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
1 БАЗЫ ДАННЫХ Использование SQL для построения запросов. ЗАНЯТИЕ 6 ПУГАЧЁВ Ю.В. Учитель информатики Харьковская общеобразовательная школа І-ІІІ ступеней.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
Урок 2. Информационные процессы в обществе и природе.
Базы данных Лекция 4 Базисные средства манипулирования реляционными данными: реляционная алгебра Кодда.
База данных (БД) – основа информационных систем(ИС)
Реляционная модель – это особый метод рассмотрения данных, содержащий данные в виде таблиц, способов работы и манипуляции с ними в виде связей. структура,
БАЗА ДАННЫХ – ОСНОВА ИНФОРМАЦИОННОЙ СИСТЕМЫ ТЕХНОЛОГИЯ ИСПЛЬЗОВАНИЯ И РАЗРАБОТКА ИНФОРМАЦИОННЫХ СИСТЕМ.
Лекция 16 Лекция 16 Основы SQL. Описание отношений, доменов, ограничений целостности, представлений данных. Реализация операций реляционной алгебры в SQL.
Нормализация таблиц реляционной базы данных © Панова И.В
1 Основы SQL: MySQL Будем использовать MySQL СУБД с открытым кодом Бесплатная версия (Community Edition) – на В Linux-дистрибутивах.
Модуль 1. Математические основы баз данных и знаний.
Язык SQL Вложенные запросы и внешние объединения.
Реляционные базы данных N-арное отношение – подмножество декартова произведения N множеств возможных значений (доменов, типов данных, атрибутов) Изображение.
Объединение таблиц Подзапросы. Оператор SELECT дает возможность выборки информации сразу из нескольких таблиц, которые перечислены в списке FROM. Такая.
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
ОДНОМЕРНЫЕ МАССИВЫ. РАБОТА С ЭЛЕМЕНТАМИ СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ.
Транксрипт:

Базы данных Коробецкая А.А. 1 Самара 2014

2 Баллы 10Посещение лекционных занятий 20Самостоятельные работы 40Лабораторный практикум 30Экзамен Опоздание на перекличку приравнивается к пропуску занятия. Пропуск можно закрыть, предъявив конспект лекции. Лабораторный практикум: 1. Проектирование БД 2. Реализация в связке Access + Delphi Сумма баллов Оценка (неуд.) (удов.) (хор.) (отл.)

Основные темы 3 1. Концептуальное проектирование БД. 2. Проектирование реляционных БД. Реляционная алгебра. 3. Структурированный язык запросов – SQL. 4. Физическое проектирование БД. 5. Администрирование БД.

Лекция 1. Введение. Концептуальное (инфологическое) проектирование 4

База данных (БД) 5 Признаки БД: -электронный формат; -структурированность; -наличие схемы данных (метаданных) в составе БД; -большой объем хранимых данных; +общая предметная область. БД представляет собой электронное хранилище, в котором находятся структурированные данные для ускорения их поиска и обработки. БД организованная в соответствии с определёнными правилами и поддерживаемая в памяти компьютера совокупность данных, характеризующая актуальное состояние некоторой предметной области и используемая для удовлетворения информационных потребностей пользователей. БД – совокупность данных (файлов, документов), организованных специальным образом и описывающих определенную предметную область.

Виды БД 6 По модели данных: Реляционная (табличная) Иерархическая Сетевая Объектно-ориентированная Постреляционная Хронологическая (хранилище данных) По способу хранения данных: Локальная (централизованная) Распределенная Файл-серверная Клиент-серверная Двухзвенная Многозвенная

Виды БД 7 По виду хранимой информации: Фактографические БД – БД, хранящие информацию в виде данных- фактов (записи, файлы и т.д.). Данные отражают текущее состояние предметной области. Динамические БД - БД, хранящие данные и время вместе, отображая состояние предметной области в определенный момент времени. Документальные БД- БД, хранящие информацию в виде документов (отчетов, монографий и т.д.). Графические БД – БД, хранящие информацию в виде графических объектов (картинно-графические, база видеоданных, graphics based data base и др.). Интегрированные БД – БД, хранящие информацию в виде данных, документов, графических документов.

Основные средства реализации БД 8 1. Файловая система + собственный пользовательский сервис на языке высокого уровня. 2. СУБД - система управления базами данных, выполняющая все функции файловой системы, средства создания и ведения БД, средства манипулирования данными (добавление, удаление, изменение данных), средства поиска данных (поиск, выбор, сортировка). 3. Машины баз данных – программно-аппаратные средства реализации баз данных. Значительно быстрее СУБД, но менее универсальны.

Язык запросов СУБД 9 Это формальный язык для доступа и редактирования БД. СОЗДАТЬ ТАБЛИЦУ Расписание ( Номер_рейса Целое Дни_недели Текст (8) Пункт_отправления Текст (24) Время_вылета Время Пункт_назначения Текст (24) Время_прибытия Время Тип_самолета Текст (8) Стоимость_билета Валюта ); ВЫБРАТЬ Номер_рейса, Дни_недели, Время_вылета ИЗ ТАБЛИЦЫ Расписание ГДЕ Пункт_отправления = 'Москва И Пункт_назначения = 'Самара И Время_вылета > 17; Де-факто стандартный язык запросов к табличным БД – SQL.

Жизненный цикл БД Проектирование 2. Реализация 3. Эксплуатация Основные этапы проектирования БД: 1. Определение требований к системе. 2. Инфологическое проектирование БД – получение семантических (смысловых) моделей данных. 3. Выбор СУБД и других инструментальных средств. 4. Логическое проектирование БД – организация данных в виде структур данных. 5. Физическое проектирование БД – выбор рациональной структуры хранения данных и методов доступа к ним.

Уровни представления данных Концептуальный уровень - это семантический уровень представления данных в виде абстрактных понятий, учитывающих особенности предметной области. 2. Логический уровень - уровень представления в виде структуры данных (таблицы, списки, деревья, графы, и т.д.). 3. Физический уровень - способ организации данных на машинном носителе (в виде бит, байт и т.д. и их структур). Абстрактный уровень Конкретный уровень

Концептуальная (инфологическая) модель «сущность – связь» 12 Entity-Relation (ER-модель) была предложена Питером Ченом (P.Chen) в 1976 г. Модель описывает: Сущности Атрибуты сущностей Связи между сущностями Модель может быть представлена в графическом (ER-диаграмма) или в текстовом виде. Существует большое число нотаций (способов изображения) ER- диаграмм.

Основные понятия 13 Сущность – любой различимый объект, реальный или мыслимый, (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных объект предметной области. Обозначается существительным. Необходимо различать тип и экземпляр сущности. Тип сущности: ГОРОД Экземпляр сущности: МОСКВА, САМАРА, КАЛУГА Тип сущности: ФИРМА Экземпляр сущности: ОАО «Сбербанк», ООО «Луч», ИП Удальцов Город

Атрибут 14 Атрибут – поименованная характеристика сущности. Обозначается существительным. Наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей. Город Название Координаты Население Фирма -Название -Адрес -Телефон -ФИО руководителя Гражданин ФИО паспорта Дата рождения Место рождения

Ключ 15 Атрибут (или атрибуты) однозначно идентифицирующий сущность называется ключом. На схеме ключевой атрибут подчеркивается, или рядом ставится значок ключа. Ключ, состоящий из нескольких атрибутов, называется составным. Товар -Наименование -Артикул -Производитель Книга -Название -Автор -Год -Издательство -Число страниц Составной ключ не надо путать с потенциальными ключами. Любой из потенциальных ключей может быть выбран как первичный. Остлаьные – альтернативные. Студент -ФИО - студенческого билета - паспорта (альтернативный ключ) (первичный ключ)

Связи 16 Связь – соответствие (отображение, ассоциация) между экземплярами сущности. Обозначается обычно глаголом или причастием, но не обязательно. Фирма Город зарегистрирована в Гражданство Страна Житель Владеет Имущество Собственник

Типы (кратность) связей 17 1:1Один-к- одному В конкретный момент времени одному экземпляру сущности A соответствует 0 или 1 экземпляров сущности B, и наоборот Студент - Зачетная книжка 1:n Один- ко- многим Одному экземпляру сущности А соответствуют 0, 1 или более экземпляров сущности В, но одному экземпляру B соответствует 0 или 1 экземпляр A Студент - Группа n:m Многие- ко- многим Каждому экземпляру сущности А соответствуют 0, 1 или более экземпляров сущности В, и каждому экземпляру B соответствует 0, 1 или более экземпляр A Студент - Преподаватель Автомобиль Колесо 14 Можно указать точную кратность связи или диапазон Сумма Слагаемые 12..n

Пример 18 В зависимости от ситуации, одни и те же сущности могут иметь разные типы связи. Муж Жена Супруг Брак 11 Муж Жена Брак 1n Муж Жена Брак n1 Муж Жена Брак nm 1 1 моногамия многоженство многомужие полигамия

Сложные связи 19 Множественные связи между одними и теми же сущностями Тернарные связи между тремя сущностями Сотрудник Фирма Работает в Руководит Врач Пациент Болезнь Диагноз Связи более высоких порядков – между 4-мя и более сущностями Петля между экземплярами одной сущности Аудиозапись Ремикс 1 m 1n m1 nm p

Класс принадлежности 20 Класс принадлежности сущности называется обязательным, если экземпляры данной сущности должны участвовать в связи обязательно. Обозначается закрашенной точкой на конце связи. Класс принадлежности сущности называется необязательным, если экземпляры данной сущности могут не участвовать в связи. Точка не ставится или ставится незакрашенный кружок. Преподаватель Лекция Преподаватель Лекция на практике трудности: обязательно одновременно создавать экземпляры обеих сущностей Человек Кошка

Ассоциативная сущность 21 Связь тоже может иметь атрибуты. Такая связь превращается в ассоциативную сущность. Фирма Город Регистрация Адрес регистрации Дата регистрации

Зависимые сущности 22 Сущность Независимая (стрежневая) Зависимая Характеристическая Ассоциативная Зависимая сущность не может существовать без независимых (стрежневых) сущностей. Книга Автор Зависимые сущности иногда изображают со скругленными углами. Отдел СотрудникПредприятие

Соотношение основных понятий БД 23 Сущность?Таблица Экземпляр сущности ?Запись (строка) Атрибут?Поле (столбец) -?Тип данных Концептуальное РеляционноеФизическое Распространенные ошибки! На концептуальном уровне -не бывает бессмысленных атрибутов, не имеющих значения вне БД (код, ID). -не бывает сущностей без атрибутов (бывают связи без атрибутов) -не бывает связей без кратности

Обозначения в разных нотациях 24 Атрибут 1 Сущность 1 Ключ 1 -Ключ -Атрибут 2 -Атрибут 3 Сущность 2 -Ключ -Атрибут 2 -Атрибут 3 связана с Сущность 1Сущность 2 Связь Ключ 2 Атрибут 2 Атрибут 3 По Чену Упрощенный вариант Атрибут 4 1n Ассоциация -Атрибут 5 1 n Сущность 1 -Ключ -Атрибут 2 -Атрибут 3 Сущность 2 -Ключ -Атрибут 2 -Атрибут 3 n 1

Последовательность концептуального проектирования Выделить сущности. 2. Определить связи между сущностями. 3. Определить тип связей. 4. Перечислить атрибуты каждой сущности. 5. Найти потенциальные ключи среди атрибутов. 6. Выбрать первичные ключи из потенциальных.

Лекция 2. Логическое проектирование реляционных БД 26

Основные понятия реляционной модели данных 27 Концепция реляционной модели предложена в 1970 г. Коддом с целью обеспечения независимости представления и описания данных от прикладных программ. Схема отношения - список имен атрибутов отношения. Реляционная БД – это совокупность взаимосвязанных отношений. Отношение 1 (атрибут 1.1, атрибут 1.2, атрибут 1.3,... атрибут 1.N) Отношение 2 (атрибут 2.1, атрибут 2.2,... атрибут 2.M) … Отношение описывает взаимосвязи между N атрибутами этого отношения. Количество атрибутов N – степень или «-арность» отношения (унарное, бинарное, тернарное, N-арное). Более точное определение будет дано в следующей лекции.

Правила перехода от ER-модели к предварительной схеме отношений Каждая сущность преобразуется в отношение (таблицу). Исключение – см. правило 1 преобразования связей. 2. Каждый атрибут сущности преобразуется в атрибут отношения (поле, столбец таблицы). Примечание. Имена атрибутов и отношений могут отличаться от концептуальных, но должны иметь тот же смысл. Например, в БД могут быть запрещены русские буквы. 3. Первичный ключ становится ключом отношения. Правила для сущностей и атрибутов

Правила для связей 1: Если степень бинарной связи равна 1:1 и класс принадлежности обеих сущностей является обязательным, то требуется только одно отношение. Первичным ключом этого отношения может быть ключ любой из двух сущностей. 2. Если степень бинарной связи равна 1:1 и класс принадлежности одной сущности является обязательным, а другой – необязательным, то необходимо построение двух отношений. Под каждую сущность необходимо выделение одного отношения, при этом ключи сущностей должны служить первичными ключами для данных отношений. Ключ сущности с необязательным классом принадлежности добавляется в качестве атрибута в отношение, выделенное для сущности с обязательным классом принадлежности. 3. Если степень бинарной связи равна 1:1 и класс принадлежности ни одной сущности не является обязательным, то необходимо использовать три отношения: по одному для каждой сущности, ключи которых служат в качестве первичных в соответствующих отношениях, и одно для связи. Среди своих атрибутов отношение, выделяемое на связь, будет иметь по одному ключу от каждой сущности.

Примеры для связей 1:1 30 Студент Зачетка 11 Студент (ФИО, Дата рождения, Группа, зачетки, Дата выдачи, Продлена до) -ФИО -Дата рождения -Группа - зачетки -Дата выдачи -Продлена до Гражданин Паспорт Гражданин (ФИО, Дата рождения, Место рождения, паспорта) Паспорт ( паспорта, Дата выдачи, Кем выдан) -ФИО -Дата рождения -Место рождения - паспорта -Дата выдачи -Кем выдан 11 Мужчина Женщина Мужчина (ФИО, Дата рождения, Место рождения, паспорта) Женщина (ФИО, Дата рождения, Место рождения, паспорта) Брак ( паспорта мужа, паспорта жены, свидетельства о браке) -ФИО -Дата рождения - паспорта -ФИО -Дата рождения - паспорта 11 выдается имеет состоит в браке

Правила для связей 1:n Если степень бинарной связи равна 1:n и класс принадлежности n- связной сущности является обязательным, то достаточным является использование двух отношений, по одному на каждую сущность. Ключ каждой сущности используется в качестве первичного ключа для соответствующего отношения. Ключ 1-связной сущности должен быть добавлен как атрибут в отношение для n-связной сущности. 5. Если степ. бин. связи 1:n и класс принад-ти n-связной сущн-ти – необ- ный => три отнош-я: 1 для кажд. сущн-ти и 1 отнош. для связи. Ключ каждой сущн-ти => первичный ключ соотв-щего отнош-я. Отнош-е для связи должно иметь среди своих атр-тов ключи от кажд. сущн-ти. Примечание Для связей 1:n нужны только 2 правила (4 и 5). Определяющим фактором является класс принадлежности n-связной сущности; класс принадлежности 1-связной сущности не влияет на конечный результат.

Примеры для связей 1:n 32 Студент Группа n1 - зачетки -ФИО -Дата рождения - группы -Курс Учится в Студент ( зачетки, ФИО, Дата рождения, Группа) Группа ( группы, Курс) Депутат Партия n1 -ФИО -Дата рождения -Название Состоит в Депутат (ФИО, Дата рождения) Партия (Название) Партбилет ( билета, Партия, Депутат)

Правила для связей m:n Если степень связи m:n, то для хранения данных необходимо три отношения: по одному для каждой сущности и одно отношение для связи. Ключ каждой сущности используется в качестве первичного ключа соответствующего отношения. Отношение для связи должно иметь в числе своих атрибутов ключ каждой сущности. Книга Читатель nm выдана -Название -Автор -Год -Издательство - читательского -ФИО Книга (Название, Автор, Год, Издательство) Читатель( читательского, ФИО) Выдача (Название, Автор, читательского, Дата выдачи)

Правила для множественных связей В случае p-сторонней связи необходимо использовать (p+1) предварительных отношений, по одному для каждой сущности и одно для связи. Ключ каждой сущности должен служить в качестве первичного ключа для соответствующего отношения. Отношение, порождаемое связью, будет иметь среди своих атрибутов ключи от каждой сущности. Врач Пациент Болезнь Диагноз nm s Врач ( паспорта, ФИО, Должность) Пациент ( страх. свид., ФИО, Дата рождения) Болезнь (Название) Диагноз (Врач, Пациент, Болезнь) - паспорта -ФИО -Должность - страх. свид. -ФИО -Дата рождения -Название

Лекция 3. Реляционная алгебра 35

Соотношение основных понятий БД 36 Сущность ОтношениеТаблица Экземпляр сущности Кортеж Запись (строка) Атрибут Поле (столбец) -Домен Тип данных Концептуальное РеляционноеФизическое

Домен 37 Домен D – множество однотипных данных, имеющих общую семантику. Домен Тип данных Домен - более конкретное понятие. Два разных домена могут иметь одинаковый тип данных. Пример Домен АтрибутТип данных Масса Товар.Отгружено Вещественное Температура Металл.Т_плавления Пациент.Температура Город.Т_воздуха Вещественное С точки зрения логики некорректно сравнивать данные из разных доменов. Атрибут – именованное подмножество домена.

Декартово произведение множеств 38 Декартово произведение n множеств D 1, D 2, … D n – это множество D 1 D 2 … D n (D 1 *D 2 *…*D n ), состоящее из элементов вида (d 1, d 2, … d n ), где d 1 D 1, d 2 D 2,... d n D n. Иными словами – множество, состоящее из всех сочетаний элементов исходных множеств. Пример A = {1, 2, 3} B = {x, y} A B = {(1, x), (2, x), (3, x), (1, y), (2, y), (3, y)}

Отношение 39 Отношение R – множество упорядоченных наборов данных (кортежей), являющихся подмножеством декартова произведения заданных доменов D 1 D 2 … D n (домены могут повторяться). Кортеж (d 1, d 2, … d n ) – элемент декартова произведения доменов, на котором строится отношение. Схема (заголовок) отношения – перечень имен атрибутов отношения (возможно, с указанием доменов). R1 (A 1, A 2, A 3, … A n ) Атрибуты отношения указываются через точку: R1.A1, R2.A10, Студент.зачетки Мощность отношения M – число кортежей. Степень отношения N – число атрибутов. Отношение имеет: фиксированное число и порядок атрибутов; конечное множество неупорядоченных кортежей; только различные кортежи (никогда не повторяются).

Ключ 40 R – отношение с атрибутами A 1, A 2,..., A n. Подмножество атрибутов K=(A i,A j,...,A k ) отношения R является потенциальным ключом т.т.т.к. удовлетворяются два независимых от времени условия: 1.Уникальность: никакие два различных кортежа R не имеют одного и того же значения для атрибутов A i, A j,..., A k. 2.Минимальность: ни один из атрибутов A i, A j,..., A k не может быть исключен из K без нарушения уникальности. Каждое отношение имеет хотя бы 1 возможный ключ – все атрибуты. Один любой потенциальный ключ выбирается в качестве первичного. Внешний ключ – атрибут или множество атрибутов, значения которого соответствуют первичному ключу некоторого отношения (другого или этого же).

Лекция 4. Реляционная алгебра (продолжение) 41

Операции над отношениями 42 Существует 4 группы операций над отношениями: 1. Операции обновления (все языки). 2. Реляционная алгебра (ISBL). 3. Реляционное исчисление с переменными-кортежами (QUEL). с переменными-доменами (QBE). SQL

Операции обновления 43 Наиболее простые операции, не изменяющие схему отношения, но изменяющие его кортежи: Добавление кортежа ADD (R; A 1 = a 1, A 2 = a 2,… A n = a n ) ADD (R; a 1, a 2, a 3,…a n ) ADD (Автор; Пушкин, Александр, Сергеевич, , bio_PushkinAS.doc) Удаление кортежа DEL(R; a i, a j, …a k ), где (a i, a j, …a k ) K DEL(Читатель; билета = ) Изменение кортежа CH (R; a i, a j,… a k ; A r = e r, A s = e s, … A q = e q ) CH (R; a i, a j,… a k ; e 1, e 2, … e n ) где (a i, a j, …a k ) K, e 1, e 2, … e n – новые значения атрибутов CH (Издательство; Полиграфия; Телефон = )

Ошибки операций обновления 44 Ошибки при добавлении и изменении: 1. Добавляемый кортеж не соответствует схеме отношения. 2. Значения кортежа не принадлежат соответствующим доменам. 3. Добавляемый кортеж совпадает по ключу с кортежем, уже находящимся в отношении. При удалении кортежей ошибок не возникает. Если в операции удаления указано несуществующее значение, отношение не будет изменено.

Операции реляционной алгебры 45 Предложена Э. Коддом в 1972 г. Выполняются над отношениями: из 1-го или нескольких исходных отношений получается новое отношение (свойство замкнутости). Отношение – это множество => для него возможны все операции, выполняемые над множествами. Кроме того, -ют специф. операции для отношений. Реляционная алгебра и реляционное исчисление эквивалентны по своей выразительной силе. Существуют правила преобразования запросов между ними. Но не все возможные действия с таблицами можно выразить через реляционную алгебру.

Объединение (UNION) 46 Объединение отношений R1 R2 – отношение, которое содержит кортежи из R1 и R2. Возможно только для отношений с одинаковой схемой (совместимыми отношениями). Пример R1 Отечественная литература Автор Кол-во книг Пушкин 121 Толстой 220 Зощенко 45 Гете 19 R1 R2 Автор Кол-во книг Пушкин 121 Толстой 220 Зощенко 45 Автор Кол-во книг Гете 19 Пушкин 121 Толстой 220 R2 Литература 19 в.

Пересечение (INTERSECTION) 47 Пересечение отношений R1 R2 – отношение, которое содержит кортежи, которые присутствуют и в R1, и в R2. Только над совместимыми отношениями! Пример Автор Кол-во книг Пушкин 121 Толстой 220 Зощенко 45 R1 Отечественная литература Автор Кол-во книг Гете 19 Пушкин 121 Толстой 220 R2 Литература 19 в. Автор Кол-во книг Пушкин 121 Толстой 220 R1 R2

Разность (SET DIFFERENCE) 48 Разность отношений R1 \ R2 – отношение, которое содержит кортежи, которые присутствуют в R1, но отсутствуют в R2. Только над совместимыми отношениями! Пример Автор Кол-во книг Пушкин 121 Толстой 220 Зощенко 45 R1 Отечественная литература Автор Кол-во книг Гете 19 Пушкин 121 Толстой 220 R2 Литература 19 в. Автор Кол-во книг Зощенко 45 R1 \ R2R1 \ R2

Декартово произведение 49 Выполняется над любыми отношениями по определению декартова произведения. Пример Автор Кол-во книг Пушкин 121 Толстой 220 Зощенко 45 R1 Отечественная литература Фамилиябилета Иванов Петрова R2 Читатель R1 R2 Автор Кол-во книг Фамилиябилета Пушкин 121Иванов Толстой 220Иванов Зощенко 45Иванов Пушкин 121Петрова Толстой 220Петрова Зощенко 45Петрова

Проекция (PROJECTION) 50 Унарная операция. Из отношения R1 выбираются данные для выбранных атрибутов i 1,i 2,..i r, и из результата удаляются повторяющиеся кортежи. Пример R1 Выданные книги за май 2014 Автор Дата выдачи Фамилиябилета Пушкин Иванов Зощенко Петрова Гете Иванов Пушкин Петрова Пушкин Петрова Автор Фамилия Пушкин Иванов Пушкин Петрова Зощенко Петрова Гете Иванов

Выборка (SELECTION) 51 Унарная операция. Из отношения R1 выбираются кортежи, для которых выполняется заданное условие F. R = R1 WHERE F Пример R1 Выданные книги за май 2014 Автор Дата выдачи Читательбилета Пушкин Иванов Зощенко Петрова Гете Иванов Пушкин Петрова Пушкин Петрова R = R1 WHERE (Автор = Пушкин) AND (Дата выдачи > ) Автор Дата выдачи Читательбилета Пушкин Петрова Пушкин Петрова

Соединение (JOIN) 52 Бинарная операция по атрибутам с совпадающим доменом (из каждого отношения). Результат – подмножество декартова произведения отношений R1*R2, в котором выполняются ограничения на атрибуты этих отношений. Т.е. соединение = декартово произведение + выборка. Варианты соединения: -тета-соединение -эквисоединение -естественное соединение -внешнее соединение -полусоединение

-соединение 53 Содержит кортежи декартова произведения R1*R2, удовлетворяющие условию F: R1 F R2 Причем условие F имеет вид F = R1. A i R2. A j, - оператор сравнения (=,,,) Пример Фамилия Дата_рождения Пушкин Толстой Зощенко R1 Автор Автор Название Год ПушкинК другу стихотворцу 1814 Пушкин Метель 1830 Толстой Анна Каренина 1876 Гете Фауст 1831 R2 Произведение Произведения, написанные авторами после 30 лет R1 F R2, F = (Автор.Фамилия = Произведение.Автор) & (Год(Автор.Дата_рождения)) + 30 > Произведение.Год) Фамилия Дата рождения Автор Название Год Пушкин Пушкин Метель 1830 Толстой Толстой Анна Каренина 1876

Эквисоединение 54 Частный случай -соединения с условием на равенство. Пример Читатель Название Любимое Пушкин Для работы R1 Подборка Фамилиябилета Иванов Петрова R2 Читатель Подборки читателей, R1 Подборка.Читатель=Читатель.билета R2 Подборка_ билета Название ФамилияЧитатель_ билета Любимое Иванов Пушкин Петрова Для работы Петрова

Естественное (внутреннее) соединение 55 Эквисоединение по совпадающим атрибутам, причем в результат включается только 1 экземпляр атрибутов, по которым ведется соединение. R1 R2 билета Название Любимое Пушкин Для работы R1 Подборка Фамилиябилета Иванов Петрова Кузнецов R2 Читатель Подборки читателей, R1 R2 билета Название Фамилия Любимое Иванов Пушкин Петрова Для работы Петрова Пример

Внешнее соединение 56 Соединение по атрибутам, у которых могут быть несовпадающие значения. Может быть левым, правым и полным. Левое соединение: кортежи R1, у которых нет пары в R2, также войдут в соединение: R1 R2 Правое соединение: кортежи R2, у которых нет пары в R1, также войдут в соединение: R1 R2 Полное внешнее соединение: в результирующее отношение включаются все кортежи, у которых нет пары в R1: R1 R2 Во всех случая для отсутствующих пар используется значение NULL.

Внешнее левое соединение (пример) 57 R1 Произведение Код Название Год 1Код да Винчи А.С.Пушкин, полное собрание сочинений, т Русская классика 1999 R2 Издание Код Название Год 1К другу стихотворцу Метель Анна Каренина Код да Винчи 2003 Код_ Произведения Код_ Издания R3 Издание_произведения

Внешнее левое соединение (пример) 58 Код_ Произвед ения Название_ Произведения Год_ Произведения Код_ Издания Название_ Издания Год_ Издания 1К другу стихотворцу 1814NULL 2Метель 1830NULL 3Анна Каренина 1876NULL 4Код да Винчи 20031Код да Винчи 2003 R1 F (R2 R3), F = (Произведение.Год = Издание.Год) У каких произведений имеется первое издание?

Полусоединение 59 Содержит только кортежи из отношения R1, такие, которые входят в соединение R1 и R2: R1 F R2 Пример Фамилия Дата_рождения Пушкин Толстой Зощенко Гёте R1 Автор Автор Название Год ПушкинК другу стихотворцу 1814 Пушкин Метель 1830 Толстой Анна Каренина 1876 Гете Фауст 1831 R2 Произведение Авторы, произведения которых есть в библиотеке R1 F R2, F = (Автор.Фамилия = Произведение.Автор) Фамилия Дата рождения Пушкин Толстой Гёте

Переименование (RENAME) 60 В результате применения операции переименования получаем новое отношение, с измененными именами атрибутов. R RENAME A1, A2, … AS B1, B2, … Пример Произведение RENAME Код, Название, Год AS Код_произведения, Название_произведения, Год_произведения Произведение (Код, Название, Год)

Лекция 5. Нормализация отношений 61

Пример плохо нормализованного отношения 62 билета ФИОДата выдачи Форм уляр Название книги Автор Издатель ство Год Иванов А.Е Ф053Понедельник начинается в субботу А. Стругаций, Б. Стругацкий АСТ Смирнова П.А У121Самоучитель испанского -Mochaon Корнеев И.С К245ФаустИ.В. Гёте Худ. литерату ра Жуков С.И К245Фауст Гете Худ. литерату ра Иванов А.Е Ф054Пикник на обочине Б. Стругаций, А. Стругацкий АСТ1999 …

Пример 2 63 Блюдо ВидПор ций Продукт Калори йность Вес (г) Поставщик ГородСтрана Вес (кг) Цена ($) Дата пост. Лобио Закуска 158Фасоль "Хуанхэ"Пекин Китай /8/94 Лобио Закуска 108Лук 45040"Наталка"Киев Украина /8/94 Лобио Закуска 108Масло "Лайма"Рига Латвия /8/94 Лобио Закуска 108Зелень 18010"Даугава"Рига Латвия /8/94 Харчо Суп 144Мясо "Наталка"Киев Украина /8/94 Харчо Суп 144Лук 45030"Наталка"Киев Украина /8/94 Харчо Суп 144Томаты 24040"Полесье"Киев Украина /8/94 Харчо Суп 144Рис "Хуанхэ"Пекин Китай /8/94 Харчо Суп 144Масло "Полесье"Киев Украина /8/94 Харчо Суп 144Зелень 18015"Наталка"Киев Украина /8/94 Шашлык Горячее 207Мясо "Юрмала"Рига Латвия /8/94 Шашлык Горячее 207Лук 45040"Полесье"Киев Украина /8/94 Шашлык Горячее 207Томаты "Полесье"Киев Украина /8/94 Шашлык Горячее 207Зелень 18020"Даугава"Рига Латвия /8/94 Кофе Десерт 235Кофе 27508"Хуанхэ"Пекин Китай /8/94

Цели и принципы нормализации размер отношений (исключить дублирование информации). 2. Не должно возникать трудностей при выполнении операций добавления, удаления, редактирования. 3. Min разброс времени ответа на запросы в БД. Для этого отношения приводят к нормальным формам (НФ): 1НФ, 2НФ, 3НФ, НФБК, 4НФ, 5НФ. Нормализация отношений это итерационный обратимый процесс декомпозиции начального отношения на несколько более простых отношений. Аппарат нормализации отношений также предложен Э.Коддом.

Функциональная зависимость 65 Функциональные зависимости отражают смысловые связи между атрибутами отношения. Атрибут В функционально зависит от атрибута А, если для каждого значения А существует не более одного, связанного с ним, значения В (если знаем A, то точно знаем B). А В А и В могут быть составными атрибутами. Если А В и В А, то А и В взаимозависимые атрибуты А В зачетки паспорта группы, по_списку Фамилия_студента Артикул Цена Фамилия Имя

Функциональная зависимость 66 Атрибут В функционально полно зависит от атрибута А, если А = А 1 А 2 …А к и А 1 А 2 …А к В, то есть В функционально зависит от всей группы атрибутов А Автор.Фамилия, Автор.Имя, Автор.Отчество Автор.Дата_рождения Атрибут В частично зависит от атрибута А, если А = А 1 А 2 …А к и А i …А j В и i, j < k то есть В функционально зависит от некоторых из атрибутов А Издательство.Название, Издательство.Телефон Издательство.Адрес Атрибут С транзитивно зависит от А, если А В и B C, но С B или A C паспорта Дата_рождения Дата_рождения Знак_зодиака Непустое подмножество атрибутов, от которого функционально полно зависят все остальные атрибуты отношения является потенциальным ключом.

1 нормальная форма (1НФ) 67 Отношение находится в 1НФ если значения всех его атрибутов атомарны (неделимы). Сотрудник (Табельный, ФИО, Дата_рождения, Телефон, Адрес, История_работы, Дети) Книга (Название, Авторы, Произведения, Издательство, Год, Число_страниц) Примеры отношений не в 1НФ:

Приведение отношения к 1НФ 68 a)Разбиение неатомарных (сложных) атрибутов на атомарные. Адрес => Индекс, Город, Улица, Дом, Корпус, Квартира или Индекс, Город, Местн_адрес b)Выделение сложных атрибутов в новые отношения. Дети => Ребенок(Сотрудник, Имя, Дата_рождения)

2 нормальная форма (2НФ) 69 Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от ключа. Проверка: если есть частичная зависимость от ключа – не в 2НФ. Пример Поставка (Поставщик, Товар, Цена) Поставщик ТоварЦена ООО «Василек»Мыло 2000 ООО «Василек»Сахар 2500 ИП Петров Мыло 2000 MyMilk Ltd.Сыр ИП Петров Сыр Товар Цена Примечание В зависимости от конкретных условий, каждый пример может быть или не быть в определенной НФ. Поставщик, Товар Цена Поставщик Цена/ (частичная зависимость от ключа => не 2НФ)

Аномалии 2НФ 70 Аномалия включения: Если появился новый товар для поставки, его можно будет добавить в БД только когда начнутся фактические поставки. Аномалия удаления: Если прекратились поставки товара, и из базы удалены все соотв. записи, то сведения о товаре будут потеряны. Аномалия обновления: Если изменилась цена товара, то придется вручную найти все поставки этого товара и изменить цену. Если этого не сделать, БД будет несогласованной.

Приведение отношения ко 2НФ Найти все частичные зависимости неключевых атрибутов от каждого составного потенциального ключа (кроме всего кортежа). 2. Если составных потенциальных ключей нет, то отношение во 2НФ. 3. Каждую найденную зависимость выделить в новое отношение (проекция). Включить в отношение зависимые атрибуты, и ту часть ключа от которой они зависят. Новое отношение будет связано со старым как 1:n. 4. Проверить новое отношение на 2НФ. Поставка (Поставщик, Товар, Цена) Поставка Поставщик Товар Название Цена n 1

3 нормальная форма (3НФ) 72 Отношение находится в 3НФ, если оно находится в 2НФ и отсутствуют транзитивные зависимости неключевых атрибутов от ключа. Фирма СкладОбъем МЕНАТЕПМКЧ-1200 ИКСДП600 АСКОДП600 ПАРУССК Фирма Склад; Склад Объем Объем Фирма; Склад Фирма; Объем Склад / / / Пример Хранение (Фирма, Склад, Объем) Транзитивная зависимость от ключа => не в 3НФ

Аномалии 3НФ 73 Аномалия включения Если нет фирмы, получающей товар со склада, то добавление склада невозможно. Аномалия удаления Вместе с удалением сведений о фирме будет удалена информация и о складе, если никакая другая фирма на этом складе не хранит товар. Аномалия обновления Если объем склада изменился, то надо просмотреть всё отношение и изменить все кортежи для фирм, связанных с этим складом, иначе БД будет несогласованной.

Приведение отношения к 3НФ Найти все транзитивные зависимости неключевых атрибутов от каждого потенциального ключа (кроме всего кортежа). 2. Для транзитивной зависимости нужно еще 2 атрибута, кроме ключа. Если атрибутов меньше, то транзитивной зависимости нет. 3. Каждую найденную зависимость выделить в новое отношение (проекция). Включить в отношение транзитивно зависимые атрибуты, и тот атрибут, через который они зависят от ключа. Новое отношение будет связано со старым как 1:n. 4. Проверить новое отношение на 3НФ. Хранение (Фирма, Склад, Объем) Хранение Фирма Склад Название Объем n 1

Нормальная форма Бойса-Кодда (НФБК) 75 Отношение находится в НФБК, если оно находится в 3НФ и в нем нет зависимостей части ключевых атрибутов от неключевых. Ситуация может возникнуть при наличии нескольких потенциальных ключей, которые имеют общие атрибуты. Квартира ДатаПлательщик Дмитриева Орлов Степнов Степнова Дмитриева Пример Платеж (Квартира, Дата, Плательщик) Ключи: (Квартира, Дата), (Дата, Плательщик) 2НФ: неключевых атрибутов нет => в 2НФ 3НФ: в 3НФ НФБК: Квартира, Дата Плательщик, Плательщик Квартира => не в НФБК Плательщик – один из жильцов квартиры.

Аномалии НФБК 76 Аномалия включения Нельзя внести сведения о проживании плательщика в квартире, пока он не совершит первый платеж. Аномалия удаления При удалении сведений о старых платежах, сведения о плательщиках также будут удалены. Аномалия обновления Можно указать «неправильного» плательщика, не проживающего в квартире.

Приведение отношения к НФБК Выписать все потенциальные составные ключи. 2. Найти все зависимости частей каждого потенциального ключа от неключевых атрибутов. 3. Для каждой зависимости выделить отношение. Проживание Квартира Проживающий Платеж Плательщик Дата n1 Платеж (Квартира, Дата, Плательщик)

Лекции

Неформальное толкование НФ 79 1НФ: атрибуты отношений должны быть простыми, короткими и контролируемыми. 2НФ: неключевые атрибуты должны зависеть от всего ключа целиком, а не от его части. 3НФ: неключевые атрибуты должны зависеть только от ключа, а не друг от друга. НФБК: все атрибуты, в том числе части ключа, зависят только от ключа и ни от чего более.

Общая схема проверки на НФБК 80 Для каждого отношения: 1НФ: проверить атомарность каждого атрибута. Выписать в виде таблицы атрибуты и их домены. Выписать все потенциальные ключи и неключевые атрибуты. 2НФ: Если есть составные ключи, проверить зависимость неключевых атрибутов от части ключа. 3НФ: Если неключевых атрибутов больше 2, проверить наличие транзитивных зависимостей. НФБК: Если есть составные ключи, проверить зависимость части ключа от атрибутов, не являющихся ключом.

Лекция 8. Введение в SQL 81

SQL (Structured Query Language) 82 Structured Query Language язык структурированных запросов. Непроцедурный язык – в отличие от ЯП, команды SQL показывают что хочет получить пользователь, но не показывают как это получить. Существуют различные диалекты и расширения SQL (различных производителей): MySQL TransactSQL (Sybase, MS SQL Server) Jet SQL (Access SQL) PL/SQL (Oracle) и др. Стандарты SQL (за различные годы): SQL-89 SQL-92 (ANSI SQL, SQL 2) SQL:1999 (SQL 3) SQL:2003 SQL:2006 SQL:2008

Примеры SQL-запросов 83 CREATE TABLE Подборка (Читатель CHAR(8) DEFAULT , Название VARCHAR(20) DEFAULT '', Код_издания INT DEFAULT 0) INSERT INTO TABLE Подборка VALUES ( , Любимые книги', ) INSERT INTO TABLE Подборка DEFAULT VALUES SELECT Название FROM Подборка WHERE Читатель = '

Рекомендуемые источники 84 М. Флёнов. Transact SQL Очень подробный справочник С. Моисеенко. SQL. Задачи и решения. Учебник. sql-tutorial.ru Много примеров, типовые ошибки (Transact SQL) Упражнения по SQL sql-ex.ru Упражнения с онлайн-проверкой на готовых примерах БД (Transact SQL) А.В. Маркин. Построение запросов и программирование на SQL Учебник по серверу Firebird

Типы команд SQL 85 Определение структур базы данных (Data Definition Language, DDL) Создание, изменение и удаление объектов БД (таблиц). Манипулирование данными (Data Manipulation Language, DML) Добавление, удаление, изменение кортежей. Выборка данных (Data Query Language, DQL) Команда SELECT с многочисленными опциями и расширениями. Язык управления данными (Data Control Language, DCL) Команды создания объектов, связанных с доступом к данным, и контроля над распределением привилегий между пользователями. Команды администрирования данных Контроль за выполняемыми действиями и анализ операций БД. Администрирование данных < администрирование БД Команды управления транзакциями Подтверждение, сохранение, откат действий в БД (транзакций).

Форма Бэкуса-Наура (расширенная) 86 Символ Обозначение ::=«по определению», «это» |«или» выбор одного из нескольких приведенных значений описание структуры языка […]факультативный элемент (необязательная часть), конструкция в скобках может присутствовать или отсутствовать {…}множественный элемент, конструкция внутри скобок повторяется несколько раз (0 или более) {/…/}{/…/}множественный элемент, повторяется 1 или более раз (...)для ограничения альтернативных конструкций

Примеры 87 поезд ::= локомотив вагоны

Основные элементы языка 88 Элемент ОпределениеПример оператор Ключевое слово, команда SQL. Нечувствительны к регистру, но традиционно пишутся заглавными буквами. SELECT AS + - * / > < = LIKE BETWEEN идентификатор Имя объекта БД (таблицы, поля и др.). В Access можно использовать почти любые символы кроме. ! [] Традиционно пишутся маленькими буквами. Клиенты.[Номер Телефона] константа Неизменяемое значение: Число Дата/время Текст (ANSI SQL в, Access в ) Булевы (TRUE|FALSE) NULL 42 Иванов TRUE выражениесочетания других элементов для вычисления нового значения 0,1 * Цена >=[Кол-во]

Типы данных SQL 89 Тип данных Объявления СимвольныеCHAR | VARCHAR ЧисловыеINTEGER | SMALLINT | NUMERIC | DECIMAL | FLOAT | REAL | DOUBLE КалендарныеDATE | TIME | TIMESTAMP | INTERVAL Двоичные данныеBIT | BIT VARYING Тип данных Объявления ЛогическийBOOLEAN | BOOL | YESNO СчетчикCOUNTER | AUTOINCREMENT Внедренное изображение IMAGE ДенежныйMONEY | CURRENCY Особые типы Access (и др. диалекты)

Символьные данные 90 CHAR (n) – фиксированная длина, пустое пространство заполняется пробелами VARCHAR (n) – переменная длина Access: TEXT(n) = CHAR(n) ::= [CHAR | VARCHAR] [( )]

Числовые данные 91 SMALLINT2 байта или UNSIGNED – без знака INTEGER | INT4 байта-2,14 млн... 2,14 млн. или 0.. 4,24 млн. NUMERIC | DECIMAL | DEC (M, D) M + 2 байта Зависит от M, DM – общее число знаков (считая зпт), D – знаков после запятой Пример: DECIMAL (5,2) – от -99,99 до 99,99. FLOAT | REAL4 байта+(-) 1.18* (-) 3. 40*10 38 UNSIGNED не влияет на диапазон значений DOUBLE PRECISION 8 байт+(-) 2.23* (-) 1.80 * Access: BIT, TINYINT, SMALLINT, INT, BIGINT, DECIMAL, REAL, FLOAT

Календарные типы 92 DATE – дата, включая YEAR (год), MONTH (месяц) и DAY (день) TIME – время, включая HOUR (часы), MINUTE (минуты) и SECOND (секунды) TIMESTAMP – для совместного хранения даты и времени + наносекунды. INTERVAL период времени. Access: DATETIME – для совместного хранения даты и времени, дней с INTERVAL не поддерживается

Определение доменов 93 ::= CREATE DOMAIN [AS] [ DEFAULT ] [ CHECK ( )] Домен в SQL определяет все потенциальные значения, которые могут быть присвоены атрибуту. ::= DROP DOMAIN [ RESTRICT | CASCADE ] RESTRICT – если есть поля этого домена, то удаление не выполнится и возникнет ошибка CASCADE – если есть поля этого домена, то заменить на соответствующий тип данных (по умолч.) - условия на значение VALUE CREATE DOMAIN PhoneN AS CHAR(10) DEFAULT ' ' CREATE DOMAIN Vozrast AS SMALLINT UNSIGNED DEFAULT 0 CHECK (VALUE < 150) DROP DOMAIN Vozrast RESTRICT

Лекция 9. Запрос SELECT 94

Запрос SELECT 95 Наиболее часто используемый и сложный запрос с большим количеством опций. Реализует операции: -проекция -выборка -переименование -Декартово произведение -соединения различных видов -сортировка -Выборка Различают запросы: -однотабличные -многотабличные -вложенные

Полный синтаксис запроса SELECT 96 SELECT [DISTINCT | ALL] [FIRST m] [SKIP n] * | FROM [WHERE ] [GROUP BY {, }] [HAVING ] [ORDER BY {, }] [ROWS k [TO r ]] Порядок записи менять нельзя!

Обязательная часть запроса 97 SELECT * | FROM * - все поля ::= {, } ::= [.] | ::= {, } SELECT [DISTINCT | ALL] * | FROM DISTINCT – удалить повторяющиеся записи ALL – показать все (по умолч.) Соответствует операции проекции: Но по умолчанию повторы из списка не удаляются, это нужно указывать явно: Записи из разных таблиц соединяются через декартово произведение. SELECT DISTINCT ГодFROM Произведение SELECT НазваниеFROM Произведение Примеры: Вывести перечень названий всех произведений. За какие годы имеются произведения?

Переименование 98 ::= [.] | [AS ] ::= [ ] Переименовывать можно и поля, и таблицы SELECT Объем AS Число_страниц FROM Издание Книга В результате получим таблицу Книга со столбцом Число_страниц SELECT ФИО, (YEAR(NOW())- YEAR(Дата_рождения)) AS Возраст FROM Читатель Часто используется для вычисляемых полей

Отбор строк 99 Если результат запроса очень большой, имеет смысл выводить не все строки, а только часть («постраничный» вывод). Способ 1 SELECT [FIRST m] [SKIP n] FROM m – сколько строк вывести n – сколько строк пропустить SELECT FROM [ROWS k [TO r ]] k – начиная с какой строки r > k – по какую строку (включительно) Способ 2 (приоритетный) SELECT FIRST 25 SKIP 49 Фамилия, Имя, Отчество FROM Автор Пример SELECT Фамилия, Имя, Отчество FROM Автор ROWS 50 TO 74 SELECT FIRST 0... Результат всегда пустой

Сортировка 100 SELECT FROM [ORDER BY {, }] ::= [DESC] DESC – в обратном порядке (от Я до А, от большего к меньшему, от новых к старым) Порядок сортировки задается порядком перечня элментов SELECT ФИО, YEAR(Дата_рождения) AS Год_рождения FROM Читатель ORDER BY Год_рождения DESC, ФИО Сначала сортировка по возрасту (от молодых к старым, т.е. от большего года рождения к меньшему), потом по алфавиту по ФИО

Запрос на выборку 101 SELECT * | FROM [WHERE ] - логическое выражение, равное TRUE/FALSE Операторы сравнения: >= Сравнение строк – по алфавиту TRUE > FALSE Логические операторы (в порядке приоритета): NOTANDOR NOT a > b AND b < c a

Оператор BETWEEN 102 [NOT] BETWEEN AND Начальное и конечное значения могут быть вычисляемыми. ANSI SQL: начальное значение

Оператор LIKE 103 [NOT] LIKE [ESCAPE ] ANSI SQLAccess SQL _? Заменяет 1 любой символ %* Заменяет любую последовательность символов ESCAPE указывает символ, «гасящий» подстановочные символы Трафаретные (подстановочные) символы Издание.Название LIKE "/*" ESCAPE "/" Автор.Фамилия NOT LIKE 'Т%' Издательство.Телефон LIKE '846333____' Поиск издания, название которого содержит звездочку Автор.Фамилия NOT LIKE "Т*" Издательство.Телефон LIKE "846333???? "

Оператор IN 104 [NOT] IN ( )| ( {, }) CREATE DOMAIN Gender CHAR(1) CHECK (VALUE IN ('м','ж')) SELECT Название FROM Издательство WHERE (Город IN ('Москва','Санкт-Петербург'))

Подзапросы (вложенные запросы) 105 Вложенный запрос используется в условии другого запроса. Он обязательно содержит только 1 столбец. Чаще всего применяется для оператора IN, но могут быть и другие варианты. SELECT НазваниеFROM Издательство WHERE (Город IN ( SELECT НазваниеFROM Город WHERE Страна = Германия ) SELECT НазваниеFROM Произведение WHERE (Год < ( SELECT YEAR(Дата_Рождения) [AS Год_рождения] FROM Автор WHERE Код = ( SELECT Код_автораFROM Автор_произведения WHERE Код_произведения = ( SELECT КодFROM Произведение WHERE Название = 'Муму' ))) Число уровней вложенности может быть разным, но рекомендуется не более 3.

Группировка 106 SELECT FROM [GROUP BY {, }] SELECT Издательство, MAX(Год) FROM Издание GROUP BY Издательство Агрегатные (статистические) функции : COUNTКоличество значений SUMСумма значений AVGСреднее MAXМаксимум MINМинимум STDEVСтандартное отклонение VARДисперсия FIRSTПервая запись LASTПоследняя запись

Условия на результаты группировки 107 SELECT FROM [GROUP BY {, }] [HAVING ] SELECT Категория, AVG(Цена) AS Средняя_цена FROM Товар GROUP BY Категория HAVING (Средняя_цена > 100) AND (COUNT(Цена) >= 10) Условие WHERE проверяется для полей до группировки. Для проверки условий после группировки используется оператор HAVING. Агрегатные функции можно использовать только в HAVING. Вывести товарные категории, в которых средняя цена товара больше 100, причем в категории должно быть не менее 10 товаров.

Соединение таблиц с помощью WHERE (неявное соединение) 108 SELECT Автор.Фамилия, Автор.Имя, Автор.Отчество, Произведение.Название FROM Автор, Произведение, Автор_произведения WHERE (Автор.Код = Автор_произведения.Код_автора) AND (Произведение.Код = Автор_произведения.Код_произведения) Порядок действий СУБД: 1. Выбрать все записи исходных таблиц. 2. Создать их декартово произведение. 3. Из декартова произведения отобрать записи по условию. 4. Выполняется проекция по заданным столбцам. Это долго и декартово произведение занимает много места в памяти. Правильнее сразу отбирать из таблиц только нужные (связанные) записи.

Явное соединение. Оператор JOIN 109 FROM { [ ON | USING ( ) ] } { ::= CROSS JOIN | ([NATURAL] [[INNER] | (LEFT | RIGHT | FULL [OUTER])}] JOIN) CROSS JOIN – декартово произведение, аналогично записи через запятую NATURAL JOIN – естественное соединение (по связанным полям) (не поддерживается в Access) [INNER] JOIN – внутреннее соединение LEFT [OUTER] JOIN – левое соединение (все строки таблицы слева и соответствующие им из таблицы справа, если они есть, иначе NULL) RIGHT [OUTER] JOIN – правое соединение (наоборот) FULL [OUTER] JOIN – полное соединение (все строки обеих таблиц) ON – проверка условия для значений столбцов USING – можно использовать для одноименных столбцов

Примеры соединений 110 SELECT DISTINCT Читатель.ФИО, Издание.Название FROM Читатель LEFT JOIN (Выдача ON Читатель.Код = Выдача.Читатель INNER JOIN Издание ON Издание.Код = Выдача.Код_издания) ORDER BY Читатель.ФИО Какие издания брали все читатели за все время? SELECT Автор.Фамилия, Автор.Имя, Автор.Отчество FROM Автор AS Булгаков INNER JOIN Автор ON Булгаков.Дата_рождения < Автор. Дата_рождения WHERE Булгаков.Фамилия LIKE 'Булгаков' Какие авторы родились позже Булгакова?

Задание 111 Составить запросы SQL. 1. Вывести список произведений с указанием названия и категории. 2. Вывести названия произведения первой половины 19 века. 3. Вывести названия произведений, авторы которых родились в гг. 4. Вывести читателей с максимальным и минимальным числом подборок. 5. Вывести названия книг издательства ЭКСМО с сортировкой по году издания и по алфавиту. 6. Книги каких издательств, кроме ЭКСМО, есть в наличии? Вывести с номерами телефонов и сортировкой по городу. 7. Вывести алфавитный список ФИО авторов и количество их произведений. 8. Получить издания, которые называются так же, как и произведение. 9. Нет ли произведений, у которых год написания меньше года рождения автора? (контроль ошибок БД) 10. Выбрать выдачи читателя Юсуповой Эммы с указанием даты выдачи, названия издания, авторов через запятую, названия издательства и года издания.

Пример БД. ER-диаграмма 112 R1 R2R3 R1_2 A2 A1 A3 A4 A5 A1 A3 n m n 1 A2

Пример БД. Содержание таблиц 113 A1A2A3A4A5 140af hg rt af ff qm ut A1A2A3A4 1120, , , , ,83 A1A2 1a 2b 3c A1A R1R1 R2 R3 R1_2

Задание 114 Записать запросы SQL и результаты операций над отношениями. 1.R4 = П A4, A5 (R1) 2.R5 = R2 WHERE A2 = 35 3.R6 = R2 WHERE A3 20) (R1 WHERE A5 = 1)) 8.R11 = R1 R2 WHERE (R1.A5 = 0) AND (R2.A2 > 20) 9.R12 = R2 R3 10.R13 = R1 F R2,F = R1.A2 < R2.A2 11.R14 = R1-2 R1-2.R2 = R5.R1 R5