Приводим данные в порядок с помощью Microsoft Access (часть 2)

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Продолжим совершенствовать нашу базу данных и функционал по работе с ней.

Добавим в таблицу contacts новое поле [active], которое будет характеризовать активность контакта (активен или не активен). Тип данных установим Логический. Логический (или булевый от англ. boolean) тип данных имеет всего два значения ИСТИНА или ЛОЖЬ (также может обозначаться: как 1 или 0, да или нет, true или false) применяется в тех случаях, где состояние объекта может быть охарактеризовано этими двумя значениями, во многих случаях этого достаточно. В дальнейшем этот признак позволит фильтровать выборку данных и строить логику работы. Например, показать список только активных контактов.

В настройках Свойства поля, которое появляется в нижней части экрана при редактировании поля, в свойство Значение по умолчанию запишем =1, теперь каждая новая запись по умолчанию будет считаться активной, однако все предыдущие записи будут неактивными, так как это поле мы добавили уже после заполнения таблицы данными. В идеальном случае поля таблиц следует проектировать так, чтобы в последующем не приходилось их добавлять, или добавлять по минимуму.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

В таблице contacts, поле [active] получило возможность взаимодействия с ним через элемент управления Checkbox,во многих случаях это удобно, хотя в программе за ним скрывается символ 1 или 0, в зависимости от наличия или отсутствия “галочки”.  Мы бы могли удалять записи неактивных контактов, но удалять какие-либо записи в базах данных нужно с особой осторожностью, как правило записи особым образом отмечаются или переносятся, и при необходимости к ним всегда можно вернуться.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Теперь обратим внимание на поля [phone1] и [phone2]. Исходя из опыта мы предположили, что у человека может быть более одного телефонного номера и создали два поля под эти цели, но а если у человека три телефонных номера и даже четыре? Логично предположить и создать под эти цели максимальное количество полей (помним, что вносить все номера в одно поле через запятую противоречит принципу минимальной неделимости), допустим создадим десять полей для хранения десяти телефонных номеров. И делать мы этого не будем по причине того, что система управления базами данных резервирует память под хранение данных и даже при наличии одного человека с десятью телефонными номерами большое количество пустых мест (рисунок ниже) будет замедлять работу нашей базы, когда она начнет разрастаться данными.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Создадим таблицу phones.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

В ней же создадим ключевое поле [id] с типом данных Счетчик, поле [userid] – тип данных Числовой и [phone] – тип данных Текстовый. Поле [userid] является внешним ключевым полем, сюда мы будем записывать значение поля [id](которое соответствует конкретному человеку) из таблицы contacts и его номер телефона, столько раз сколько номеров телефонов у него есть.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Перенесем номера телефонов из таблицы contacts в таблицу phones и удалим поля [phone1] и [phone2].

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

На панели инструментов откроем вкладку Работа с базами данных и вызовем Схему данных. В конструкторе Схемы данных вызовем Отобразить таблицу и выберем из списка таблиц таблицу contacts и phone. Мы видим модели наших таблиц с соответствующими полями.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Наведем курсор мыши на поле [id] таблицы contacts, нажмем на него левой кнопкой мыши и не отпуская перенесем на поле [userid] таблицы phones. В появившемся диалоговом окне отметим пункт Обеспечение целостности данных (в таблице phones мы не сможем записать номер телефона для несуществующего контакта) и применим изменения.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Теперь наши таблицы связаны отношением – Один ко многим, это значит, что один человек из таблицы contacts может иметь много телефонных номеров в таблице phones. Таким образом наша таблица будет расти вниз, а не в ширь, как это предполагалось у нас изначально.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Откроем форму contacts из панели объектов базы. Теперь наши поля формы [phone1] и [phone2] ссылаются на несуществующие поля таблицы contacts, все верно, мы их удалили.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Откроем форму contacts в режиме Конструктора уже знакомым для нас способом. Здесь мы имеем возможность в графическом режиме изменять размеры и расположение наших полей, а так же менять их свойства, и много чего другого. Выделим область расположения “битых” полей и удалим их.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Реализуем возможность ввода нескольких телефонов для одного контакта. В режиме конструктора формы на верхней панели инструментов, из раздела Элементы управления мы можем добавлять элементы привычные нам по работе с большинством программ, имеющих графический интерфейс (кнопки, выпадающие списки, чекбоксы, радиокнопки, списки и т. п.). Выберем элемент управления Подчиненная форма/отчет (считается, что это неудачный перевод локализации MS Access, логичнее  этот элемент управления звучал бы как Подчиненная таблица). На рабочем поле формы курсор мыши изменит свой вид, выделим произвольную область на свободном месте и вставим элемент управления, в дальнейшем мы сможем отредактировать его размер в удобный для работы.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

В появившемся Мастере подчиненных форм выберем источником подчиненных данных Имеющиеся таблицы и запросы, далее во втором окне из выпадающего списка таблиц выберем таблицу phones, из левого списка полей таблицы phones выберем поле [phone] и переместим его в правый список соответствующей кнопкой.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Третий этап диалога предлагает нам связать подчиненные данные с таблицей contacts, если же мы выберем <отсутствие> такой связи, в подчиненной таблице, мы просто будем видеть полный список телефонов всех контактов, выберем первый пункт из списка, который соответствует нашей схеме связи, иными словами мы говорим – Показать все телефоны для такого-то контакта. Сохраним работу мастера, сохраним изменения в конструкторе формы.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

На панели инструментов, в подразделе Сервис нажмем Добавить поля и перетащим поле [active] на макет формы. Сохраним изменения и выйдем из режима конструктора.

Приводим данные в порядок с помощью Microsoft Access (часть 2) Microsoft office, Microsoft Access, Windows, База данных, Компьютер, Длиннопост

Теперь на форме contacts, в окне подчиненной таблицы,  перемещаясь по записям контактов сможем видеть и добавлять необходимое количество телефонов для конкретного контакта, все добавления будут записываться в таблицу phones. Добавим новый телефон для первого контакта и в таблице phones появится еще один телефон, заметьте поле [userid] таблицы phones заполняется автоматически соответствующим [id] (которое идентифицирует конкретного пользователя) из таблицы contacts. Также у нас есть возможность изменять “галочкой” активность контакта и эти изменения тоже будут отражаться в таблице contacts.

MS, Libreoffice & Google docs

735 постов14.9K подписчиков

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.