Содержание

  1. Операторы
    1. Вставка
    2. Обновление
    3. Объединение
    4. Удаление
  2. Целостность данных
    1. Корректность и целостность
    2. Типы ограничений целостности
      1. Типов и атрибутов
      2. Отношений
      3. Баз данных
    3. Компенсирующие действия
  3. Триггеры
  4. Представления
    1. Объявление и применения
    2. Обновление представлений
    3. Материализованные представления
  5. Управление доступом
    1. Схемы управления доступом
    2. Пользователи и группы
    3. Data Control Language
    4. Представления и права

Слайды

HTML

Экзаменационные вопросы

  1. Целостность данных. Триггеры
  2. Представления и их обновление
  3. Управление доступом к данным

Практические навыки

  1. Построение изменяющих запросов на SQL
  2. Задание ограничений целостности
  3. Работа с представлениями
  4. Управление доступом к данным

Библиография

  1. Дейт К. Введение в системы баз данных (главы 9, 10, 17)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (глава 6)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 35 – Changing SQL-data)
  4. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 18 – Table and View)
  5. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 20 – SQL Constraint and Assertion)
  6. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 24 – SQL Trigger)
  7. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 15 – SQL Authorization)

Домашнее задание 7. Изменение данных

Изменение данных
  1. Напишите запросы, удаляющие студентов:
    1. Учащихся в группе :GroupId;
    2. Учащихся в группе :GroupName;
    3. Без оценок;
    4. Имеющих 3 и более оценки;
    5. Имеющих 3 и менее оценки;
    6. Студентов, c долгами (здесь и далее — по отсутствию оценки);
    7. Студентов, имеющих 2 и более долга;
    8. Студентов, имеющих не более 2 долгов.
  2. Напишите запросы, обновляющие данные студентов:
    1. Изменение имени студента :StudentId на :StudentName;
    2. Перевод студента :StudentId из группы :FromGroupId в группу :GroupId;
    3. Перевод всех студентов из группы :FromGroupId в группу :GroupId;
    4. Перевод всех студентов из группы :FromGroupName в группу :GroupName;
    5. Перевод всех студентов из группы :FromGroupName в группу :GroupName только если целевая группа существует;
  3. Напишите запросы, подсчитывающие статистику по студентам:
    1. Число оценок студента :StudentId (столбец Marks);
    2. Число оценок каждого студента (столбец Marks);
    3. Пересчет числа оценок каждого студента по данным из таблицы NewMarks (столбец Marks);
    4. Число сданных дисциплин каждого студента (столбец Marks);
    5. Число долгов студента :StudentId (столбец Debts);
    6. Число долгов каждого студента (столбец Debts);
    7. Число долгов каждого студента группы :GroupName (столбец Debts);
    8. Число оценок и долгов каждого студента (столбцы Marks, Debts);
  4. Напишите запросы, обновляющие оценки, с учетом данных из таблицы NewMarks.
    1. Проставляющий новую оценку только если ранее оценки не было.
    2. Проставляющий новую оценку только если ранее оценка была.
    3. Проставляющий максимум из старой и новой оценки только если ранее оценка была.
    4. Проставляющий максимум из старой и новой оценки (если ранее оценки не было, то новую оценку).
  5. Работа с представлениями
    1. Создайте представление StudentMarks в котором для каждого студента указано число оценок (столбцы StudentId, Marks);
    2. Создайте представление AllMarks в котором для каждого студента указано число оценок, включая оценки из таблицы NewMarks (столбцы StudentId, Marks);
    3. Создайте представление Debts в котором для каждого студента, имеющего долги указано их число (столбцы StudentId, Debts);
    4. Создайте представление StudentDebts в котором для каждого студента указано число долгов (столбцы StudentId, Debts);
  6. Целостность данных.

    Обратите внимание, что задания из этого раздела надо посылать в PCMS, но они будут проверяться только вручную после окончания сдачи. То есть в PCMS вы получите + за любое решение.

    В комментарии перед запросом укажите версию использованной СУБД.

    1. Добавьте проверку того, что у студентов есть оценки только по дисциплинам из их плана (NoExtraMarks).
    2. Добавьте проверку того, что все студенты каждой группы имею оценку по одному и тому же набору дисциплин (SameMarks).
    3. Создайте триггер PreserveMarks, не позволяющий уменьшить оценку студента по дисциплине. При попытке такого изменения оценка изменяться не должна.

В рамках проекта:

  1. Определите модифицирующие запросы, необходимые для работоспособности проекта.
  2. Запишите эти запросы на языке SQL.