Создание базы данных в LibreOffice Base

Опубликовано: 06.12.13 / Автор: Катерина - 30 комментариев

База данных — удобное и функциональное хранилище информации, позволяющее осуществлять самую разноплановую работу с данными. Сегодня мы рассмотрим алгоритм создания небольшой базы данных в СУБД LibreOffice Base.

При запуске LibreOffice Base автоматически открывается Мастер баз данных, предлагающий создать новую БД, либо открыть существующую. Выберем пункт Создать новую базу данных и нажмем на кнопку Далее:

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

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

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

Теперь СУБД предложит нам сохранить нашу базу данных. Выбираем нужную папку, в которой будет хранится база, и даём ей название.

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

В качестве примера мы создадим базу данных клиентов какого-то абстрактного магазина. Поэтому назовём её «База данных клиентов»:

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

Базы данных в LibreOffice Base сохраняются в формате .odb

После того как создан новый файл базы данных, редактор откроет основное рабочее окно СУБД. Здесь можно работать с таблицами, запросами, формами и отчётами. Создавать, редактировать и управлять ими. Каждую из этих форм можно создавать в двух режимах — с помощью мастера (для начинающих) или в режиме дизайна (для опытных пользователей).
Для начала создадим таблицы. Чтобы воспользоваться помощью мастера таблиц, щёлкнем на кнопке Таблицы в окне База данных, а в окне Задачи выберем Использовать мастер для создания таблицы…:

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

Мастер создания таблиц предлагает множество готовых шаблонов таблиц и полей в них. Остается только выбрать подходящие из нужной сферы или создать требуемую таблицу самим.
Создание таблицы с помощью шаблонов начинается с определения ее категории с помощью переключателей Деловые/Персональные. В данном контексте нам нужна категория Деловые. В списке Примеры таблиц выбираем название наиболее подходящего образца — в нашем случае это таблица Клиенты.
После щелчка по названию выбранного образца формируется содержимое списка Доступные поля. Нам нужно просмотреть этот список и отобрать те, которые необходимы в таблице. Чтобы поле попало в структуру формируемой таблицы, его нужно выделить, а затем щелкнуть по кнопке >. Для нашей таблицы выберем следующие поля:

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

При желании любое поле, включенное в список выбранных полей, можно переименовать. Это можно сделать в окне следующего шага. Мы переименуем поле КодКлиента в более понятное НомерДисконтнойКарты, а также изменим следующие параметры: поля НомерДисконтнойКарты, Имя, Фамилия и НомерМобильногоТелефона сделаем обязательными для заполнения:

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

На третьем шаге происходит задание первичного ключа. Если объяснять просто, то первичный ключ — это то поле, по которому мы можем однозначно идентифицировать каждую запись в таблице. А значит, значения первичных ключей в таблице никогда не повторяются. В нашем случае первичным ключом целесообразно сделать поле НомерДисконтнойКарты, так как эти номера, как правило, уникальны в рамках одного магазина/сети:

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

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

В последнем окне Мастер предлагает подправить название таблицы (если нужно) и три варианта дальнейших действий с ней: Немедленно вставить данные, Модифицировать дизайн таблицы, Создать форму на основе данной таблицы. Выберем Немедленно вставить данные и щёлкнем по кнопке Готово:

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

В качестве примера введём несколько строчек в нашу новоиспеченную таблицу:

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

Далее рассмотрим создание новой таблицы в режиме дизайна. Чтобы создать новую таблицу в режиме дизайна, выберем в окне Задачи пункт Создание таблицы в режиме дизайна.
В открывшейся таблице можно задать поля будущей таблицы. Создадим таблицу Дисконтные карты. В ней будут следующие поля: номер карты, размер предоставляемой скидки и количество баллов на счёте. Введем новые поля в строки сверху вниз: щелкаем ячейку Имя поля и вводим имя для каждого поля данных.
В следующей ячейке справа определяем Тип поля: щелкнув в этой ячейке, выбираем тип поля из списка.
Для каждого поля можно также ввести Описание. Текст описания будет возникать в виде всплывающей подсказки при наведении курсора на заголовок в представлении таблицы. Для примера сделаем пояснение, что скидка должна вводиться не в %, а в долях от 1:

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

Ниже таблицы полей вводятся Свойства поля для каждого выбранного поля данных.
Поле Автозначение позволяет автоматически нумеровать записи по возрастанию. В данном случае удобно автоматически получать номер дисконтной карты — для этого поля этот параметр установим в положение Да.
Поля Длина и Знаков после запятой изменяем в зависимости от того, какими будут вводимые данные: скидка у нас может быть до десятых долей процента, поэтому число знаков после запятой — 3.
В поле Значение по умолчанию вводим значения, которые будут подставляться в запись автоматически. Само собой, что в дальнейшем содержимое этого поля можно будет при необходимости изменить. Для нашей таблицы по умолчанию можно заполнять поля РазмерСкидки — скажем, вначале он для всех составляет 5%, а КоличествоБаллов при получении дисконтной карты как правило равно 0.
В поле Обязательное укажем, может ли поле оставаться пустым. В нашем случае специфика таблицы такова, что все поля должны быть заполнены, поэтому для всех установим Да.
Чтобы выбрать поле, которое станет первичным ключом таблицы, нужно правой кнопкой мыши нажать на серый квадрат слева от строки с нужным полем и установить галочку Первичный ключ.

