Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / mmex sqlite / 7 сообщений из 7, страница 1 из 1
23.01.2011, 00:22
    #37073440
maximand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
Народ,
Я постороил графическое представление части БД финансовой программы Money Manager Ex, которую использую. Постоянно допиливаю это приложение.
Собственно интересует мнение бывалых, насколько плохо/хорошо посроена и нужно ли что-то менять. Это всё чисто из спортивного интереса и для общего развития.
Финансовая информация хранится в таблице checkingaccount_v1. Каждая проводка имеет id, принадлежность к счёту accountid, плательщика, дату, сумму. Может быть приходом, расходом или переводом средств на другой счёт.
Каждая проводка относится к категории categid и (необязательно) к подкатегории. Может быть разделена, тогда бругие категории прописываются в таблице splittransactions_v1 с соответствующими суммами.
Заметил, что индексы integer связаны с соответсвующими id, которые numeric. Большой ли это косяк?
Какие индексы должны быть заданы? В программе как правило в хронологическом порядке представлены данные с группировкой по счетам и сортировкой по дате.
...
Рейтинг: 0 / 0
23.01.2011, 01:18
    #37073478
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
maximand Собственно интересует мнение бывалых, насколько плохо/хорошо посроенаЭто надо спросить у ваших пользователей.
maximand нужно ли что-то менятьЧтобы чтото менять надо сначала понять что хотим, затем что не устраивает, вычислить дельту и затем менять. По одной картинке это сделать невозможно за исключением явных ляпов.
maximand Это всё чисто из спортивного интереса и для общего развития.Понятный и приемлимый повод.
maximand Заметил, что индексы integer связаны с соответсвующими id, которые numeric. Большой ли это косяк?Давайте разбираться индексы по полю ... типа integer связаны (имеют ограничение внешнего ключа?) с соответсвующими id (первичным ключом в другой таблице) которые numeric имеющим тип numeric.
С хорошей долей вероятности ничего плохого не произойдет, СУБД просечет фишку и будет использовать индекс при джойнах. Однако лучше бардак чистить сразу особенно если Постоянно допиливаю это приложение
maximand Какие индексы должны быть заданы?Зависит от ваших запросов.
maximand В программе как правило в хронологическом порядке представлены данные с группировкой по счетам и сортировкой по дате. А про отбор ничего не сказал. И про вставку
...
Рейтинг: 0 / 0
25.01.2011, 14:30
    #37077564
aikus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
maximandЗаметил, что индексы integer связаны с соответсвующими id, которые numeric. Большой ли это косяк?
Для sqlite это не косяк, она не пытается типизировать колонки.
...
Рейтинг: 0 / 0
28.05.2011, 12:27
    #37283571
maximand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
Обнаружил такой косяк.

Если отметить более чем пару десятков троводок на удаление и дать команду удалить, то программа по циклу начинает удалять их по id
delete from CHECKINGACCOUNT_V1 where TRANSID = x
delete from SPLITTRANSACTIONS_V1 where TRANSID = x

Работает это очень медленно, несколько секунд. Но что интересно, что когда цикл заканчивается, ещё долго шуршит винчестер (секудн 10 не меньше) и только после работоспособность программы восстанавливается (иногда вообще падает).

Я переделываю код на что-то вроде
delete from CHECKINGACCOUNT_V1 where TRANSID in ( id1, id2,...)
Так работает быстро (но не стабильно - падает часто если проводок много, но это видимо другая проблема)

Аналогичная проблема при импорте из, например, csv. Понятно, что парсится файл и производится несколько insert. Чтобы вставить 200 строк уходит секунд 15 (на не старом ноуте).

Может тюнинг БД какой-то необходим?

Заранее спасибо.
...
Рейтинг: 0 / 0
29.05.2011, 02:19
    #37284049
dolbus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
На мой взгляд с категориями и подкатегориями - не очень удачно придумано. Так в CHECKINGACCOUNT_V1 и SPLITTRANSACTIONS_V1 придется контролировать то что указанная подкатегория относится к указанной категории. Я бы сделал связь только с таблицей подкатегорий. Соответственно удалил бы ссылку на категорию из CHECKINGACCOUNT_V1 и SPLITTRANSACTIONS_V1.
...
Рейтинг: 0 / 0
29.05.2011, 02:22
    #37284051
dolbus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
Кстати, а если в SPLITTRANSACTIONS_V1 есть две строки с одним и тем же transid, то в этих строках категории и подкатегории должны совпадать?
...
Рейтинг: 0 / 0
30.05.2011, 15:33
    #37285616
maximand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mmex sqlite
dolbusКстати, а если в SPLITTRANSACTIONS_V1 есть две строки с одним и тем же transid, то в этих строках категории и подкатегории должны совпадать?
Для того и придумано, когда чек один, а категории разные, например.
Т.е. не должны, но могут и совпадать.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / mmex sqlite / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]