
Sergey
21.09.2017
14:07:00
Не катит вообще х)
почему? берем и ищем родителей которым не все равно, скидываем детей их в одно помещение и перестраиваем проццесс обучения (видосики на ютубах обучающие дома и вместе с практикой дела делать)

Sergey
21.09.2017
14:07:07

Санжар
21.09.2017
14:07:46
Это для тех, у кого адекватные родители.

Google

Oleg
21.09.2017
14:07:47

Sergey
21.09.2017
14:07:56

Sergey
21.09.2017
14:08:18

Dmitry
21.09.2017
14:08:21
Есть три таблицы. Products (id, name), Properties (id, name), Values (id, value, product_id, property_id). В products хранятся два дилдо: розовый и синий. В пропертис: ширина и длина. Собственно там где values хранится длина и ширина розового и синего дилдо. Длина и ширина одного равны 10 и 15. Длина и ширина второго 15 и 10. Вопрос, что с этими ребятами не так? А если все так, то как узнать, какой дилдо имеет размеры 15 в длину и 10 в ширину.
джойн сам на себя, см EAV

Sergey
21.09.2017
14:08:27

Евгений
21.09.2017
14:08:53

Sergey
21.09.2017
14:08:57
у меня один из самых толковых знакомых (как программер) - его предки в 16 выперли из дома что бы он учился работать

Dmitry
21.09.2017
14:10:13
гений должен быть голодный! ;)

Sergey
21.09.2017
14:10:14

Evgeniy
21.09.2017
14:10:20

Sergey
21.09.2017
14:10:31

Санжар
21.09.2017
14:10:34

Sergey
21.09.2017
14:10:51

Google

Sergey
21.09.2017
14:11:56

Санжар
21.09.2017
14:15:52
Самое смешное это то, что в 1 курсе был беглый HTML/CSS и про базы данных (не знаю, как всё это связано), при том если про HTML/CSS хотя бы на уровне создания табличек было, то с БД было про MS Access (или как пишется?) и MySQL на уровне "в базе данных хранится информация, она в таблицах".
Во втором вообще рассказывают про архиваторы файлов вроде 7zip, HaoZIP, и WinRaR, смешно что всё это конспектировать надо.
Ну и то, что на первом курсе C++ на уровне синтаксиса (что такое переменная и функция конспектировали), на втором вроде C#, опять же, должен быть на на уровне того же синтаксиса (второй курс только начался).
Ну и сейчас кульминация. Прям взрыв мозга нахрен.
Нам как-то на паре включили уроки из канала ХАУДИ ХО и его урок PHP ЗА ЧАС от профессионала.
=______=
Ну хоть на парах играли в Сталкер.

Alexey
21.09.2017
14:17:19

Антон
21.09.2017
14:18:18
а нам про типы мониторов рассказывали на втором курсе. жесть

Dmitry
21.09.2017
14:19:53
Благодарю за ответ. Но, кажется, что-то здесь не так
здесь не так EAV - весьма проблемный способ хранения для выборок, по-этому параметры, по которым активно используется выборки выносят как колонки в таблицу продуктов, ну или используют не реляционную субд для поиска

Evgeniy
21.09.2017
14:20:55

Alexey
21.09.2017
14:21:07
не вариант*

Oleg
21.09.2017
14:21:22

Evgeniy
21.09.2017
14:21:39

Dmitry
21.09.2017
14:23:24
ну или если нагрузка на базу небольшая - то джойны в общем тоже работают

Антон
21.09.2017
14:24:04
ну так у нас же сейчас в ЕГЭ оценка плавающая, не конкретный порог для 5, а относительно всей массы. т.е. если вся масса тупее и тупее, то и нужные баллы для 5 понижаются
стране не нужны умные люди

Alexey
21.09.2017
14:24:25

Evgeniy
21.09.2017
14:24:37
свойства в таблице
единственное где это проблемно это если надо характеристики в админке добавлять

Alexey
21.09.2017
14:25:09
В смысле в товаре создать сотни nullable колонок?)

Evgeniy
21.09.2017
14:25:21
да это будет удобней потом

Google

Evgeniy
21.09.2017
14:25:49
сейчас найду презентацию
и там основные способы как не юзать антипаттерн eav
и что вместо него можно делать

Alexey
21.09.2017
14:26:18
а что если параметры создаются со временем новые и удаляются. мы постоянно удаляем и добавляем nullable колонки?)

Evgeniy
21.09.2017
14:26:19
один из вариантов это куча колонок со значением null

Dmitry
21.09.2017
14:26:25
как вариант, но так можно до таблицы с сотнями колонок дойти... не очнь удобно... или вообще упереться в лимит ;)

Evgeniy
21.09.2017
14:26:31
этого лучше не делать, я же написал nullable хорошо если колонки динамеческе в админке не добавляются
если они добавляются в админке по возможности не добавлять их в выборки и фильтрации в отчеты, вынести стабильные колонки в одну таблицу

Борис
21.09.2017
14:27:49
Если нужно динамически добавлять свойства из админки - то решение с nullable хреновое. Плюс, обычно поля храняться выровненые в БД, следовательно каждое nullable будет жрать столько же диска, сколько и забитое. Если товары очень похожи(таблица не будет разреженой) и не нужно менять проперти - то можно попробывать.
Вообще сейчас EAV во всех готовых CMSмагазинах - видимо, пока что лучше не придумали

Evgeniy
21.09.2017
14:27:54
и рядом хранить динамические, которые нигде не юзаются только для отображения

Антон
21.09.2017
14:28:36
вот интересные слайды на эту тему
https://www.slideshare.net/billkarwin/extensible-data-modeling

Evgeniy
21.09.2017
14:28:41
и не все типы хранятся выровненно

