Совет дня


Impress позволяет создавать слайд-шоу, включающие диаграммы, графические объекты, видео и звук

Опросы

Какую сборку OpenOffice.org вы используете сейчас?

Нашли опечатку?

 
Выделите ошибочный текст, нажмите CTRL+ENTER и отправьте нам сообщение
 
База данных за пять минут. Создание Печать E-mail
Автор bsv999   
12.07.2008 г.

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

По некоторым причинам мне пришлось создать базу данных в программе OpenOffice.org Base 2.4 pro, используя встроенный движок баз данных. В этой статье кратко описан процесс создания этой базы данных.

Проектирование базы данных

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

  • TYPE - тип видеоматериала (художественное кино, документальное, мультфильм и т.д.)
  • NAME - название видеоматериала
  • DESCRIPT - краткое описание
  • SCREENSHOT - скриншот (снимок экрана)
  • COVER1 - обложка диска 1
  • COVER2 - обложка диска 2
  • DISC1 - диск 1
  • DISC2 - диск 2
  • PLACE - место расположения видеоматериала

Схема главной таблицы
Схема главной таблицы

Все таблицы и все поля всех таблиц называются большими английскими буквами.
После некоторого раздумья решил переименовать поле PLACE в USER (то есть, я буду указывать не "где расположен видеоматериал", а "у кого").
Количество вариантов типов видеоматериала и мест его расположения ограничено. Поэтому я решил создать ещё две таблицы TYPES и USERS, чтобы использовать их как справочники:

Схема главной таблицы со справочниками
Схема главной таблицы со справочниками

Создание базы данных

Теперь, когда принцип работы базы данных в общих чертах ясен, приступаем к созданию в ООо новой базы данных.
Запускаем OpenOffice.org Base. На первых двух экранах ничего не меняем (оставляем "Создать новую базу данных" и "Да, зарегистрировать базу данных" (чтобы запомнить место расположения новой базы и подключаться к ней автоматически)).

Если вы сохраните базу данных в какой-нибудь каталог, а потом добавите этот каталог в доверенные ("Сервис" - "Параметры" - "OpenOffice.org" - "Безопасность" - "Безопасность макросов" - "Доверенные источники"), то макросы будут запускаться без дополнительного вопроса.

 

Присвоим нашей новой базе данных имя VideoBase и расположим в удобном нам месте.

Теперь надо "Создать таблицу в режиме дизайна".

Заполняем столбец "Название поля" нашими полями. Все свойства полей оставляем по умолчанию, кроме одного - DESCRIPT, его длину увеличим в 10 раз.
Нажимаем кнопку "Сохранить". Называем таблицу MAIN (небольшое несоответствие в названиях полей объясняется постоянным изменением видения этой базы данных разработчиком):

Структура главной таблицы
Структура главной таблицы

При сохранении таблицы программа предложит создать первичный ключ:

Сообщение, выдаваемое Base при первом сохранении новой таблицы
Сообщение, выдаваемое Base при первом сохранении новой таблицы

Ключ необходим, ведь без него таблица будет в режиме "только чтение" (я не критикую ООо за это необоснованное ограничение), поэтому мы создаём поле ID. Свойство "Автозначение" этого поля надо установить в состояние "Да" и закрыть эту таблицу.
Таким же способом создаём таблицы справочников TYPES и USERS:

Структура таблицы TYPES
Структура таблицы TYPES

Структура таблицы USERS
Структура таблицы USERS

В этих двух таблицах сразу после первого сохранения и создания первичного ключа переименовываем ключевое поле в TYPES_ID и USERS_ID (это делать необязательно, просто я привык называть ключевое поле таблицы именем таблицы).

Потом заходим в меню "Сервис" - "Связи..." и создаём связи согласно нашей схеме - захватываем мышкой поле TYPE из таблицы MAIN и соединяем его с полем TYPES_ID таблицы TYPES, повторяем эти действия для таблицы USERS (эти связи делать необязательно, просто я привык к этому).
Теперь мы имеем работоспособную, но пустую базу данных. Осталось создать интерфейс пользователя, то есть форму, куда можно вводить данные.

Создание формы

