Skip to content

katyasots/database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание

Пусть требуется создать программную систему, предназначенную для менеджера музыкальных групп. Такая система должна обеспечивать хранение сведений о группах, включающих название группы, год образования и страну, состав исполнителей, положение в последнем хит-параде; репертуар группы. Сведения о каждой песне из репертуара группы — это ее название, композитор, автор текста. Необходимо также хранить данные о последней гастрольной поездке каждой группы: название гастрольной программы, названия населенных пунктов, дата начала и окончания выступлений, средняя цена билета (зависит от места выступления и положения группы в хит-параде). Возможно появление новой группы и изменение состава исполнителей. Каждая песня может быть в репертуаре только одной группы.

Менеджеру могут потребоваться следующие сведения:

  1. Автор текста, композитор и дата создания песни с данным названием? В репертуар какой группы она входит? Репертуар наиболее популярной группы?
  2. Цена билета на последний концерт указанной группы?
  3. Состав исполнителей группы с заданным названием, их возраст и амплуа?
  4. Место и продолжительность гастролей группы с заданным названием?
  5. Какие группы в текущем году отмечают юбилей
  6. Самый молодой вокалист? Какую группу он представляет?

Реализация

  1. Приобретены практические навыки проектирования ER-модели и структуры базы данных по текстовому описанию предметной области. В ходе работы разработана ER-модель на основе текстового описания предметной области, посвящённой менеджменту музыкальных групп. После этого создана структура базы данных, соответствующая нормальной форме Бойса — Кодда, что обеспечивает эффективное и надёжное хранение данных без избыточности.
  2. Реализована спроектированная база данных в СУДБ PostgreSQL. Создана и заполнена тестовыми данными таблицы. Созданы запросы, отвечающие на поставленные вопросы.
  3. Созданы модели спроектированной базы данных с использование Sequelize. Написан скрипт для заполнения тестовыми данными с помощью NodeJS и описаны связи между таблицами. Также реализованы запросы в соответствии с заданием и проведен анализ ответов.
  4. Создан файл для заполнения БД тестовыми данными с использованием библиотеки faker. Проведены исследования времени для запросов на разном количестве объемов данных– чем больше количество данных, тем дольше выполняется запрос. Для сокращения времени выполнения запроса можно индексировать БД, что и было сделано. Проведены исследования, которые отражают, что индексы уменьшают время выполнения запроса. Также проведены исследования, показывающие, что использование сортировок увеличивает время выполнения запросов. Для всех исследований сделаны графики.
  5. Разработан web-сервер для выполнения запросов, каждый запрос протестирован. Изучена утилита SQLmap, помогающая тестировать запросы на SQL-инъекции. Замечено, что она работает не идеально: не всегда определяет все виды инъекций, а значит каждый запрос все еще требует ручного тестирования.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published