Благодарности
В данном учебном пособии использованы материалы курса Гарвардского университета CS50 SQL:
https://cs50.harvard.edu/sql/
Эти материалы используются как помощь студентам, которые знакомятся с базами данных.
Указанные материалы используются в их исходном, оригинальном виде, без изменений. Студентам предлагаются только ссылки на эти открытые источники.
В соответствии с лицензионным соглашением CC BY-NC-SA 4.0, данные материалы используются для некоммерческих целей. Данное учебное пособие также распространяется бесплатно на сайте издательства «Ридеро».
Условия лицензии расположены по адресу:
https://cs50.harvard.edu/sql/2024/license/
Автор данного пособия выражает признательность создателям онлайн-курса CS50 SQL за их многолетнюю кропотливую работу по разработке учебных материалов и предоставлению свободного доступа к этой информации и к образовательной платформе.
Изображение на обложке с генерировано с помощью GigaChat от Сбера. Использована следующая команда (промпт): «нарисуй компьютерную базу данных с подключением к интернету и бумажные документы».
Основные термины
Для полного взаимного понимания определимся с названиями.
Онлайн-курс CS50 SQL: Интернет-курс Гарвардского университета CS50’s Introduction to Databases with SQL.
Курс «Базы данных»: Курс по базам данных для студентов заочного отделения.
Итоговый проект (Final Project): Разработка базы данных в рамках онлайн-курса CS50 SQL. Выполняется по желанию.
Курсовой проект: Проект в рамках курса «Базы данных» для студентов заочного отделения. Выполняется и защищается обязательно. Результаты защиты выставляются в ведомость и зачетную книжку студента.
Описание итогового проекта: Файл README.MD, который загружается в систему Гарвардского университета для получения сертификата.
Пояснительная записка (ПЗ): Описание курсового проекта, представляемое на кафедру вуза на защите курсового проекта. ПЗ оформляется в соответствии с требованиями вуза. ПЗ хранится в бумажном виде на кафедре в течение нескольких лет. Электронный вариант ПЗ студент загружает по адресу, указанному преподавателем, для проверки — до защиты.
Зачет: Оценка, подтверждающая завершение курса студентом. Для получения зачета студент выполняет все практические задания онлайн-курса CS50 SQL и демонстрирует понимание изученного материала.
Начало обучения
Мы начинаем работу с учебными материалами очно — в рамках нескольких «постановочных» занятий. Смысл в том, чтобы набрать разгон, набрать скорость, а затем самостоятельно пройти оставшуюся часть курса.
Почему нужно «разогнаться» и «набрать скорость»? Потому что если вы начнете с нуля и будете проходить онлайн-курс дома… Вы скажете: «Что-то непонятно… Давай-ка я через неделю вернусь». Потом через месяц вспомните и скажете, что уже поздно. И на этом всё изучение закончится.
Самое тяжелое — начать, разогнаться и сделать первые шаги. Полностью освоить автоматическую проверку заданий. И первые шаги гораздо легче сделать под присмотром опытного преподавателя и в окружении других таких же студентов.
Зачет
Изучение курса завершается защитой курсового проекта и зачетом.
Нас ожидает курсовой проект — тоже в соответствии с рекомендациями составителей курса. Студент самостоятельно выбирает то, что интересно. То, что действительно нравится. Вокруг выбранного объекта или деятельности мы строим небольшую базу данных: 4—5 табличек. Связь между таблицами по ключу. В этой базе данных мы реализуем индексы, триггеры и хранимые процедуры.
К моменту проведения зачета мы ожидаем, что студенты в состоянии написать SQL-запросы на основе материала, который обсуждается в рамках лекций и практических занятий в этом курсе. Для этого нужно самостоятельно прорешать все практические задания. Автоматическая система сразу проверяет, насколько правильно или неправильно вы это делаете. Добиваемся, чтобы автоматическая проверка подтвердила правильность решения.
Ориентация
Материалы и ссылки по нашему предмету размещены на страничке курса на гитхабе:
https://github.com/Valentin-Arkov/Database
В нашем курсе будет много практики. Это будет очень необычный курс. Таких курсов у вас никогда не было и больше не будет. В соответствии с учебным планом нам предстоит три лекции, одна практика и парочка лабораторных работ. Остальное — это самостоятельная работа по изучению материалов и выполнению курсового проекта. Так что это очень вводный, ознакомительный курс. Вряд ли кто-нибудь надеется, что за три лекции из вас планируется сделать крутых специалистов по базам данных. Кроме лекций, заочникам предстоит проделать большое количество самостоятельной работы — около 50 часов, см. рис.
Следующая наша встреча планируется через пару месяцев –для защиты курсового проекта и проведения зачета.
Для самостоятельной работы мы будем использовать бесплатный онлайн-курс от Гарвардского университета. Это введение в базы данных на примере SQLite: Harvard CS50 SQL.
Для дальнейшей работы понадобится зарегистрироваться на платформах GitHub и EdX.
GitHub
EdX
Материалы онлайн-курса CS50 SQL размещены также и на платформе EdX, где их тоже можно изучать. Но регистрация на курс будет происходить через сайт Гарвардского университета.
Если вы уже проходили курсы по базам данных, будет полегче. Но всё равно здесь есть, над чем поработать и чему научиться. Мы разбираем самые основы, самый фундамент. Если вы с этим материалом знакомы, вам предстоит эти знания закрепить и продемонстрировать свои навыки.
Машинный перевод
Материал гарвардского онлайн-курса представлен, естественно, на английском. Если кому-то нужно на русском, есть варианты. Напомним, что браузеры Google Chrome и Яндекс Браузер позволяют нам автоматически включать машинный перевод веб-страничек, см. рис. Имеет смысл оба варианта смотреть — и оригинал, и машинный перевод. Если есть какие-то неточности в переводе, можно всегда в оригинале уточнить.
Насчет машинного перевода. Эта функция есть во многих браузерах. Конечно, есть специализированные сайты и сервисы типа переводчика Google и Яндекса.
Плюс к этому, в рамках онлайн-курса представлен ряд видеороликов на английском языке. Их тоже можно смотреть в оригинале и с переводом на русский. Эта технология реализована в браузере Яндекс, см. рис.
Заходим на YouTube. Вокруг ролика в Яндекс. Браузере появляется желтая рамочка. Нам предлагают перевести видео на русский язык.
Плюс к этому Яндекс Браузер включает суммаризацию видео, см. рис. Достаточно любопытная функция. Если мы хотим получить краткое содержание, нам его автоматически сгенерируют.
Реляционные базы данных
В рамках курса «Базы данных» мы разбираем только табличные базы данных (хотя есть и другие базы данных), см. рис. Официальное название: реляционные базы данных. Это красивое название, оно придумано для научности и для запутывания людей. Звучит очень красиво, чем-то напоминает «реляционную теорию».
На самом деле изначально слово relation — «отношение» — применялось к табличке с данными. Фактически можно иметь одну табличку и уже называть ее базой данных.
То, с чем мы имеем дело сейчас, — это несколько табличек и связи между ними. Схема такой базы называется Entity-Relationship, или ER-диаграмма. Здесь Relation уже означает «связь между таблицами». Но когда говорят «реляционные базы данных», имеются в виду именно таблицу (в единственном числе) или таблицы (несколько штук).
Обычно к таким базам обращаются с помощью SQL-запросов. Поэтому их условно называют SQL базы данных.
В процессе изучения данного курса вам постепенно будут демонстрировать, что на самом деле хранение в табличках не очень удобно. Особенно если у нас появляется отношение «один ко многим» или «многие ко многим». В этом случае приходится держать отдельную, вспомогательную таблицу, в которой организуется эта взаимосвязь.
Соответственно, есть другие типы баз данных, где это ограничение совершенно ни на что не влияет. Это могут быть структуры типа JSON. Все остальные базы данных условно называются NoSQL. Расшифровывается это не как «противоположность SQL». На самом деле это означает «не только SQL». Фактически, современные СУБД, такие как Postgres, уже включают в себя возможность поддержки JSON с индексацией. А это уже не таблица, это более сложная, часто иерархическая структура.
Есть много красивых названий, есть много популярных технологий, но для того, чтобы к ним перейти, сначала должен быть фундамент, база, основа. И вот этими вещами мы и будем с вами заниматься. Разобравшись с табличными базами данных, можно быстро освоить остальные типы — если понадобится.
Сертификат
Конечный результат изучения онлайн-курса — если заинтересует — это сертификат Гарвардского университета, см. рис. Бесплатный сертификат, который можно добавить в свое резюме. Если честно выполнить все задания и отправить их все на проверку, то можно получить такой подарок. На этом сертификате есть ссылка и QR-код. Любой работодатель может убедиться, что это не нарисованная картинка, а подлинный документ.
Итак, онлайн курс называется CS50. CS означает Computer Science, то есть информатика. Число 50 намекает, что это половина от сотни. Фокус в том, что на Западе курсы начального уровня часто называют 101. И, соответственно, 50 — это половинка от 101. Так что это «введение во введение».
Но если посмотреть на объем, этот онлайн-курс потребует примерно один-два месяца работы — вдумчивой, неторопливой — и над заданиями, и над итоговым проектом. В процессе выполнения заданий на отдельной страничке сайта студент получает «зеленые галочки». Это так называемый GradeBook, то есть своего рода «зачётка», см. рис.
Здесь отмечается прохождение каждого этапа. Например, неделя первая — здесь у нас три зеленых галочки. Если загрузить итоговый проект, получаем галочку Final Project. После этого система генерирует сертификат о завершении.
Произношение: Youglish
Среди прочего мы расширяем кругозор, повышаем грамотность и культуру.
И начнем мы с самого простого, с произношения. Потому что традиционная база данных условно называется SQL. Желательно знать, как это название правильно и грамотно читается. Здесь нам пригодится инструмент под названием YouGlish. Это поисковая машина поверх YouTube. Она позволяет находить выбранное слово или фразу в видеороликах, см. рис.
Попробуйте проделать такое упражнение. Заходим на YouGlish.com и вводим в строке поиска SQL. Теперь можно посмотреть фрагменты роликов, где это слово произносят носители языка. Тогда мы будем готовы к тому, как это будут другие люди называть.
При воспроизведении будет подсвечиваться слово, которое сейчас произносится. Это тоже удобно. Можно перемотать на следующий ролик, затем на следующий, на следующий.
Под роликом выводятся комментарии и дополнительные сведения. Это тоже может быть полезно.
Интеллектуальные чат-боты
Далее можно подробнее разобраться с произношением с помощью интеллектуального помощника. Сейчас доступно очень много чат-ботов и сервисов — как оригинальный ChatGPT, так и его разнообразные аналоги.
Можно порекомендовать сервис Perplexity:
Этот сервис бесплатный. Самое интересное, что он дает ссылки на источники — в отличие от большинства чат-ботов. Нам сообщают, откуда были взяты данные. Результат представляют их в обобщенном красивом виде. Работает и на русском языке, и на английском.
Попробуем спросить, как правильно произносить SQL, см. рис. Можете даже по-русски спросить об этом. Если на этом сайте зарегистрироваться, у нас еще будет история всех наших запросов. Но это уже не обязательно.
Итак, с помощью этого чат-бота попробуйте выяснить, как правильно произносится SQL и почему. Запрос может быть длинным, мы можем многое уточнять. Мы можем сказать: «Действуй как ИТ-специалист, расскажи простыми словами, объясни шаг за шагом». Есть несколько таких ключевых фраз, которые позволяют направить этот сервис в нужную сторону, в нужную точку.
При прохождении курса «Базы данных» можно регулярно консультироваться у этого бота. Он будет подсказывать — вплоть до генерации текста программы.
В отличие от поисковых машин, он может давать разные ответы — в разное время и на разных компьютерах. Кому-то он может сказать: «S-Q-L», а кому-то может сказать: «Sequel». А кому-то и то, и другое. Мне, например, этот чат-бот дал два варианта. Причем он объясняет, что предпочтительное, наиболее распространенное — это все-таки «Sequel».
И далее — небольшая история вопроса. Первоначально этот язык запросов так и назывался: Sequel. Но потом возникли проблемы с лицензированием. Кто-то уже запатентовал это название, и пришлось придумать другой, обходной вариант. Сократили название до трех букв, но первоначальное произношение сохранили. И на Западе специалисты произносят SQL по-прежнему: «Сиквел». Ну а в России, соответственно, более привычно читать по буквам S-Q-L, причем L с мягким знаком. Мы русифицируем всё, к чему прикасаемся. Это нормально. Это жизнь.
Интеллектуальный помощник CS50AI
Теперь что касается искусственного интеллекта (ИИ) на онлайн-курсе. На сайте курса Гарварда имеется встроенный интеллектуальный помощник. Это ссылка CS50AI с изображением утенка. Выяcняется, что этот резиновый утенок — любимая игрушка программистов в Америке. Не знаю, почему. И с этим утенком у них связана одна технология. Если вы хотите в чем-то разобраться — объясните проблему утенку. Представьте, что вы объясняете этот предмет маленькому глупому утенку. Его надо держать в руках и ему рассказывать: «Понимаешь, я делаю базу данных. В ней будет две таблицы. Ты понял?»
Фактически перед нами урезанный ChatGPT, который только помогает с этим курсом. А на другие вопросы он, скорее всего, откажется отвечать. И генерировать программу он тоже вряд ли будет. Но он скажет: «Вот эта команда работает так-то. Например…» И дает пример. Решение задачи он не обязан генерировать, но зато он объяснит, как работает вот эта команда, см. рис. Вот такой любопытный инструмент.
Облачная среда Visual Studio Code
Следующий инструмент онлайн-курса — Visual Studio Code. Фактически это Visual Studio, который работает через GitHub в облаке. Эта виртуальная среда подготовлена для работы именно в данном онлайн-курсе. Через эту среду мы отправляем наши практические задания на автоматическую проверку. В процессе выполнения заданий нам придется перейти по этой ссылочке. При первом входе будет сгенерирована эта среда (собран соответствующий контейнер), потом она будет открываться в браузере, см. рис.
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.