Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 Foreign key vs. таблица соответствий  [new]
BendMe
Member

Откуда:
Сообщений: 3
Есть таблица клиентов, есть таблица заказов в которую сплошняком накиданы заказы для всех клиентов. У меня вопрос - что лучше использовать для установления соответствия заказов клиент: foreign key в таблице заказов или создавать отдельную таблицу соответствий айдишников обеих таблиц? Или вообще может быть есть способ получше организовать такое отношение чем сплощняком накидывать заказы в 1 таблицу?
1 июл 15, 01:20    [17835525]     Ответить | Цитировать Сообщить модератору
 Re: Foreign key vs. таблица соответствий  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29370
BendMe,

заказ обычно принадлежит конкретному клиенту. Так что, заказ ссылается на клиента. Поэтому: таблица заказов, таблица клиентов, и ФК между ними, с клиентов на заказы.

Если сделать доп. таблицу, с идентификаторами клиентов и заказов, то это будет связь M-M, т.е. многие ко многим, когда один заказ может принадлежать нескольким клиентам, что в корне неверно.
Такая таблица имеет право на существование между таблицей заказов и таблицей товаров. Когда 1 товар продается в нескольких заказах, и в 1 заказе продается несколько товаров.

p.s. вам надо прочитать что-нибудь начальное про нормальные формы и отношения.
1 июл 15, 01:31    [17835531]     Ответить | Цитировать Сообщить модератору
 Re: Foreign key vs. таблица соответствий  [new]
BendMe
Member

Откуда:
Сообщений: 3
У 1 клиента может быть много заказов а для 1 заказа только 1 клиент: связь один-ко-многим, создавая третью таблицу соответствий - изменится структура таблиц, но я не понимаю почему от этого изменится тип связи.
1 июл 15, 01:50    [17835548]     Ответить | Цитировать Сообщить модератору
 Re: Foreign key vs. таблица соответствий  [new]
White Owl
Member

Откуда:
Сообщений: 12585
BendMe,

Если ты создашь третью таблицу, то логический тип связи не изменится. Но вот физический тип связи уже изменится. У тебя вместо связи "один-много", получится связь "один-один-много". Причем от второго "один" не будет смысла, но в дальнейшей работе тебе его придется использовать.
1 июл 15, 04:36    [17835597]     Ответить | Цитировать Сообщить модератору
 Re: Foreign key vs. таблица соответствий  [new]
BendMe
Member

Откуда:
Сообщений: 3
Воот, меня и интересовало, есть ли какой то смысл в 3й таблице - thnx
1 июл 15, 11:07    [17836453]     Ответить | Цитировать Сообщить модератору
 Re: Foreign key vs. таблица соответствий  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20776
BendMe
Воот, меня и интересовало, есть ли какой то смысл в 3й таблице - thnx

Если можно гарантировать, что бизнес-процессы не изменятся, и ВСЕГДА заказ будет связан только с одним клиентом (либо при изменении клиента можно удалить сведения о том, что раньше он был другим) - смысла нет. Иначе - есть.
1 июл 15, 11:37    [17836672]     Ответить | Цитировать Сообщить модератору
 Re: Foreign key vs. таблица соответствий  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 64002
Блог
BendMe
У меня вопрос - что лучше использовать для установления соответствия заказов клиент: foreign key в таблице заказов или создавать отдельную таблицу соответствий айдишников обеих таблиц?

До тех пор, пока в бизнес-логике нет особых и нестандартных требований, делающих более удобным второй вариант, первый лучше.

BendMe
Или вообще может быть есть способ получше организовать такое отношение чем сплощняком накидывать заказы в 1 таблицу?

Да нет, тут действует правило "чем проще, тем лучше". Сплошная однородная таблица - решение, близкое к идеалу, и это отступления от неё надо обосновывать.
1 июл 15, 12:22    [17837077]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить