2013-04-18 3 views
0

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

enter image description here

Однако, когда я пытаюсь назначить более одного автомобиля к одному клиенту, я получаю следующее сообщение об ошибке:

enter image description here

Если кто-нибудь может посоветовать мне, почему это подходит, и что мне изменить, я был бы очень благодарен, если вам нужна дополнительная информация, чтобы понять это, просто спросите! Спасибо

ответ

1

Неправильная диаграмма ER. Предполагая, что вы хотите, чтобы нулевой, один клиент -> много автомобилей, тогда правильный шаблон должен вставить внешний ключ 0,1 в таблицу Many.

Таким образом, ваша таблица Cars должна иметь внешний ключ CustomerId.

Таблица клиентов не должна знать о машинах вообще для нормальности.

EDIT: Глядя на требования/модель, скорее всего, это много. I.e. Многие клиенты с течением времени арендуют автомобиль или автомобили. В этом случае для поддержания нормальности вам понадобится соединительная таблица - например, автомобили-клиенты, которые имеют два первичных ключа, CustomerId и CarId. Здесь вы также найдете информацию об этих отношениях, например, о датах аренды и т. П.

+0

Спасибо за помощь! – h1h1

2

CustomerID является первичным ключом и дублируется на второй строке. Первичные ключи должны быть уникальными.

Вы создали отношения от 1 до 1 между клиентами и заказами. Это означает, что у каждого клиента может быть только одно бронирование, и каждый заказ может иметь только одного клиента. Вот почему вам нужно дублировать это CustomerID, чтобы добавить заказ на другой автомобиль.

+1

Это лучший ответ. Таблица соединений не требуется. Заказы должны просто иметь свой собственный номер авто ПК. Затем вы можете добавить столько заказов заказчику, сколько хотите, и при каждом бронировании вы добавляете автомобиль - это может быть тот же самый автомобиль, который бронируется по разным поводам, или вы можете приложить много заказов для клиентов с другим автомобилем. Я проголосовал за это сообщение и проголосовал за сообщение Going, так как правильно указано, что какая-то таблица соединений не требуется, а лишь незначительное изменение в заказе стола. После этого «много» бронируются, и мы просто прикрепляем автомобиль к этому бронированию. –

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

  • Нет связанных вопросов^_^