
- •Классификация субд [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, Необходимость в атомарных транзакциях
- •П , Параллельная обработка транзакций
- •Проблема потерянного обновления
- •Блокировка ресурсов
- •Блокировочная терминология
- •Сериализуемые транзакции
- •Взаимная блокировка
- •Оптимистическая и пессимистическая блокировки
- •Объявление характеристик блокировки
- •Свойства транзакций
- •Атомарность
- •Долговечность или устойчивость
- •Согласованность
- •Изолированность транзакции. Уровни изоляции
- •Типы курсоров
Для дочернего отношения
Вставка кортежа в дочернее отношение. Нельзя вставить кортеж в дочернее отношение, если вставляемое значение внешнего ключа некорректно. Вставка кортежа в дочернее отношение может привести к нарушению ссылочной целостности.
Обновление кортежа в дочернем отношении. При обновлении кортежа в дочернем отношении можно попытаться некорректно изменить значение внешнего ключа. Обновление кортежа в дочернем отношении может привести к нарушению ссылочной целостности.
Удаление кортежа в дочернем отношении. При удалении кортежа в дочернем отношении ссылочная целостность не нарушается.
Таким образом, ссылочная целостность в принципе может быть нарушена при выполнении одной из четырех операций:
Обновление кортежа в родительском отношении.
Удаление кортежа в родительском отношении.
Вставка кортежа в дочернее отношение.
Обновление кортежа в дочернем отношении.
20, Целостность реляционных данных: стратегии поддержания ссылочной целостности.
Стратегии поддержания ссылочной целостности
Существуют две основные стратегии поддержания ссылочной целостности.
RESTRICT (ОГРАНИЧИТЬ) – не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Это самая простая стратегия, требующая только проверки, имеются ли кортежи в дочернем отношении, связанные с некоторым кортежем в родительском отношении.
CASCADE (КАСКАДИРОВАТЬ) – разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочернее отношение само может быть родительским для некоторого третьего отношения. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это самая сложная стратегия, но она хороша тем, что при этом не нарушается связь между кортежами родительского и дочернего отношений.
Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности.
21, ОСНОВЫ ЯЗЫКА SQL: СИНТАКСИС ОПЕРАТОРОВ ОПРЕДЕЛЕНИЯ ОБЪЕКТОВ БАЗЫ ДАННЫХ (CREATE TABLE, ALTER TABLE, DROP TABLE).
Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
Create table – создать таблицу
Оператор CREATE TABLE служит для создания отношений.
Иногда вместе с оператором CREATE TABLE используется оператор ALTER для указания первичных и вторичных ключей.
Листинг 1
CREATE TABLE ПРОЕКТ
(ИдПроекта Integer Primary Key,
Название Char(25) Unique Not Null,
Отдел VarChar(l00) Null,
МаксТрудозатраты Numeric(6,1) Default 100);
В листинге 1 столбец ИдПроекта принадлежит к типу данных Integer (целочисленный) и имеет свойство Primary Key. Следующий столбец, Название, имеет тип данных Character (строковый) с максимальной длиной 25 символов. Поскольку этот столбец является альтернативным ключом, в его определение были добавлены ключевые слова Unique Not NulL Они означают, что значения столбца Название являются уникальными в таблице ПРОЕКТ и что этот столбец обязан иметь значение.
В SQL первичные ключи ни при каких условиях не могут иметь пустых значений. Именно поэтому для столбца ИдПроекта можно просто указать свойство Primary Key, не уточняя, что он не должен быть пустым (Not Null). Ключевые слова Primary Key сами по себе уже говорят, что столбец ИдПроекта не будет иметь пустых значений. Для уникальных столбцов, однако, пустые значения возможны. Если бы столбец Название был определен просто как Unique, без ключевых слов Not Null, он мог бы иметь пустые значения. В данном случае это неприемлемо, поскольку столбец Название является альтернативным ключом.
Третий столбец, Отдел, принадлежит к типу данных VarChar(l00) и имеет свойство Null. VarChar обозначает строку переменной длины. Таким образом, в разных строках значения столбца Отдел могут различаться по длине, и максимально возможная длина строки равна 100 символам. Ключевое слово Null указывает на то, что пустые значения допустимы.
Значения типа Char имеют фиксированную длину. Если столбец Название определен как Char(25), это означает, что каждое значение столбца Название будет храниться в виде строки длиной 25 символов, независимо от того, какова реальная длина названия проекта. При необходимости имена будут дополняться пробелами до 25 символов. Значения типа VarChar могут иметь разную длину. Если название отдела состоит всего из четырех символов, то только эти четыре символа и будут храниться в столбце Отдел.
Зная об этом преимуществе типа VarChar, почему бы не пользоваться им все время? Дело в том, что обработка столбцов типа VarChar занимает больше времени. Для хранения длины строки требуется несколько дополнительных байтов, и чтобы организовать хранение значений с переменной длиной в памяти и на диске, СУБД приходится идти на ряд ухищрений. Поставщики СУБД обычно дают указания по поводу того, в каких случаях какой тип данных следует использовать. Эти указания вы можете найти в документации на используемую вами СУБД.
Четвертый столбец таблицы ПРОЕКТ, максТрудозатраты, имеет тип данных Numeric(6,l). Это означает число из шести цифр с одной цифрой после десятичной точки. (Десятичная точка не хранится и поэтому не считается за цифру.) Так, например, хранимое в этом столбце значение 123456 будет отображаться СУБД в виде 12345.6. По умолчанию, поскольку не указано иного, столбцу Мак Трудозатраты присваивается свойство Null. Запись Default 100 указывает, что при создании новой строки в таблице ПРОЕКТ столбцу МаксТрудозатраты необходимо присвоить начальное значение, равное 100.
Каждый столбец описывается тремя характеристиками: именем, типом данных и необязательными ограничениями. Есть пять типов ограничений:
PRIMARY KEY,
UNIQUE,
NULL/NOT NULL (по умолчанию подразумевается ограничение NULL),
FOREIGN KEY,
CHECK.
Первичные ключи ни при каких условиях не могут иметь пустых значений, и ограничение PRIMARY KEY включает в себя ограничение NOT NULL.
Столбцы с ограничением UNIQUE могут иметь пустые значения. Если столбец должен быть и уникальным, но непустым, необходимо явно указывать оба ограничения.
Стандартными типами данных являются Char, VarChar, Integer и Numeric; кроме них, существуют другие типы данных, специфичные для конкретных СУБД. Тип VarChar позволяет хранить строки переменной длины, но они требуют дополнительной обработки по сравнению со строками фиксированной длины (тип Char).
Для задания значения по умолчанию используется оператор Default «значение по умолчанию».
В таблице 4 перечислены некоторые дополнительные типы данных, используемые в Microsoft SQ1 Server. таблица 4. Типы данных, поддерживаемых в СУБД Microsoft SQL
Тип данных |
Описание |
Binary |
Массив двоичных данных, длина от 0 до 8000 байт |
Char |
Массив символьных данных, длина от 0 до 8000 байт |
Datetime |
Дата и время длиной 8 байт. Диапазон: от 1 января 1753 года до 31 декабря 9999 года, с точностью до трех сотых секунды |
Decimal |
Десятичное число, можно задавать точность и масштаб. Диапазон: от-1038 + 1 до 10-38 |
Float |
Число с плавающей точкой длиной 8 байт. Диапазон значений: от -1.79Е+308 до 1.79Е+308 |
Image |
Массив двоичных данных переменной длины. Максимальная длина 2 147 483 647 байт |
Int |
4-байтовое целое число. Диапазон значений: от -2 147 483 648 до+2 147 483 647 |
Money |
Денежная сумма, длина 8 байт. Диапазон: от -922337203685477.5808 до +922337203685477.5807 |
Numeric |
To же, что и Decimal |
Real |
4-байтовое число с плавающей точкой. Диапазон значений: от -3.40Е+38 до +3.40Е+38 |
Smalldatetime |
Дата и время длиной 4 байт. Диапазон: от 1 января 1900 года до 6 июня 2079 года, с точностью до одной минуты |
Smallint |
2-байтовое целое число. Диапазон: от -32 768 до 32 767 |
Smallmoney |
Денежная сумма, длина 4 байт. Диапазон: от -214748.3648 до +214748.3647, с точностью до одной десятитысячной денежной единицы |
Text |
Текст переменной длины, максимальная длина 2 147 483 647 символов |
Tinyint |
1-байтовое целое. Диапазон: от 0 до 255 |
Varchar |
Массив символьных данных переменной длины, длина от 0 до 8000 байт |