- •Базы данных
- •Введение
- •Часть 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.5. Пользовательские типы данных
Объединяя переменные нескольких различных типов, можно создавать пользовательские типы данных.
Пользовательские типы полезны, когда требуется создать единственную переменную, которая должна хранить несколько связанных порций информации.
Пользовательский тип создается инструкцией Type, которая должна быть помещена в раздел Описания модуля. Пользовательские типы данных с соответствующим ключевым словом могут быть объявлены как Private или Public. Например:
Private Type DataTypel
или
Public Type DataType2
В примере ниже создается пользовательский тип, предназначенный для хранения информации относительно компьютерной системы:
' Объявление в разделе Описания
Private Type SystemInfo
CPU As Variant
Memory As Long
Disk As Long
VideoColor As Integer
Cena As Currency
MadeDate As Variant
End Type
Объявление переменных пользовательского типа. Переменные одного пользовательского типа можно объявлять как локальные, уровня модуля private или уровня модуля public:
Dim MySystem As SystemInfo, YourSystem As SystemInfo
В следующей таблице иллюстрируется, где и с какой областью определения можно объявлять пользовательские типы и переменные этих типов:
Процедура / модуль |
Можно создать пользовательский тип как...
|
Переменные пользовательского типа могут быть объявлены ... |
Процедуры |
Нельзя |
Только локально |
Стандартные модули |
Private или Public |
Private или Public |
Модули форм и отчетов |
Только Private |
Только Private |
Модули классов |
Только Private |
Только Private |
Присвоение и получение значений. Присвоение и отбор значений из элементов таких переменных выполняется аналогично установке и получению значений свойств объектов:
MySystem.CPU = "485"
If MySystem.MadeDate < #1/1/95# Then
Одну переменную можно также присвоить другой, если обе они — одного пользовательского типа. При этом значения всех элементов одной переменной присваиваются соответствующим элементам другой переменной.
YourSystem = MySystem
Пользовательские типы, содержащие массивы. Пользовательский тип может содержать обычный массив (фиксированного размера). Например:
Type SystemInfo
CPU As Variant
Memory As Long
DiskDrives (5) As String ' Массив фиксированного размера
VideoColor As Integer
Cena As Currency
MadeDate As Variant
End Type
Он может также содержать динамический массив:
Type SystemInfo
CPU As Variant
Memory As Long
DiskDrivesO As String ' Динамический массив
VideoColor As Integer
Cena As Currency
MadeDate As Variant
End Type
Обращение к значениям массива внутри пользовательского типа выполняется аналогично обращению к свойству объекта:
Dim MySystem As SystemInfo
ReDim MySystem.DiskDrives (3)
MySystem.DiskDrives(0) = 1.44 MB"
Можно также объявить массив пользовательских типов:
Dim AllSystems(100) As SystemInfo
Следуя тем же правилам, можно обратиться к компонентам такой структуры данных:
AllSystems(5).CPU = "485DX"
AllSystems(5).DiskDrives(2) = "530M SCSI"
Передача пользовательских типов в процедуры. Переменные пользовательского типа можно использовать в качестве параметров и значений процедур — можно либо возвращать пользовательские типы из функций, либо передавать переменную пользовательского типа в процедуру как параметр. Пользовательские типы всегда передаются по ссылке, так что процедура может изменять параметр и возвращать его в вызывающую процедуру, как иллюстрируется в следующем примере:
Sub FillSystem (System1 As SystemInfo)
Sysiem1.CPU = ПолеПроцессор.Text
System1.Memory = ПолеПамять.Text
Sysiem1.Cena = ПолеЦена.Text
System1 .MadeDate = Now
End Sub
Если требуется передать пользовательский тип в модуле класса или формы, процедура должна быть private.
Пользовательские типы, содержащие объекты. Пользовательские типы могут также содержать объекты:
Private Type SchetVvod
frmInput as Form
dbSchet as Database
End Type
Вложение структур данных. С помощью вложения структур можно организовывать иерархии данных. Пользовательские типы могут содержать другие пользовательские типы. Чтобы текст кода был более читабельным и простым в отладке, нужно стараться весь код, который определяет пользовательские типы данных, размещать в одном модуле.