Тренажер по углубленному изучению языка SQL — Урок 0. Описание схемы базы данных. Порядок работы

Оглавление / Contents

  • Схема базы данных, структура курса и порядок работы с ним (видео)
  • Схема базы данных, структура курса и порядок работы с ним (текст)
  • Тест для проверки усвоения материала

Несмотря на появление новых моделей баз данных и СУБД, реляционная модель на сегодняшний день является доминирующей, а язык SQL (Structured Query Language) является стандартом написания запросов для выборки и обработки информации из базы данных. 

Предлагаемый Online-курс называется “Углубленное изучение языка SQL”. Причем ключевое слово в названии – углубленное. Предполагается, что слушатели уже знакомы в первом приближении с основными конструкциями языка SQL.

 

В интернете можно найти множество обучающих материалов по языку SQL. 

Но, во-первых, уровень всех их либо НАЧАЛЬНЫЙ, либо СРЕДНИЙ и НИЖЕ СРЕДНЕГО. Таких знаний достаточно, чтобы написать простой сайт, либо простое по функциональности программное приложение, но абсолютно недостаточно, чтобы участвовать в разработке серьезной системы. Работодателей же интересуют не специалисты, знающие язык SQL, их интересуют специалисты, глубоко владеющие языком SQL.

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

В нашем Online-курсе основной упор делается на методическую сторону написания SQL-запросов при решении прикладных задач. Задачи Online-курса:

  1. Выработать у слушателей умение анализировать содержательную постановку задачи получения информации из базы данных.
  2. Сформировать умение формулировать запросы к реляционным базам данных.
  3. Научить конструировать сложные запросы с использованием всего спектра конструкций SQL.

 

Online-курс включает 16 уроков, в которых по мере усложнения разбираются основные подходы к написанию запросов на языке SQL. 

Урок 1. Выборка данных из нескольких таблиц с использованием внутреннего соединения таблиц.

Урок 2. Использование агрегатных функций без группирования данных

Урок 3. Написание SQL-запросов с условиями отбора с некоррелированным многоуровневым подзапросом

Урок 4. Написание SQL-запросов использованием операций над множествами (union, except, intersect).

Урок 5. Выбор объектов, имеющих связь только с элементами подмножества, определяемого подзапросом без группировки.

Урок 6. Выбор объектов, имеющих связь только с элементами подмножества, определяемого подзапросом с группировкой.

Урок 7. Написание SQL-запросов, использующих внешнее соединение таблиц и подзапросов.

Урок 8. Написание SQL-запросов, использующих внешнее соединение таблиц и подзапросов и конструкцией case.

Урок 9. Написание SQL-запросов, использующих двойное агрегирование.     

Урок 10. Написание SQL-запросов, использующих коррелированные подзапросы.

Урок 11. Выбор объектов, имеющих связь с каждым элементом определенного подмножества.

Урок 12. Написание SQL-запросов, использующих конструкцию case.

Урок 13. Выбор объектов, не имеющих связи ни с одним элементом определенного подмножества.

Урок 14. Написание SQL-запросов, использующих внутреннее соединение таблиц и вложенных подзапросов с группировкой и агрегированием данных.

Урок 15. Написание SQL-запросов, использующих внутреннее соединение таблиц и вложенных подзапросов с группировкой по нескольким полям.

Урок 16. Написание SQL-запросов, использующих процентное распределение.

В каждом уроке подробно разбирается одна или несколько задач, после чего слушатель самостоятельно решает аналогичные задачи. Количество самостоятельно решаемых задач в уроке не ограничено, но для подтверждения полученных навыков и перехода к следующему уроку необходимо правильно решить не менее двух задач.

 

Проверка правильности написанных слушателем SQL-запросов выполняется в диалекте СУБД PostgreSQL. Поскольку Online-курс не ставит задачей изучение синтаксиса языка SQL, слушатели должны предварительно самостоятельно ознакомиться с основными конструкциями языка SQL.

При выполнении заданий, прежде всего, необходимо проанализировать задачу, т.е. понять, какая именно информация должна быть затребована из таблиц и как ее нужно преобразовать. Хороший подход, особенно на первых порах, представить, как бы вы работали с таблицами, если бы выполняли запрос вручную. Попытайтесь описать последовательность действий. Это поможет разбить сложный запрос на более простые подзадачи. Примеры лекционной части Online-курса демонстрируют, как выделять простые подзадачи и собирать из них требуемый запрос. 

 

В Online-курсе используется база данных, схема которой включает четыре таблицы:

create table s (

            n_post char(5) not null,

            name char(20),

            reiting smallint,

            town char(15),

            primary key (n_post));

create table p (

            n_det char(6) not null,

            name char(20),

cvet char(7),

            ves smallint,

            town char(15),

            primary key (n_det));

create table j (

            n_izd char(6) not null,

            name char(30),

            town char(15),

            primary key (n_izd));

create table spj (

            n_post char(5) references s,

            n_det char(6) references p,

            n_izd char(6) references j,

            kol smallint)

