Антология OpenOffice. Часть 10. База данных Base

Продолжим изучать свободный офисный пакет OpenOffice 2.0. В этой части мы рассмотрим основы работы с компонентом Base — инструментом управления базой данных. Это, к слову, один из самых непростых в освоении компонентов OpenOffice 2.0.

Сразу хочу оговориться: в OpenOffice Base понятия "Источник данных" и "База данных" используются в одном и том же смысле. То есть могут означать базу данных — такую, как MySQL или dBase — либо, к примеру, электронную таблицу или текстовый документ. Работу с OpenOffice Base мы изучим на примере создания двух адресных книг — для знакомых и для родственников, а также двух информационных разделов — аналогично для знакомых и для родственников.

Создаем новую базу данных

Для создания новой базы щелкаем по правой части значка <Создать> и из выпадающего меню выбираем пункт <Базу данных>. Как вариант идем в меню путем Файл --> Создать --> Базу данных. В любом из случаев откроется окно мастера базы данных. В нем нужно сделать несколько стандартных шагов. Первый шаг мастера базы данных содержит один вопрос с двумя ответами: <Создать новую базу данных> или <Открыть существующий файл>. Выбираем <Создать новую базу данных> и жмем кнопку <Далее>. На втором шаге нас ожидают уже два вопроса с двумя вариантами ответа для каждого. Ответом по умолчанию на первый вопрос является <Да, зарегистрировать мне базу данных>, а ответом по умолчанию на второй вопрос — <Открыть базу на редактирование>. Убеждаемся, что выбраны указанные ответы, и жмем кнопку <Готово>. Тут важно понимать, что если базу данных не зарегистрировать, она не будет доступна для других компонентов OpenOffice. Если же база данных зарегистрирована, то другие компоненты получают к ней доступ. Теперь сохраняем нашу базу данных под именем Information. Открывается окно с заголовком <Information — OpenOffice.org Base>. Сохраняем новую базу.

Создаем таблицу базы данных

Таблица базы данных хранит информацию об одном объекте. К примеру, это может быть список адресов, перечень магазинов, телефонный справочник либо прайс-лист. База данных может иметь от одной до нескольких таблиц. После того, как открылось упомянутое выше окно <Information — OpenOffice.org Base>, автоматически выделяется иконка <Формы>. Но у нас другие планы, и мы жмем на значок <Таблицы>. Теперь с помощью мастера создания таблиц создадим таблицу <Адреса знакомых>, а также таблицу <Информация о знакомых> в режиме дизайна. Создадим также таблицы <Адреса родственников> и <Информация о родственниках> при помощи копирования/вставки. Обе таблицы базы данных Information имеют поля, содержащие месяц года. Создавая отдельную таблицу для названий месяцев года, мы можем упростить нашу работу при вводе данных в каждую форму. (Эта таблица явится только источником данных для списка, из которого можно будет выбирать названия месяцев на двух формах Information, что позволит обойтись без создания дополнительных форм.) Теперь воспользуемся услугами мастера создания таблиц, чтобы сгенерировать таблицу "Справочник адресов родственников". Для этого щелкаем на задаче <Использовать мастер для создания таблицы>. Сразу обращаю ваше внимание на то, что каждая таблица должна иметь поле <Первичный ключ>. Мы будем использовать его для нумерации записей, причем такая нумерация должна выполняться автоматически при добавлении каждой новой записи. Основной единицей информации в таблице является поле — именно с полями нам доведется выполнять основную массу операций. Например, в таблице прайс-листа в большинстве случаев имеется одно поле для названия товара, другое — для его описания, и третье — для цены. Разумеется, можно добавлять любые другие поля.

Шаг 1: Выбираем поля

Пользователю предоставляется возможность выбрать один из двух типов создаваемых таблиц: <Деловой> и <Персональный>. При этом каждый из данных двух типов имеет собственные таблицы — на выбор. А каждая таблица, соответственно, обладает собственным списком имеющихся полей. Для выбора необходимых полей следует использовать таблицу "Адреса" в категории <Персональный>.

