2008-11-06 5 views
6

Как вы думаете, сколько времени требуется для профессионального процедурного кодера, чтобы стать профессиональным кодовым кодером SQL? И какой лучший способ сделать переход? (Без учета навыков проектирования баз данных).Переносимые навыки (для SQL)

Какой процент программистов является профессиональным уровнем для обоих?
a. Самооценка.
b. Беспристрастная оценка.

(По моему опыту, одна проблема заключается в том, что процедурные программисты не ценят того, сколько они еще не знают, и сколько из того, что они делают знают не относится.)

ответ

4

Grokking SQL несколько отличается от grokking большинства языков программирования, поскольку вам необходимо получить представление о заданных операциях. Сказав, что на самом деле это не более сложный подход к пониманию, чем любая из основных парадигм кодирования - например, переход от процедурного кода к oops, например (и для того, что я видел до сих пор проще, чем функциональное программирование :-))

Знак того, кто не полностью понял SQL, - это использование процедур и т. П., Которые работают путем циклирования записей, когда заданные операции будут проще и быстрее. Один имеет тенденцию сталкиваться с этим довольно много. OTOH Я считаю, что хороший знак - это правильное использование предложений UNION и HAVING - как немного за пределами заданий для начинающих. Я видел код, написанный опытными программистами, который плохо понимает SQL и наоборот.

Хорошее упражнение для начинающих и одно, если первые моменты «ага» для меня были, когда я понял отношения между крест-соединением и ограниченным соединением. Я думаю, что это основное понятие на самом деле легче понять старый синтаксис SQL, так, например, мы пересекаем присоединиться таблицы А и

выберите * от а, б

мы получаем декартово произведение а и Ь. Ввод в условие соединения

выберите * от а, Ь, где A.x = b.x

Может быть концептуально рассматривать как обработку декартово произведение затем фильтрование его на где условия. Ослепительно очевидно, что вы можете сказать (хотя удивительно, что многие люди, впервые приходящие на SQL, не понимают, что такое декартовский продукт, что делает это упражнение оправданным для этой концепции), но это полезный ход мысли, который когда-то понимал, понимает такие вещи, как самообучение и сложные конструкции с несколькими столами, немного легче обвести голову.

4

Он принимает много усилий и понимания, чтобы думать в терминах реляционных множеств. Это несоответствие импеданса является большой причиной, по которой ORM популярна в компаниях с меньшими навыками SQL.

+0

+1 Согласовано .... изменение мышления в мышления в наборах всегда кажется самой крутой частью кривой обучения для SQL noobs. – Kev 2008-11-06 03:59:49

+0

И возможность манипулировать наборами в голове. Один набор результатов является дополнением ко всем остальным результатам. Интересно, насколько хорошо знают программисты из SQL-программистов? http://en.wikipedia.org/wiki/Set_theory#Basic_concepts – 2008-11-08 06:40:35

2

Я знаю некоторые из них. Профессионально говоря, я знаю их подробно. С технической точки зрения, я чувствую, что часто касаюсь поверхности и едва делаю ямочку.

Один из лучших способов - это трудный путь, как в том, чтобы придумать некоторые результаты. Одна часть мудрости, если вы позволите мне пройти, заключается в том, что кодирование T-SQL гораздо более эмпирическое, чем теория. То есть, часто есть выбор для настройки, которую сложно выбрать теоретически, но если вы выполняете реальные данные, становится очевидно, что подходит.

5

Одна из хороших особенностей SQL заключается в том, что у нее меньше ключевых слов, чем у многих языков программирования, с которыми вы сталкиваетесь. Изучение синтаксиса довольно простое, это приложение, как намекало голубь, это довольно сложно.

Сколько времени требуется, чтобы профессиональный процедурный кодер стал профессиональным кодовым кодом SQL?

Это зависит от программиста. Я бы сказал, что вы должны были бы быть созданы по крайней мере, два каждым из этих объектов базы данных в отношении производственных данных:

  • хранимой процедура
  • Просмотров
  • Index
  • Trigger
  • User Defined Function

Итак, это не вопрос времени, а вопрос знания.

Мне показалось, что я знаю, как это работает, но теперь я работаю со 100 до 800 миллионов наборов строк, и то, что работало до этого, не соответствует этим огромным наборам результатов. К счастью, многие инструменты управления базами данных сегодня намного лучше. Это означает, что я трачу меньше времени, царапая голову, и больше времени кодирования.

Я думаю, что самая сложная часть из них - это расширения для конкретной базы данных. Все они разные между поставщиками баз данных. Я работал только с SQL Server, Oracle и Interbase/Firebird. Через некоторое время я отказался от попыток идти в ногу со всеми из них и просто сосредоточился на SQL Server, так как это наиболее распространено в моей области метро.

2

Это зависит от вашего определения «профессиональный».

Если вы имеете в виду «трудоспособный», то интенсивное изучение/практика за пару недель поставит вас перед большинством практикующих. Нормализация, базовая теория относительности, ANSI SQL и вариации, по меньшей мере, одного основного поставщика СУБД, а также понимание понимания функций оптимизации и индексирования запросов платформы.

Однако во многих корпоративных средах (включая шахту) вам будет трудно заявить, что вы были профессионалом в области развития, если у вас не было разумного понимания SQL и реляционных баз данных; SQL - это то, как эти места общаются с их данными.

Я по крайней мере один из Oracle, IBM DB2, MS SQL Server, MySQL, Postgres, все из которых имеют бесплатные версии, которые можно использовать для запуска процесса обучения.

Хотя самообучение может вас многому научить, я бы также рекомендовал посещать курсы, если вы можете получить их финансирование: неделю, проведенная на модели обучения, оставила меня в хорошем состоянии (более 20 лет) в то время как достойный практический курс в области производительности и оптимизации платформы будет полезным началом.