База данных в блокноте

Однажды у меня появилась потребность хранить различную текстовую информацию небольшого размера, вроде заметок, небольших фрагментов программ, различных ссылок. Хранить хотелось сразу в одном месте и так, чтобы информацию можно было использовать на любом устройстве. В моём случае это были компьютер и телефон.

Естественно, программ, которые бы позволяли это, я не нашёл. Для телефона это различные вариации на тему заметок, которые и так присутствуют в прошивке. Здесь основное неудобство в невозможности разделения заметок по категориям и поиска в них. Или же невозможность экспорта записей на компьютер. Для компьютера такого рода программ больше, но основная проблема почти такая же — а как всё это смотреть на телефоне?

Решение задачи


Первым делом я решил, что необходимо хранить информацию в текстовом файле, потому что для просмотра текста для телефонов есть великое множество программ. В том числе и довольно продвинутых. Но мне нужны только три функции — просмотр, поиск текста и редактирование. Для этого можно использовать на телефоне, например, MiniCommander. Ну а на компьютере для этой цели подходит блокнот.

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

  1. Файл должен состоять из отдельных записей.
  2. Каждая отдельная запись не должна содержать в себе пустых строк. Записи разделяются пустыми строками.
  3. Запись состоит из нескольких полей, каждое из которых начинается с новой строки.

В итоге получалась подобная структура:

Поле 1 записи 1
Поле 2 записи 1
...
Поле N записи 1

Поле 1 записи 2
Поле 2 записи 2
...


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

Таким образом появились следующие поля в записях:

  • Поле заголовка. Состоит из одной строки. Содержит, как ни странно, заголовок.
  • Поле ключевых слов. Состоит из одной строки. Содержит список слов, перечисленных через запятую с пробелом. Вообще облегчает поиск, но чуть позже я расскажу и о другом применении этого поля.
  • Поле данных. Здесь находится основной текст записи. Отличается от остальных полей тем, что может состоять из нескольких непустых строк. Это позволяет хранить, например, исходные тексты программ, или другой текст, в котором необходимы переносы строк.

Вот теперь вся идея хранения текста приняла оконченный вид:

Заголовок
Ключевые слова
Текст

Заголовок
Ключевые слова
Текст
Много текста
...


В блокноте текст легко читать, поиск текста средствами блокнота упрощается наличием заголовка и ключевых слов, заголовок позволяет оценить содержание записи без её прочтения. Цель достигнута, так как всё это легко просматривается и на мобильном телефоне. Теперь можно думать о доработке.

Некоторые идеи для программы, работающей с полученным файлом


Первым делом я скажу об использовании поля с ключевыми словами в программе, которая будет призвана облегчить работу с нашей «базой данных». С помощью этого поля каждую запись можно отнести к той или иной категории. Теперь можно представить работу с «базой» следующим образом: мы смотрим на список ключевых слов-категорий, выбираем из них одну, а потом уже просматриваем только записи, относящиеся к определённой тематике, ищем что-то уже среди них. Удобство очевидно.

Также можно выводить в списке записей только их заголовки. Это сокращает объём выводимых на экран данных. Найдя нужную запись по заголовку, можно её просмотреть целиком.

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

Если же программу написать и для мобильного телефона, то тогда первоначальная суть структуры файла теряется, так как больше не надо открывать файл как текстовый, но это всё же может быть довольно полезным, например, если надо распечатать несколько записей. Они уже хранятся в файле в пригодном для печати виде.

Надеюсь все, описанное здесь, окажется вам полезным.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.