- •Базы данных
- •Введение
- •Часть 1. Проектирование баз данных
- •1.1. Некоторые понятия и определения
- •1. 2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель данных
- •1.2.3. Реляционная модель данных Основные определения
- •Типы связей между отношениями
- •1.3. Классификация баз данных
- •1.4. Цели проектирования баз данных
- •1.5. Проектирование баз данных с использованием универсального отношения
- •1.5.1. Универсальное отношение
- •1.5.2. Проблемы, вызываемые использованием универсального отношения
- •Проблема вставки
- •Проблемы обновления
- •Проблемы удаления
- •1.5.3. Нормальная форма Бойса -Кодда
- •Функциональные зависимости
- •Возможный ключ и детерминант
- •Общий подход к декомпозиции
- •Анализ исходных аномалий
- •1.5.4. Возможные потери фз при декомпозиции
- •1.5.5. Избыточные функциональные зависимости
- •Приемы удаления избыточных фз
- •Минимальное покрытие
- •Модернизированный алгоритм проектирования бд
- •1.5. Метод er - проектирования
- •1.5.1. Сущности и связи
- •1.5.2. Степень связи
- •1.5.3. Переход от диаграмм er – типа к отношениям
- •Предварительные отношения для бинарных связей степени 1:1
- •Предварительные отношения для бинарных связей степени 1:n.
- •Предварительные отношения для бинарных связей степени n:m
- •1.5.4. Дополнительные конструкции, используемые в er - методе
- •Необходимость связей более высокого порядка
- •Предварительные отношения для трехсторонних связей
- •Использование ролей
- •1.5.5. Последовательность проектирования бд при использовании er- метода
- •1.5.5. Проверка отношений на завершающейся фазе проектирования
- •1.7. Другие нормальные формы
- •Часть 2. Специальные аспекты работы с базами данных
- •2.1. Защита данных в базе
- •2.2.1. Общие вопросы защиты данных
- •2.2.2. Реализация защиты данных в различных системах
- •Управление доступом в sql
- •Реализация системы защиты в ms sql Server
- •2.2. Обеспечение целостности данных
- •2.3. Организация параллельных процессов обработки данных
- •2.4. Восстановление бд
- •2.4.1. Уровни восстановления.
- •2.4.2. Восстановление и логический элемент работы
- •Требования к лэр
- •2.4.3. Промежуточное восстановление
- •2.4.4. Длительное восстановление
- •2.5. Математический аппарат, используемый при работе с реляционной базой данных
- •2.5.1. Теоретико-множественные операции реляционной алгебры
- •2.5.2. Специальные операции реляционной алгебры
- •Часть 3. Разработка приложений для работы с базами данных
- •3.1. Краткий обзор субд
- •3.2. Субд Access
- •3.2.1. Вводные замечания
- •3.2.2. Создание базы данных
- •3.2.3. Создание и работа с таблицами
- •3.2.4. Работа с запросами
- •3.2.5. Создание форм
- •3.2.5. Отчеты в Access
- •3.2.7. Макросы в Access
- •Преобразование макросов в программы на Visual Basic
- •3.2.8. Работа с внешними данными
- •3.3. Программирование в Access
- •3.3.1. Вводные замечания
- •3.3.2. Объявление переменных
- •3.3.3. Константы
- •3.3.4. Тип данных Variant
- •3.3.5. Пользовательские типы данных
- •3.3.5.Операторы, команды и выражения в vba
- •3.3.7. Процедуры vba
- •3.3.8. Управляющие структуры в vba
- •Работа с управляющими структурами
- •3.3.9. Объекты в Access
- •3.3.10. Классы в Access
- •3.3.11. Работа с ошибками в vba
- •3.4.Работа в ms sql –Server
- •3.4.1. Основные количественные показатели системы sql-сервер
- •3.4.2. Создание баз данных
- •3.4.3. Создание таблицы
- •3.4.4. Извлечение данных
- •3.4.5. Добавление данных
- •3.4.5. Изменение данных
- •3.4.7. Удаление данных
- •Цитированная литература
- •Оглавление
- •Часть 1. Проектирование баз данных 3
- •Часть 2. Специальные аспекты работы с базами данных 70
- •Часть 3. Разработка приложений для работы с базами данных 113
3.3.4. Тип данных Variant
Переменная Variant способна хранить все определенные системой типы данных. Выполнять преобразования между этими типами данных нет необходимости — при взаимных присвоениях переменных Variant Visual Basic автоматически выполняет любое необходимое преобразование. Например:
Dim VarVariant ' Variant по умолчанию
VarVariant = "20" ' VarVariant содержит "20" (двухсимвольная строка).
VarVariant = VarVariant + 77 ' VarVariant теперь содержит числовое значение 97
VarVariant = "Access " & VarVariant ' VarVariant теперь содержит ' "Access 97" (строка)
Хотя с переменными Variant можно выполнять операции, не задумываясь о виде данных, который они содержат, с этим типом данных связаны некоторые нюансы, которые следует всегда иметь в виду:
• при выполнении с данными Variant арифметических операций или функций, переменные Variant должны содержать нечто, что может интерпретироваться как число;
• при сцеплении строк нужно использовать операцию & вместо операции +.
В дополнение к способности работать подобно другим стандартным типам данных переменные Variant могут также содержать четыре специальных значения: Empty, Null, Nothing и Error.
Значение Empty. Иногда требуется узнать, было ли переменной когда-либо присвоено значение. До присвоения значений переменная Variant имеет значение Empty — специальное значение, отличное от 0, строки нулевой длины ("") или значения Null. Протестировать переменную на значение Empty можно функцией IsEmpty:
If IsEmpty(Z) Then Z = 0
Когда Variant содержит значение Empty, его можно использовать в выражениях; в зависимости от выражения это значение обрабатывается либо как 0, либо как строка нулевой длины.
Значение Empty исчезает, как только переменной Variant присвоено любое значение (включая 0, нулевую строку или Null). Установить переменную Variant обратно в Empty можно присвоением переменной ключевого слова Empty.
Значение Null. Тип данных Variant может содержать другое специальное значение: Null. Null обычно используется в приложениях базы данных для обозначения неизвестных или отсутствующих данных. Из-за способа его использования в базах данных значение Null имеет некоторые специфические особенности:
• выражения, включающие Null, всегда возвращают Null. Таким образом, Null, как говорят, "размножается" по выражению; если часть выражения оценивается как Null, все выражение оценивается как Null;
• при передаче Null, Variant, содержащего Null, или выражения, которое оценивается как Null, в качестве параметра функций большинство функций возвращает Null;
• значения Null размножаются через встроенные функции, которые возвращают тип данного Variant.
Присвоить Null можно ключевым словом Null:
Z = Null
Для выяснения, содержит ли Null переменная Variant, используется функция IsNull:
If IsNull(X) And IsNull(Y) Then
Z = Null
Else
Z = 0
End If
При попытке присвоить Null переменной любого типа, отличного от Variant, происходит ошибка периода выполнения.
Переменные не получают значение Null помимо явного присвоения, поэтому, если в приложении Null не используется, вводить код для проверки и управления этим значением нет необходимости.
Значение Error. Error в переменных Variant— специальное значение, используемое для индикации того, что в процедуре имеет место условие ошибки. Однако, в отличие от других видов ошибок, нормальная обработка ошибок уровня приложения в данном случае не происходит. Это дает разработчику в работе с ошибками дополнительные возможности. Значения Error создаются с помощью функции CVErr преобразованием вещественных чисел к значениям ошибок.
Функция CVErr используется, в частности, для создания пользовательских ошибок в пользовательских процедурах. Например, пусть имеется функция, которая принимает несколько параметров и нормально возвращает строковое значение, если входные параметры попадают в некоторый интервал значений. Если это не так, то, вероятно, функция не вернет нормальный результат. В этом случае с помощью CVErr можно вернуть некоторый пользовательский номер ошибки.
Специальное значение Nothing используется при работе с объектами, о чем речь ниже.