metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-06-29 06:21 pm

Обучение частным случаям частных реализаций

http://d4s.livejournal.com/210142.html
Вопрос про обучение SQL. Не про продажу человеко-часов конкретному кастомеру с конкретной СУБД.
В комментариях ад содома и гоморры, с приведением каких-то дичайших конструкций из частных реализаций.

Людей нужно хотя бы обучить тому, что такое реляционная модель, что такое индексы и как вообще связаны эти буковки с результатом. А уж конкретные извращения можно изучить в процессе работы с конкретной БД, очевидно, что засирать этим голову ДО понимания базовых вещей совершенно не нужно.

[identity profile] w00dy.livejournal.com 2012-06-29 03:44 pm (UTC)(link)
Ребе, а кому-то эти базы с sql сейчас вообще нужны? Современная мода (да и всякие народные фреймворки) юзают ормы. Голый доступ к базе остался где-то в коровавом энтерпрайзе, кмк. Иль я не прав?

PS мну уже давно пользует только orm. Ну а голый sql остаётся в паре мест и то сугубо для целей оптимизации производительности где это критично.

[identity profile] dr-hyder.livejournal.com 2012-06-29 03:48 pm (UTC)(link)
Постоянно сталкиваюсь что люди не понимают каких то элементарнейших вещей, вроде one to many и many to many отношений. Не программисты, менеджеры всякие да тестеры этого не понимают в принципе, хотя вещи вообщем то совершенно не програмистские, просто из разряда логики и абстрактного мышления. Один шаг ещё могут осилить, если обьяснить на пальцах, но многошаговые отношения клинят им голову напрочь. Если А может иметь много Б нормально, но потом если Б has many to many relationships с В, начинается пиздец. Самое идиотское что часто пытаются влезть в дизайн схем, думая что это как у них на всяких бизнес диаграммах - нарисовал дурацкие ничего не значащие стрелочки между квадратиками и всё - заработало волшебным образом, просто блять!

[identity profile] dr-hyder.livejournal.com 2012-06-29 03:55 pm (UTC)(link)
> Голый доступ к базе остался где-то в коровавом энтерпрайзе, кмк. Иль я не прав?

Не понял, в энтерпрайзе как раз сплошной ORM, далеко не все пишут стотыщ stored procedures. Противников же ORM примерно столько сколько и сторонников. Но по эмпирическим наблюдениям, если компания индусская то пользуются ORM, если не индусская то ORM пользуются для простых CRUD, всё остальное ручками.

[identity profile] dair-spb.livejournal.com 2012-06-29 03:59 pm (UTC)(link)
О, мил человек, а расскажите мне, который кроме SQL ничего не знает — как на орме (абстрактном в вакууме) написать более-менее сложный селект? Ну там с вложенностью, аутер джойнами...

Вот пример из моего приложения, холст, масло C#, PostgreSQL:
SELECT Q.CYCLE_ID AS ID, C.KEY AS TICKER, C.NAME AS NAME, Q.PRICE AS QUOTE, Q.TRADE_LIMIT AS TRADE_LIMIT, Q.NPCS_BUY AS NPCS_BUY FROM STOCK_COMPANY C LEFT OUTER JOIN STOCK_QUOTE Q ON (C.KEY = Q.COMPANY_KEY AND Q.CYCLE_ID IN (SELECT MAX(ID) FROM STOCK_CYCLE))

[identity profile] falcrum.livejournal.com 2012-06-29 04:02 pm (UTC)(link)
Увы, не всегда понимают и "программисты". :(

[identity profile] veter-r-r.livejournal.com 2012-06-29 04:06 pm (UTC)(link)
Да, таковы нынче эксперты в СУБД. Заучить стопиццот частных случаев в частной СУБД. А потом выдавать это в качестве рецептов.
Удивительно, но даже работает

[identity profile] dr-hyder.livejournal.com 2012-06-29 04:13 pm (UTC)(link)
Да примерно так же (http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-select). Нормальные люди пользуются ORM по назначению, как object-relational mapping, плюс как бонус простейшие запросы можно не писать а функции вызывать, я понимаю что там можно огород городить и извращаться, но если по хорошему SQL всё равно нужно знать.

[identity profile] eternal-leave.livejournal.com 2012-06-29 04:18 pm (UTC)(link)
Самое тоскливое, что эти люди попросту не понимают разницы между общим и частным. Какая в жопу разница, как составляется план запроса в постгре, если речь идет о студентах, которые селект первый раз в жизни видят?

[identity profile] tzirechnoy.livejournal.com 2012-06-29 04:20 pm (UTC)(link)
А что, кто-то кроме конченных быдлокодеров ещё пишэт на ORM? Мне казалось, что ещё пятилетку назад вменяемые люди поняли, что это безсмыслица -- пытаться выразить реляцыонные понятия в объектных диалектах.

[identity profile] tzirechnoy.livejournal.com 2012-06-29 04:21 pm (UTC)(link)
(Гррррр) Он постгрес! (Грррррыррр)

[identity profile] nicka-startcev.livejournal.com 2012-06-29 04:21 pm (UTC)(link)
а чё тут думать о стратегии! рубить надо! Ща быстренько ввяжемся и сразу на маркет, продавать. А доотлаживать как-нибудь потом будем, вкредит.

ну, уговорим всех как-нибудь, и людей, и менеджеров, и программу.
Edited 2012-06-29 16:21 (UTC)

[identity profile] tzirechnoy.livejournal.com 2012-06-29 04:21 pm (UTC)(link)
А вообще, давайте псить у первоисточника, а?

[identity profile] eternal-leave.livejournal.com 2012-06-29 04:25 pm (UTC)(link)
Как ценитель английского языка, не могу согласиться: Postgres Query Language звучит как говно и имеет ровно такой же смысл. И не важно, что изначально он назывался просто Postgres. После того, как начали писать PostgreSQL - он для меня стал постгрей :)

