2009-02-04 3 views
0

Несколько лет назад я создал базу данных в MS Excel для отслеживания моих фотографий. То, как я его проектировал, было следующим. У меня был мастер-лист с первичным ключом с идентификатором номерного номера для каждой фотографии. Затем у меня было несколько листов в книге, в которых содержались конкретные фотографии того же предмета, например. ландшафты (LS), морские пейзажи (SC), закаты (SS) и т. д. На каждом из этих листов был также первичный ключ, который упорядочил идентификатор фотографии в этом предмете. Я запрограммировал форму для открытия, когда мне нужно было ввести новую фотографию. Когда форма откроется, она определит последнюю запись в главном листе и увеличит первичный ключ до следующего числа в последовательности. Затем я бы выбрал, какой лист (тип phto - LS, SC, SS и т. Д.), И он определит последний номер записи на этом конкретном листе с приращением к следующему номеру и введет его в форму. Затем я мог подробно описать эту фотографию, такую ​​как настройки экспозиции, местоположение, дату, ключевые слова и т. Д. Затем она записывала всю эту информацию как в мастер-лист, так и в конкретную тему. Не самый элегантный, но он работал для меня.Multiple ключи в Access?

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

В MS Access Я создал основную таблицу со всеми полями, которые существовали на листе мастера в книге Excel. Единственное отличие между основными и предметными листами состоит в том, что мастер имеет два дополнительных столбца: один для основного ключа (номер главной фотографии) и один для объекта конкретной фотографии. В следующей колонке содержится конкретный номер фото темы. Например, две последовательные записи в главном листе могут быть следующими: slideID = 1245 subject = LS subjectID = 245, затем slideID = 1246 subject = SS subjectID = 127. В тематических листах subjectID является единственным уникальным идентификатором. Вся другая соответствующая информация о фотографии дублируется как в главном, так и в тематическом листах.

Итак, в MS Access у меня есть эта мастер-таблица. У меня есть форма, которую я использую для ввода информации о фотографии. Как я могу заставить его увеличивать как идентификационный номер основного фото, в настоящий момент основной ключ таблицы, так и увеличивать идентификационный номер объекта, как только я выберу, что представляет собой предмет из формы?

Я надеюсь, что это ясно.

ответ

0

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

2

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

=DMax("[slideID]","TableNameHere")+1 

Если это ваше намерение изучить структуру базы данных, есть больше, что должно быть сделано, потому что ваша таблица должна быть нормализованы, вы можете прочитать Fundamentals of Relational Database Design, Paul Litwin, 2003

1

Вашего мастер фото таблица должна иметь всю необходимую информацию для любой фотографии. Если вы хотите просто увидеть «Пейзажи», просто создайте запрос, который фильтрует основную таблицу по теме. Это устраняет дублируемую запись. Любые поля/данные о фотографии в тематических таблицах могут быть перемещены в основную таблицу.

Если вы хотите, чтобы ваши фотографии имели более одного предмета, вам нужна таблица Photo_Subject. Единственными полями, которые ему нужны, являются: Photo_Subject_ID (Auto number), PhotoID (из главной таблицы), SubjectID (или просто укажите название темы). Таким образом, вы можете вводить одну и ту же фотографию столько раз, сколько хотите, и указывать ее на столько предметов, сколько хотите.Вы можете добавить индекс на PhotoID & SubjectID, который позволяет избежать дублирования записи. (Да, я предлагаю избегать основного основного ключа).

Смежные вопросы