Вопрос по Microsoft Access - Невозможно связать первичный и внешний ключ - PullRequest
0 голосов
/ 18 марта 2019

Я столкнулся с вопросом, касающимся первичных ключей и внешних ключей в MS Access. У меня есть две таблицы, Клиент и Продажи.

У клиента есть три атрибута:
CustomerID (короткий текст, который является моим основным ключом),
Имя (краткий текст)
Фамилия (краткий текст)

Продажи имеют следующие атрибуты:
SalesID (номер) - это первичный ключ
ProductID (номер) должен быть внешним ключом
CustomerID (краткий текст) должен быть внешним ключом
(...)

Теперь вот моя проблема: могут быть дубликаты CustomerID, поскольку они могут купить несколько предметов. Я не могу установить внешний ключ CustomerID в таблице продаж на первичный ключ CustomerID в CustomerTable, потому что могут быть дубликаты.

У вас есть идеи, как решить эту проблему?

1 Ответ

1 голос
/ 18 марта 2019

Связанная дочерняя (зависимая) таблица обычно имеет дубликаты родительского первичного ключа.Это природа отношений «один ко многим» или «многие ко многим».Дублирование значений родительского ключа в зависимой таблице не проблема, структура базы данных.

Если в каждой продаже может быть несколько товаров, вам нужна еще одна таблица под названием SaleDetails с полями:

SalesID_FK (число - длинное)
ProductID_FK (число - длинное)
количество (номер - длинный)

Таблица продаж будет иметь:

SaleID_PK (автоматический номер)
CustomerID_FK (номер - длинный)
SaleDate (дата / время)

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

CustomerID_PK (автоматический номер)
CustomerAcct (краткий текст)
и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...