LXF85:OpenOffice.org Base
Flagist0 (обсуждение | вклад) |
Flagist0 (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | == OOo Base: Лоск == | + | == OOo Base: Лоск вашей БД== |
'' Данные бесполезны, если невозможно найти необходимую информацию.'' | '' Данные бесполезны, если невозможно найти необходимую информацию.'' | ||
− | В прошлом номере я явил миру свои привычки по закупке товаров, с целью показать вам, как строится простая база данных домашнего имущества. Напомню, что мы использовали мастера OpenOffice.org Base, чтобы определить, с какими данными работать (мастер таблиц), и создать простую форму для ввода данных (мастер | + | В прошлом номере я явил миру свои привычки по закупке товаров, с целью показать вам, как строится простая база данных домашнего имущества. Напомню, что мы использовали мастера OpenOffice.org Base, чтобы определить, с какими данными работать (мастер таблиц), и создать простую форму для ввода данных (мастер форм); затем использовали табличный интерфейс для ввода, сортировки и фильтрации данных. В итоге получилась одна таблица и одна форма. Наша таблица имела несколько «полей», то есть заголовков |
− | форм); затем использовали табличный интерфейс для ввода, сортировки и фильтрации данных. В итоге получилась одна таблица и одна форма. Наша таблица имела несколько «полей», то есть заголовков | + | |
столбцов: например, '''Item (Вещь)''' и '''Serial Number (Серийный номер)''', и мы вручную ввели некоторые данные в ячейки. Теперь добавим в | столбцов: например, '''Item (Вещь)''' и '''Serial Number (Серийный номер)''', и мы вручную ввели некоторые данные в ячейки. Теперь добавим в | ||
таблицу место для заметок и категорий, поиграем с интерактивными | таблицу место для заметок и категорий, поиграем с интерактивными | ||
Строка 33: | Строка 32: | ||
редактирования. Если панелей инструментов '''Form Design (Разработка формы)''' и '''Form Controls (Элементы Управления)''' на экране нет, активируйте их из меню '''View > Toolbars (Вид > Панели инструментов)'''. | редактирования. Если панелей инструментов '''Form Design (Разработка формы)''' и '''Form Controls (Элементы Управления)''' на экране нет, активируйте их из меню '''View > Toolbars (Вид > Панели инструментов)'''. | ||
− | Первое, что следует сделать — расчистить пространство для нового поля '''ItemType''' . К счастью, мастер форм в OOo автоматически группирует поля с их метками, то есть нужно просто щелкнуть на поле и перенести его в новое место. Если вы хотите передвигать метки и поля отдельно, разгруппируйте их, выбрав желаемое поле и выполнив '''Format > Group > Ungroup (Формат > Группировать > Разгруппировать)''' — используйте метод «щелчок, Shift+щелчок» для выбора нескольких элементов на странице, а затем путем '''Format > Group > Group (Формат> Группировать > Группировать)''' вновь объедините их. Мы щелкали на элементах и переносили их так, чтобы расчистить место в правом верхнем углу формы для размещения поля ''ItemType | + | Первое, что следует сделать — расчистить пространство для нового поля '''ItemType''' . К счастью, мастер форм в OOo автоматически группирует поля с их метками, то есть нужно просто щелкнуть на поле и перенести его в новое место. Если вы хотите передвигать метки и поля отдельно, разгруппируйте их, выбрав желаемое поле и выполнив '''Format > Group > Ungroup (Формат > Группировать > Разгруппировать)''' — используйте метод «щелчок, Shift+щелчок» для выбора нескольких элементов на странице, а затем путем '''Format > Group > Group (Формат> Группировать > Группировать)''' вновь объедините их. Мы щелкали на элементах и переносили их так, чтобы расчистить место в правом верхнем углу формы для размещения поля '''ItemType'''. |
− | Теперь нам необходимо вставить в форму новую строку ввода для ItemType. На панели инструментов '''Forms Controls (Элементы управления)''' выберите иконку '''Text Box (Текстовое поле)''' и нарисуйте новое | + | Теперь нам необходимо вставить в форму новую строку ввода для ItemType. На панели инструментов '''Forms Controls (Элементы управления)''' выберите иконку '''Text Box (Текстовое поле)''' и нарисуйте новое текстовое поле справа — точно так же, как рисуется прямоугольник в графическом пакете, то есть можно изменять размер, щелкнув на элементе и |
+ | перетаскивая любую управляющую точку по углам и краям элемента. Если вам необходима большая точность, чем позволяют ваши глаза, щелкните правой | ||
+ | кнопкой на элементе и выберите в контекстном меню пункт '''Position and Size (Положение и размер) '''. В появившемся окне можно менять — угадайте, что? - | ||
+ | положение и размер выбранного элемента. | ||
+ | |||
+ | После размещения и установки размера элемента можно определить, как база данных будет его «видеть». Дважды щелкните на элементе и в появившемся | ||
+ | диалоговом окне '''Properties (Свойства)''' выберите вкладку '''Data (Данные)'''. Главная опция здесь '''Datafield (Поле данных)''', и его | ||
+ | действительно необходимо связать с заголовком таблицы базы данных, в данном случае это '''ItemType (Принадлежность)'''. Раз уж мы сюда попали, | ||
+ | осмотримся: здесь можно много чего понаделать. Например, на вкладке '''General (Общие)''' располагаются опции для добавления 3D-вида формы (как на | ||
+ | рисунках этого урока); можно изменить порядок обхода элементов (то есть порядок, в котором пользователь перемещается между элементами по клавише Tab); | ||
+ | и установить текст по умолчанию для каждого элемента или перевести элемент в режим только для чтения. На вкладке '''Events (события)''' можно связать | ||
+ | несколько макросов с различными действиями мыши и клавиатуры — но это уже вне рамок данного урока. Настроив элемент по своему вкусу, выберите '''Label | ||
+ | Field (Метка)''', нарисуйте площадку выше (или сбоку) предварительно сделанного текстового поля, затем введите желаемый текст метки — я ввел текст | ||
+ | '''ItemType''' для простоты. Сделав это, щелкните на элементе, затем при нажатой клавише Shift на обоих элементах, и сгруппируйте их. Так же мы | ||
+ | поступим с элементом '''Notes (Описание)''', но в этот раз сделаем текстовое поле побольше (здесь, вероятно, будет больше информации) и в диалоговом | ||
+ | окне '''Properties (Свойства)''', на вкладке '''General''', выберите для опции '''Text type (Тип текста)''' значение '''Multi-Line (Многострочный)'''. | ||
+ | Пока мы в Редакторе форм, можно также добавить виджет-календарь для поля '''Date Purchased (Дата покупки)''', это намного упростит заполнение формы. | ||
+ | Дважды щелкните на поле и на вкладке '''General''' найдите строку с названием '''Dropdown (Выпадающий)'''; выберите Yes (Да). Вот и все. Нажмите | ||
+ | кнопку Save (Сохранить), и все готово для ввода данных. Можете закрыть окно Дизайнера форм, используя меню File > Quit (Файл > Выход). Вернувшись в | ||
+ | главное окно, щелкните дважды на форме Инвентарь, чтобы открыть ее для ввода данных. Немного озадачивает то, что при этом форма базы данных может | ||
+ | иметь в строке-заголовке суффикс только для чтения, но не беспокойтесь - записи, вводимые данным способом, сохраняются как обычно. В зависимости от | ||
+ | настройки OOo на вашей машине, у вас уже может быть доступна правая панель. Если навигационная панель не размещается внизу окна (она содержит кнопки | ||
+ | '''Back (Назад), Forward (Вперед), Save (Сохранить), Undo (Отменить)''' и т. д.), то для ее вывода выполните '''View > Toolbars > Form Navigation (Вид > Панели инструментов > Навигация формы)'''. | ||
+ | |||
+ | ===Начинаем ввод=== | ||
+ | |||
+ | Мы вводили данные в базу в прошлый раз, через табличный вид, так что несколько записей уже заполнено. Вы можете перемещаться по ним, используя кнопки | ||
+ | '''Back (Назад)''' и '''Forward (Вперед)''' на панели навигации; или сразу начать ввод, нажмите кнопку '''New Record (Новая запись)''', расположенную по правому краю первого раздела кнопок (на ней изображена стрелка со звездочкой внутри). Перед вами появится абсолютно пустая запись с мигающим курсором в первом поле, обычно это поле ID. Вы можете начать ввод данных в различные поля, перемещаясь между ними при помощи клавиши Tab в установленном порядке | ||
+ | обхода, как указывалось ранее, или выбирая нужное поле мышью. Заполнив запись, опять нажмите кнопку '''Новая запись'''. Это сохранит текущую запись и | ||
+ | предоставит пустую для ввода данных. Панель навигации вблизи нижнего края содержит такие инструменты, как фильтрация и сортировка, кнопка отмены, | ||
+ | опция '''Delete Record (Удалить запись)''', а у правого края панели - иконка для отображения таблицы базы данных и формы, очень полезного для просмотра | ||
+ | деталей записей и их связей с другими данными в базе данных. | ||
+ | |||
+ | ===Превращаем данные в информацию=== | ||
+ | |||
+ | До сих пор мы работали над структурой базы данных и вводом данных в таблицы. Без этого не обойдешься; но если база данных для чего и нужна, так это для преобразования данных в наглядную информацию; | ||
+ | возникает потребность в запросах. Не паникуйте: сами того не подозревая, концепцию запросов вы скорее всего уже освоили, поскольку каждый раз, | ||
+ | посещая Google и вводя строку поиска, вы создаете запрос. Интернет можно рассматривать как огромную базу данных, и надежность результатов поиска | ||
+ | Google основана на принципе разбиения этой базы по категориям. К примеру, рассмотрим стандартный поиск словосочетания '''Linux Format'''. На первой | ||
+ | странице мы вводим строку поиска Linux Format и нажимаем кнопку Поиск. Google на самом деле ищет два слова: Linux и Format, поэтому страницы, | ||
+ | содержащие оба этих слова, будут ближе к началу результирующего списка, чем страницы, содержащие только одно из них. Теперь представьте себе таблицу, | ||
+ | используемую для этого поиска. Один столбец может быть озаглавлен Linux, а второй Format, и база данных отдаст приоритет страницам, содержащимся | ||
+ | в обоих столбцах [отметим, что это - всего лишь наглядный пример, а не фактическая структура базы данных Google - прим.ред.]. | ||
+ | |||
+ | В терминах баз данных,запрос - просто способ фильтрации ваших данных для просмотра подмножества базы данных. В прошлый раз мы рассматривали фильтры, и | ||
+ | идея запросов в | ||
+ | принципе та же - только мы можем сохранить эти критерии и применить их в любое время, или очистить их при необходимости. Рассмотрим пример. | ||
+ | |||
+ | Пример, | ||
+ | вместо базы данных Домашний инвентарь (которая маловата для значительных запросов - я обычно закупаю больше!), основан на другом реальном проекте: | ||
+ | библиографии книг и журналов, использованных за год обучения в университете. Это применимо к любой базе данных - ваши поля просто будут иметь другие | ||
+ | имена. | ||
+ | |||
+ | Другой стороной поиска являются отчеты. Они выполняют ту же работу, что и | ||
+ | запросы, с тем преимуществом, что результаты выводятся в виде таблицы в OOo Writer, и их можно распечатать и распространять обычным способом. Процесс | ||
+ | создания отчета очень похож на создание запроса, но с дополнительным разделом, где можно выбрать стиль представления данных. Снова, OOo Base | ||
+ | сохраняет критерии отчета на вкладке '''Reports (Отчеты)''', то есть отчет может быть многократно запущен в одной и той же базе данных, если данные | ||
+ | изменились. OOo Base поддерживает большие проекты вроде списка членов и склада инструментов точно так же, как и малые наборы данных. В последних | ||
+ | двух выпусках я описал только основы, но эти элементы применяются в большом классе приложений. Всегда помните, что полезность базы данных зависит от | ||
+ | грамотности её структуры, так что с самого начала не пожалейте времени на отделку, и поймете, что работать с данными будет куда легче. |
Версия 18:50, 31 марта 2008
|
|
|
Содержание |
OOo Base: Лоск вашей БД
Данные бесполезны, если невозможно найти необходимую информацию.
В прошлом номере я явил миру свои привычки по закупке товаров, с целью показать вам, как строится простая база данных домашнего имущества. Напомню, что мы использовали мастера OpenOffice.org Base, чтобы определить, с какими данными работать (мастер таблиц), и создать простую форму для ввода данных (мастер форм); затем использовали табличный интерфейс для ввода, сортировки и фильтрации данных. В итоге получилась одна таблица и одна форма. Наша таблица имела несколько «полей», то есть заголовков столбцов: например, Item (Вещь) и Serial Number (Серийный номер), и мы вручную ввели некоторые данные в ячейки. Теперь добавим в таблицу место для заметок и категорий, поиграем с интерактивными виджетами форм и изучим запросы и отчеты как средство реорганизации базы данных.
Наша новая работа — редактирование таблиц базы данных с целью добавить место для заметок и опции ItemType (тип предмета, принадлежность): последняя поможет пользователю находить все предметы, относящиеся, скажем, к «компьютеру» или «кухне». Итак, запустите OOo Base и откройте созданную вами базу. Перейдите к таблицам, щелкнув на соответствующем пункте в левой панели главного окна Base, а затем правой кнопкой мыши на таблице, которую мы создали.
Теперь выберите пункт контекстного меню Edit (Правка), для перехода в экран редактирования таблицы. Этот экран, как и сама таблица, имеет типичный вид электронной таблицы, но сейчас в нем только три столбца с именами Field Name (Имя Поля), Field Type (Тип Поля) и Description (Описание) (см. рисунок). Столбцы Name и Type должны быть заполнены полями, которые вы определили при помощи мастера таблиц в прошлый раз. Для добавления нового поля данных необходимо просто щелкнуть на вакантной ячейке столбца Имя поля, задать имя и определить корректный тип данных. Новому полю ItemType можно придать стандартный тип Текст [VARCHAR], но новое поле Notes (Описание) в принципе может содержать много информации, поэтому лучше использовать для него тип данных Memo (Памятка) [LONGVARCHAR]. Не пугайтесь: элемент VARCHAR означает просто «изменяемый символ», а LONGVARCHAR — то же самое, только подразумевает более длинные текстовые строки.
Снова посмотрите на нижний рисунок. Если вы хотите изменить порядок полей в таблице, просто переместить поля вверх или вниз в списке нельзя — зато можно вырезать и вставлять строки, щелкая в крайней левой ячейке, где появляется маленький зеленый треугольник [столбец без надписей, с серым фоном — прим. пер.], а затем щелкнуть правой кнопкой для вызова контекстного меню. Когда вы сделаете это, все строки ниже вырезанных сдвинутся вверх к первой свободной строке, и любая операция вставки из буфера разместит вырезанную строку(-ки) внизу таблицы. На вид сложно, но вы быстро привыкнете к этому! Добавив новые поля и разместив их в нужном месте, вы можете — при желании — ввести описание, затем щелкнуть в верхней части окна на иконке панели инструментов с изображением дискеты для сохранения таблицы.
Закрыв окно правки, дважды щелкните на таблице в главном окне OOo Base, чтобы открыть ее в режиме добавления данных. Заметьте, что если у вас в таблице уже были данные, то они не уничтожаются при редактировании структуры таблицы; но вам потребуется пройтись по старым записям и заполнить прибавившиеся поля — всегда лучше делать все правильно с самого начала.
Изменение формы
Хотя для ввода данных можно обойтись и таблицей, намного приятнее делать это в созданной нами форме (см. рисунок). Формы также облегчают восприятие отдельных элементов, потому что каждая запись отображается в своем собственном окне. В прошлый раз мы строили форму при помощи Мастера форм, а теперь добавим Notes (Описание) и ItemType (Принадлежность), которые мы уже добавили в таблицу; также улучшим дизайн, добавив виджет даты.
Для начала, щелкните на иконке Формы слева и затем выполните правый щелчок на форме Инвентарь (Household Inventory) (или как вы ее там назвали) и выберите Edit (Правка) для вызова главного окна редактирования. Если панелей инструментов Form Design (Разработка формы) и Form Controls (Элементы Управления) на экране нет, активируйте их из меню View > Toolbars (Вид > Панели инструментов).
Первое, что следует сделать — расчистить пространство для нового поля ItemType . К счастью, мастер форм в OOo автоматически группирует поля с их метками, то есть нужно просто щелкнуть на поле и перенести его в новое место. Если вы хотите передвигать метки и поля отдельно, разгруппируйте их, выбрав желаемое поле и выполнив Format > Group > Ungroup (Формат > Группировать > Разгруппировать) — используйте метод «щелчок, Shift+щелчок» для выбора нескольких элементов на странице, а затем путем Format > Group > Group (Формат> Группировать > Группировать) вновь объедините их. Мы щелкали на элементах и переносили их так, чтобы расчистить место в правом верхнем углу формы для размещения поля ItemType.
Теперь нам необходимо вставить в форму новую строку ввода для ItemType. На панели инструментов Forms Controls (Элементы управления) выберите иконку Text Box (Текстовое поле) и нарисуйте новое текстовое поле справа — точно так же, как рисуется прямоугольник в графическом пакете, то есть можно изменять размер, щелкнув на элементе и перетаскивая любую управляющую точку по углам и краям элемента. Если вам необходима большая точность, чем позволяют ваши глаза, щелкните правой кнопкой на элементе и выберите в контекстном меню пункт Position and Size (Положение и размер) . В появившемся окне можно менять — угадайте, что? - положение и размер выбранного элемента.
После размещения и установки размера элемента можно определить, как база данных будет его «видеть». Дважды щелкните на элементе и в появившемся диалоговом окне Properties (Свойства) выберите вкладку Data (Данные). Главная опция здесь Datafield (Поле данных), и его действительно необходимо связать с заголовком таблицы базы данных, в данном случае это ItemType (Принадлежность). Раз уж мы сюда попали, осмотримся: здесь можно много чего понаделать. Например, на вкладке General (Общие) располагаются опции для добавления 3D-вида формы (как на рисунках этого урока); можно изменить порядок обхода элементов (то есть порядок, в котором пользователь перемещается между элементами по клавише Tab); и установить текст по умолчанию для каждого элемента или перевести элемент в режим только для чтения. На вкладке Events (события) можно связать несколько макросов с различными действиями мыши и клавиатуры — но это уже вне рамок данного урока. Настроив элемент по своему вкусу, выберите Label Field (Метка), нарисуйте площадку выше (или сбоку) предварительно сделанного текстового поля, затем введите желаемый текст метки — я ввел текст ItemType для простоты. Сделав это, щелкните на элементе, затем при нажатой клавише Shift на обоих элементах, и сгруппируйте их. Так же мы поступим с элементом Notes (Описание), но в этот раз сделаем текстовое поле побольше (здесь, вероятно, будет больше информации) и в диалоговом окне Properties (Свойства), на вкладке General, выберите для опции Text type (Тип текста) значение Multi-Line (Многострочный). Пока мы в Редакторе форм, можно также добавить виджет-календарь для поля Date Purchased (Дата покупки), это намного упростит заполнение формы. Дважды щелкните на поле и на вкладке General найдите строку с названием Dropdown (Выпадающий); выберите Yes (Да). Вот и все. Нажмите кнопку Save (Сохранить), и все готово для ввода данных. Можете закрыть окно Дизайнера форм, используя меню File > Quit (Файл > Выход). Вернувшись в главное окно, щелкните дважды на форме Инвентарь, чтобы открыть ее для ввода данных. Немного озадачивает то, что при этом форма базы данных может иметь в строке-заголовке суффикс только для чтения, но не беспокойтесь - записи, вводимые данным способом, сохраняются как обычно. В зависимости от настройки OOo на вашей машине, у вас уже может быть доступна правая панель. Если навигационная панель не размещается внизу окна (она содержит кнопки Back (Назад), Forward (Вперед), Save (Сохранить), Undo (Отменить) и т. д.), то для ее вывода выполните View > Toolbars > Form Navigation (Вид > Панели инструментов > Навигация формы).
Начинаем ввод
Мы вводили данные в базу в прошлый раз, через табличный вид, так что несколько записей уже заполнено. Вы можете перемещаться по ним, используя кнопки Back (Назад) и Forward (Вперед) на панели навигации; или сразу начать ввод, нажмите кнопку New Record (Новая запись), расположенную по правому краю первого раздела кнопок (на ней изображена стрелка со звездочкой внутри). Перед вами появится абсолютно пустая запись с мигающим курсором в первом поле, обычно это поле ID. Вы можете начать ввод данных в различные поля, перемещаясь между ними при помощи клавиши Tab в установленном порядке обхода, как указывалось ранее, или выбирая нужное поле мышью. Заполнив запись, опять нажмите кнопку Новая запись. Это сохранит текущую запись и предоставит пустую для ввода данных. Панель навигации вблизи нижнего края содержит такие инструменты, как фильтрация и сортировка, кнопка отмены, опция Delete Record (Удалить запись), а у правого края панели - иконка для отображения таблицы базы данных и формы, очень полезного для просмотра деталей записей и их связей с другими данными в базе данных.
Превращаем данные в информацию
До сих пор мы работали над структурой базы данных и вводом данных в таблицы. Без этого не обойдешься; но если база данных для чего и нужна, так это для преобразования данных в наглядную информацию; возникает потребность в запросах. Не паникуйте: сами того не подозревая, концепцию запросов вы скорее всего уже освоили, поскольку каждый раз, посещая Google и вводя строку поиска, вы создаете запрос. Интернет можно рассматривать как огромную базу данных, и надежность результатов поиска Google основана на принципе разбиения этой базы по категориям. К примеру, рассмотрим стандартный поиск словосочетания Linux Format. На первой странице мы вводим строку поиска Linux Format и нажимаем кнопку Поиск. Google на самом деле ищет два слова: Linux и Format, поэтому страницы, содержащие оба этих слова, будут ближе к началу результирующего списка, чем страницы, содержащие только одно из них. Теперь представьте себе таблицу, используемую для этого поиска. Один столбец может быть озаглавлен Linux, а второй Format, и база данных отдаст приоритет страницам, содержащимся в обоих столбцах [отметим, что это - всего лишь наглядный пример, а не фактическая структура базы данных Google - прим.ред.].
В терминах баз данных,запрос - просто способ фильтрации ваших данных для просмотра подмножества базы данных. В прошлый раз мы рассматривали фильтры, и идея запросов в принципе та же - только мы можем сохранить эти критерии и применить их в любое время, или очистить их при необходимости. Рассмотрим пример.
Пример, вместо базы данных Домашний инвентарь (которая маловата для значительных запросов - я обычно закупаю больше!), основан на другом реальном проекте: библиографии книг и журналов, использованных за год обучения в университете. Это применимо к любой базе данных - ваши поля просто будут иметь другие имена.
Другой стороной поиска являются отчеты. Они выполняют ту же работу, что и запросы, с тем преимуществом, что результаты выводятся в виде таблицы в OOo Writer, и их можно распечатать и распространять обычным способом. Процесс создания отчета очень похож на создание запроса, но с дополнительным разделом, где можно выбрать стиль представления данных. Снова, OOo Base сохраняет критерии отчета на вкладке Reports (Отчеты), то есть отчет может быть многократно запущен в одной и той же базе данных, если данные изменились. OOo Base поддерживает большие проекты вроде списка членов и склада инструментов точно так же, как и малые наборы данных. В последних двух выпусках я описал только основы, но эти элементы применяются в большом классе приложений. Всегда помните, что полезность базы данных зависит от грамотности её структуры, так что с самого начала не пожалейте времени на отделку, и поймете, что работать с данными будет куда легче.