-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Многозначные поля (поля, одновременно допускающие несколькнесколько значений). За и против

Четверг, 07 Июня 2018 г. 12:02 + в цитатник
Как я понял, некоторые разработчики Access не совсем хорошо представляют себе, что такое многозначные поля, или как их называет Микрософт - поля, одновременно допускающие несколько значений. В своё время я прочитал о них, обдумал, и решил пока не применять. В основном потому, что приходилось писать программы под разные версии Access, а для этого формат MDB выглядел предпочтительнее. Да и к связующим таблицам я уже привык.

Просмотрев несколько последних самоучителей по Access, я обнаружил, что там нет ничего о многозначных полях. Вот я и решил выложить здесь всё то, что в своё время нарыл в интернете. Так сказать для общего развития.

До появления программы Access 2007 связующие таблицы были единственным средством создания связей "многие-ко-многим". Но для поддержки средств интеграции сервисов SharePoint в Access 2007 включена новая функциональная возможность — многозначные поля.
Как следует из названия, многозначное поле может хранить более одного значения. Эта возможность очень удачно решает проблему связей "многие-ко-многим". Идея состоит в настройке связующего поля в таблице-потомке как многозначного поля. Рассмотрим пример с авторами и книгами. При отсутствии связующей таблицы вам нужно вставить столбец AuthorID в таблицу с записями о книгах для обозначения каждого автора, написавшего данную книгу.
Но обычное поле хранит единственное значение. Таким образом, в этой таблице можно указать только одного из нескольких авторов книги (если её пишет авторский коллектив).
Если же разрешить хранение нескольких значений в поле AuthorID, можно ввести список авторов.

За кадром многозначное поле в действительности использует связующую таблицу. Но программа Access скрывает эту подробность от вас, что существенно облегчает объединение связанных записей.
Для создания поля с несколькими значениями следует использовать подстановку. Как вы знаете, эта функциональная возможность выбирается на последней странице мастера Создание подстановки. С другой стороны, если у вас уже есть подстановка, в поле, необходимо внести небольшое изменение. Откройте таблицу в Конструкторе, выберите поле с подстановкой и затем в области Свойства поля щелкните кнопкой мыши вкладку Подстановка (Lookup). Найдите свойство Разрешение нескольких значений (Allow Multiple Values) и измените его значение с Нет на Да.

Примечание
Как только вы задали в поле поддержку множественных значений, вы не сможете вернуться к варианту поддержки одного значения.

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

Многозначные поля доступны, только если применяется БД нового формата с расширением accdb . В файле с расширением mdb (БД, созданной программой Access 2003 и еще не преобразованной) вы не сможете их использовать.

Поля с множественными значениями вызывают проблемы при переносе вашей БД на SQL Server, поскольку SQL Server не поддерживает их. Следовательно, если есть вероятность совместного использования вашей БД многими пользователями (скажем, в большой компании) и вы можете в какой-то момент перенести ваши данные в БД более мощной программы SQL Server, избегайте полей с множественными значениями.

Примечание
Поля с множественными значениями не создают проблем при переносе вашей БД на Share-Point Server.

Работа со связями "многие-ко-многим"

Какой подход лучше: связующие таблицы или поля с множественными значениями?

Большинство фанатов БД будут приверженцами связующим таблицам. Такие таблицы приняты, укоренились и не скрывают внутреннего функционирования вашей БД. Связующие таблицы особенно удобны, если вы хотите добавить дополнительную информацию о связи между двумя конкретными таблицами. Предположим, что вы создаете таблицу Students_Classes для учета учебных курсов, которые все студенты слушают в популярном учебном заведении. В таблицу Students_Classes можно включить дополнительные поля, такие как EnrollmentDate (дата записи на курс), Соn-firmationLetterSentDate (дата отправки подтверждающего письма) и Prerequi-sitesChecked (необходимые условия приема проверены).

С другой стороны, у связующих таблиц есть недостатки — с ними трудно работать на листе данных. Если в вашей БД применяется связующая таблица Authors_Books, для вставки новой книги в вашу систему придется редактировать, по крайней мере, две таблицы. Сначала необходимо вставить запись в таблицу Books. Затем следует открыть таблицу Authors_Books и вставить в нее новую запись, которая свяжет книгу с автором. (Для облегчения этого процесса можно использовать подстановки в таблице Authors_Books, но все равно для этого требуется отдельный шаг.) Если же в таблице Books содержится поле Authors с множественными значениями, можно добавить книгу и присвоить ей авторов за один шаг, что гораздо удобнее.

Если вы решили остановиться на связующих таблицах и хотите облегчить свою жизнь, программа Access предлагает отличное решение. Можно создать настраиваемую форму, умеющую работать сразу с несколькими таблицами. Можно сконструировать форму, позволяющую человеку, работающему с БД, вставлять запись одновременно и в таблицу Books, и в таблицу Authors_Books. И главное — ваша форма может выглядеть так, как будто она использует только одну таблицу.

Использовано:
Многозначные поля
Руководство по полям, одновременно допускающим несколько значений
Использование в запросах полей, одновременно допускающих несколько значений

Прошу высказать Ваши замечания, предложения, мнения о проблеме.

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?

http://www.sql.ru/forum/1295387/mnogoznachnye-polya-polya-odnovremenno-dopuskaushhie-neskolkneskolko-znacheniy-za-i-protiv


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку