1,1K подписчиков

Практический SQL, решаем задачу на Kwork

338 прочитали

Обратился клиент на фриланс бирже KWORK, с задачей по MySQL, такого содержания:

Опишите базу данных для школьного кабинета, в рамках которой можно фиксировать, кто и в какое время сидел за той или иной партой.
Место ученика — это ряд, парта, вариант.
В течение одного дня у разных классов бывает несколько уроков.
Создайте минимум 3 таблицы: «Кабинет», «Ученик» и сводная таблица, где отображаются парты и ученики.
Используйте поля «началоурока» и «конецурока» с типом данных TimeStamp.

Давайте разбираться.

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

Система управления базами данных (СУБД) – это комплекс программно-языковых средств, позволяющих создать базы данных и управлять данными. Иными словами, СУБД — это набор программ, позволяющий организовывать, контролировать и администрировать базы данных.

Синтаксис языка может незначительно отличаться в зависимости от того, какую СУБД вы используете (MySql, SQLite, PostgreSQL и тп.).

https://xakep.ru/
https://xakep.ru/

Для создания базы данных школьного кабинета, где можно отслеживать, кто сидел за определенной партой, мы можем разработать следующую структуру с тремя основными таблицами: Кабинет, Ученик, и Место_за_партой. Далее приведена концепция и SQL инструкции для создания такой структуры базы данных, а так же реализация кода.

Таблица Кабинет

Основное хранилище информации о кабинетах.

Атрибуты таблицы:

  • id (INT, первичный ключ)
  • номер_кабинета (INT)
  • название_кабинета (VARCHAR)

Таблица Ученик

Хранит данные об учениках.

Атрибуты таблицы:

  • id (INT, первичный ключ)
  • имя_фамилия (VARCHAR)
  • класс (VARCHAR)

Таблица Место_за_партой

Связующая таблица, отображающая распределение учеников по партам в течение уроков.

Атрибуты таблицы:

  • id (INT, первичный ключ)
  • id_ученика (INT, внешний ключ)
  • id_кабинета (INT, внешний ключ)
  • ряд (INT)
  • парта (INT)
  • вариант (INT)
  • начало_урока (TIMESTAMP)
  • конец_урока (TIMESTAMP)

Теперь переведем выше описанные схемы на язык SQL и создадим базы:

CREATE TABLE Кабинет (
id INT PRIMARY KEY AUTO_INCREMENT,
номер_кабинета INT NOT NULL,
название_кабинета VARCHAR(50) NOT NULL
);

CREATE TABLE Ученик (
id INT PRIMARY KEY AUTO_INCREMENT,
имя_фамилия VARCHAR(50) NOT NULL,
класс VARCHAR(10) NOT NULL
);

CREATE TABLE Место_за_партой (
id INT PRIMARY KEY AUTO_INCREMENT,
id_ученика INT,
id_кабинета INT,
ряд INT NOT NULL,
парта INT NOT NULL,
вариант INT NOT NULL,
начало_урока TIMESTAMP NOT NULL,
конец_урока TIMESTAMP NOT NULL,
FOREIGN KEY (id_ученика) REFERENCES Ученик(id),
FOREIGN KEY (id_кабинета) REFERENCES Кабинет(id)
);

Эти таблицы позволят фиксировать, какие ученики сидели за определенными партами в конкретном кабинете в определенные временные интервалы.

Файл sql. Результат решения задачи можно посмотреть >>> тут.

Кстати, на KWORK можно не только зарабатывать, но и покупать услуги. Репетиторы, переводчики, дизайнеры, ИТ и SEO-специалисты всегда готовы упростить вам жизнь, выполнив ваш заказ.

Было полезно? Ставьте лайк и подписывайтесь на канал.