|
|
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
К примеру: есть таблица "пользователь" и "аноним", а также таблица "заказ". Так вот заказ может сделать либо пользователь, либо аноним. Как лучше осуществить данную связь? Вижу такие варианты: 1) В таблице "заказ" есть два поля, одно указывает на таблицу "пользователь", другое на таблицу "аноним" в зависимости от того кто осуществил заказ(пользователь либо аноним) в одно поле записываем primary key в другое NULL 2) Создаётся отдельная таблица связей, в которой помимо ключа ещё три поля: ключ таблицы "заказ", ключ таблицы "пользователь", ключ таблицы "аноним". Поле заказ всегда установлено, а пользователь или аноним в зависимости от того кто осуществил заказ. Как из вариантов лучше применить и правильно ли вобще с точки архитектуры такой подход с двумя таблицами? П.с. В данном конкретном случае, лучше сделать таблицу "заказчик" с общими данными для "аноним" и "пользователь" в которой будет поле указывающее пользователь ли это или аноним и таблицу "профиль" в случае если это пользователь там будут хранитсяд анные пользователя. Ну и связи профиль-заказчик 1:1 и заказчик-заказ 1:N. Но всё же интересует в теории, для любых подобных, возникающих ситуаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 15:20 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
fedddВ данном конкретном случае, лучше сделать таблицу "заказчик" с общими данными для "аноним" и "пользователь" Вот это и правильно с любой точки зрения, в том числе - теории. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 16:47 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
Вы, feddd, задачу не полностью сформулировали. Похожую задачу - рациональную реализацию "лавки - частные лица" обсуждали много раз, - в поиск. С анонимными пользователями всё немного сложнее. Допустимы для одного реального пользователя несколько аккаунтов одновременно? Как вы в этом случае намерены агрегировать данные пользователей? Видите ли, в чём дело: за любым вариантом реализации структуры данных - реальные конкурентные преимущества (или недостатки) бизнес-модели. Если вы пишете одноразовую поделку, подойдет любая реализация из приведённых вами. Если структура данных предполагает развитие (или по крайней мере имеет логические связи с бизнес-моделью), на вашем месте я бы не останавливался ни на одном из приведенных вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 19:05 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
feddd, Ощущение полного нежелания включить мозг. Вы действительно готовы принимать заказы от анонимов?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2013, 02:52 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
fedddК примеру: есть таблица "пользователь" и "аноним", а также таблица "заказ". Так вот заказ может сделать либо пользователь, либо аноним. Как лучше осуществить данную связь? Через наследование. Связь при этом идёт на общего предка "пользователя" и "анонима". fedddВижу такие варианты: 1) В таблице "заказ" есть два поля, одно указывает на таблицу "пользователь", другое на таблицу "аноним" в зависимости от того кто осуществил заказ(пользователь либо аноним) в одно поле записываем primary key в другое NULL 2) Создаётся отдельная таблица связей, в которой помимо ключа ещё три поля: ключ таблицы "заказ", ключ таблицы "пользователь", ключ таблицы "аноним". Поле заказ всегда установлено, а пользователь или аноним в зависимости от того кто осуществил заказ. Как из вариантов лучше применить и правильно ли вобще с точки архитектуры такой подход с двумя таблицами? Как бы второй вариант -- это вариант первого, N опциональных взаимоисключающих связей, но обобщённый на то, что у заказа может быть много владельцев заказа. Поскольку, как я полагаю, владельцев у заказа всё-таки быть не может больее одного, то второй вариант неправильный. Если же вообще о этом варианте, то тут недостаток в том, что то, что связи взаимоисключающие, и то, что одна из них должна обязательно быть, тебе придётся реализовывать логикой приложения (в лучшем случае -- триггерами и процедурами, в худшем -- вне СУБД). fedddП.с. В данном конкретном случае, лучше сделать таблицу "заказчик" с общими данными для "аноним" и "пользователь" в которой будет поле указывающее пользователь ли это или аноним и таблицу "профиль" в случае если это пользователь там будут хранитсяд анные пользователя. Вот это как раз и есть наследование. Только пользователь и его профиль -- это одно и то же. Важно как кодировать ключи. Ключи должны быть уникальны в одном дереве насделования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2013, 15:41 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
Злой Бобрfeddd, Ощущение полного нежелания включить мозг. Вы действительно готовы принимать заказы от анонимов?.. Эта фишка есть на многих интернет-магазинах. Типа можно добавлять в корзину всё что хочешь, но когда нужно оформить заказ, то необходима регистрация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 08:20 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
HopkroftЗлой Бобрfeddd, Ощущение полного нежелания включить мозг. Вы действительно готовы принимать заказы от анонимов?.. Эта фишка есть на многих интернет-магазинах. Типа можно добавлять в корзину всё что хочешь, но когда нужно оформить заказ, то необходима регистрация.Есть интернет-магазины, которые действительно принимают заказы без регистрации. Были, во всяком случае - я в таких покупал. На самом деле, анонимностью здесь и не пахнет: остается адрес доставки и данные кредитной карты, можно по ним потом анализировать. Но, конечно, лучше так не делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 09:09 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelHopkroftпропущено... Эта фишка есть на многих интернет-магазинах. Типа можно добавлять в корзину всё что хочешь, но когда нужно оформить заказ, то необходима регистрация.Есть интернет-магазины, которые действительно принимают заказы без регистрации. Были, во всяком случае - я в таких покупал. На самом деле, анонимностью здесь и не пахнет: остается адрес доставки и данные кредитной карты, можно по ним потом анализировать. Но, конечно, лучше так не делать. 1. данные кредитной карты попадают в магазин редко - обычно есть какой-нибудь агрегатор типа Cyberplat. Можно пытаться что-то анализировать по телефону (контактный телефон обычно-таки требуется) - но см. ниже 2. Насчет "лучше не делать" - это зависит от бизнеса. Если 95% покупателей делают в мгагазине ровно один заказ (в каком-нибудь магазине холодильников, например) - зачем сдалась обязательная регистрация, какая от нее польза? Если 90% заказов делаются по телефону - зачем сдалась обязательная регистрация, какая от нее польза? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 11:22 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, От таких регистраций очень большая польза - на емейлы можно потом рассылки слать, рекламные. Ну и я не помню уже, как с этим в РФ - может, и есть магазины, которые торгуют исключительно холодильниками, но таких должно быть мало. Кроме того, даже если это только холодильники, кто сказал, что человеку не может через неделю понадобиться второй - на дачу например, или друзья тоже собрались покупать, а тут вот пожалуйста, купон со скидкой. Да миллион ситуаций придумать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 11:57 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelКот Матроскин, От таких регистраций очень большая польза - на емейлы можно потом рассылки слать, рекламные. Напоминаю, люди по условию не делают несколько заказов -> им не нужны рассылки, они не работают. При этом регистрация - это обьективное увеличение времени на первый (он же единственный) заказ, что ведет к обьективным же потерям (растет процент людей, бросивших на полдороги, увеличивается загруженность колл-центра при телефонных заказах, etc.) В любом случае "нужна регистрация или нет?" - это, очевидно, не технический вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 13:12 |
|
||
|
Связь одной таблицы с одной из двух других
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelHopkroftпропущено... Эта фишка есть на многих интернет-магазинах. Типа можно добавлять в корзину всё что хочешь, но когда нужно оформить заказ, то необходима регистрация.Есть интернет-магазины, которые действительно принимают заказы без регистрации. Были, во всяком случае - я в таких покупал. На самом деле, анонимностью здесь и не пахнет: остается адрес доставки и данные кредитной карты, можно по ним потом анализировать. Но, конечно, лучше так не делать. Пляшите "от сессии". Т.е. не привязывайтесь при оплате к пользователю вообще. Привязывайтесь к сессии. Соответственно все транзакции должны "висеть" на сессии. А авторизованный пользователь просто получит дополнительное удобство - ему не нужно будет вводить некоторые данные по оплате. Где-то так :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 08:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38356482&tid=1541151]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 262ms |

| 0 / 0 |

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