Yii2 - атака хейтеров и что делать дальше?

Не относящиеся к фреймворку и программированию вопросы
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

andku83 писал(а): 2018.03.16, 19:56
zelenin писал(а): 2018.03.16, 19:08
завязав заказ на product, ты теряешь возможность продавать, что-то кроме него, например услугу упаковки подарочной бумагой, комплект продуктов со скидкой 5% или что-то другое принципиально отличающееся от обычного продукта.
упаковку можно тоже товаром сделать
угу. и на фронте сайта ты будешь продавать упаковку. я ждал такого аргумента - накостылять просто, а разработать схему сложнее.
andku83 писал(а): 2018.03.16, 19:56а комплекты со скидками тут были(подчистил) появлялись они еще одной табличкой, а в order_product добавляется parent_id на order_product.id
не знаю, ты наверное плохо прочел меня - или что-то другое принципиально отличающееся от обычного продукта
sm-vasya
Сообщения: 191
Зарегистрирован: 2015.03.04, 01:12

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение sm-vasya »

zelenin писал(а): 2018.03.16, 20:00 угу. и на фронте сайта ты будешь продавать упаковку. я ждал такого аргумента - накостылять просто, а разработать схему сложнее.
andku83 писал(а): 2018.03.16, 19:56а комплекты со скидками тут были(подчистил) появлялись они еще одной табличкой, а в order_product добавляется parent_id на order_product.id
не знаю, ты наверное плохо прочел меня - или что-то другое принципиально отличающееся от обычного продукта
zelenin, я вас прекрасно понял, пожалуйста потерпите, пусть каждый сначала представит свое решение, в т.ч. и вы если хотите, но без комментариев
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение samdark »

Мои варианты:


Изображение
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

zelenin писал(а): 2018.03.16, 20:00
andku83 писал(а): 2018.03.16, 19:56
zelenin писал(а): 2018.03.16, 19:08
завязав заказ на product, ты теряешь возможность продавать, что-то кроме него, например услугу упаковки подарочной бумагой, комплект продуктов со скидкой 5% или что-то другое принципиально отличающееся от обычного продукта.
упаковку можно тоже товаром сделать
угу. и на фронте сайта ты будешь продавать упаковку. я ждал такого аргумента - накостылять просто, а разработать схему сложнее.
andku83 писал(а): 2018.03.16, 19:56а комплекты со скидками тут были(подчистил) появлялись они еще одной табличкой, а в order_product добавляется parent_id на order_product.id
не знаю, ты наверное плохо прочел меня - или что-то другое принципиально отличающееся от обычного продукта
Для чего-то другого принципиально(!) отличающегося всегда можно сделать отдельную таблицу.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

anton_z писал(а): 2018.03.17, 00:31
zelenin писал(а): 2018.03.16, 20:00
andku83 писал(а): 2018.03.16, 19:56
упаковку можно тоже товаром сделать
угу. и на фронте сайта ты будешь продавать упаковку. я ждал такого аргумента - накостылять просто, а разработать схему сложнее.
andku83 писал(а): 2018.03.16, 19:56а комплекты со скидками тут были(подчистил) появлялись они еще одной табличкой, а в order_product добавляется parent_id на order_product.id
не знаю, ты наверное плохо прочел меня - или что-то другое принципиально отличающееся от обычного продукта
Для чего-то другого принципиально(!) отличающегося всегда можно сделать отдельную таблицу.
для элемента заказа? зачем?
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

anton_z писал(а): 2018.03.17, 00:31 Для чего-то другого принципиально(!) отличающегося всегда можно сделать отдельную таблицу.
Ну вы же сами пример привели - упаковка и прочие дополнения.
С таблицей все получится и будет целостность по внешним ключам.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

anton_z писал(а): 2018.03.17, 00:49
anton_z писал(а): 2018.03.17, 00:31 Для чего-то другого принципиально(!) отличающегося всегда можно сделать отдельную таблицу.
Ну вы же сами пример привели - упаковка и прочие дополнения.
С таблицей все получится и будет целостность по внешним ключам.
но я не про элемент заказа. я указывал именно на то, что элемент заказа в схеме может быть только продуктом и не может быть чем-то кроме продукта.
Нужно отличать элементы заказа от сущностей, их порождающих. очевидно, что у порождающих сущностей есть отдельные таблицы (product, service, product_kit etc) - это не нуждается в проговаривании. Нужно было лишь расширить таблицу заказов для поддержки нескольких типов сущностей.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

zelenin писал(а): 2018.03.17, 00:55 но я не про элемент заказа. я указывал именно на то, что элемент заказа в схеме может быть только продуктом и не может быть чем-то кроме продукта.
Нужно отличать элементы заказа от сущностей, их порождающих. очевидно, что у порождающих сущностей есть отдельные таблицы (product, service, product_kit etc) - это не нуждается в проговаривании. Нужно было лишь расширить таблицу заказов для поддержки нескольких типов сущностей.
Это можно сделать добавив еще внешних ключей в элемент заказа - некоторые ключи будут NULL. Чтобы избежать последнего можно на каждую таблицу с чем-то продаваемым, добавить свою таблицу элементов заказа. Можно еще типизацию элемента ввести, но это решение мне не очень нравится. так как не сделаешь FOREIGN KEY RESTRICTION.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

