Всем привет, друзья! Мы продолжаем изучать программу LibreOffice Base, и в этом уроке мы научимся создавать связи между таблицами, расскажу как связать таблицы в базе данных LibreOffice Base. Чтобы создать связь между таблицами, необходимо перейти на вкладку «сервис» и выбрать пункт «связи». В данном окне нам нужно выбрать те таблицы, которые мы будем связывать. Для этого нужно дважды кликнуть по названию таблицы.
Давайте сейчас я добавлю таблицы «клиенты» и «заказы», остальные таблицы я добавлю чуть позже. Закроем данное окно, откроем таблицу «клиенты» и таблицу «заказы».
Как связать таблицы в базе данных LibreOffice Base
Напомню, что в прошлом уроке мы в таблицу «клиенты» добавили 2 записи, таблица «заказы» у нас пустая. Друзья, ссылка на предыдущий урок тут.
Чтобы связать данные таблицы, нужно ключевое поле «код клиента» таблицы «клиенты» перенести на поле «код заказчика» таблицы «заказы». И у нас автоматически появляется связь «один-ко-многим». Это означает, что один клиент может в разное время совершить несколько заказов. Данное поле со стороны «единички» также называется первичный ключ. Поле со стороны «многие» называется внешний ключ. Друзья, у меня уже был более подробный урок про ключевые поля и какие типы связи бывают между таблицами. Ссылка тут.
Чтобы удалить связь между таблицами, необходимо выделить связь, щелкнуть по ней и нажать кнопку DELETE.
Давайте, сейчас мы в таблицу «заказы» введём запись и укажем такого заказчика, которого нет в таблице «клиенты». Например, заказчика под номером 2. Сохраняем внесенные изменения и сейчас мы снова попробуем связать наши таблицы.
В таком случае система не даст создать связь между таблицами, так как у нас в подчиненной таблице (а подчиненной таблицей у нас является таблица «заказы»), в этой подчиненной таблице указана запись с таким заказчиком, которого нет в главной таблице (главной таблицей у нас является таблица «клиенты»). Поэтому чтобы данной ошибки не возникало, мы здесь должны указать того заказчика, который хранится в таблице «клиенты». Давайте, сейчас поставим «код заказчика» 1, сохраняем внесенные изменения. Возвращаемся к связям, берем поле «код клиента» и соединяем его с «кодом заказчика». У нас снова появляется связь «один-ко-многим».
Чтобы настроить связи между таблицами дважды кликаем по связи. У нас появляется окно настройки связи, давайте пробежимся по всем опциям, которые доступны в этом окне.
Сначала остановимся на столбике «при обновлении». Предположим у нас стоит пункт «не изменять», что это значит? Давайте это окно сейчас закрою, предположим у меня есть «код клиента» (вот код клиента 1), который сделал заказ под номером 0. Я в какой-то момент хочу поменять код этому клиенту и поставить например 10. Попробую сохранить это изменение и система говорит, что мы не можем изменить «код клиента», так как у нас существует связь между таблицами «клиенты» и «заказы».
Закрываем эту ошибку, возвращаем код клиента 1, снова идем в свойства связи и давайте здесь поставим «обновить каскадно». В этом случае, если мы будем в главной таблице изменять значение ключевого поля, то значение связанного поля будет также меняться в подчиненной таблице.
Как связать таблицы в базе данных LibreOffice Base
Давайте, мы снова вернёмся в свойства связи и выберем пункт «Установить NULL», нажимаем ok. Сейчас я снова поменяю «код клиента», сохраним все внесенные изменения и далее, чтобы изменения отобразились в подчиненной таблице, нажимаю на вот эту кнопку «обновить». Теперь, когда у нас обновляется поле главной таблицы, в подчиненной таблице в связанном поле NULL или пустое значение.
Давайте сейчас мы здесь оставим «обновить каскадно» и быстренько пробежимся по столбцу «при удалении». Давайте сейчас оставим при удалении «не изменять», нажмем ok. Давайте, я сейчас таблицу «заказы» закрою, выберу клиента под номером 100, нажимаю DELETE, нажимаю «да», система ругается. Она говорит о том, что мы не можем удалить запись в главной таблице «клиенты» пока существует связанные записи в подчиненной таблице «заказы».
Как связать таблицы в базе данных LibreOffice Base
Давайте нажмем ok, дважды кликнем по связи, выберем «удалить каскадно». Давайте, я еще раз открою таблицу «заказы», видите, у нас сейчас есть 1 запись, где «код заказчика» 100. Закрываю эту таблицу, снова выбираю записи «код клиента» 100, нажимаю DELETE, нажимаю «да», у нас удалилась запись в главной таблице. Снова открываем таблицу «заказы» и, как вы видите, сейчас данная таблица пуста.
Как связать таблицы в базе данных LibreOffice Base
Снова возвращаемся в свойства связи, «установить NULL», нажимаем ok. Вводим нового клиента и вводим новый заказ, который совершал этот клиент (клиент у нас под номеру 102).
Так давайте, я сейчас таблицу «заказы» снова закрою, выберу клиента 102, нажму DELETE, да, снова открою таблицу «заказы» и, как вы видите, в данном случае у нас записи остаются, при этом в поле «код заказчика» у нас снова проставляется значение null. Надеюсь, это понятно.
Давайте мы сейчас закроем данные таблицы, вернемся в окно «конструктор связей». Чтобы добавить оставшийся таблицы в конструктор связей, мы нажимаем данную кнопку «добавить таблицы» и здесь выбираем таблицу «исполнители», «прайс-лист» и «состав заказа».
Далее располагаем таблицы на рабочей области, выбираем поле «код заказа» таблицы «заказы» и переносим его на поле «код заказа» «состав заказа». Давайте здесь выберем «обновить каскадно» и «удалить каскадно». «Код работы» также переносим на поле «код заказа», выбираем «обновить каскадно», «удалить каскадно», ok. Последняя связь «код исполнителя» переносим на «код исполнителя» «обновить каскадно», «установить Null», окей.
Как вы наверно уже обратили внимание, связывание таблиц в данной программе очень похоже на связывание таблиц в программе microsoft access. Друзья, вот такой вот урок получился, надеюсь он будет вам полезен.
В этом уроки мы разобрались как связать таблицы в базе данных LibreOffice Base.