Борис
21.09.2017
14:29:12

Evgeniy
21.09.2017
14:29:15
и это прежде временная оптимизация ... (с.) Кнут

Dmitry
21.09.2017
14:29:32

Evgeniy
21.09.2017
14:29:42
и это надо учитывать в реально хайлоуде но не тут

Google

Evgeniy
21.09.2017
14:30:08
оптимизацией надо заниматься когда есть нагрузка

Alexey
21.09.2017
14:31:16
Всем спасибо) Если найду интересный способ решения задачи, буду держать в курсе. Есть инфа, что задачу еще объяснил не совсем понятно.

Evgeniy
21.09.2017
14:31:49
вот очень хорошая презентация
https://www.slideshare.net/billkarwin/sql-antipatterns-strike-back/16-EntityAttributeValue_If_you_try_and
как раз открыл на eav

Dmitry
21.09.2017
14:32:02
интересный способ - это эластик рядышком, а все остальное - костыли и онанизм ;)

Evgeniy
21.09.2017
14:32:03
там человек показывает разные подходы
но есть случаи когда да потребуется что то рядышком
но тут на презентции основные проблемы eav показаны и как этого избежать

Dmitry
21.09.2017
14:34:15
можно еще взять постгрес и запихнуть все в jsonb :)

Борис
21.09.2017
14:34:22
и это прежде временная оптимизация ... (с.) Кнут
Странное понятие преждевременной оптимизации(ПО). Хотя твое понятие ПО для меня и должно бысть странным, ведь нигде толком ПО не описана, и каждый понимает по своему.
Как по мне отказ от откровенно хреновая архитектура (разреженная таблица), с учетом того что я знаю (много РАЗНЫХ товаров, и динамическое добавление свойств) на начальном этапе - это не ПО. Ведь если я сча ошибусь, то потом толко переписать нахуй. (Не представляю себе постепенного рефакторинга с разреженной таблицы к EAV + ElasticSearch. А ты представляешь?)
ПО - это когда я мелкие реализации, начинаю оптимизировать прямо сейчас, когда смогу сделать это потом, а сейчас можно и абыкак (пример разворачивания циклов, или выбора оптимального типа переменной для текущей задачи.
IMHO


Evgeniy
21.09.2017
14:36:41
Странное понятие преждевременной оптимизации(ПО). Хотя твое понятие ПО для меня и должно бысть странным, ведь нигде толком ПО не описана, и каждый понимает по своему.
Как по мне отказ от откровенно хреновая архитектура (разреженная таблица), с учетом того что я знаю (много РАЗНЫХ товаров, и динамическое добавление свойств) на начальном этапе - это не ПО. Ведь если я сча ошибусь, то потом толко переписать нахуй. (Не представляю себе постепенного рефакторинга с разреженной таблицы к EAV + ElasticSearch. А ты представляешь?)
ПО - это когда я мелкие реализации, начинаю оптимизировать прямо сейчас, когда смогу сделать это потом, а сейчас можно и абыкак (пример разворачивания циклов, или выбора оптимального типа переменной для текущей задачи.
IMHO
оптимизировать eav к разряженной таблице также как и на оборот наверно, хотя если много выборок то писать запросы новые запросы к eav которые были в одну строку
это даже не знаю как назвать, плюсом или минусом
посмотри слайды
про eav там их штук 5
и там четко написано когда надо eav а когда без этого можно обойтись и что надо стараться обходиться без этого
основные проблемы eav там тоже хорошо показаны у eav
16 слайдов это с условием что показаны предложения как не юзать eav


Борис
21.09.2017
14:38:56
Да, я посмотрел. Слишком академический пример. Когда я спрашивал про рефакторинг, я имел ввиду реальный магазин, где у тебя уже есть пару десятков запросов. Хрен ты их постепенно рефакторнешь.... Это координально разные запросы. Это фундаментальный вопрос. EAV или не EAV нужно выбирать сразу. Мое мнение после слайдов не поменялось.

Evgeniy
21.09.2017
14:39:35

Google

Evgeniy
21.09.2017
14:39:51
тебе сказали плюсы и минусы выбирать тебе, тебе с этим кодом работать

Artur
21.09.2017
14:40:07

Борис
21.09.2017
14:40:09
Я не говорил его юзать.... хм... читай внимательно. Я говорил что решать нужно в начале, ибо это не зарефакторишь.

Evgeniy
21.09.2017
14:40:34
вопрос трудозатрат

Борис
21.09.2017
14:40:44
Темболее то мне он нахуй не нужен сейчас ГЫГЫ

Dmitry
21.09.2017
14:40:52
а в чем проблема от разреженной таблицы перейти к EAV+Elastic? ;)

Evgeniy
21.09.2017
14:41:13

Dmitry
21.09.2017
14:41:59
ну блин... это да ;) я бы сказал - нужно обосновать бизнесу - какого фига затраты и почему сразу не сделали нормально ;)

Evgeniy
21.09.2017
14:42:00

Борис
21.09.2017
14:42:08
вопрос трудозатрат
Эмммм..... так это и есть "нельзя зарефакторить"... Или ты думаешь в любой разбитой машине "не подлежащей восстановлению" нету ни одной рабочей детали? Если трудозатраты на исправление больше затрат сделать заново - это НЕЛЬЗЯ зарефакторить. И это общепринятое, не мое личное

Evgeniy
21.09.2017
14:42:20
только поиска по eav ничего не делают его просто отображают на странице товара
в деталях ни поиска ни фильтрации
всякие кривые cms просто на лету таблицу через alter table модифицируют
на каждый товар своя таблица
добавили колонку, cms вносит колонку в бд через alter table
и получается куча разных таблиц
и живут, причем так делает большинство cms
хорошо это или плохо вопрос открытый