Процесс создания формы несложен и отдельного описания не требует: с помощью мастера выбираем все поля, создаём форму для таблицы MAIN. Все установки оставляем по умолчанию, только на пятом шаге "Расположить элементы управления" выбираем расположение, отличное от таблицы, и на восьмом шаге включаем режим "Модифицировать форму".

Настройка формы

Настройка формы заключается в добавлении "Графических элементов управления" и изменении типа объектов, связанных со справочниками (помните - "мастер создания форм не может создать графическое поле и поле со списком"?).
Добавить графический элемент и связать его с базой очень просто:

Добавление графического элемента и связывание его с базой данных
Добавление графического элемента и связывание его с базой данных

Сложнее настроить справочные поля. Для этого "Текстовое поле" надо заменить на "Список", а потом заставить этот список работать. Итак, сначала обработаем поле TYPE:

  1. Разгруппируем группу полей TYPE, чтобы управлять полями по отдельности.
  2. В режиме конструктора форм заменяем тип поля на "Список":
    Заменяем тип поля на ''Список''
    Заменяем тип поля на ''Список''
  3. В свойствах "Данные" этого поля устанавливаем нужные нам значения:
    Устанавливаем нужные нам значения
    Устанавливаем нужные нам значения
  4. Свойство "Ракрываемый" меняем на "Да". Теперь наш контрол стал красивый и мощный.

Для нормальной работы нашего поля со списком необходимо поменять порядок полей в таблице-источнике - ключевое поле должно быть вторым по списку (я опять не критикую ООо за это необоснованное ограничение). Передвинуть поле в дизайнере таблиц невозможно (и опять ни слова про MS Access, в котором это делается простым движением мыши). Для смещения одного поля я делаю следующее:

  1. Переименовываю таблицу TYPES в TYPES1.
  2. Копирую её и вставляю как TYPES ("Структура и данные").
  3. С помощью мастера вставки ключевое поле делаю вторым: в окне "Выбор полей" первым переношу поле NAME, а потом все остальные.
  4. Удаляю таблицу TYPES1 (если Вы сделали связи таблиц, вам придётся удалить эту таблицу из "Сервис" - "Связи...", а после удаления снова добавить).

Двойным щелчком открываем таблицу TYPES для ввода данных. Надо ввести хотя бы три записи:

Надо ввести хотя бы три записи
Надо ввести хотя бы три записи

Проверяем наш изменённый контрол на форме (чтобы он заработал, надо перезагрузить форму):

Проверяем наш изменённый контрол на форме
Проверяем наш изменённый контрол на форме

Аналогичные операции проделываем с полем и таблицей USERS.

Использование базы данных

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

Последнее обновление ( 18.08.2008 г. )
 

Комментарии 

 
0 #2 TS 2008-11-06 19:19 Спасибо большое за статью! Такому новичку как я она очень помогла! Цитировать
 
 
0 #1 BigAndy 2008-08-04 19:21 1. В корне не верно утверждение, что не индексируются поля с NULL значениями. Все зависит от настроек БД (SQL92)
2. Применять первичные поля с NULL значением можно. Только осторожно. Рекомендации не делать этого исходят из свойств секвенсеров, которые не генерируют NULL поля. Но если вы используете NUll значение в индексе, обычно просто по этому значению не будет произведено индексирование. То же самое верно и для составных индексов.

Нормальная модель БД прямо заставляет реализовывать всё, даже средства навигации средствами БД. Ибо так получается при правильном подходе быстрее.
В приложении установлены макросы на клавиши "ПРедыдущее и следующее". Они не работают.
Модальная форма "Новая" Не получает данные в поля со списком.

Утверждение, что если дата фильма неизвестна, то установить дату в 0000 говорит о том, что дата будет установлена в 1 января 1970 года.

И посмотрите, пожалуста макросы, они глючат.
Цитировать
 

Добавить комментарий

Уважаемые гости сайта! Мы не оказываем поддержку пользователей в формате комментариев и не отвечаем на вопросы по использованию OpenOffice.org, заданные в комментариях. Если Вам требуется такая поддержка, воспользуйтесь формой для сбора вопросов по OpenOffice.org.
Ваш комментарий будет опубликован после просмотра модератором


Защитный код
Обновить

« Пред.   След. »