
- •Классификация субд [5]
- •Функции субд
- •Централизованная архитектура
- •Технология с сетью и файловым сервером (архитектура «файл-сервер»)
- •Технология «клиент-сервер»
- •Трехзвенная (трехуровневая) архитектура
- •Реляционная модель данных
- •Методология idef1x
- •Определение отношения, домена, кортежа, реляционной базы данных, ключей
- •Связи между отношениями (таблицами)
- •Базовые теоретико-множественные операции реляционной алгебры
- •Специальные операции реляционной алгебры
- •Аномалии обновления
- •Первая Нормальная Форма
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •Вторая Нормальная Форма
- •Определение
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Реляционная модель данных: сравнение нормализованных и ненормализованных моделей.
- •16, Сравнение нормализованных и ненормализованных моделей
- •Null-значения
- •Потенциальные ключи
- •Целостность сущностей
- •Внешние ключи
- •Целостность внешних ключей
- •Замечания к правилам целостности сущностей и внешних ключей
- •Операции, которые могут нарушить ссылочную целостность
- •Для родительского отношения
- •Для дочернего отношения
- •20, Целостность реляционных данных: стратегии поддержания ссылочной целостности.
- •Стратегии поддержания ссылочной целостности
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Create table – создать таблицу
- •Оператор check
- •Определение первичных и альтернативных ключей с помощью оператора alter
- •Операторы drop
- •Выборка данных
- •Сортировка результатов
- •Встроенные функции sql
- •Средства модификации данных языка sql
- •Вставка данных – insert
- •Изменение данных – update
- •Удаление данных – delete
- •Выборка данных
- •Представления
- •Применение представлений
- •Обновление представлений
- •Триггеры
- •Хранимые процедуры
- •Большая безопасность и меньший сетевой трафик.
- •Sql можно оптимизировать
- •Совместное использование кода:
- •Структура памяти эвм
- •Представление экземпляра логической записи
- •Организация обмена между оперативной и внешней памятью
- •Структуры хранения данных во внешней памяти эвм
- •Назначение и проверка полномочий, проверка подлинности
- •Средства защиты базы данных
- •Архитектура системы безопасности ms sql Server
- •34.Роли сервера
- •35, Права доступа
- •36, Необходимость в атомарных транзакциях
- •П , Параллельная обработка транзакций
- •Проблема потерянного обновления
- •Блокировка ресурсов
- •Блокировочная терминология
- •Сериализуемые транзакции
- •Взаимная блокировка
- •Оптимистическая и пессимистическая блокировки
- •Объявление характеристик блокировки
- •Свойства транзакций
- •Атомарность
- •Долговечность или устойчивость
- •Согласованность
- •Изолированность транзакции. Уровни изоляции
- •Типы курсоров
Оператор check
Иногда может потребоваться ввести ограничения на значения столбца. Наиболее распространены два типа таких ограничений: диапазоны и перечисления.
Пример ограничения первого типа можно видеть в листинге 2, где столбец SalesPrice (продажная цена) должен иметь значение, превышающее 1000, но меньшее или равное 200 000.
Листинг 2
CONSTRAINT SalesPriceRange
CHECK ((SalesPrice > 1000) AND (SalesPrice <= 200000))
CONSTRAINT BirthValuesCheck
CHECK (BirthDate < DeceasedDate)
Ограничение второго типа имеет место в листинге 3. Здесь множество значений столбца Nationality (национальность) ограничивается только теми значениями, которые перечислены в скобках.
Листинг 3
CONSTRAINT NationalityValues
CHECK (Nationality IN
('Canadian', 'English', 'French', 'German',
'Mexican', 'Russian', 'Spanish', 'US'));
CONSTRAINT ValidBirthYear
CHECK (BirthDate LIKE '[l-2][0-9][0-9][0-9]');
Определение первичных и альтернативных ключей с помощью оператора alter
После того как таблица определена, ее структуру, свойства и ограничения можно изменить, используя оператор ALTER. В частности, с помощью этого оператора можно создавать первичные и альтернативные ключи.
Листинг 4. Добавление ограничений с помощью оператора ALTER
CREATE TABLE ПРОЕКТ
(ИдПроекта Integer Primary Key,
Название Char(25) Unique Not Null,
Отдел VarChar(l00) Null,
МаксТрудозатраты Numeric(6,1) Default 100);
CREATE TABLE СОТРУДНИК
(ТабельныйНомер Integer Not Null,
Имя Char(25)
Телефон Char(8),
Отдел VarChar(100));
ALTER TABLE СОТРУДНИК
ADD CONSTRAINT СотрудникПК PRIMARY KEY (ТабельныйНомер);
CREATE TABLE НАЗНАЧЕНИЕ
(ИдПроекта Integer Not Null,
НомерСотрудника Integer Not Null,
ФактТрудозатраты Numeric(5,2) Default 10,
CONSTRAINT НазначениеПК PRIMARY KEY (ИдПроекта, НомерСотрудника));
ALTER TABLE НАЗНАЧЕНИЕ
ADD CONSTRAINT СотрудникВК
FOREIGN KEY (НомерСотрудника) REFERENCES СОТРУДНИК(ТабельныйНомер)
ON UPDATE CASCADE
ON DELETE NO ACTION;
ALTER TABLE НАЗНАЧЕНИЕ
ADD CONSTRAINT ПроектВК
FOREIGN KEY (ИдПроекта) REFERENCES ПРОЕКТ(ИдПроекта)
ON UPDATE CASCADE
ON DELETE CASCADE;
Ограничения можно определять в теле оператора CREATE TABLE или добавлять после создания таблицы при помощи оператора ALTER. Некоторые формы определения ограничений позволяют разработчику давать ограничениям имена, а некоторые — нет. В последнем случае имя ограничению присваивает СУБД, и, как правило, это имя является длинным и не особенно осмысленным. Разработчику рекомендуется использовать те формы операторов CREATE TABLE и ALTER, которые всегда позволяют присваивать имена ограничениям. Кроме того, по возможности, ограничения будут определяться внутри оператора CREATE TABLE.
Также обратите внимание, что композитный ключ определяется путем перечисления имен атрибутов в скобках. Первичный ключ таблицы НАЗНАЧЕНИЕ представляет собой сочетание {ИдПроекта, НомерСотрудника}. Композитный первичный ключ не может быть определен с помощью того метода, который мы использовали для таблицы ПРОЕКТ.
Посредством оператора ALTER можно также определять внешние ключи (см. листинг 4). В предпоследнем операторе определено ограничение СотрудникВК. Это ограничение указывает, что столбец НомерСотрудника является внешним ключом, который указывает на столбец СОТРУДНИК.ТабельныйНомер. Имена первичного и внешнего ключей не обязательно должны совпадать.
В определении внешнего ключа можно указывать процедуры обеспечения ссылочной целостности при обновлении и удалении. По по умолчанию изменение первичного ключа строки не допускается, если у нее имеются потомки, и при тех же условиях не допускается удаление строки.
Процедуры обеспечения ссылочной целостности определяются с помощью выражений ON UPDATE (при обновлении) и ON DELETE (при удалении). Например, Для ограничения СотрудникВК в листинге 4 предписывается при обновлении родителя выполнить каскадное обновление (ON UPDATE CASCADE), а при удалении — не предпринимать никаких действий (ON DELETE NO ACTION). Последнее указывать не обязательно, поскольку по умолчанию задается как раз NO ACTION. Но режим существует и его можно использовать для целей документирования.
Листинг 5. Еще один способ определения ограничений
CREATE TABLE ПРОЕКТ
(ИдПроекта Integer Primary Key,
Название Char(25) Unique Not Null,
Отдел VarChar(l00) Null,
МаксТрудозатраты Numeric(6,1) Default 100);
CREATE TABLE СОТРУДНИК
(ТабельныйНомер Integer Not Null,
Имя Char(25),
Телефон Char(8),
Отдел VarChar(100),
CONSTRANT СотрудникПК Primary Key(ТабельныйНомер));
CREATE TABLE НАЗНАЧЕНИЕ
(ИдПроекта Integer Not Null,
FOREIGN KEY REFERENCES ПРОЕКТ(ИдПроекта),
НомерСотрудника Integer Not Null,
ФактТрудозатраты Numeric(5,2) Default 10,
CONSTRAINT НазначениеПК PRIMARY KEY (ИдПроекта, НомерСотрудника)
FOREIGN KEY (НомерСотрудника) REFERENCES
СОТРУДНИК(ТабельныйНомер));