1. Категория: Выбираем <Персональный>. Выпадающий список <Примеры таблиц> изменился и отображает таблицы этой категории.
2. Примеры таблиц: Выбираем <Адреса>. Окно <Переменные поля> изменяется и выводит список возможных полей для этой таблицы.
3. Выбранные поля: Используя кнопку "-->", перемещаем из окна <Переменные поля> в окно <Выбранные поля> следующие поля (в указанной последовательности!): AddressID, FirstName, LastName, SpouseName, Address, City, StateOrProvince, PostalCode, CountryOrRegion, PhoneNumber, MobileNumber и EmailAddress.
4. Если в списке <Выбранные поля> порядок следования полей оказался нарушен, следует выделить имя поля, которое находится не на своем месте (щелкнув по нему). После этого используйте стрелки <Вверх> или <Вниз> с правой стороны окна <Выбранные поля> для перемещения поля в требуемую позицию.
5. Если все в порядке, жмем кнопку <Дальше>.

Шаг 2: Выбираем типы и формат

Здесь нам нужно установить значения свойств полей. При выборе каждого поля изменяется информация в правой части окна; там же можно сделать любые требуемые изменения. Внизу окна <Выбранные поля> имеются две кнопки: "+" и "–". Эти кнопки используются для добавления или удаления полей из окна <Выбранные поля>. Также с правой стороны окна <Выбранные поля> внизу есть две кнопки: стрелка вверх и стрелка вниз. Они перемещают выделенное поле вверх или вниз.

Тут нужно остановиться на одном важном нюансе. Если любое из этих полей является необязательным, следует установить значение свойства <Обязательное> равным "Нет". Если значение <Обязательное> равно "Да", то это поле должно содержать какое-то значение. Например, если для поля <FirstName> значение <Обязательное> равно "Да", то это поле не должно быть незаполненным. То есть, если поле не имеет права оставаться пустым (обязательно к заполнению), значение <Обязательное> должно быть равным "Да".

Поле AddressID: Устанавливаем значение свойства <Автозначение> равным "Да".
Поле FirstName: Устанавливаем значение свойства <Обязательное>: если поле FirstName должно заполняться для каждого родственника, меняем значение параметра <Обязательное> на "Да". В противном случае оставляем его значение равным "Нет". Теперь свойство <Длина>. Понятно, что длина должна равняться по крайней мере числу букв в самом длинном имени составляемого списка. В этом случае будет вполне логично заранее найти в списке самое длинное имя и сосчитать количество букв в нем, а затем прибавить к этому количеству еще пять-семь символов, чтобы учесть, что в дальнейшем могут появиться более длинные имена.
Поле LastName: <Длина> = 20, думается, будет достаточной. <Обязательное> должно равняться "Да".
Поле SpouseName: <Длина> = 20 также будет достаточной. <Обязательное> должно равняться "Нет" (не у всех есть супруг/супруга).
Поле Address: Изменяем параметр <Длина> на 50 (если нет более длинных адресов). <Обязательное> должно равняться "Да".
Поле City: Параметр <Длина> указываем равным 20. <Обязательное> должно быть "Да".
Поле StateOrProvince: Ну, в данном случае для параметра <Длина> выбираем число, соответствующее обычной длине названия в нашем регионе. <Обязательное> должно равняться "Да".
Поле PostalCode: Длина поля должна соответствовать месту проживания: в разных странах используются разные почтовые стандарты. В наших краях с советских времен используются шесть цифр (######).<Обязательное> должно равняться "Да".
Поле CountryOrRegion: Значение параметра <Длина> устанавливаем соответственно нашим условиям. <Обязательное> должно быть "Да".
Поле PhoneNumber: Здесь <Обязательное> должно равняться "Нет". Значение параметра <Длина> должно соответствовать особенностям принятой у нас нумерации. При этом нужно учитывать все знаки включая пробелы, скобки, тире и цифры. Например, номер (8-029) 123-45-67 требует установить параметр <Длина> равным 17.
Поле MobileNumber: Делаем все то же самое, что и для PhoneNumber.
Поле EmailAddress: Значение параметра <Длина> здесь нужно указать побольше — ведь существуют достаточно длинные адреса электронной почты. Также изменим значение свойства <Обязательное> на "Нет".

Теперь жмем кнопку <Дальше>.

Шаг 3: Выбираем первичный ключ

Сначала разберемся, что это такое и для чего это нужно. Первичный ключ однозначно идентифицирует запись в таблице. К примеру, в таблице могут оказаться два человека по имени "Вася Пупкин" или трое людей, которые проживают по одному и тому же адресу, а в базе данных их надо как-то различать. Самое простое — назначить каждому из них уникальный номер: номер первого из них 1, второго — 2 и т.д. Каждая запись имеет один номер, и каждый из них разный, поэтому легко найти запись, скажем, с идентификатором "143". Идентификатор адреса не зависит от реального адреса — это просто номер, который присваивается каждой записи модулем Base. Существуют и более сложные способы различения записей, но все они в конечном итоге призваны отвечать на вопрос: "Как я могу быть уверенным, что каждая запись в моей базе данных является уникальной?"

1. Устанавливаем флажок <Создать первичный ключ>.
2. Выбираем параметр <Использовать существующее поле как первичный ключ>.
3. В выпадающем списке <Имя поля> выбираем поле <AddressID>.
4. Устанавливаем флажок <Автоматическое значение>.
5. Жмем кнопку <Дальше>.

Шаг 4: Создаем таблицу

Сперва несколько важных замечаний.
1. При необходимости на этом шаге можно изменить имя таблицы. При переименовании желательно присвоить осмысленное имя. В данном случае мы присвоим таблице имя "Адреса родственников".
2. Оставляем установленным флажок <Вставить данные немедленно>.
3. Чтобы мастер закончил работать, жмем кнопку <Готово>. Закрываем окно, созданное мастером таблиц, и видим основное окно базы данных с иконками таблиц, запросов, форм и отчетов.

Создаем таблицу, копируя уже существующую

Продолжая наше упражнение, создадим вторую таблицу, в которой будут храниться адреса знакомых. Так как таблица "Адреса знакомых" очень похожа на таблицу "Адреса родственников", мы создадим ее путем копирования таблицы "Адреса родственников", а затем внесем необходимые изменения. Действуем по этапам:

1. Нажимаем значок <Таблицы> в окне <База данных>, чтобы увидеть существующие таблицы.
2. Щелкаем правой кнопкой мыши по значку таблицы <Адреса родственников>. Из выпавшего контекстного меню выбираем <Копировать>.
3. Помещаем курсор мыши ниже этой таблицы, щелкаем правой кнопкой и выбираем пункт <Вставить> из контекстного меню. Откроется окно
<Копирование>.
4. Изменяем имя таблицы на "Адреса знакомых" и жмем <Далее>.
5. Нажимаем кнопку "->" для перемещения всех полей из левого окна в правое и жмем <Далее>.
6. Поскольку все поля уже имеют необходимый формат, от нас не требуется вносить какие-либо изменения. В ином случае, если изменения нужны, их надо будет сделать именно сейчас. Жмем кнопку <Готово>. Все, новая таблица создана.

Создаем таблицу в режиме дизайна

Режим дизайна — это более совершенный метод создания новой таблицы. Он позволяет непосредственно вводить информацию о каждом поле таблицы. Тип поля и формат в режиме дизайна отличаются от рассмотренных выше, однако основные принципы те же, что и для режима мастера. В режиме дизайна мы создадим как таблицу "Информация о знакомых", так и таблицу "Информация о родственниках". Обе таблицы используют одни и те же поля: ID, FirstName, LastName, SpouseName, WedDateM (месяц свадьбы), WedDateD (день свадьбы), WedDateY (год свадьбы), HusBDM (месяц рождения мужа), HusBDD (день рождения мужа), HusBDY (год рождения мужа), WifeBDM (месяц рождения жены), WifeBDD (день рождения жены), WifeBDY (год рождения жены), Ch1 (старший ребенок), Ch1BDM (месяц рождения ребенка), Ch1BDD (день рождения ребенка) и Ch1BDY (год рождения ребенка). В этом примере мы для простоты учитываем только одного ребенка в семье. Для тех знакомых и родственников, которые имеют больше детей, в таблице можно создать дополнительные поля. Дополнительные поля должны следовать в том же порядке. Например, для двух детей дополнительные поля должны иметь имена: Ch2, Ch2BDM, Ch2BDD и Ch2BDY. Если требуется, чтобы день предшествовал месяцу — например, 1 January вместо January 1, — следует поместить поле, соответствующее дню, перед полем, содержащим название месяца. Итак:

1. Щелкаем по строке <Создать таблицу в режиме дизайна>.
2. Создаем поле ID:
— Вводим ID в первый столбец <Имя поля>.
— Изменяем значения свойств в разделе "Свойства поля" (в нижней части окна).
— В качестве значения <Тип поля> выбираем из списка <Целое[INTEGER]>, изменяем значение поля <Автозначение> на "Да".
— Определяем в качестве первичного ключа поле ID. Для этого следует щелкнуть правой кнопкой мыши по зеленому треугольнику слева от ID. Далее выбираем в контекстном меню строку <Первичный ключ>. Перед полем ID появляется значок ключа. Попутно замечу, что в качестве первичного ключа может быть выбрано любое поле. Совсем не обязательно выбирать для этого именно поле ID.
3. Создаем другие поля:
— В первый столбец (столбец "Имя поля") вводим имя следующего поля нашей таблицы.
— Для каждого поля выбираем значение свойства <Тип поля>. Для полей с именами, оканчивающимися на D или Y (например, WedDateD или WedDateY), следует выбирать значение <Короткое целое [SMALLINT]>. Для всех других полей используем значение по умолчанию <Текст[VARCHAR]>.
— Выбираем значения свойств в разделе <Свойства поля>. Изменяем значение свойства <Обязательное> с "Нет" на "Да" только для тех полей, которые должны иметь какое-то значение. Изменяем значение свойства <Длина> так, чтобы оно соответствовало самому длинному вводимому слову (значение 20 обычно достаточно для большинства полей, содержащих имена). Для доступа к дополнительным параметрам форматирования следует нажать на кнопку, расположенную справа в строке <Пример формата> (кнопка <Пример формата>). При этом выводится диалоговое окно <Формат поля>.
— Повторим указанные шаги для каждого поля таблицы. Чтобы получить доступ к дополнительным параметрам форматирования, следует использовать окно <Формат поля>, выводимое на экран с помощью кнопки, расположенной справа (кнопка <Пример формата>).
— В столбце <Описание> может располагаться любой текст, или он может быть пустым.
— Чтобы сохранить и закрыть таблицу, следуем в меню путем Файл --> Закрыть. Используйте в качестве имени таблицы имя "Информация о знакомых".
Четвертую таблицу нашего упражнения — "Информация о родственниках" — создадим точно так же, как была создана таблица "Информация о знакомых". Или же можно щелкнуть правой кнопкой мыши по имени таблицы "Информация о знакомых" и выбрать из контекстного меню пункт <Копировать>. Затем щелкаем правой кнопкой ниже имени "Информация о знакомых" и выбираем из контекстного меню <Вставить>. Далее действуем по алгоритму, описанному в разделе "Создаем таблицу, копируя уже существующую таблицу".

Продолжение следует

Денис Лавникевич


Компьютерная газета. Статья была опубликована в номере 48 за 2007 год в рубрике soft

©1997-2024 Компьютерная газета