Russian Qt Forum
Май 10, 2024, 01:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4] 5   Вниз
  Печать  
Автор Тема: Вопрос сохранения данных.  (Прочитано 30969 раз)
nata267
Гость
« Ответ #45 : Июнь 29, 2012, 11:39 »

Хранение деревьев в реляционных базах данных нетривиальная немного не тривиальная задача.
Одно из возможных решений использовать ORM(Object-relational mapping).

это не дерево. а связь многие ко многим, но в проекте присутствуют и деревья, задача состоит в том чтобы сохранить проект целиком, со всеми изменениями вносимыми в структуру. изменения могут быть значительными и нет, поэтому целиком базу данных переписывать затратно. Надо как то следить за удалением-добавлением объектов и связями между ними.  То есть во первых получается что нужно загрузить все объекты проекта и связи между ними в оперативную память. И во вторых при каждом действии пользователя. Следить какие объекты и связи поменялись. Как их хранить и как за ними следить. Вот в чем вопрос?
Записан
nata267
Гость
« Ответ #46 : Июнь 29, 2012, 11:48 »

Возможно, действительно нужно удалить все прежние данные и выгрузить данные в бд или xml из оперативной памяти.
Записан
alexis031182
Гость
« Ответ #47 : Июнь 29, 2012, 11:58 »

Не очень понятно, зачем хранить в постоянной памяти (в той же БД) данные для undo. По идее, эта информация нужна лишь на время одной сессии работы приложения.
Записан
nata267
Гость
« Ответ #48 : Июнь 29, 2012, 13:01 »

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

храним полюбому в оперативной, вопрос в том как сохранять. ставить состояния (inserted, deleted, modified) объектов или стирать все данные по проекту и записывать все заново (т.е. во всех табличках по проекту project_id). я уже склоняюсь к последнему, так как со статусами замороченно. следить за ними по каждому действию пользователя
« Последнее редактирование: Июнь 29, 2012, 13:04 от nata267 » Записан
alexis031182
Гость
« Ответ #49 : Июнь 29, 2012, 13:11 »

храним полюбому в оперативной, вопрос в том как сохранять. ставить состояния (inserted, deleted, modified) объектов или стирать все данные по проекту и записывать все заново (т.е. во всех табличках по проекту project_id). я уже склоняюсь к последнему, так как со статусами замороченно. следить за ними по каждому действию пользователя
А почему заморочено? У Вас элементы модели (объекты) имеют параметр, обозначающий статус. Для рисования во вьюхе этот параметр должен быть определяющим, должна ли модель отдавать ей для показа каждый конкретный элемент или не должна. И для общего сохранения в БД тоже самое, только значение этого параметра будет определять, следует ли удалить, модифицировать запись или оставить как есть.
Записан
nata267
Гость
« Ответ #50 : Июнь 29, 2012, 13:14 »

храним полюбому в оперативной, вопрос в том как сохранять. ставить состояния (inserted, deleted, modified) объектов или стирать все данные по проекту и записывать все заново (т.е. во всех табличках по проекту project_id). я уже склоняюсь к последнему, так как со статусами замороченно. следить за ними по каждому действию пользователя
А почему заморочено? У Вас элементы модели (объекты) имеют параметр, обозначающий статус. Для рисования во вьюхе этот параметр должен быть определяющим, должна ли модель отдавать ей для показа каждый конкретный элемент или не должна. И для общего сохранения в БД тоже самое, только значение этого параметра будет определять, следует ли удалить, модифицировать запись или оставить как есть.

да, но только надо менять эти состояния при каждом действии пользователя, включая отмену и возврат и состояние не только самих объектов но и связей. у связей тоже могут быть свойства (например порядковый номер) и их тоже можно добавлять удалять. Очень много лишних действий получается
Записан
alexis031182
Гость
« Ответ #51 : Июнь 29, 2012, 13:26 »

А что за связи между объектами, помимо отношения "Родитель - Ребёнок"?
Записан
nata267
Гость
« Ответ #52 : Июнь 29, 2012, 13:47 »

А что за связи между объектами, помимо отношения "Родитель - Ребёнок"?

