Лабораторная работа. Собственная БД.


Лабораторная работа
Создание собственной базы данных
Целью лабораторной работы является создание собственного хранилища данных, а также создание интерфейса для работы с хранилищем.
Знания, необходимые для выполнения работы:
1. Работа с файлами
2. Способы внутреннего хранения данных - коллекции (бинарное дерево поиска (std::map, std::multimap, std::set), динамический массив (std::vector))
3. Работа со строками (std::string)
4. Перечисления (enum)
5. ООП (классы)
Задание:
1. Разработать структуру для хранения данных (при этом одно поле должно быть уникальным - первичный ключ).
Также необходимо выбрать названия для полей таблицы, которые будут выводиться (нужно для того, чтобы включить их в запрос)
2. Выбрать коллекцию для хранения данных во внутреннем представлении.
3. Разработать список команд, вводимых в консоли, для работы с хранилищем данных:
1) создание новой таблицы (структура заранее задана);
2) удаление имеющейся таблицы;
3) выбрать все данные из определенной таблицы (имя таблицы совпадает с именем файла);
4) добавление данных в таблицу;
5) изменение данных в таблице;
6) удаление данных из таблицы;
7)* выбрать отдельные поля из таблицы;
8)* агрегатные функции (минимум, максимум, количество);
9)* объединение, пересечение, разность таблиц (с удалением дубликатов и без).
При выполнении каждой команды система должна выдавать сообщение, что команда выполнена успешно или команду не удалось выполнить.
Нужно придумать список команд, продумать, как система будет реагировать на них и как разбирать этот запрос.
(*) - дополнительные задания
4. Реализовать работу с файлом (каждый файл - отдельная таблица)
1) загрузка данных из файла в коллекцию
2) сохранение данных из коллекции в файл
5. Реализовать обработку команд
Рекомендации и примечания (может быть полезно)
Общий алгоритм работы команд:
1) открыть файл;
2) загрузить данные в коллекцию;
3) совершить манипуляции с данными;
4) сохранить изменения (если требуется);
5) закрыть файл.
При создании программы рекомендуется разработать класс, в котором будут реализованы функции работы с хранилищем данных:
1) работа с файлом (загрузить данные по имени файла, сохранить данные в определенный файл)
Предварительно необходимо решить, как будут храниться данные в файле (текстовый вид, бинарный, xml, проч.)
2) парсер запроса
В случае успешного разбора - выполнение.
В случае неуспешного разбора - вывод ошибки.
Возможные ошибки на этапе разбора:
- неправильная команда (невозможно разобрать строку);
- заданные поля отсутствуют (при выборе отдельных полей).
Возможные ошибки на этапе выполнения:
- файл некорректен (невозможно прочитать) или файла не существует - (при добавлении, изменении, удалении и чтении данных);
- файл уже существует (при создании новой таблицы);
- файла не существует (при удалении таблицы).
3) выполнение команд запроса
Команда Действия при выполнении команды
вывод данных на экран вывод данных на экран
добавление данных запись в файл
изменение данных перезапись файла
удаление данных перезапись файла
создание новой таблицы создание файла
удаление существующей таблицы удаление файла
вывод результата выполнения объединения, пересечения или разности вывод данных на экран
При реализации вывода на экран предусмотреть какой-нибудь вариант форматирования. При выводе результата запроса в конце можно выводить, например, общее количество строчек и время, потраченное на выполнение запроса.

Приложенные файлы

  • docx 7844506
    Размер файла: 15 kB Загрузок: 0

Добавить комментарий