- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект DreamHome
- •Реляционная алгебра (продолжение)
- •Выборка (или ограничение)
- •Проекция
- •Декартово произведение
- •Объединение
- •Разность
- •Операции соединения
- •Tema-соединение (θ-join)
- •Естественное соединение
- •Внешнее соединение
- •Полусоединение
- •Пересечение
- •Деление
- •Другие языки
- •Примеры применения реляционной алгебры
- •Обзор жизненного цикла информационных систем
- •Жизненный цикл приложения баз данных
- •Проектирование базы данных
- •Проектирование баз данных на основе восходящего подхода (Метод нормализации или декомпозиции)
- •Цель нормализации
- •Проблемы, вызываемые использованием единственного отношения (аномалии обновления)
- •Проблема вставки
- •Проблема обновления
- •Проблемы удаления
- •Функциональные зависимости
- •Процесс нормализации
- •Декомпозиция без потерь и функциональные зависимости
- •Первая нормальная форма (1 нф) (из Коннолли)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (знф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 И 5 нормальные формы (4нф и 5нф)
- •Пример нормализации
- •. Другая декомпозиция отношения консультант
- •Некоторые комментарии к декомпозиционному алгоритму проектирования
- •Некоторые модификации алгоритма проектирования Избыточные функциональные зависимости
- •Транзитивные зависимости
- •Добавление атрибутов в фз
- •Правила вывода
- •Алгоритм проектирования бд методом декомпозиции (восходящий метод)
- •Проверка отношений на завершающей фазе их проектирования
- •Задачи к текущему материалу
- •Пример аномалий для 2нф
- •Нормальная форма Бойса—Кодда (нфбк) с примером аномалий для 3 формы
- •Язык sql
- •Запрос одиночной таблицы
- •Проектирование в sql
- •Выборка в sql
- •Сортировка
- •Встроенные функции sql
- •Встроенные функции и группировка
- •Запрос нескольких таблиц
- •Вложенные запросы
- •Соединение с помощью sql
- •Сравнение вложенного запроса и соединения
- •Внешнее соединение
- •Операторы exists и not exists
- •Изменение данных
- •Insert into запись
- •Insert into запись
- •Insert into третьекурсник
- •Удаление данных
- •Модификация данных
- •Запрос на sql с exist и not exist (реализация реляционной операции Деления)
- •Операция внешнего соединения таблиц в access (Мои замечания)
- •Псевдонимы столбцов и таблиц
- •Уточнения запроса
- •Теоретико-множественные операции
- •Декартово произведение наборов записей
- •Объединение наборов записей (union)
- •Пересечение наборов записей (intersect)
- •Intersect corresponding (id_компонента, Тип_компонента)
- •Вычитание наборов записей (except)
- •Операции соединения
- •Естественное соединение (natural join)
- •Условное соединение (join... On)
- •Соединение по именам столбцов (join... Using)
- •Внешние соединения
- •Левое соединение {left outer join)
- •Правое соединение {right outer join)
- •Внешнее соединение Преподаватель-Изучение-Предмет. Создание в access. Пример
- •Операторы exists и not exists
- •Низходящее проектирование бд на основе er-модели Модель «сущность—связь» и ее варианты
- •Реализация низходящего проектирования бд на основе er-модели
- •Типы сущностей
- •Способы представления сущностей на диаграмме
- •Атрибуты
- •Типы связей
- •Представление связей на диаграммах
- •Атрибуты связей
- •. Структурные ограничения
- •Показатель кардинальности
- •Степень участия
- •Примеры er-проектирования
- •Модель «сущность—связь» в другом рассмотрении
- •Элементы модели «сущность—связь»
- •Сущности
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность—связь»
- •Изображение атрибутов в диаграммах «сущность—связь»
- •Слабые сущности
- •Представление многозначных атрибутов при помощи слабых сущностей
- •Подтипы сущностей
- •Пример er-диаграммы
- •Документирование делового регламента
- •Модель «сущность—связь» и case-средства
- •Диаграммы «сущность—связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Роль uml в базах данных на сегодняшний день
- •Примеры
- •Вопросы группы I
- •Вопросы группы II
- •Литература по курсу «базы и банки данных»
Изменение данных
В SQL предусмотрены средства для изменения данных в таблицах путем вставки новых строк, удаления строк и модификации значений в существующих строках. SQL позволяет также менять структуру данных, хотя мы не будем затрагивать эту тему до глав 12 и 13.
Вставка данных
Строки можно вставлять в таблицы по одной или группами. Чтобы вставить одну строку, мы пишем следующее:
Insert into запись
VALUES (400, 'BD445', 44)
После ключевого слова INSERT INTO указывается имя таблицы, а после ключевого слова VALUES — вставляемые значения.
Если мы знаем не все данные (например, нам неизвестно значение атрибута ПорядковыйНомер), можно поступить следующим образом:
Insert into запись
(НомерСтудента. НазваниеПредмета)
VALUES (400, 'BD445', 44)
Атрибут ПорядковыйНомер может быть добавлен позже. Обратите внимание, что в результате этого запроса поле Позиция в новой строке будет иметь нулевое значение.
Можно также копировать группы строк из одной таблицы в другую. Пусть, например, нам нужно заполнить таблицу ТРЕТЬЕКУРСНИК, показанную на рис. 9.1.
Insert into третьекурсник
VALUES
(SELECT ЛичныйНомер, Имя, Специальность
FROM СТУДЕНТ
WHERE Курс = 'С3')
Вложенный оператор SELECT, как и все выражения SELECT, описанные в предыдущих двух разделах, позволяет указывать строки для копирования. Это свойство предоставляет весьма широкие возможности.
Удаление данных
Как и в случае вставки, строки можно удалять по одной или группами. Следующий пример удаляет строку с данными о студенте 100:
DELETE FROM СТУДЕНТ
WHERE СТУДЕНТ.ЛичныйНомер = 100
Обратите внимание, что если студент 100 записан на какие-либо предметы, это удаление вызовет нарушение целостности, поскольку для строк таблицы ЗАПИСЬ, в которых НомерСтудента = 100, не будет соответствующей строки в таблице СТУДЕНТ.
Каким образом можно удалить группу строк, показывают следующие два примера. В них из таблицы ЗАПИСЬ удаляется информация о предметах, на которые записаны студенты, специализирующиеся на бухгалтерском учете, а из таблицы СТУДЕНТ удаляются данные обо всех таких студентах:
DELETE FROM ЗАПИСЬ
WHERE ЗАПИСЬ.НомерСтудента IN
(SELECT СТУДЕНТ.ЛичныйНомер
FROM СТУДЕНТ
WHERE СТУДЕНТ.Специальность = 'Бухгалтерский учет')
DELETE FROM СТУДЕНТ
WHERE СТУДЕНТ.Специальность = 'Бухгалтерский учет'
Порядок выполнения этих операций имеет значение: если бы он был обратным, ни одна строка из таблицы ЗАПИСЬ не была бы удалена, потому что соответствующие строки из таблицы СТУДЕНТ оказались бы уже удаленными.
Модификация данных
Строки можно также модифицировать — по одной или группами. Для изменения значения столбца предназначены ключевые слова UPDATE и SET. После SET указывается имя столбца, значение в котором требуется изменить, а затем новое значение либо способ его вычисления. Рассмотрим два примера:
UPDATE ЗАПИСЬ
SET ПорядковыйНомер = 44
WHERE НомерСтудента = 400
и
UPDATE ЗАПИСЬ
SET ПорядковыйНомер = МАХ(ПорядковыйНомер) + 1
WHERE НомерСтудента = 400
Во втором операторе UPDATE значение столбца вычисляется с помощью встроенной функции МАХ. Некоторые реализации SQL, однако, могут не допускать использования встроенных функций в качестве аргумента команды SET.
Для демонстрации массовых обновлений предположим, что название предмета поменялось с BD445 на BD564. В этом случае, чтобы предотвратить проблемы с целостностью, должны быть изменены как таблица ЗАПИСЬ, так и таблица ПРЕДМЕТ.
UPDATE ЗАПИСЬ
SET НазваниеПредмета = 'BD564'
WHERE НазваниеПредмета = 'ВD445'
UPDATE ЗАНЯТИЯ
SET НазваниеПредмета = 'BD564'
WHERE НазваниеПредмета = 'BD445'
Помните, что массовые обновления могут представлять большую опасность. Пользователю дается огромная власть, которая при правильном ее использовании позволяет быстро выполнить насущную задачу, а если ею распорядиться неверно, может привести к серьезным проблемам.