anton_z писал(а): 2018.03.17, 01:04
zelenin писал(а): 2018.03.17, 00:55 но я не про элемент заказа. я указывал именно на то, что элемент заказа в схеме может быть только продуктом и не может быть чем-то кроме продукта.
Нужно отличать элементы заказа от сущностей, их порождающих. очевидно, что у порождающих сущностей есть отдельные таблицы (product, service, product_kit etc) - это не нуждается в проговаривании. Нужно было лишь расширить таблицу заказов для поддержки нескольких типов сущностей.
Это можно сделать добавив еще внешних ключей в элемент заказа - некоторые ключи будут NULL. Чтобы избежать последнего можно на каждую таблицу с чем-то продаваемым, добавить свою таблицу элементов заказа. Можно еще типизацию элемента ввести, но это решение мне не очень нравится. так как не сделаешь FOREIGN KEY RESTRICTION.
поясни. вот у тебя таблицы из той схемы:
order(id)
order_product(order_id, product_id, price, qty)
product(id)

чтобы ты сделал для поддержки сущностей product, service, product_kit?

PS Я честно говоря не думал, что здесь есть что-то обсуждать - я просто указал на недостаточность схемы, а как ее исправить вроде как очевидно.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

zelenin писал(а): 2018.03.17, 01:11 поясни. вот у тебя таблицы из той схемы:
order(id)
order_product(order_id, product_id, price, qty)
product(id)

чтобы ты сделал для поддержки сущностей product, service, product_kit?
order_product(order_id, product_id, price, qty)
order_service(order_id, service_id, price, qty)
order_product_kit(order_id, kit_id, price, qty)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

anton_z писал(а): 2018.03.17, 01:14
zelenin писал(а): 2018.03.17, 01:11 поясни. вот у тебя таблицы из той схемы:
order(id)
order_product(order_id, product_id, price, qty)
product(id)

чтобы ты сделал для поддержки сущностей product, service, product_kit?
order_product(order_id, product_id, price, qty)
order_service(order_id, service_id, price, qty)
order_product_kit(order_id, kit_id, price, qty)
а почему так? есть предпосылки, заставляющие меня плодить одинаковые таблицы?
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

zelenin писал(а): 2018.03.17, 01:21 а почему так? есть предпосылки, заставляющие меня плодить одинаковые таблицы?
Они не одинаковые. Если приведете Ваше решение, расскажу почему я сделал именно такой выбор.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

anton_z писал(а): 2018.03.17, 01:23
zelenin писал(а): 2018.03.17, 01:21 а почему так? есть предпосылки, заставляющие меня плодить одинаковые таблицы?
Они не одинаковые. Если приведете Ваше решение, расскажу почему я сделал именно такой выбор.
ну отличаться они могут только наличием fk на разные таблицы, в чем есть плюс, но на мой взгляд меньший, чем лаконичная схема.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

zelenin писал(а): 2018.03.17, 01:31 ну отличаться они могут только наличием fk на разные таблицы, в чем есть плюс, но на мой взгляд меньший, чем лаконичная схема.
Ну так приведите лаконичную схему, может и еще плюсы найдутся.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

order_item(item_type, item_id, price, qty)
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение anton_z »

zelenin писал(а): 2018.03.17, 01:35 order_item(item_type, item_id, price, qty)
У меня можно сделать целостность на уровне ссылок, прописав ограничения внешнего ключа явно с помощью ADD CONSTRAINT и им подобных.
В вашей схеме этого сделать нельзя.

Во-вторых. у вас в таблице происходит смешивание метаданных с данными - фактически item_type это имя таблицы, с которой связан этот элемент. Без знания item_type невозможно сказать, к какой таблице относится item_id. Это концептуальный недостаток.

Еще кое-что по этой теме: https://www.slideshare.net/billkarwin/s ... ant_make_a

Ну и еще я хотел сказать, что тот форумчанин, в схеме которого вы усомнились, ничего себя не лишил, он всегда сможет добавить необходимые таблицы.
sm-vasya
Сообщения: 191
Зарегистрирован: 2015.03.04, 01:12

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение sm-vasya »

:) :) :)

тема зажглась

сколько мнений :) класс
sm-vasya
Сообщения: 191
Зарегистрирован: 2015.03.04, 01:12

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение sm-vasya »

samdark писал(а): 2018.03.17, 00:13 Мои варианты:


Изображение
супер. вариант 2 зафиксировали
sm-vasya
Сообщения: 191
Зарегистрирован: 2015.03.04, 01:12

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение sm-vasya »

только куда то профи пропал, видимо ждет пока не профи придут к какому то мнению, а он потом придет и скажет "ну я так и хотел написать, только не успел"
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 - атака хейтеров и что делать дальше?

Сообщение zelenin »

anton_z писал(а): 2018.03.17, 01:54
zelenin писал(а): 2018.03.17, 01:35 order_item(item_type, item_id, price, qty)
У меня можно сделать целостность на уровне ссылок, прописав ограничения внешнего ключа явно с помощью ADD CONSTRAINT и им подобных.
В вашей схеме этого сделать нельзя.
я на это указал выше. Это не недостаток, если целостность гарантируется на уровне приложения.
anton_z писал(а): 2018.03.17, 01:54Во-вторых. у вас в таблице происходит смешивание метаданных с данными - фактически item_type это имя таблицы, с которой связан этот элемент. Без знания item_type невозможно сказать, к какой таблице относится item_id. Это концептуальный недостаток.
это бизнес-знание - тип лежащей в заказе сущности. Указывает оно на местоположение данных или на специфический обсчет элемента заказа - собственно решать приложению.
anton_z писал(а): 2018.03.17, 01:54Еще кое-что по этой теме: https://www.slideshare.net/billkarwin/s ... ant_make_a
плюсы и минусы известны. вынося защиту целостности в приложение, более компактная схема предпочтительнее, чем дублирование таблиц.
Ответить