|
|
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Доброй ночи, всем! Прошу прощения, если такой вопрос уже был. Поиском честно пользовался - не нашёл. =) Прошу помощи в таком вопросе. Как корректно (нормализованно) сделать следующие связи. Имеем две таблицы: - users - orders В таблице users есть ключевое поле id_user и другие поля. В таблице orders также несколько полей, среди которых которых два поля. id_customer - заказчик, внешний ключ к users.id_user id_executive - исполнитель, также внешний ключ к users.id_user Пользователи могут быть как заказчиками так и исполнителями друг у друга. Как грамотно связать 2 таблицы с 2 связями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 00:20 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
А чем не устраивает решение "в лоб" Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 06:18 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
dandare, Рассматривай эту ситуацию как связь трёх таблиц, а не двух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 08:33 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
делал так, через 3-ю таблицу: users2orders: users2orders.id_user users2orders.id_orders users2orders.type - тип отношения, в твоем случае (1-заказчик, 2-исполнитель и т.д.) более универсально kink - это наверное имел ввиду... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 08:54 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Мне кажется последнее решение перемудрённым. Ссылки из нескольких полей на одну и ту же таблицу - обычная вещь. Например, сделка - покупатель и продавец, доверенность - лицо, выдавшее доверенность и на кого выдана и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 09:02 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
SERG1257 В лоб не устраивает, потому как потом запросов много получается. Например, выборка для orders по id_customer, т.е. все заказы такого то чела как заказчика. Нужно в одну таблицу выводить инфу о заказчике и исполнителе. Как писать соедниение для таких случаев? kink Можно пример? lazovik Мне не нужно помнить тип отношения, у меня и так поля однозначные и понятно кто в какой роли выступает. Проблему описал в этом же посте выше. Программист-Любитель Можно пример Вашего решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 09:21 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Попробуй так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 09:55 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
авторКак писать соедниение для таких случаев?Тоже "в лоб" Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 09:59 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Ок. Спасибо Vint_x и SERG1257 ! Работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 10:14 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительМне кажется последнее решение перемудрённым... скорее универсальней ;-) Программист-Любитель...Например, сделка - покупатель и продавец, доверенность - лицо, выдавшее доверенность и на кого выдана и т.п. - это сегодня, а завтра прибавятся договора, доп.соглашения, счета, счет-фактуры и т.д. список мона длинный написать... ;-) Но если такое не предвидится, то представленных решений хватит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 11:35 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Если заказчик и исполнитель в одном экземпляре, то: SERG1257А чем не устраивает решение "в лоб" Код: plaintext 1. иначе: Link_users_ordersuser_idorder_idtype_id Link_type id name1заказчик2исполнитель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 11:57 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
A1ek5andr0Если заказчик и исполнитель в одном экземпляре, то: иначе: Link_users_ordersuser_idorder_idtype_id Link_type id name1заказчик2исполнитель Спасибо, можно как вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2010, 12:52 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Решил не создавать новой темы, потому что вопрос в принципе похожий. Хочу организовать что-то типа внутренне почты на сайте. То есть зарегистрированные пользователи могут обмениваться сообщениями в рамках сайта (форумная почта) И вот тут что-то странное. Одно дело связь многие-ко-многим между двумя разными сущностями, а тут нужно с одной и той же сущностью "Пользователь" В принципе, если поразмыслить, то ниже приведённый вариант вполне подходит, но всё равно очень смущает: Подскажите, можно так оставлять или есть другие варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2010, 10:47 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Не смущайтесь, это гораздо более частое явление, чем вы себе представляете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2010, 13:07 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
BochagovПодскажите, можно так оставлять или есть другие варианты?Конечно, есть. Отправитель может послать одно и тоже сообщение нескольким получателям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2010, 13:31 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Rin@tBochagovПодскажите, можно так оставлять или есть другие варианты?Конечно, есть. Отправитель может послать одно и тоже сообщение нескольким получателям. получателей выносишь в отдельную таблицу с ссылками на id сообщения и id получателя. а за одно можешь и отправителя туда вынести и поставить признак отправитель это или получатель или в отдельную колонку. как тебе понравиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2010, 16:49 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, то схема должна выглядеть примерно следующим образом: В таблице Post - UserID есть соответственно идентификатор получателя Вообще, если таблица содержит в себе только внешние ключи, это допустимо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2010, 23:17 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Допустимо. В вашей схеме у мессаджа много не только получателей, но и отправителей? )))) Достаточно было бы сделать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Правда, при таком раскладе нельзя отправлять от нескольких человек одно сообщение и нельзя отправить одно и то же дважды одному и тому же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2010, 01:37 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
LemegetonДопустимо. В вашей схеме у мессаджа много не только получателей, но и отправителей? )))) Достаточно было бы сделать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Правда, при таком раскладе нельзя отправлять от нескольких человек одно сообщение и нельзя отправить одно и то же дважды одному и тому же. "В вашей схеме у мессаджа много не только получателей, но и отправителей? ))))" Это всего лишь БД. Хранить и получателей и отправителей можно в одной таблице, что бы было удобно потом селекты писать ... ну допускает она несколько отправителей :) можно индекс уникальный поставить на отправителя и мессадже_id :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 15:04 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
п.с. про индекс поспешил, не подумал :) лишнее дело контролировать нескольких отправителей одного сообщения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2010, 15:08 |
|
||
|
Две связи между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Решил продолжить тему. А если создать 2 таблицы дополнительно, отправитель и получатель, которые будут ссылаться на таблицу пользователь. а в таблице сообщение будет ссылки на таблицу получатель и отправитель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2014, 20:00 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36744642&tid=1540903]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 482ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...