Как лучше использовать SQLite в своем приложении?

142
18 июля 2019, 01:40

Делаю приложение на JavaFX и Scene Builder

Приложение похоже на ТВ программу "Своя игра"

Имеется 8 категорий в главном окне.

При клике на категорию появляется карточка в центре экрана.Карточки будут вопросные и не вопросные(текстовые предложения). Если появляется вопросная карточка, то на карточке есть вопрос, а при клике на горячую клавишу(например "Пробел") карточка переворачивается(какая-нибудь анимация) и на карточке появляется ответ.

Вопросные карточки связаны с каждой категорией. Например: если пользователь кликает на категорию "Музыка", то появляется вопрос(если это вопросная карточка) :"Кто ваш любимый певец?", если пользователь жмет на пробел, карточка переворачивается и появляется ответ: "Doris Day" Если пользователь выбрал другую категорию, например "Машины", то появляется вопрос: "Кто был основателем компании Ford?" то при клике на горячую клавишу появляется ответ на карточки:"Henry Ford"

Всего будет примерно 100 карточек с вопросами на каждую категорию. ТО есть в сумме 800 карточек с вопросом и ответом, а карточки с простыми предложениями тоже будет около 100. Вопросные карточки связаны с ответами. Не вопросные карточки ни связаны ни с чем.

Логика появления карточек на главном экране: 70% вопросных карточек, 30 % НЕ вопросных карточек. То есть получается мне нужно будет добавить какой рандом специальный для этого.

Также имеются кнопки.

Одна кнопка открывает меню редактирования вопросных карточек(new stage): пользователь может добавить новую карточку с вопросом и ответом в базу данных, удалить выбранную карточку, редактировать выбранную карточку. Также там есть label, который отображает букву английского алфавита. Буква создается рандомно на каждую карточку с ответом при запуске программы. Также есть в этом окне редактирования номер выбранной карточки. Если пользователь удалил карточку с текущим вопросом, то все номера в базе данных сдвигаются и к карточкам присваиваются новые номера. Номера карточек присваиваются автоматически при создании карточек. То есть сама база данных назначает номер на карточку Label с номером вопроса нужен только в этом окне редактирования. Он отображает текущий номер в базе данных. При клике на него появляется список(combobox) всех номеров карточек из базы данных

Вторая кнопка для редактирования карточек с предложениями вызывает новое окно(stage) оно аналогично окну редактирования вопросных карточек, только там всего одно поле с textaria

Вся база данных карточек будет локальной и находится в папке с программой. Я думаю SQLite хорошо для этого подойдет. Я никогда не работал с базами данных и SQLite в том числе. Это будет моим первым опытом.

Также я хочу,чтобы файл с базой данных был связан с файлом EXCEL, который будет находится в этой же папке. Так как пользователь не знает как открыть и посмотреть файл базы данных, я решил использовать файл excel, excel есть на каждой машине и он прост в использовании. Нужно,чтобы файл базы данных и файл excel были связаны между собой. ТО есть если пользователь внес коррективы в базу данных из программы, то файл excel автоматически обновился.И наоборот: отредактировал excel - база данных автоматически обновилась

Какой лучше подход использовать при работе с базой данных SQLite?

Сделать ли две таблицы: одна с вопросными карточками(номер вопроса, ответ, буква ответа) другая с карточками предложений( номер, текст , предложения)?

Или всё запихать в одну таблицу? (номер вопросной карточки, вопрос, ответ, номер НЕвопросной, карточки, текст предложения)

Если будет две таблицы для разных карточек, то возможно ли будет сделать шанс выпадения из двух таблиц?: 70%/30%

Есть ли у вас свои предложения по реализации моей задумки?

*Дизайн всех fxml готов, осталось сделать логику добавления/удаления карточек в базе данных

Для более ясной картины прикладываю видео:

Video

READ ALSO
Как сделать волну на фоне?

Как сделать волну на фоне?

у меня есть страница с карточками, на фоне расположена "волна", вроде выглядит супер просто, но не могу понять как сделать ее просто и правильно,...

116
Анимация кнопки при нажатии

Анимация кнопки при нажатии

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

180
Событие 'fetch' в ServiceWorker

Событие 'fetch' в ServiceWorker

Интересует такой вопрос, срабатывает ли событие fetch в ServiceWorker при обращении к не-origin доменам? Или же можно обрабатывать обращения только на свой...

142
Обход запрета автозапуск iframe Chrome

Обход запрета автозапуск iframe Chrome

Я делаю веб страничку, которая ведет стрим с youtube, как мне сделать, чтобы при запуске страницы видео начинало идти со звуком? Если я запускаю...

131