- •Введение
- •Общая схема банка данных в системе
- •Основные понятия
- •Базы данных
- •Банк данных как система управления основные понятия
- •Банк данных как автоматизированная система
- •Субд с включающим языком
- •Информационные системы
- •Документальные аис основные понятия дескриптор
- •Фактографические аис
- •Основные понятия
- •Основные данные
- •Уровни моделей
- •Классификация моделей
- •Роль подсхемы
- •Этапы проектирования базы данных
- •Архитектура банка данных
- •Последовательность действий при чтении записи
- •Инфологическое проектирование базы данных
- •Модели данных и подъязыки данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Реляционные базы данных
- •Алгебра отношений
- •Преимущества реляционных бд
- •Отношения
- •Нормализация отношений
- •Функциональная зависимость
- •Полная функциональная зависимость.
- •Проектирование баз данных.
- •Специальные операции над отношениями
- •Операции над отношениями.
- •Централизация и децентрализация процессов обработки данных.
- •Традиционный набор операций
- •Нормализация отношений
- •Исчисление отношений
- •Вторая и третья нормальные формы.
- •26. Язык запросов sql
- •1 Основы sql
- •Многотабличные запросы на чтение (объединения)
- •Сортировка результатов запроса (предложение order by)
- •Объединение результатов нескольких запросов (union)*
- •Запрос на объединение и сортировка *
- •Многотабличные запросы на чтение (объединения)
- •Простое объединение таблиц (объединение по равенству)
- •Запросы с использованием отношения предок/потомок
- •Объединения с условием для отбора строк
- •Несколько связанных столбцов
- •Запросы на чтение к трем и более таблицам
- •Чтение всех столбцов
- •Самообъединения
- •Псевдонимы таблиц
- •Правила выполнения многотабличных запросов
- •Внешнее объединение таблиц *
- •Итоговые запросы на чтение
- •Агрегатные функции
- •Агрегатные функции в списке возвращаемых столбцов
- •Запросы с группировкой (предложение group by)
- •Несколько столбцов группировки
- •Ограничения на запросы с группировкой
- •Вложенные запросы на чтение
- •Внешние ссылки
- •Вложенные запросы и объединения
- •Связанные вложенные запросы
- •Однострочный оператор insert
- •В интерактивном режиме удобно не включать в оператор insert список столбцов, так как это уменьшает длину оператора. В случае программного
- •Многострочный оператор insert
- •Удаление существующих данных
- •Удаление всех строк
- •Оператор delete с вложенным запросом *
- •Обновление существующих данных
-
Нормализация отношений
Ключи
Если значения некоторого атрибута однозначно идентифицирует кортежи отношений (все кортежи содержат различные значения атрибутов), атрибут называется первичным ключом отношения. Например, атрибут Д# в отношении ДЕТАЛЬ.
Не каждое отношение будет иметь первичный ключ в виде единственного атрибута. Но каждое отношение будет иметь некоторую комбинацию атрибутов, которые, взятые вмести, будут однозначно идентифицировать кортеж в отношении.
Например,
(П#,Д#) в отношении ПОСТАВКА. По крайней
мере комбинация из всех атрибутов будет
первичным ключом. Т.о. каждое отношение
будет иметь первичный ключ. Предполагается,
что первичный ключ не избыточен в том
смысле, что никакие из составляющих его
атрибутов не являются излишними для
однозначной1лишними
для однозначногояющих его атрибутов
не являются излишними для однозначного
идентизначения атрибутов)
Например, комбинация (Д# ЦВ) не является первичным ключом для отношения ДЕТАЛЬ.
Иногда можно встретить отношения, в которых существует более, чем одна комбинация атрибутов, способная однозначно идентифицировать кортеж. Эти отношения имеют более одного возможного ключа.
Ни один из компонент первичного ключа не должен быть нулевой.
Атрибут отношения R1 является внешним ключом, если атрибут – не первичный ключ отношения R1, но его значения являются значениями первичного ключа некоторого отношения R2.
Например атрибут Д# в отношении ПОСТАВКА внешний ключ (первичный ключ в ДЕТАЛЬ).
Первичный и внешний ключи служат для связи между отношениями. Не всегда «связывающий» атрибут является ключом. Например, если мы потребуем «соразмещения» поставщиков и деталей (связь отношений ДЕТАЛЬ и ПОСТАВЩИК), атрибуты ГОР и ГОРОД не будет ключом.
Функциональная зависимость
Атрибут Y отношения R функционально зависит от атрибута X отношения R тогда и только тогда, когда каждое значение X в отношении R в каждый момент времени связано точно с одним значением Y. Одно и тоже значение X может появляться в нескольких различных кортежах отношения R. Если Y функционально зависит от X, то по определению каждый из этих кортежей должен содержать также одно и то же значение Y.
Например, в отношении ПОСТАВЩИК атрибуты ПОСТ, СТАТ, ГОРОД функционально зависят от П#

X, Y или оба могут быть составными атрибутами.
Например, в отношении ПОСТАВКА атрибут КОЛ функционально зависит от составного атрибута (П# Д#)

Полная функциональная зависимость.
Атрибут Y находится в полной функциональной зависимости от атрибута X, если он функционально зависит X и не зависит функционально от любого подмножества атрибута X (X д.б. составным).
Например, полная функциональная зависимость (П# Д#) => КОЛ
Не находится в полной функциональной зависимости (П# СТАТ) => ГОРОД, т.к.
П# => ГОРОД
В примерах функциональной зависимости от первичного ключа.
Отношение R находится в первой нормальной форме тогда и только тогда, когда все входящие в него домены содержат только атомарные (неделимые) значения. Любое нормальное отношение находится в 1НФ.
Рассмотренные отношения находятся в четвертой нормальной форме (4НФ).
Отношение R находится в 4НФ тогда и только тогда, когда в каждый момент времени каждый кортеж отношения R состоит из значения первичного ключа, которое идентифицирует некоторый объект, и из множества взаимных произвольных значений атрибутов, некоторым образом описывающих этот объект.
Чтобы продемонстрировать процесс нормализации, возьмем отношение.
ПЕРВОЕ (П#, СТАТ, ГОРОД, Д#, КОЛ).
Считаем, что СТАТ – транспортные издержки, т.е. СТАТ функционально зависит от ГОРОД.
ГОРОД => СТАТ
ПЕРВОЕ
|
П# |
СТАТ |
ГОРОД |
Д# |
КОЛ |
|
п1 |
20 |
ЛОНДОН |
д1 |
300 |
|
п1 |
20 |
ЛОНДОН |
д2 |
200 |
|
п1 |
20 |
ЛОНДОН |
д3 |
400 |
|
п1 |
20 |
ЛОНДОН |
д4 |
200 |
|
п1 |
20 |
ЛОНДОН |
д5 |
100 |
|
п1 |
20 |
ЛОНДОН |
д6 |
100 |
|
п2 |
10 |
ПАРИЖ |
д1 |
300 |
|
п2 |
10 |
ПАРИЖ |
д2 |
400 |
|
п3 |
10 |
ПАРИЖ |
д2 |
200 |
|
п4 |
20 |
ЛОНДОН |
д2 |
200 |
|
п4 |
20 |
ЛОНДОН |
д4 |
300 |
|
п4 |
20 |
ЛОНДОН |
д5 |
400 |
Первичный ключ (П#, Д#)

Отношения R и Q с атрибутами X,Y и Y,Z.
Пример:
Отношение R с тремя атрибутами: номер работника, номер выполняемого задания, расчетный срок выполнения задания. Здесь третий атрибут неполно транзитивно зависит от первого атрибута, поскольку один и тот же работник может выполнять несколько заданий. Поэтому после приведения отношения R к ЗНФ таблице распадается на две. В первой таблице номеру работника соотносятся номера выполняемых им заданий, во второй – номер задания соответствует расчетный срок его выполнения.
В программное обеспечение реляционных баз данных включается программа для автоматической нормализации.
