Проектирование баз данных в среде OpenOffice.org Base/Таблицы
Для того чтобы мы не рассматривали абстрактные задачи мы создадим аналог реальной базы, но только с упрощенной структурой.
Создание базы данных
правитьПознакомимся с phpMyAdmin на примере создания новой базы. Для начала нам необходимо убедиться, что веб-сервер работает. Для этого открываем браузер и переходим по адресу http://localhost. Если вы видите сообщение «It works!» или аналогичное значит все работает. Если нет значит веб-сервер установлен неправильно или не запущен.
Для того чтобы зайти в phpMyAdmin просто перейдите по адресу http://localhost/phpmyadmin. Вы уведите запрос на ввод логина и пароля. Войдите под пользователем root используя пароль, который вы ввели в процессе установки MySQL.
После входа в верхней части странице найдите вкладку «Привилегии» и перейдите на нее. Вы увидите всех пользователей для которых разрешено работать с MySQl. Нам необходимо добавить пользователя для нашей базы данных. Отдельный пользователь необходим для возможности установки определенных прав, например разрешить работу только с определенной БД. Для создания пользователя нажмите ссылку «Добавить нового пользователя». Создадим пользователя с именем air и паролем air. Пока наш пользователь будет иметь все привилегии, для этого в разделе «Глобальные привилегии» нажмите «Отметить все». В последующем мы можем ограничить права пользователя как нам будет угодно. При создании пользователя есть возможность автоматического создания для него базы данных. Мы не будем использовать эту возможность для того чтобы продемонстрировать создание базы вручную.
Для создания новой базы перейдем на вкладку «Базы данных». Файлы баз в Ubuntu физически расположены в каталоге /var/lib/mysql, для каждой базы создается своя папка.
Данные
правитьПредставим, что нам необходимо автоматизировать работу касс аэропорта. Для этого нам понадобится создать базу данных с несколькими таблицами. Мы не сможем сейчас определить какие таблицы нам понадобится, это мы поймем в процессе создания БД, но основные данные мы представим в следующих таблицах:
- «Авиалайнеры»
- «Рейсы»
- «Продажи»
- «Справка»
Давайте попробуем описать какие поля в каких таблицах нам могут понадобится:
- Таблица «Авиалайнеры»
- Бортовой номер самолета
- Тип самолета
- Дата техосмотра
- Таблица «Справка»
- № рейса
- тип салона (первый, второй, бизнес)
- количество мест
- количество свободных мест
- стоимость билетов
- Таблица «Рейсы»
- № рейса
- бортовой номер
- дни вылета (четные, нечетные, каждый день)
- пункт отправления
- пункт назначения
- Таблица «Продажи»
- № рейса
- дата продажи
- тип салона (первый, второй, бизнес)
- Ф.И.О. пассажира
- номер и серия паспорта
- количество билетов
- скидка (20%, 50%, 100%)
- дата вылета
Оптимизация данных
правитьСразу видно, что некоторая информация у нас дублируется. Необходимо сделать так, чтобы в базе информация не дублировалась, в идеале информация должна быть представлена в виде одной из нормальных форм (например в первой нормальной форме).
Для оптимизации внесем все данные которые повторяются в нескольких таблицах и данные множественного выбора (скидки) вынесем в отдельные таблицы. В итоге у нас должна получится примерно такая структура таблиц:
Основные таблицы
правитьТаблицы-справочники
правитьИмя поля | Тип | Описание | Другие свойства |
---|---|---|---|
code | smallint(5) | код города | unsigned, NOT NULL, AUTO_INCREMENT |
name | tinytext | Имя города | COLLATE utf8_unicode_ci NOT |
Таблицы справочники будут использоваться для заполнения основных таблиц и будут отображаться в формах как выпадающие списки.
Конечно, структура базы данных не идеальна. Ее можно оптимизировать еще, к примеру убрать информацию из таблиц, которая может быть вычислена на основании данных из других таблиц. Но мы не ставим перед собой задачу научить вас создавать идеальные базы, а просто хотим ознакомить с программой OpenOffice Base. Для этого наша база вполне подходит.
Создание таблиц
правитьphpMyAdmin
правитьВизуальные методы создания таблиц предоставляют пользователю понятный и довольно простой способ создания структур данных. Для того чтобы понять и сравнить возможности разных систем мы создадим первую таблицу в phpMyAdmin.
После создания новой БД phpMyAdmin автоматически предлагает создать таблицу. Но мы можем сделать это самостоятельно в любой момент. Создать новую таблицу в базе данных можно на вкладках «Структура» и «Операции». Необходимо нажать на ссылку «Создать новую таблицу», в открывшейся форме вписать имя таблицы (предполагаемое) количество полей. После нажатия кнопки «ОК» открывается форма для описания полей формы. Здесь необходимо указать названия полей, тип, размер и другие свойства. Тут же можно указать ключевое поле и опциональные комментарии. По завершении заполнения формы необходимо нажать кнопку «Сохранить». Заметьте, что кнопка «ОК» добавит еще одно (или больше) поле в форму, а не создаст таблицу. Поэтому внимательно смотрите, что вы нажимаете. Добавить в таблицу запись можно на вкладке «Вставить», но мы в дальнейшем создадим специальные формы в OpenOffice.org Base для заполнения таблиц.
OOO Base
правитьВ OpenOffice создать таблицу можно в режиме дизайна и через мастер создания таблиц. Как ни странно, когда мы выбираем режим дизайна, открывается конструктор таблиц. Не удивляетесь, это связано с плохим качеством перевода элементов интерфейса. Поэтому особого смысла разделять понятия конструктор и дизайнер для нас нет (в Access есть!) и далее мы будем оперировать термином «конструктор». Процесс создания таблицы в OOO аналогичен процессу в phpMyAdmin, необходимо последовательно вводить названия и типы полей и указать ключевое поле при необходимости.
Пользоваться мастером не имеет смысла, т. к. особой функциональности он не добавляет, а все поля в нем жестко определены.
После создания таблицы мы можем открыть ее двойным щелчком мыши и внести любое количество записей. Но мы будем вносить данные через специальные формы, что позволит нам производить проверку правильности ввода и другие манипуляции с данными перед записью в базу.