В зависимости от типа базы данных или типа поля некоторые свойства полей могут быть недоступны.

Остаётся только сохранить таблицу — при этом нужно будет ввести её название. Назовём таблицу Дисконтные карты и сохранимся.

Также заполним таблицу Дисконтные карты данными:

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

В рамках данного занятия также рассмотрим создание связей между таблицами. Они будут необходимы нам для дальнейшей работы с БД — например, для создания запросов, использующих данные двух или более таблиц. Чтобы создать связь, в основном окне программы выберем пункт меню Сервис->Связи.

Создавать или изменять связи между открытыми таблицами нельзя! Поэтому вначале необходимо закрыть все ранее открытые таблицы базы данных и открыть окно базы данных.

В открывшемся окне нужно сначала добавить таблицы (кнопка Добавить таблицы на панели инструментов, либо аналогичный пункт в меню Вставить) — в окне со списком таблиц выбираем нужную и нажимаем кнопку Добавить.
Затем между таблицами создаётся связь (также кнопка или пункт меню Создать связь):

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

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

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

Обозначение «1-1» указывает, что данная связь имеет тип «один-к-одному» и означает, что у одного клиента может и должна быть только одна дисконтная карта.

В данной статье мы постарались рассмотреть основные приёмы, необходимые для создания простой базы данных в LibreOffice Base. Однако, если у вас остались вопросы по данной теме, вы можете задать их в комментариях или на нашем форуме. Мы постараемся оперативно на них ответить 🙂

