Member 13530575 Ответов: 1

Идентификация клиентов на основе нескольких полей в MS access 2013


Я хочу создать базу данных клиентов Microsoft Access (2013), где клиенты идентифицируются по их имени и адресу (я хочу разрешить нулевые адреса). Так например:

Он должен принять

Имя-------------Адрес
Джо Смит--------123 Главная Улица
Сара Грин------123 Главная Улица
Боб Бейкер------- - - Нуль
Джо Смит--------456 Первая Улица

Что я уже пробовал:

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

Еще одно решение, которое, как я ожидаю, будет предложено, - это сделать столбец автоматического номера и назвать его CustomerID. Я думаю, что могу в конечном итоге включить это, но это позволит мне дать одному и тому же клиенту два разных идентификатора клиента, например:

CustomerID------Имя-----------Адрес
1-----------------Джо Смит-------123 Главная Улица
2-----------------Джо Смит-------123 Главная Улица

Richard MacCutchan

Зачем вам вообще нужны две записи для одного и того же клиента?

1 Ответов

Рейтинг:
2

OriginalGriff

Проблема со всей вашей схемой заключается в том, что вы можете получить двух клиентов с одинаковыми именем и адресом: например, отец и сын вполне могут жить в одном доме.
Кроме того, "Main St." - это общий адрес, так что вполне возможно, что вы получите одну и ту же пару имен и адресов в разных городах.
А что происходит, когда Джо Смит переезжает через весь город? С "переменным полем" как частью составного ключа вы должны обновить его в нескольких местах, и очень легко пропустить некоторые из них.

Обычно первичным ключом является идентификатор клиента, что значительно облегчает обратную ссылку на другие таблицы данных, такие как Accountstatus, OrdersPending, OrderHistory, Invoices и т. д., а также использование "уникального" единого поля для входа, такого как электронная почта или имя пользователя, которое позволяет вам узнать идентификатор клиента один раз и сохранить его для сеанса.