Russian Qt Forum
Ноябрь 24, 2024, 02:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Кладовая готовых решений
(Модератор:
Пантер
) >
Вопрос сохранения данных.
Страниц:
1
2
3
[
4
]
5
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Вопрос сохранения данных. (Прочитано 31967 раз)
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #45 :
Июнь 29, 2012, 11:39 »
Цитата: DmitryM от Июнь 29, 2012, 11:07
Хранение деревьев в реляционных базах данных нетривиальная немного не тривиальная задача.
Одно из возможных решений использовать ORM(Object-relational mapping).
это не дерево. а связь многие ко многим, но в проекте присутствуют и деревья, задача состоит в том чтобы сохранить проект целиком, со всеми изменениями вносимыми в структуру. изменения могут быть значительными и нет, поэтому целиком базу данных переписывать затратно. Надо как то следить за удалением-добавлением объектов и связями между ними. То есть во первых получается что нужно загрузить все объекты проекта и связи между ними в оперативную память. И во вторых при каждом действии пользователя. Следить какие объекты и связи поменялись. Как их хранить и как за ними следить. Вот в чем вопрос?
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #46 :
Июнь 29, 2012, 11:48 »
Возможно, действительно нужно удалить все прежние данные и выгрузить данные в бд или xml из оперативной памяти.
Записан
alexis031182
Гость
Re: Вопрос сохранения данных.
«
Ответ #47 :
Июнь 29, 2012, 11:58 »
Не очень понятно, зачем хранить в постоянной памяти (в той же БД) данные для undo. По идее, эта информация нужна лишь на время одной сессии работы приложения.
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #48 :
Июнь 29, 2012, 13:01 »
Цитата: alexis031182 от Июнь 29, 2012, 11:58
Не очень понятно, зачем хранить в постоянной памяти (в той же БД) данные для undo. По идее, эта информация нужна лишь на время одной сессии работы приложения.
храним полюбому в оперативной, вопрос в том как сохранять. ставить состояния (inserted, deleted, modified) объектов или стирать все данные по проекту и записывать все заново (т.е. во всех табличках по проекту project_id). я уже склоняюсь к последнему, так как со статусами замороченно. следить за ними по каждому действию пользователя
«
Последнее редактирование: Июнь 29, 2012, 13:04 от nata267
»
Записан
alexis031182
Гость
Re: Вопрос сохранения данных.
«
Ответ #49 :
Июнь 29, 2012, 13:11 »
Цитата: nata267 от Июнь 29, 2012, 13:01
храним полюбому в оперативной, вопрос в том как сохранять. ставить состояния (inserted, deleted, modified) объектов или стирать все данные по проекту и записывать все заново (т.е. во всех табличках по проекту project_id). я уже склоняюсь к последнему, так как со статусами замороченно. следить за ними по каждому действию пользователя
А почему заморочено? У Вас элементы модели (объекты) имеют параметр, обозначающий статус. Для рисования во вьюхе этот параметр должен быть определяющим, должна ли модель отдавать ей для показа каждый конкретный элемент или не должна. И для общего сохранения в БД тоже самое, только значение этого параметра будет определять, следует ли удалить, модифицировать запись или оставить как есть.
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #50 :
Июнь 29, 2012, 13:14 »
Цитата: alexis031182 от Июнь 29, 2012, 13:11
Цитата: nata267 от Июнь 29, 2012, 13:01
храним полюбому в оперативной, вопрос в том как сохранять. ставить состояния (inserted, deleted, modified) объектов или стирать все данные по проекту и записывать все заново (т.е. во всех табличках по проекту project_id). я уже склоняюсь к последнему, так как со статусами замороченно. следить за ними по каждому действию пользователя
А почему заморочено? У Вас элементы модели (объекты) имеют параметр, обозначающий статус. Для рисования во вьюхе этот параметр должен быть определяющим, должна ли модель отдавать ей для показа каждый конкретный элемент или не должна. И для общего сохранения в БД тоже самое, только значение этого параметра будет определять, следует ли удалить, модифицировать запись или оставить как есть.
да, но только надо менять эти состояния при каждом действии пользователя, включая отмену и возврат и состояние не только самих объектов но и связей. у связей тоже могут быть свойства (например порядковый номер) и их тоже можно добавлять удалять. Очень много лишних действий получается
Записан
alexis031182
Гость
Re: Вопрос сохранения данных.
«
Ответ #51 :
Июнь 29, 2012, 13:26 »
А что за связи между объектами, помимо отношения "Родитель - Ребёнок"?
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #52 :
Июнь 29, 2012, 13:47 »
Цитата: alexis031182 от Июнь 29, 2012, 13:26
А что за связи между объектами, помимо отношения "Родитель - Ребёнок"?
я же уже писала многие-ко-многим, то есть в проекте есть отдельно база тестовых блоков и отдельно база заданий. задания можно цеплять к разным тестовым блокам. или например есть темы, есть задания. заданиям можно назначать разные темы.
Записан
alexis031182
Гость
Re: Вопрос сохранения данных.
«
Ответ #53 :
Июнь 29, 2012, 14:31 »
Цитата: nata267 от Июнь 29, 2012, 13:47
я же уже писала многие-ко-многим, то есть в проекте есть отдельно база тестовых блоков и отдельно база заданий. задания можно цеплять к разным тестовым блокам. или например есть темы, есть задания. заданиям можно назначать разные темы.
А как непосредственно в модели Вы реализовали эти связи? Например, храните несколько копий объектов задания, принадлежащего разным темам, или один объект задания, содержащий некие ссылки на темы, в которых это задание должно содержаться? В модели ведь дерево.
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #54 :
Июнь 29, 2012, 15:04 »
Цитата: alexis031182 от Июнь 29, 2012, 14:31
Цитата: nata267 от Июнь 29, 2012, 13:47
я же уже писала многие-ко-многим, то есть в проекте есть отдельно база тестовых блоков и отдельно база заданий. задания можно цеплять к разным тестовым блокам. или например есть темы, есть задания. заданиям можно назначать разные темы.
А как непосредственно в модели Вы реализовали эти связи? Например, храните несколько копий объектов задания, принадлежащего разным темам, или один объект задания, содержащий некие ссылки на темы, в которых это задание должно содержаться? В модели ведь дерево.
У меня один объект задания. Если он относится к нескольким тестовым блокам, то создаю дочерние узлы и помещаю указатель на это задание в каждый узел. При сохранении я сохраняю сначала задания, потом тестовые блоки, а в конце связи между ними. Все эти объекты я планирую зарегистрировать в одном объекте типа projectDataBase() ; В том числе связи как отдельный тип объектов
«
Последнее редактирование: Июнь 29, 2012, 15:06 от nata267
»
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #55 :
Июнь 29, 2012, 15:32 »
В дизайнере используется строитель, который при выгрузке строит xml. Если провести параллель и сделать чтото, только вместо xml база данных.
Записан
DmitryM
Гость
Re: Вопрос сохранения данных.
«
Ответ #56 :
Июнь 29, 2012, 16:27 »
xml так же является базой данных
Цитата: nata267 от Июнь 29, 2012, 15:32
В дизайнере используется строитель, который при выгрузке строит xml. Если провести параллель и сделать чтото, только вместо xml база данных.
тогда проще взять ORM, к примеру
ODB
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Вопрос сохранения данных.
«
Ответ #57 :
Июнь 30, 2012, 02:42 »
Тема хорошая, "по делу", но увы, специфики слишком много. Пробовал вникнуть, но нереально, особенно для человека далекого от СУБД. Даже что такое тестовый блок - четко не представляю и.т.п. Плохо что нет поста где сосредоточены термины, описания - размазано на несколько. Лучше сформулировать задачу как бы "в пробирке", чтобы можно было сосредоточиться на принципиальных вещах без многочисленных технических деталей. Понятно что это гораздо легче советовать чем сделать, но так, мне пытаться обсуждать не понимая задачи - лучше промолчать
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #58 :
Июль 02, 2012, 08:41 »
Цитата: DmitryM от Июнь 29, 2012, 16:27
xml так же является базой данных
Цитата: nata267 от Июнь 29, 2012, 15:32
В дизайнере используется строитель, который при выгрузке строит xml. Если провести параллель и сделать чтото, только вместо xml база данных.
тогда проще взять ORM, к примеру
ODB
а по быстродействтию что эффективнее записать в xml или в бд mysql??
«
Последнее редактирование: Июль 03, 2012, 15:06 от nata267
»
Записан
nata267
Гость
Re: Вопрос сохранения данных.
«
Ответ #59 :
Июль 02, 2012, 08:44 »
Цитата: Igors от Июнь 30, 2012, 02:42
Тема хорошая, "по делу", но увы, специфики слишком много. Пробовал вникнуть, но нереально, особенно для человека далекого от СУБД. Даже что такое тестовый блок - четко не представляю и.т.п. Плохо что нет поста где сосредоточены термины, описания - размазано на несколько. Лучше сформулировать задачу как бы "в пробирке", чтобы можно было сосредоточиться на принципиальных вещах без многочисленных технических деталей. Понятно что это гораздо легче советовать чем сделать, но так, мне пытаться обсуждать не понимая задачи - лучше промолчать
"тестовые блоки" и "задания" - это сущности бд из моей задачи.
Записан
Страниц:
1
2
3
[
4
]
5
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...