Как я понял, некоторые разработчики 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