[identity profile] dr-hyder.livejournal.com 2012-06-29 04:29 pm (UTC)(link)
Нуууу тут как бы смотря до какого уровня имеется цель доучить. Если на ознакомительный тогда без разницы действительно. Если до практического уровня, тогда нужно понимать как разные БД используют индексы, какие есть ограничения, какие запросы будут работать тут, но совершенно не будут работать там.

[identity profile] tzirechnoy.livejournal.com 2012-06-29 04:32 pm (UTC)(link)
>Как ценитель английского языка, не могу согласиться:

Да кому нужэн этот Ваш английский

[identity profile] metaclass.livejournal.com 2012-06-29 04:34 pm (UTC)(link)
Вообще если по хорошему, то на лекциях по теории надо рассказывать общее, а потом на семинарах-лабах - частные случаи диалектов.

[identity profile] w00dy.livejournal.com 2012-06-29 04:42 pm (UTC)(link)
да фиг его знает. орм требует другого подхода к снаряду, и просто так взять и переписать sql это не правильный вариант. Основное удобство orm в том что он даёт строгую типизацию при работе с базой. Меняется схема, правятся классы и дальше уже компилятор покажет где чего поламалось в коде.

[identity profile] w00dy.livejournal.com 2012-06-29 04:42 pm (UTC)(link)
а смысл делать "остальное ручками"?

[identity profile] w00dy.livejournal.com 2012-06-29 04:46 pm (UTC)(link)
Очередной песец элементарных селектов?

[identity profile] dr-hyder.livejournal.com 2012-06-29 04:48 pm (UTC)(link)
А смысл делать остальное на ORM? Оно нужно для type-safe mapping и всё, запросы пишутся либо на SQL, либо на каком нибудь HQL, если это hybernate.

[identity profile] w00dy.livejournal.com 2012-06-29 04:50 pm (UTC)(link)
> А смысл делать остальное на ORM?

Для того чтобы любые изменения в схеме вылезали на этапе компиляции, а не тестирования. Не?

[identity profile] dr-hyder.livejournal.com 2012-06-29 04:52 pm (UTC)(link)
Ну это из разряда масляного масла, если лекция по общей теории тогда и рассказывать надо общую теорию, если по конкретной имплементации - нужно обрисовать специфику конкретной имплементации :) Но вообще конечно сначала теория, потом частные случаи, это ж везде так.

[identity profile] eternal-leave.livejournal.com 2012-06-29 04:54 pm (UTC)(link)
Та я в курсе, но чувство прекрасного все равно не затыкается.

[identity profile] eternal-leave.livejournal.com 2012-06-29 04:55 pm (UTC)(link)
По ссылке человек учит заочников, насколько я понимаю. Им скуль вообще до сиреневого жирафа.

[identity profile] dr-hyder.livejournal.com 2012-06-29 05:03 pm (UTC)(link)
В смысле изменения в модели ORM в коде чтоб вылезали на этапе компиляции? Ну так они и вылезают если ORM используется как просто mapping. Если же именно изменения в схеме, то тут вас можно понимать по разному, может я не правильно вас понял, но компиляции изменения в модели побоку, потому как на этапе компиляции никакого подключения к БД не происходит, или вы что то ещё имели в виду?

Кстати где именно должны вылезать ошибки, на этапе компиляции или на этапе тестирования - это кому как нравится, можно легко на этой почве разжешь холивор dynamic vs static typing :)

Page 1 of 4