29 comments

  1. - 2 марта 2014 Reply

    Как перевернуть текст помогите в либер офис waiter

  2. - 3 марта 2014 Reply

    ДОбрый день. как создать форму на базе таблицы? с окнами, кнопками? в акцессе есть мастер, есть ли чтото подобное в либре?

    • Катерина - 5 марта 2014 Reply

      Ageo, конечно. В Base эта возможность находится в пункте Формы в окне База данных. Мастер там же в окне Задачи.

  3. Олег - 25 апреля 2014 Reply

    при попытке создания таблицы в базе выскакивает сообщение что не установлена java. по факту — установлена 7. LibreOffice 4.2 win7.

  4. - 27 апреля 2014 Reply

    Связи это классно, а как реализовать при вводе данных в основную таблицу подстановку из связанных справочников? Например, тип недвижимости в список объектов недвижимости?

    • Катерина - 28 апреля 2014 Reply

      Михаил, в данном случае вам нужно создать форму. Во-первых, в ней можно удобнее организовать ввод данных. Например, расположить поля в порядке, удобном для заполнения, сделать выпадающие списки. А во-вторых, там вы сможете показывать не только поля таблицы, которую нужно заполнять, но и справочную информацию из других таблиц 🙂

  5. александр - 16 декабря 2014 Reply

    а кто может помочь решить задачу создания небольшой бд с таблицами и субформами

  6. александр - 17 декабря 2014 Reply

    сколько надо?

  7. Santas - 30 июля 2015 Reply

    Еще раз для чайника объясните пожалуйста.
    Как в ячейках таблицы отобразить формулы? Может не совсем корректно задан вопрос, поясню:
    До Base работал в табличном процессоре (Calc) и использовал там элементарные функции (ну например по расчету процентов и количества дней просрочки оплаты). Каким образом можно организовать подстановку в определенные ячейки?

    • Катерина - 2 августа 2015 Reply

      Santas, уточните, пожалуйста. Не совсем понятно. Вы хотите, вместо готовых данных вставлять в строки таблицы функции? На форме или при простом заполнении таблицы?

  8. santas - 2 августа 2015 Reply

    На форме. Например:
    У меня в таблице Calc в ячейки были вставлены формулы (например расчета процентов (сумма основного дола*0,0001*кол-во дней просрочки)).
    Переходя на работу в Base, возникла мысль о возможности применения аналогичных функций — что бы при заполнении определенных полей (если мы говорим про форму), следующие поля заполнялись автоматически.

  9. Santas - 3 августа 2015 Reply

    Катерина, дДля меня так-то «разжевывать» нет необходимости, просто немного подсказать возможно ли это в принципе, и если возможно то через что действовать. Может в LO Base есть какой-то внутренний построитель выражений…

    • Катерина - 3 августа 2015 Reply

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

  10. santas - 4 августа 2015 Reply

    Окэ. Спасибо!

  11. Ольга - 5 августа 2015 Reply

    Как можно добавить в каталог товаров их изображения? Тип поля для этого, вроде, есть (), но как именно можно указать какое фото нужно сохранить в БД?

    • Катерина - 6 августа 2015 Reply

      Ольга, вы заводите поле с типом Картинка, а потом создаёте форму, на ней размещаете графический элемент управления и связываете его со этим полем. Когда будете работать с формой, сможете щёлкнуть по графическому элементу и вставить изображение. В самой таблице его видно не будет, а на форме или в Calc/Writer — да.

  12. Ольга - 6 августа 2015 Reply

    Спасибо. А возможно ли прикрепить несколько фото к одной записи иначе, чем создавая для каждой отдельное поле? Например: у изделия есть 1 главное фото и несколько дополнительных в разных ракурсах.

    • Катерина - 6 августа 2015 Reply

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

  13. Борис - 27 ноября 2015 Reply

    Добрый день.
    Приятно читается статья, есть несколько фраз вскользь о ключевых моментах, которые в «сухих» руководствах даже не упоминаются как само-собой… Однако открывают глаза.
    Хотелось бы увидеть на сайте внятное РУССКОЕ руководство по использованию и написанию макросов для Base. К сожалению не поддерживается запись даже банальной последовательности нажатия кнопок в Base (почему?).
    На многочисленных форумах можно «попросить» корифеев написать тебе комбинацию из, непонятно откуда взятых, почти английских слов. Русского варианта описания языка не могу найти, а английскому языку учиться поздно.
    Всё-таки Open и Libre — сильно внебюджетные варианты автоматизации и «правильные» программисты не удостаивают помощью. Потребностей же воспользоваться пакетом очень много.
    Очень надеюсь на помощь Вашего сайта.

  14. Евгений - 4 апреля 2016 Reply

    Добрый день.
    Такая история: создаю базу данных сотрудников организации, типа штатка.
    1) Создал таблицы Отделы (Столбцы «Отдел» — первичный ключ и «Отдел (полное наименование)») и Сотрудники (Столбцы «ID» — ключ, «Ф», «И», «О», «должность», «Отдел»).
    2) Создал связь между этими таблицами, между столбцами «Отдел» и «Отдел». Свзязь получилась типа «n-1», подскажите, что это означает? Типа в одном отделе может быть много сотрудников, так? Или один сотрудник может быть в нескольких отделах?
    3) При заполнении таблицы «Сотрудники» думал, что можно будет выбирать принадлежность человека к отделу из выпадающего списка, формирующегося по таблице «Отделы». Но этого не происходит. Если вписывать значение руками — то не даёт вписать отдел, которого не создано, что логично.
    Подскажите, как организовать выпадающий список? Это нужно делать уже не таблицах?
    Раньше с подобными программами не работал, только осваиваю))

  15. евгений - 24 июня 2016 Reply

    Добрый день!, Спасибо за статью. Создал для тренировки Ваши две таблицы- все получилось, пытался организовать между ними связи — ничего не получается.
    Перед созданием связей закрыл обе таблицы. Открыл окно Libre Office. В нем файл-открыть файл — в окне Открыть выбрал одну из таблиц. Через меню этой таблицы таким же образом открыл вторую таблицу.
    Далее в окне любой из таблиц одна и та же картина — Сервис- связи- Добавить таблицу — добавляется эта же таблица, далее Вставка — Создать связь , появляется таблица Связи, в обоих ее полях та же первая таблица (второй нет), и в них те же одинаковые поля.
    Подскажите, пожалуйста, как все- таки организовать связи между этими двумя таблицами.
    С уважением Евгений

  16. евгений - 5 июля 2016 Reply

    Похоже нашел, в чем была моя ошибка.

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

  17. Людмила - 27 сентября 2016 Reply

    Добрый день.
    Мне надо создать таблицу с картинками и чертежами (макетами). Их надо просто скопировать и вставить в таблицу.Как это можно сделать?
    И если ли вариант такого: рядом с названием продукта. или с следующей ячейке поместить его фото, а при нажатии на картинку она увеличивается, что дает возможность хорошо рассмотреть внешний вид продукта. Например- пачка печенья, его спецификация (макет этикетки, упаковки, маркировки), и рисунок самого готового, упакованного продукта- при нажатии увеличивается и хорошо видно все требования- на каком уровне и в каком порядке размещены те или иные данные о продукте.
    СПАСИБО!

    • Евгений - 13 ноября 2016 Reply

      Да. Реально. Как это сделать?

    • Сргей - 1 марта 2017 Reply

      Полю присваивается тип Картинки. Создается форма по таблице. Двойной щелчок на поле приводит к выбору изображения.

  18. Евгений - 13 ноября 2016 Reply

    Люди! Кто знает как замутить такую штуку, чтобы Base сам искал картинки в каталоге по запросу и выводил в форме их миниатюры, которые при клике увеличиваются???
    xDDD

  19. Андрей - 28 ноября 2016 Reply

    Помогите!
    В LibreOffice Base нужно ввести запрос чтобы отображалась сортировка за вчера! За сегодня все получается
    SELECT * FROM «Base» where «Дата» = now
    Как задать дату за вчера?!

1 Trackback

  • - […] https://libreoffice.su/base/sozdanie-bazyi-dannyih-base.html […]

Оставить комментарий