[Заметка] Какой СУБД учить в университетах?


В чате #kranonit разгорелась интересная дискуссия. В университете студентам преподаватель по базам данных дал на обучение старую как мир Paradox.
Парадокс конечно клёвая БД и всё такое, но никакой мотивации у студентов её учить нет. С таким же успехом можно учить студентов набивать перфокарты.
И возник вопрос: А какой же БД учить студентов?
Вот пару моих мыслей по этому поводу.
Ирония в том что когда-то в магистратуре я проходил пед практику я как раз составил лекцию с осмотром баз данных.
Дисклаймер: я был DBA на Interbase и Firebird, но я совсем не гуру в БД (а такие есть вообще?). Поэтому если видите что я в чём то тут неправ — жгите в комментариях. И да это заметка а не полноценная статья.

Во-первых нужно глянуть на сравнение баз данных чтобы хотя бы прикинуть их отличия и сформулировать критерии выборки.

C RDBMS такая тема: принципиальной разницы какую учить особо нет, ибо SQL везде похож и принципы построения таблиц тоже.

На самом деле всё упирается в количество часов начитки и практических работ.

Если времени мало, то однозначно нужно учить MS Access или Open Office Base.
Я на полном серьёзе, посудите сами:
Это очень распространённая БД которая идёт вместе с офисом т.е. УЖЕ есть практически на всех компьютерах.
Очень легко перейти к понятию таблиц от понятий таблиц в Excel, в случае с Access этот переход ещё мягче.
И поскольку он входит в офисный пакет то отсюда и растут всякие плюшки от интеграции, особенно с Excel. А не забывайте что Excel — лучшая программа за всю историю человечества, и в грамотных руках вполне способная заменить много самопального софта для автоматизации производства.
Есть полноценный GUI! Причём уже сто лет как есть и действительно мощный: с инструментами визуального построения запросов, конструктор таблиц, форм и удобного редактирования содержимого таблиц. Всяким там MySQL Workbench ещё расти и расти.
Не нужен сервер, легче распространять программу.
Есть возможность построения SQL запросов, правда без автодополнения и подсветки синтаксиса, что очень сильно огорчает.

Если есть чуть больше времени тогда можно изучать MySQL потому что к ней много руководств написано для чайников и она популярна на рынке. Но как ни крути у MySQL родовая травма, поэтому никакие вторичные ключи, вьюхи и хранимые процедуры на ней не выучишь. К тому же она явно склоняет к говнокодерству из-за своего попустительства.
Есть гуй MySQL Workbench, и он совершенно не удобный. Но есть альтернативы.
Т.е. учебная польза от MySQL нулевая: не соответствует стандарту ANSI SQL (в этом плане похоже самый совместимый Firebird). Неудобный гуй который повышает порог вхождения. Проблемы с обратной совместимостью (учебные материалы быстро устаревают). Несмотря на популярность проект явно колбасит — покупка Ораклом, форки (MariaDB, Drizzle), смены движков, насильно вкручивают новые фичи на старые костыли.
Вообщем польза от этого ровно одна: студенты будут чуть более мотивированы, потому что знают что продукт популярный.

Если времени больше, и можно дать серьёзный курс тогда однозначно PostgeSQL, на котором учить транзакции, триггеры, сиквенсы, хранимки и вьюхи.
С гуями для PG я не очень разбирался. Поработал только в pgAdmin и он совсем меня не впечатлил.

Если совсем круто со временем то можно ещё NoSQL прихватить типа MongoDB или на крайняк Redis (он очень прост).
Самое главное тут — вникнуть в CAP теорему.

А чему учат на западе? Смотрите сами:
Introduction to Databases course (Stanford)
Introduction to Data Science (University of Washington)

Вместо заключение

Учить студентов нужно тому что ещё живое на рынке. Например Firebird, FoxPro, ErWin (это не БД) не смотря на свою круть не попадают в эту категорию.
Также БД должна быть распространённой.
А ещё очень желательно чтобы софт был свободным, иначе устанешь выпрашивать лицензии.
Учить нужно SQL который касается манипуляции данными (Data Manipulation Language, DML): SELECT, INSERT, UPDATE, DELETE. Эти операторы нужно запомнить железно и хорошо закрепить на практике.
DDL (Data Definition Language) учить не нужно, создавать таблицы нужно из гуёв. В любой БД создание таблицы операция настолько редкая что если что можно просто подсмотреть синтаксис в документации, не смертельно.
Всякие там гранты и ролбеки тоже можно выкинуть из программы.
Большой упор нужно сделать на селекты, джоины, индексы, планы (самому разбираться с ними обычно лень), и на нормализацию.
Кроме нормализации нужно закрепить сохранение произвольных структур или иерархических.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s