
- •1. Определение информации. Основные проблемы, возникающие при хранении информации.
- •2. Отличительные особенности субд как программного продукта. Понятие экземпляра и базы данных.
- •3. Категории пользователей субд. Функциональные требования различных категорий пользователей к субд.
- •4. История развития субд. Особенности не реляционных моделей данных.
- •5. Общая характеристика моделей данных. Основные свойства. Понятие атрибутов, доменов.
- •6. Отношения модели данных. Понятия сущности и связи.
- •7. Ограничение целостности модели данных. Трехуровневая архитектура ansi/sparc.
- •8. Структурные компоненты модели данных в нотации idef1x. Понятия сущность, связь. Типы сущностей и связей.
- •9. Реляционная модель данных. Базовые структурные компоненты реляционной модели данных. Основные свойства.
- •10. Свойства реляционной модели данных. Представление сущности.
- •11. Свойства реляционной модели данных. Представление связи.
- •12. Требования целостности в реляционной модели данных.
- •13. Язык определения данных в реляционной модели данных. Основные возможности. Примеры.
- •14. Типы ограничений целостности, основные типы данных, основные операции реляционной модели данных.
- •15. Проектирование реляционных баз данных. Цели проектирования, основные этапы.
- •16. Проектирование реляционных баз данных. Проблемы обновления, удаления, добавления данных. Типы ограничений целостности.
- •17. Функциональная зависимость. Нормализация отношений. Концепция нормальных форм.
- •18. Первая и вторая нормальные форма. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •19. Третья нормальная форма. Нормальная форма Бойса-Кодда. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •20. Понятие многозначной зависимости. Примеры.
- •21. Четвертая и пятая нормальные формы. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.
- •23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.
- •24. Левые, правые и полные соединения. Функции для работы с null значениями. Выборка уникальных записей. Примеры.
- •25. Использование подзапросов. Типы подзапросов. Примеры.
- •26. Коррелированные подзапросы. Особенности использования in, not in,exists, not exists.
- •27. Теоретико-множественные операции в sql-запросах. Примеры.
- •28. Агрегирующие функции. Группировка кортежей. Примеры.
- •29. Представления. Особенности использования. Примеры.
- •30. Триггеры в Transact sql. Пример реализации триггера.
- •31. Курсоры. Основные функции. Правила применения. Примеры.
- •32. Внутренние структуры данных. Двухуровневая система доступа к данным. Отношения каталогов.
- •33. Методы доступа к данным. Бинарные деревья.
- •34. Методы доступа к данным. Многоходовые деревья.
- •35. Методы доступа к данным. Сбалансированные деревья. Структура, правила следования. Основные свойства.
- •36. Операция вставки элемента в в-дерево. Проблема переполнения, методы решения. Пример.
- •37. Операция удаления элемента из в-дерева. Проблема антипереполнения. Методы решения. Пример
- •42. Индекс на основе битовых карт. Основные свойства.
- •43. Индекс на основе битовых карт. Структура листового блока. Операция добавления элемента.
- •44. Индекс на основе битовых карт. Операция обновления элемента. Блокировка записей.
- •45. Методы доступа к данным. Основные операции выполнения sql-выражения.
- •46. Методы доступа к данным. Типы соединений таблиц.
13. Язык определения данных в реляционной модели данных. Основные возможности. Примеры.
Язык DDL (Data Definition Language) - описательный язык, который позволяет описать и именовать сущности и атрибуты, необходимые для работы некоторого приложения, а также связи, имеющиеся между различными сущностями, кроме того, указать ограничения целостности и защиты.
Возможности:
Создание домена
Создание отношения
Определение ограничений целостности
Соответствие между компонентами реляционной модели данных (РМД) и реляционной базы данных (РБД):
Структурный компонент РМД |
Элемент РБД |
Домен |
Тип данных |
Отношение |
Таблица |
Атрибут |
Колонка таблицы |
Кортеж отношения |
Строка таблицы |
Ограничения целостности в реляционной базе данных
Тип ограничения целостности |
Представление в SQL |
Первичный ключ |
PRIMARY KEY |
Уникальность значения |
UNIQUE |
Обязательность значения |
NULL или NOT NULL |
Допустимость значения |
CHECK |
Ссылочные ограничения |
FOREIGN KEY |
Основные предложения DDL в SQL:
CREATE тип_объекта – создать соответствующий объект БД,
ALTER тип_объекта – изменить соответствующий объект БД,
DROP тип_объекта – удалить указанный объект БД.
Типы объектов: DATABASE, INDEX, TABLE, TRIGGER, VIEW, PROCEDURE и другие
Создание таблицы: CREATE TABLE имя_таблицы (
имя_колонки тип_данных ограничения_на_колонку,
табличное_ограничение,
)
Имя_колонки (имя_таблицы): любое имя (длина до 128 символов, символы A-Z a-z 0-9 _, должен начинаться с буквы, не должен содержать пробелы). Имя не чувствительно регистру, т.е. AbCdE то же самое, что ABCDE;
Тип_данных: тип данных, выбор зависит от конкретной СУБД (примеры: boolean, char, varchar, decimal, time, date, integer)
Ограничения_на_колонку:
CONSTRAINT - необязательное ключевое слово, указывающее на начало определения ограничения PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY или CHECK. CONTRAINT <name> просто позволяет задать ограничению имя. Но можно задавать и без него.
PRIMARY KEY – колонка является первичным ключом ;
NULL/NOT NULL – может быть пустой/не может быть пустой,
UNIQUE – значение колонки в каждой строке таблицы должно быть уникальным;
CHECK – проверка на допустимость, если указывается в колонке, то может быть использовано только имя колонки, если в рамках таблицы – то любые колонки в рамках таблицы. Не может ссылаться на другие таблицы.
FOREIGN KEY REFERENCES.. (рассмотрено ниже).
IDENTITY (для колонок) - создает в таблице столбец идентификаторов (автоинкрементер). Синтаксис: IDENTITY[(seed , increment) ]: seed – значение, присваиваемое самой первой строке, добавленной в таблицу; increment - Значение приращения, которое прибавляется к значению идентификатора предыдущей загруженной строки. Необходимо указывать либо оба аргумента (и seed, и increment), либо не указывать ни один из них .Если ничего не указано, применяются значения по умолчанию (1,1). Такой столбец может быть только один.
[WITH] DEFAULT - указывает значение, присваиваемое столбцу в случае отсутствия явно заданного значения при вставке. Определения DEFAULT могут применяться к любым столбцам, кроме имеющих тип timestamp или обладающих свойством IDENTITY. Если для столбца определяемого пользователем типа указано значение по умолчанию, этот тип должен поддерживать неявное преобразование выражения constant_expression в определяемый пользователем тип. Определения DEFAULT удаляются, когда таблица удаляется из памяти. В качестве значения по умолчанию могут использоваться только константы (например, символьные строки), скалярные функции (системные, определяемые пользователем или функции CLR) или значение NULL.
Ссылочное ограничение на колонку:
… REFERENCES родительская_таблица (имя_PK в родительской таблице) ON DELETE реакция ON UPDATE реакция
Табличное ссылочное ограничение:
FOREIGN KEY (список_колонок_таблицы) REFERENCES родительская_таблица (PK из родительской таблицы) ON DELETE реакция ON UPDATE реакция
Реакции:
RESTRICT (NO ACTION) – если в родительской таблице удаляется (обновляется) строка, которая связана с дочерней таблице, где указана эта реакция, то будет выдана ошибка, что существуют ссылки на дочерние таблицы;
CASCADE – при удалении (обновлении) записи в родительской таблице удаляются (обновляются) все записи в дочерних таблицах, которые связаны с удаляемой (обновляемой) строкой по внешнему ключу.
SET NULL – при удалении записи в родительской таблице: запись в родительской таблице удаляется, а значение колонки-внешнего_ключа дочерних таблиц, которые были с ней связаны, примут значение NULL. Для выполнения этого ограничения внешние ключевые столбцы должны допускать значения NULL.
Пояснение по реакциям. В базе данных AdventureWorks2012 таблица ProductVendor имеет ссылочную связь с таблицей Vendor. Внешний ключ ProductVendor.BusinessEntityID ссылается на первичный ключ Vendor.BusinessEntityID.
Если над строкой в таблице Vendor выполняется инструкция DELETE и для внешнего ключа ProductVendor.BusinessEntityID указано действие ON DELETE CASCADE, то компонент Database Engine проверит наличие одной или нескольких зависимых записей в таблице ProductVendor. Если такие существуют, то кроме строки в таблице Vendor будут удалены также и все зависимые строки из таблицы ProductVendor.
В противном случае, если задан параметр NO ACTION, компонент Database Engine выдает ошибку и производит откат операции по удалению строки из таблицы Vendor, если в таблице ProductVendor существует хотя бы одна строка, ссылающаяся на нее.
Пример создания связи из трёх таблиц:
CREATE
TABLE P(
P_ID INT NOT NULL CONSTRAINT P_PK PRIMARY KEY, --1
PNAME VARCHAR(20) NOT NULL CONSTRAINT P_UQ_01 UNIQUE,--2
PRICE DECIMAL(6,0) NOT NULL CONSTRAINT P_CH_01
CHECK(PRICE > 0) --3
);
CREATE TABLE S(
S_ID INT NOT NULL,
SNAME VARCHAR(30) NOT NULL,
ADDRESS VARCHAR(80),
CONSTRAINT S_PK PRIMARY KEY(S_ID) -- 4
);
CREATE TABLE SP(
S_ID INT NOT NULL CONSTRAINT SP_FK_01 REFERENCES S, --5
P_ID INT NOT NULL,
QTY INT NOT NULL CONSTRAINT SP_CH_01 CHECK(QTY > 0),
CONSTRAINT SP_PK PRIMARY KEY(S_ID, P_ID), --6
CONSTRAINT SP_FK_02 FOREIGN KEY(P_ID) REFERENCES P --7
);
1 – ограничения первичного ключа и обязательности значения;
2 – ограничения уникальности и обязательности значения;
3 – обязательность значения и условие: значение атрибута должно быть строго положительным.
4 – ограничения первичного ключа на таблицу;
5 – внешний ключ (ограничения на колонку)
6 – ограничение первичного ключа (ограничение на таблицу)
7 –определяется внешний ключ (ограничение на таблицу).
Удаление таблицы: DROP TABLE имя_таблицы. Нельзя удалить родительскую таблицу, если существует хотя бы одна связанная с ней дочерняя таблица. Пример DROP TABLE: drop table SP;
Изменение параметров таблицы: ALTER TABLE имя_таблицы операция [операция …]. Позволяет выполнить следующие действия:
вести новый столбец в таблицу: ADD [ COLUMN ] определение_колонки. определение_колонки тоже что и в CREATE TABLE. Пример: ALTER TABLE EQUIPMENT ADD COLUMN Equip_QTY SMALLINT NOT NULL WITH DEFAULT 1;
удалить столбец из таблицы: ADD [ COLUMN ] имя_колонки. Пример: ALTER TABLE EQUIPMENT DROP COLUMN Equip_QTY.;
ввести новое ограничение таблицы: ADD [CONSTRAINT имя_ограничения] ограничение. Ограничение задается точно так же, как и табличное ограничение в предложении CREATE TABLE. Пример: ALTER TABLE EMPLOYEE ADD CONSTRAINT Revenue CHECK(Salary + Comm > 30000);
удалить ограничение таблицы: DROP тип_ограничения имя_ограничения тип_ограничения: FOREIGN KEY, UNIQUE, CHECK, CONSTRAINT. Пример: ALTER TABLE EMPLOYEE DROP CONSTRAINT Revenue;
изменить характеристики столбцов: ALTER COLUMN имя_колонки тип_данных. Пример 1: ALTER TABLE EQUIPMENT ALTER COLUMN Equip_Desc VARCHAR(50) – изменится длина строки в колонке на 50;
удалить ограничение столбцов: ALTER COLUMN имя_колонки DROP ограничение. Пример: ALTER COLUMN имя_колонки DROP IDENTITY – удаляет для указанной колонки установленный для нее атрибут автоинкрементного значения.