Giter Site home page Giter Site logo

db_lab1's Introduction

Laboratory work №1

Course: databases

Отчёт

1. Задачи

Необходимо на выбранном языке (C/C++,Java, Python, другие) реализовать файловую базу данных (однотабличная, число полей не менее 4, из них как минимум 1 ключевое). Работа с БД осуществляется через GUI.

Функции к реализации:

  • создание, удаление, сохранение БД,
  • добавление новой записи в БД (с проверкой уникальности по ключевым полям),
  • удаление записи из БД по значению некоторого поля (желательно не ключевого, в таком случае удалить все записи, совпадающие по значению),
  • редактирование записи БД,
  • создание backup-файла БД,
  • восстановление БД из backup-файла,
  • импорт БД в файл стороннего формата (например, *.xlsx).

2. Ход работы

  • В лабораторной работе была реализована файловая база данных рейтингов фильмов

  • база данных содержит 4 поля:

    • Название фильма, текстовый тип данных - длина до 30 символов
    • Год в котором был снят фильм, тип int - 4 цифры
    • Рейтинг фильма(от 0 до 10), тип float,1 знак до запятой, 1 знак после запятой
    • Id - уникальный идентификатор фильма, тип int, 7 знаков
  • ключевое поле - id

  • база данных работает с файлами с собственным расширением .hdb, файлы хранятся в директории Data

  • база данных содержит 2 контейнера - список списков, где хранятся все записи и словарь пар id - индекс в списке списков

Описание реализованных функций
  • Функция добавления в базу данных (в дальнейшем - бд): Сложность алгоритма О(1), после проверки на уникальность id каждая новая запись добавляется в главный список, пара id - индекс добавляется в словарь и запись дописывается в файл последней строкой
  • Функция поиска в бд. Сложность поиска по id - О(1), по остальным полям - О(n). Для поиска используется словарь для получения индекса элемента в главном списке (если это id существует)
  • Функция удаления из бд. Сложность с удалением по id- О(1), c удалением по другим полям - О(n) (в классе бд удаление производится по id, но возможность удаления по другим полям реализована в модуле с GUI - это комбинация поиска и удаления всех найденных записей по найденным id). Функция удаления работает следующим образом: на вход она получает id записи, затем используя словарь получает индекс записи в главном списке, записывает в файле с бд последнюю запись на место той, которую нужно удалить, затем удаляет последнюю строчку в файле, далее в главном списке на место записи, которую нужно удалить записывается последняя запись.
Доказательство эффективности алгоритмов
  • Таблица результатов тестирования. Результаты тестирования
  • График роста времени от числа операций. Результаты тестирования
  • Вывод: теоретическая временая сложность операций добавления, поиска по id и удаления доказана тестированием.

db_lab1's People

Contributors

tikhobaev avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.