Смекни!
smekni.com

Програмирование на Visual Basic (стр. 26 из 30)

Для правильной организации данных в таблицы используется понятие нормализации. Нормализация данных — процесс исключения избыточной информации, при которой достигается то что каждый элемент информации запоминается только один раз. Теория и практические рекомендации по нормализации рассматриваются в книгах по реляционным базам данных.

Связь между таблицами реализуется с использованием ключей данных. Ключи обычно называют первичными и внешними ключами. Первичный ключ однозначно определяет запись в таблице (в таблице поставщиков таким первичным ключом является номер поставщика) и должен быть уникальным. Внешним ключом является ключ, используемый для связи с первичным ключом другой таблицы (в таблице поставок такими внешними ключами являются номер поставщика и номер детали, которые используются для связи с другими таблицами). Таблицы связываются между собой с помощью ключевых полей.

Ключевое поле может иметь содержательный смысл (например, фамилия, но в этом случае фамилии не могут повторяться) или полем, которое служит специальной цели обеспечения уникальности записи (например, номер поставщика или счетчик для первичного ключа). Поле счетчика является целочисленным полем, которое автоматически увеличивается на единицу системой управления базами данных, когда добавляется новая запись. При этом механизм создания уникальных полей перекладывается на систему.

Приведенные таблицы являются исходными (базовыми) для задания данных и связей между ними. Такие таблицы физически существуют в памяти ЭВМ, хотя их вид необязательно соответствует приведенному (физическое представление данных, т.е. то, как данные реально хранятся на носителях данных, отличается от их логического представления в виде рассмотренных таблиц и зависит от типа ЭВМ и носителя данных).

Кроме того, на основе базовых таблиц могут быть созданы производные от них или представления. Например, таблица поставщиков деталей в количестве больше 200 имеет вид:

Номер поставщика Номер детали
si Pi
si P3
s2 pi
s2 ?2
s4 P4
s4 ?5

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

В результате информационного запроса (query) к реляционной базе данных также получается некоторая таблица, которая является представлением существующих данных. Заложенные в исходных таблицах отношения позволяют конструировать различные логические представления данных. В частности приведенная таблица является результатом запроса о поставщиках и деталях, поставляемых в количестве более 200.

Для более эффективной работы с реляционной базой данных (повышение скорости получения информации и модификации данных) используется индексирование (аналогично рассмотренному индексированию записей файла). Индекс создается для одного или нескольких заданных столбцов таблицы (для одной таблицы и группы столбцов может быть создано несколько индексов) и для заданного упорядочения (например, по убыванию) и автоматически поддерживается средствами СУБД при изменении информации. Для приведенных таблиц могут быть, например, созданы индексы по столбцу “Номер поставщика” таблицы поставщиков, по столбцу “Номер детали” таблицы деталей, по двум столбцам “Номер поставщика” и “Номер детали” таблицы поставки деталей.

Для работы с реляционными базами данных существует стандартный язык запросов SQL (Structured Query Language — язык структурированных запросов). Этот язык используется для создания исходных таблиц базы данных (создание базы данных) формирования запросов, управления базами данных, позволяя использовать стандартные средства для работы с различными базами данных. Visual Basic позволяет использовать язык SQL для работы с базами данных.

5.3. ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ Data и Grid

Элемент управления Data служит для установления связи между базой данных и другими элементами управления, используемыми .зля отображения данных из базы данных. Поддерживается связь с базами данных Access, FoxPro, dBase, Paradox (список поддерживаемых связей определяется версией Visual Basic).

Один элемент управления Data всегда обеспечивает доступ только к одной записи в данный момент (такая запись называется текущей (current)), позволяя отображать содержимое текущей записи на форме.

Кроме стандартных свойств, элемент управления Data обладает следующими специфическими свойствами:

    BOFAction (Beginning Of File — начало файла), EOFAction (End Of File — конец файла) возвращает или устанавливает значение, указывающее действие при значении BOF или EOF, равном True.

Свойство BOF равно True, если указатель текущей позиции в файле расположен до какой-либо записи (обычно возникает при удалении первой записи). Свойство EOF равно True, если указатель текущей позиции в файле расположен за существующими данными. Если любое из этих свойств равно True, то текущая запись имеет недопустимый номер. Если оба свойства равны True, то в файле не содержится данных.

Синтаксис:

объект. BOFAction [= значение} объект. EOFAction f= значение}

BOFAction =1 — переход к первой записи, если BOF = True. EOFAction =1 — переход к последней записи, если EOF =

True.

  • Connect (Подключение) определяет тип (формат данных) используемой базы данных (Access, FoxPro, dBase, Paradox и др.).
  • Database объект “описатель базы данных” (профессиональная версия Visual Basic)
  • DatabaseName (имя базы данных) определяет имя файла базы данных или переход.
  • EditMode возвращает значение, определяющее состояние редактирования для текущей записи.
  • Exclusive определяет использование базы данных одни или несколькими пользователями (True — использование одним пользователем. False (по умолчанию) — несколько пользователей).
  • Readonly определяет возможность редактирования ото-// бражаемого данного в элементе управления (False (по умолчанию) — редактирование возможно, True — невозможно).
  • Recordset возвращает или устанавливает объект Recordset, определенный свойствами элемента управления Data или существующим объектом Recordset.

Элемент Data автоматически инициализируется при запуске приложения. Если свойства Connect, DatabaseName, Options, RecordSource, RecordSource, Exclusive, ReadOnly и RecordsetType установлены или, если они устанавливаются на этапе выполнения при использовании метода Refresh, механизм баз данных Jet пытается создавать новый объект Recordset, основанный на этих свойствах. Этот объект Recordset доступен через свойства элемента управление Data.

Важно: ссылаться на свойства объекта Recordset, создаваемого элементом управления Data, можно только используя свойство Recordset самого элемента Data. Синтаксис такого определения свойства следующий: о^бетс/и/.свойствоА.свойствоБ определяет свойствоБ некоторого объекта, адресуемое через свойствоА объекта!.

Объект Recordset представляет запись в основной таблице или запись, которая является результатом выполнения запроса. Когда используются объекты доступа к данным, то это происходит с использованием объектов Recordset. Таблица. Recordset есть представление основной таблицы. Dynaset-тип.Recordset — динамический набор записей. Кадр. Recordset — статическая копия множества записей (может содержать поля из одной или более таблиц в базе данных, но не может модифицироваться).

    RecordsetType определяет тип набора записей, который можно использовать для доступа к данным. Существует три типа наборов записей: таблица. Dynaset (динамическое множество) или кадр (моментальный снимок). Соответственно свойство принимает значения 0, 1,2.

При использовании Data для доступа к базе данных по умолчанию создается набор записей динамического типа, который является набором указателей на информацию. Динамический набор является очень гибким, но имеет ряд ограничений при использовании (в частности не поддерживает созданные индексы, что не позволяет динамически изменять порядок представления записей в наборе).

При задании типа набора “Таблица” возможен доступ только к одной полной таблице с использованием индекса для упорядочения, но обновление данных отображается медленно.

При задании типа набора “Кадр” работа выполняется с копией данных. Достоинством является быстрота, но требует ресурсов памяти и невозможно обновление данных.

    RecordSource (источник данных) определяет, откуда извлечь данные. Это может быть имя таблицы либо конкретное логическое представление данных (запрос).

Для объекта Data при работе с базами данных существует понятие базовых элементов управления — непосредственно связаны с единственным полем в наборе записей и не требуют дополнительного определения, кроме имени поля, задаваемого для некоторого свойства элемента управления. Например, для текстового окна (TextBox) присвоение свойства Text может содержать значение поля базы данных (тип данных: строка символов, арифметический тип, дата) и определяется заданием свойств DataSource (указывается имя объекта Data) и DataField (указывается имя поля таблицы, установленной свойством Data-Source объекта Data). Окна изображений и рисунков можно использовать для показа картинок, хранящихся в базе данных, флажок — для отображения булевых значений.

В комплекте Visual Basic имеется база данных B1BLIO.MDB, содержащая библиографические сведения по Visual Basic. Она состоит из трех таблиц. Таблица Авторы (Authors) с полями идентификационный номер (Au_lD) и фамилия автора (Authors). Таблица издательств (Pablishers) с полями идентификационный

номер (PubID), название (Name), компания владелец (Company Name), адрес (Address), город (City), штат (State), код (Zip), теле-tboH (Telephone). Таблица Названия книг (Titles) содержит список опубликованных книг: название (Title), год публикации (Year published) и ссылки на первые две таблицы.