Каждая запись Таблицы поставщиков (первичный ключ n_post) идентифицирует отдельного поставщика деталей. Поставщик имеет Имя, Рейтинг и Город, в котором он проживает. Перечень деталей (первичный ключ n_det) содержится в Таблице деталей. У детали есть Название, Цвет, Вес и Город, в котором она производится. Из деталей собираются изделия, содержащиеся в Таблице изделий (первичный ключ n_izd). Для каждого изделия есть Название и Город, где изделие собирается. Наконец, Таблица поставок содержит сведения о том, какой поставщик выполнял поставку какой детали, для какого изделия и в каком количестве.

 

Таблицы связаны между собой в виде ER-диаграммы, представленной на слайде.

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

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

 

Результаты запросов, рассматриваемые в лекционной части Online-курса, проверяются на следующем наполнение таблиц.

Таблица поставщиков (S)

n_post

name

reiting

town

(номеp поставщика)

(Фамилия)

(рейтинг)

(гоpод)

S1

Смит

20

Лондон

S2

Джонс

10

Париж

S3

Блейк

30

Париж

S4

Кларк

20

Лондон

S5

Адамс

30

Афины

Таблица деталей (P)

n_det

name

cvet

ves

town

(номеp детали)

(название)

(цвет)

(вес)

(гоpод)

P1

Гайка

Красный

12

Лондон

P2

Болт

Зеленый

17

Париж

P3

Винт

Голубой

17

Рим

P4

Винт

Красный

14

Лондон

P5

Кулачок

Голубой

12

Париж

P6

Блюм

Красный

19

Лондон

Таблица изделий (J)

n_izd

name

town

(номер изделия)

(название)

(город)

J1                   

Жесткий диск

Париж

J2

Перфоратор

Рим

J3

Считыватель

Афины

J4

Принтер

Афины

J5

Флоппи-диск

Лондон

J6

Терминал

Осло

J7

Лента

Лондон

Таблица поставок (SPJ)

n_post

n_det

n_izd

kol

(номер поставщика)

(номер детали)

(номер изделия)

(количество)

S1                   

P1

J1

200

S1

P1

J4

700

S2

P3

J1

400

S2

P3

J2

200

S2

P3

J3

200

S2

P3

J4

500

S2

P3

J5

600

S2

P3

J6

400

S2

P3

J7

800

S2

P5

J2

100

S3

P3

J1

200

S3

P4

J2

500

S4

P6

J3

300

S4

P6

J7

300

S5

P2

J2

200

S5

P2

J4

100

S5

P5

J5

500

S5

P5

J7

100

S5

P6

J2

200

S5

P1

J4

100

S5

P3

J4

200

S5

P4

J4

800

S5

P5

J4

400

S5

P6

J4

500

Таблица поставщиков содержит 5 строк – 5 поставщиков S1, S2, S3, S4 и S5.

Таблица деталей содержит 6 строк – 6 деталей с номерами P1, P2,.. P6.

Таблица изделий содержит 7 строк – 7 изделий с номерами J1, J2,.. J7.

Таблица поставок spj содержит 24 строки – 24 поставки деталей, выполненных поставщиками S1, … S5. У каждой поставки есть объем. И столбец количество – это объем поставки. Число поставок равно числу строк таблицы spj.

Например, первая строка таблицы говорит о том, что поставщик S1 выполнил поставку детали P1 для изделия J1 в количестве 200 штук.

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

 

Ниже приведены некоторые пояснения к формулировкам запросов в задачах:

Число поставок – число строк таблицы spj.

Объем поставки – количество поставленных деталей – значение столбца kol таблицы spj.

Количество деталей – количество поставленных деталей – значение столбца kol таблицы spj.

Вес поставки – количество поставленных деталей * вес поставленной детали (вес, указанный в таблице p, это вес одной детали).

Число деталей – число разных номеров (наименований, видов, типов) деталей.

Число изделий – число разных номеров (наименований, видов, типов) изделий.

Число поставщиков – число разных номеров (наименований, видов, типов) поставщиков.

Город, из которого сделана поставка – город, где производится деталь, указанная в поставке.

Город, куда сделана поставка – город, где собирают изделие, указанное в поставке.

 

Список рекомендованной литературы:

  1. Кузнецов С.Д. Базы данных. – М.: Академия, 2012.
  2. Стасышин В.М., Стасышина Т.Л. Базы данных. Лекции по курсу. Часть 1. Новосибирск: Изд-во НГТУ, 2021.
  3. Стасышин В.М., Стасышина Т.Л. Базы данных. Лекции по курсу. Часть 2. Новосибирск: Изд-во НГТУ, 2022.
  4. Стасышин В.М., Стасышина Т.Л. Базы данных. Лекции по курсу. Часть 3. Новосибирск: Изд-во НГТУ, 2023.
  5. Стасышин В.М., Стасышина Т.Л. Базы данных: технологии доступа. – М.: Юрайт, 2017.
  6. https://www.postgresql.org/docs/9.3/static/index.html
  7. http://postgrespro.ru/doc/sql.html
vpn_key Авторизуйтесь, чтобы пройти тест под своим именем

В данном модуле/теме 1 тестовое задание

Для перехода к следующему модулю/теме, необходимо выполнить его на указанный балл.
search