Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по Б/Д.doc
Скачиваний:
18
Добавлен:
25.04.2019
Размер:
389.63 Кб
Скачать

Неформальные методы приведения таблиц к третьей нормальной форме

  1. Определить таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа (н-р, товары, поставщики, накладные).

  2. Если в таблице появляются поля, содержащие аналогичные данные, необходимо её разделить.

  3. Не заполнять в таблице данные, которые могут быть вычислены.

  4. Необходимо как можно больше использовать вспомогательные таблицы.

Операции в бд (vba) Операции над отношениями/таблицами

  1. Операции создания таблицы/отношения

    1. Имя таблицы,

    2. Создание коллекции полей (значение имён полей, их типов, длины и пр.) Создание таблицы программно: 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 filtb.Fields.Refresh – сохранение изменений в таблице db.tableDefs.Append tb – добавление таблицы в БД в конец коллекции Set tb = Nothing – освобождение памяти

  2. Операция создания индекса. 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

  3. Открытие таблицы с помощью команды DoCmd, в которой хранятся все макрокоманды. DoCmd.OpenTable “ct”, acViewDesign – открытие таблицы в режиме конструктора

  4. Открытие индекса.

  5. Операция выбора таблицы (SetFocus).

  6. Выбор источника данных для формы. Me.RecordSource = “ct”

  7. Закрытие таблицы. Может происходить без сохранения и с сохранением (операция Close с параметрами; операция Update).

  8. Удаление таблицы. db.TableDefs.Deletect

  9. Удаление индекса.

Операции над записями

При запуске приложения создаётся копия таблицы, которая называется RecordSet. Именно с ней и происходит взаимодействие при работе с базой данных через форму. После внесения изменений сохранения вносятся в базовую таблицу. Для перемещения по записям существуют следующие команды:

Me.RecordSet.MoveFirst – перемещается на первую запись;

Me.RecordSet.MoveLast – перемещает текущую запись на последнюю;

Me.RecordSet.MoveNext – перемещает текущую запись на следующую позицию;

Me.RecordSet.MovePreviewперемещает текущую запись на предыдущую позицию.

Для того чтобы перемещения не были видны на экране (в MS Access), необходимо все действия производить через RecordSetClone.

Операции над записями:

  1. Функция EOF принимает значение Истина только тогда, когда указатель находится после последней записи.

  2. Функция BOF принимает значение Истина только тогда, когда указатель находится перед первой записью.

  3. Модификация записей. Выполняется в 2 этапа:

    1. изменение значения поля;

    2. сохранение записи (Update).

  4. Добавление новой записи. Add – добавляет запись в то место, где стоит указатель; AddNew – добавляет запись в конец БД.

  5. Удаление. При выполнении команды Delete запись помечается к удалению.

  6. Операции поиска

    1. Операции поиска по индексированной таблице – seek один параметр.

    2. Операции поиска по неиндексированной таблице – find.

Чтобы использовать операцию seek, необходимо индексировать поле. Активным может быть только один индекс. Существуют также функции FindNext, которая возвращает следующее значение, удовлетворяющее условию. Н-р, Me.RecordSet.FindFirst “Товар = Хлеб’”.

  1. Переход по записям. Может осуществляться с помощью команды/макроса: DoCmd.GoToRecord, , acNext; RecordSet.MoveNext.

  2. Изменение значения. Редактирование значения (пример): Me.Recordset.Edit Me.Recordset.Fields(1) = Me.Поле1.Value (значение Value доступно, если элемент активен) Me.Recordset.Update

  3. Добавление записей. Me.Recordset.AddNew Me.Recordset.Fields(1) = “Значение” Me.Recordset.Update

SQL

SQL (Structured Query Language) – структурный язык запросов. Он поваляет создавать и работать с реляционными базами данных.

Этот язык является директивным, т.е. пользователь должен указать какой результат его интересует, а не то, каким образом он будет получен (например, пользователь может указать какие данные необходимо ему получить из БД, а не способ их получения). Преимущества этого языка: наглядность и лёгкость восприятия, т.к. каждая программа – это один оператор. Недостаток заключается в том, что нельзя получить промежуточные данные и контролировать процесс выполнения программы.

Существует множество диалектов языка и стандартный язык. Первоначально язык разработан фирмой IBM, но большой вклад внесла фирма ORACLE. Мы рассмотрим стандарт и его отличие применительно к ACCESS и ядру базы данных Microsoft Jet.

Существует два вида SQL.

  1. Интерактивный, применяемый для выполнения действий непосредственно над базой с целью получить результат, который используется непосредственно человеком.

  2. Встроенный язык, который используется в языках программирования для получения данных для дальнейшей обработки. Результаты записываются в переменные.

Весь язык делится на 3 секции (раздела)

  1. Секция определения данных (DATA DIFINITION LANGUAGE) DDL предназначена для создания таблиц и индексов в стандарте ANSI язык определения схемы SDL.

  2. Секция манипулирования данными DML.

  3. Секция управления данными DCL.