
- •Введение в курс “Базы данных”
- •Классификация бд по способу хранения данных
- •Факультет
- •Классификация бд по их использованию
- •Реляционные бд (ms Access)
- •Типы полей в реляционных бд
- •Связи между таблицами
- •Поддержка целостности данных
- •Нормализация бд
- •Неформальные методы приведения таблиц к третьей нормальной форме
- •Операции в бд (vba) Операции над отношениями/таблицами
- •Операции над записями
- •Типы данных используемых в sql
- •Операторы манипулирования данными Оператор Select
- •Группировка
- •Объединение таблиц
- •Параметры
- •Перекрёстные запросы
- •Обновление данных (запрос Update)
- •Удаление данных (запрос Delete)
- •Подчинённые запросы
- •Создание таблиц
- •Добавление новых полей
- •Технология разработки программного обеспечения, использующего базы данных
- •Доступ к данным в Visual Basic 6.0
- •Работа с записями
- •Создание многоуровневых приложений
- •Д Fill оступ к данным в c# (Visual Studio 2005)
- •Создание отчётов
- •Olap технологии. Xml язык
- •Клиент-серверные системы
- •Триггер
- •Программирование триггера
Неформальные методы приведения таблиц к третьей нормальной форме
Определить таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа (н-р, товары, поставщики, накладные).
Если в таблице появляются поля, содержащие аналогичные данные, необходимо её разделить.
Не заполнять в таблице данные, которые могут быть вычислены.
Необходимо как можно больше использовать вспомогательные таблицы.
Операции в бд (vba) Операции над отношениями/таблицами
Операции создания таблицы/отношения
Имя таблицы,
Создание коллекции полей (значение имён полей, их типов, длины и пр.) Создание таблицы программно: Dim db as Database Dim tb as Tabledef Dim fil as Field Set db = CurrentDb – присоединение объекта к открытой БД Set tb = db.CreateTableDef(“ct”) – создание таблицы Set fil = tb.Createfield(“имяПоля”, dbtext, 40) – создание текстового поля длиной 40 tb.fields.Append fil – добавление в конец таблицы созданного поля Set fil = tb.Createfield(“код”, dblong) fil.attributes = dbAutoIncrement tb.fields.Append fil … tb.Fields.Refresh – сохранение изменений в таблице db.tableDefs.Append tb – добавление таблицы в БД в конец коллекции Set tb = Nothing – освобождение памяти
Операция создания индекса. Dim ind as Index Set db = CurrentDb set tb = db.TableDefs(“ct”) Set ind = tb.CreateIndex(“ind1”) – создание индекса ind.Primary = true – делаем индекс первичным Set fil = ind.CreateField(“код”,dbLong) – создаём поле индекса ind.Fields.Append fil tb.Indexes.Append ind tb.Indexes.Refresh
Открытие таблицы с помощью команды DoCmd, в которой хранятся все макрокоманды. DoCmd.OpenTable “ct”, acViewDesign – открытие таблицы в режиме конструктора
Открытие индекса.
Операция выбора таблицы (SetFocus).
Выбор источника данных для формы. Me.RecordSource = “ct”
Закрытие таблицы. Может происходить без сохранения и с сохранением (операция Close с параметрами; операция Update).
Удаление таблицы. db.TableDefs.Delete “ct”
Удаление индекса.
Операции над записями
При запуске приложения создаётся копия таблицы, которая называется RecordSet. Именно с ней и происходит взаимодействие при работе с базой данных через форму. После внесения изменений сохранения вносятся в базовую таблицу. Для перемещения по записям существуют следующие команды:
Me.RecordSet.MoveFirst – перемещается на первую запись;
Me.RecordSet.MoveLast – перемещает текущую запись на последнюю;
Me.RecordSet.MoveNext – перемещает текущую запись на следующую позицию;
Me.RecordSet.MovePreview – перемещает текущую запись на предыдущую позицию.
Для того чтобы перемещения не были видны на экране (в MS Access), необходимо все действия производить через RecordSetClone.
Операции над записями:
Функция EOF принимает значение Истина только тогда, когда указатель находится после последней записи.
Функция BOF принимает значение Истина только тогда, когда указатель находится перед первой записью.
Модификация записей. Выполняется в 2 этапа:
изменение значения поля;
сохранение записи (Update).
Добавление новой записи. Add – добавляет запись в то место, где стоит указатель; AddNew – добавляет запись в конец БД.
Удаление. При выполнении команды Delete запись помечается к удалению.
Операции поиска
Операции поиска по индексированной таблице – seek один параметр.
Операции поиска по неиндексированной таблице – find.
Чтобы использовать операцию seek, необходимо индексировать поле. Активным может быть только один индекс. Существуют также функции FindNext, которая возвращает следующее значение, удовлетворяющее условию. Н-р, Me.RecordSet.FindFirst “Товар = ‘Хлеб’”.
Переход по записям. Может осуществляться с помощью команды/макроса: DoCmd.GoToRecord, , acNext; RecordSet.MoveNext.
Изменение значения. Редактирование значения (пример): Me.Recordset.Edit Me.Recordset.Fields(1) = Me.Поле1.Value (значение Value доступно, если элемент активен) Me.Recordset.Update
Добавление записей. Me.Recordset.AddNew Me.Recordset.Fields(1) = “Значение” Me.Recordset.Update
SQL
SQL (Structured Query Language) – структурный язык запросов. Он поваляет создавать и работать с реляционными базами данных.
Этот язык является директивным, т.е. пользователь должен указать какой результат его интересует, а не то, каким образом он будет получен (например, пользователь может указать какие данные необходимо ему получить из БД, а не способ их получения). Преимущества этого языка: наглядность и лёгкость восприятия, т.к. каждая программа – это один оператор. Недостаток заключается в том, что нельзя получить промежуточные данные и контролировать процесс выполнения программы.
Существует множество диалектов языка и стандартный язык. Первоначально язык разработан фирмой IBM, но большой вклад внесла фирма ORACLE. Мы рассмотрим стандарт и его отличие применительно к ACCESS и ядру базы данных Microsoft Jet.
Существует два вида SQL.
Интерактивный, применяемый для выполнения действий непосредственно над базой с целью получить результат, который используется непосредственно человеком.
Встроенный язык, который используется в языках программирования для получения данных для дальнейшей обработки. Результаты записываются в переменные.
Весь язык делится на 3 секции (раздела)
Секция определения данных (DATA DIFINITION LANGUAGE) DDL предназначена для создания таблиц и индексов в стандарте ANSI язык определения схемы SDL.
Секция манипулирования данными DML.
Секция управления данными DCL.