я же уже писала многие-ко-многим, то есть в проекте есть отдельно база тестовых блоков и отдельно база заданий. задания можно цеплять к разным тестовым блокам. или например есть темы, есть задания. заданиям можно назначать разные темы.
Записан
alexis031182
Гость
« Ответ #53 : Июнь 29, 2012, 14:31 »

я же уже писала многие-ко-многим, то есть в проекте есть отдельно база тестовых блоков и отдельно база заданий. задания можно цеплять к разным тестовым блокам. или например есть темы, есть задания. заданиям можно назначать разные темы.
А как непосредственно в модели Вы реализовали эти связи? Например, храните несколько копий объектов задания, принадлежащего разным темам, или один объект задания, содержащий некие ссылки на темы, в которых это задание должно содержаться? В модели ведь дерево.
Записан
nata267
Гость
« Ответ #54 : Июнь 29, 2012, 15:04 »

я же уже писала многие-ко-многим, то есть в проекте есть отдельно база тестовых блоков и отдельно база заданий. задания можно цеплять к разным тестовым блокам. или например есть темы, есть задания. заданиям можно назначать разные темы.
А как непосредственно в модели Вы реализовали эти связи? Например, храните несколько копий объектов задания, принадлежащего разным темам, или один объект задания, содержащий некие ссылки на темы, в которых это задание должно содержаться? В модели ведь дерево.

У меня один объект задания. Если он относится к нескольким тестовым блокам, то создаю дочерние узлы и помещаю указатель на это задание в каждый узел. При сохранении я сохраняю сначала задания, потом тестовые блоки, а в конце связи между ними. Все эти объекты я планирую зарегистрировать в одном объекте типа projectDataBase() ; В том числе связи как отдельный тип объектов
« Последнее редактирование: Июнь 29, 2012, 15:06 от nata267 » Записан
nata267
Гость
« Ответ #55 : Июнь 29, 2012, 15:32 »

В дизайнере используется строитель, который  при выгрузке строит xml. Если провести параллель и сделать чтото, только вместо xml база данных.
Записан
DmitryM
Гость
« Ответ #56 : Июнь 29, 2012, 16:27 »

xml так же является базой данных  Подмигивающий
В дизайнере используется строитель, который  при выгрузке строит xml. Если провести параллель и сделать чтото, только вместо xml база данных.
тогда проще взять ORM, к примеру ODB
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #57 : Июнь 30, 2012, 02:42 »

Тема хорошая, "по делу", но увы, специфики слишком много. Пробовал вникнуть, но нереально, особенно для человека далекого от СУБД. Даже что такое тестовый блок - четко не представляю и.т.п. Плохо что нет поста где сосредоточены термины, описания - размазано на несколько. Лучше сформулировать задачу как бы "в пробирке", чтобы можно было сосредоточиться на принципиальных вещах без многочисленных технических деталей. Понятно что это гораздо легче советовать чем сделать, но так, мне пытаться обсуждать не понимая задачи - лучше промолчать
Записан
nata267
Гость
« Ответ #58 : Июль 02, 2012, 08:41 »

xml так же является базой данных  Подмигивающий
В дизайнере используется строитель, который  при выгрузке строит xml. Если провести параллель и сделать чтото, только вместо xml база данных.
тогда проще взять ORM, к примеру ODB

а по быстродействтию что эффективнее записать в xml или в бд mysql??
« Последнее редактирование: Июль 03, 2012, 15:06 от nata267 » Записан
nata267
Гость
« Ответ #59 : Июль 02, 2012, 08:44 »

Тема хорошая, "по делу", но увы, специфики слишком много. Пробовал вникнуть, но нереально, особенно для человека далекого от СУБД. Даже что такое тестовый блок - четко не представляю и.т.п. Плохо что нет поста где сосредоточены термины, описания - размазано на несколько. Лучше сформулировать задачу как бы "в пробирке", чтобы можно было сосредоточиться на принципиальных вещах без многочисленных технических деталей. Понятно что это гораздо легче советовать чем сделать, но так, мне пытаться обсуждать не понимая задачи - лучше промолчать

"тестовые блоки" и "задания" - это сущности бд из моей задачи.
Записан
Страниц: 1 2 3 [4] 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 22.