Простой вопрос о том, какая таблица должна иметь внешний ключ другой таблицы в отношении «многие» - PullRequest
0 голосов
/ 24 января 2019

Просто в качестве примера, скажем, customer может иметь несколько orders.Это отношение один-много.

Когда я проектирую таблицы базы данных, как в этом примере, я всегда думаю, стоит ли мне иметь таблицу customers, имеющую столбец order_id внешний ключ илидолжен ли я иметь таблицу orders, имеющую внешний ключ customer_id .Какой путь?

Существует ли в дизайне БД правило или соглашение о том, каким способом лучше решить, какая таблица должна содержать внешний ключ другой таблицы?(Надеюсь, я четко изложил свой вопрос на этом примере.)

Чтобы уточнить: Я знаю, что должен объявить customer_id в orders таблице в моем примере, но я ищуправило / соглашение (если оно есть), которое поможет мне в будущем легко решить, какая таблица должна объявлять столбец внешнего ключа в целом.

Ответы [ 3 ]

0 голосов
/ 24 января 2019

В отношении «один ко многим» внешний ключ (FK) всегда находится в таблице «много», указывая на первичный ключ (PK) таблицы «один».
Если у вас естьОтношение «многие ко многим», затем необходимо создать таблицу отношений , содержащую оба PK.Например: один студент может выбрать много курсов , один курс имеет много студентов .Таблица отношений может называться «Зачисления» и будет содержать оба ПК.

Посмотрите здесь и здесь или найдите «нормализацию реляционной базы данных».

0 голосов
/ 24 января 2019

Я думаю, что ключевой глагол для определения того, что и куда идет, имеет (в случае отношения один-ко-многим). Если сущность A имеет некоторых сущностей B , то внешний ключ должен быть объявлен с правой стороны отношения A имеет B , то есть в B .

0 голосов
/ 24 января 2019

У вас должна быть таблица заказов с Customer_id.

Причина почему?Вы хотите добавить заказы в таблицу заказов без необходимости обновления таблицы клиентов.Также вы не хотите хранить список заказов на клиенте.

Один клиент может иметь несколько заказов, внешний ключ предназначен для нескольких экземпляров одного и того же значения.Надеюсь, что это тот ответ, который вам нужен

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