Подходы к хранению и использованию данных

Подходы к хранению и использованию данных

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

Распространённый и наглядный вариант — создание структуры в виде таблицы, но таблицы с одними и теми же данными также формируются разными способами.

Начинаем работать с данными

База данных учеников

Рассмотрим задачу по созданию структуры для хранения данных средних оценок учеников за пройденные курсы. Для каждого ученика требуется записать следующую информацию:

  1. Имя и фамилия ученика.
  2. Курсы, которые ученики проходили в рамках обучения.
  3. Количество уроков каждого курса.
  4. Оценка, полученная учеником по итогу прохождения курса.

Предварительный вариант структуры

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

Ученик Курс Количество уроков Оценка
Иванов Игорь Базы данных, поток 54 от 12.11.2020   4.9
Павлова Анастасия Базы данных, поток 54 от 12.11.2020    
Иванов Игорь Linux. Рабочая станция, поток 48 от 02.10.2020    
Иванов Игорь Основы Python, поток 45 от 18.08.2020   4.9


Таблица 1. Предварительный вариант базы данных

В целом такой вариант выглядит неплохо. Проанализируем эту структуру на недостатки.

 

Рассмотрим проблемные места предварительной реализации

Составные значения в ячейках

Первое, на что стоит обратить внимание — значения в столбцах «Ученик» и «Курс» непростые, а состоят из нескольких атрибутов. Недостаток такого подхода в том, что когда записей в нашей базе данных станет много, искать по некоторым значениям будет сложнее, чем по другим.

Например, получится легко отсортировать и найти подходящего ученика по фамилии, нежели по имени. Аналогичная ситуация и с данными в столбце «Курс» — искать по дате начала обучения будет сложнее, чем по названию курса.

Таким образом, часть значений в нашей структуре — составные. Например, в таблице 2 такие значения выделяются красным цветом. 

Ученик Курс Количество уроков Оценка
Иванов Игорь Базы данных, поток 54 от 12.11.2020   4.9
Павлова Анастасия Базы данных, поток 54 от 12.11.2020    
Иванов Игорь Linux. Рабочая станция, поток 48 от 02.10.2020    
Иванов Игорь Основы Python, поток 45 от 18.08.2020   4.9


Таблица 2. Составные (неатомарные) значения базы данных учеников


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: