|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Господа и дамы помогите. Значит так, нужно создать таую структуру данных, которая могла бы хранить историю (на примере склада). На складе есть товар. Хотелось бы знать, какие и и в какое время с ним происходили изменения (инициализация товара, приход, расход, остаток на текущий период), причём данные хранились бы не в файле, а в АТД (абстрактный тип данных) с возможностью запоминания истории. Хотелось бы также, чтобы этот тип данных позволял сделать откат назад (допустим на два изменения назад по времени) и внести туду изменения... Хотелось бы также знать, как лучше формировать остаток товара на текущий период: 1. НУ (начальные условия - инициализация товара) + Сумма всех изменений. 2. Или хранить остаток на текущий момент где - нибудь (при этом возможно было бы сделать откат назад, или посмотреть все изменения товара в каком - то временном интервале). Заранее благодарен... с уважением Стремление. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 03:18 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
В самом общем случае для этой цели ничего лучше обычной бухгалтерской книги не существует. Все операции хранятся как приход - расход - перемещение. Посчитать можно все что угодно, но производительность может пострадать. Есть способы повысить производительность, например хранить промежуточные итоги в отдельной таблице. На основную таблицу ставится триггер, который при изменении любой записи в таблице проводок убивает все итоги с датой >= изменяемой записи. Потом они пересчитываются по мере надобности. Другой вариант - стандартная реализация History : создается таблица, в которой есть все поля, что и в исходной + искусственный первичный ключ. Если в складе учитываются деньги, то первый способ лучше. Washington Irving ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 09:20 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
О структуре данных, у которых реквизиты имеют историю http://www.esc.ru/doc/tech_bd-his.html ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 10:27 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Спасибо за ответ, но это не совсем то, что мне надо... Данные должны ни в таблице, ни в файле, а в АТД (абстрактном типе данных), при этом все данные (время, причина, количество) хранятся в этой структуре. Причем в любой момент времени возможно с этой структурой провести различные операции: добавление новой информации, откат назад на n -ое количество шагов - изменение информации на этом шаге и возможность анализа данных, которые хранятся теперь в добавочной структуре - т.е. возможность сравнения старой информации и новой (когда внесли изменения на n - ом шаге)... грубо говаря построить два графика... -возможность прогнозирования. Вот я подумал и решил, может для АТД возможно использовать списки? или может быть этот АТД можно построить на основе конечного автомата... (который имеет возможность хранить историю) Заранее спасибо... с уважением Стремление. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 14:49 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Стремление \r А АДТ вы будете в програмный код зашивать? . Раз уж оно не в файле ни в таблице не будет. \r \r То, что родилось у Вас в голове, обычно называется объектно-ориентированными базами данных. Только вот для таких тривиальных задач, как Ваша, наилучшим решением являются обычные реляционные базы. Выкиньте свой АДТ из головы. Сэкономите массу времени. И вся требуемая Вами функциональность реализуется там в два притопа, три прихлопа. О чем и писал Yossarian.\r Впрочем, Бог в помощь.\r =========\r А интересно, зачем Вам нужен откат? Вы купили товар, продали его, а затем решили посмотреть, что бы было если бы Вы его не купили?\r ==========\r Похожая тема\r /topic/43613 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2003, 21:12 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Да уж, конечно спасибо за ответ CAT2, но всё - же, кто - нибудь может кинуть конкретную ссылку по этой теме, где есть пример реализации... А вот откат нужен, для того чтобы возможно было планировать наиболее выгодное хранение товара на складе... Допустим, есть склад, на котором хранятся скоропортящиеся продукты, так вот, хотелось бы найти оптимальный объём продукции, который мог бы храниться на этом складе, до того как он испортится... и желательно это проверять не практическим путём. Для этого можно провести планирование закупки, складирования и продажи товара наиболее лучшим способом, --->>> откат назад, для этого был и предназначен... шт. 40 | 35 | ###### 30 | # ###### 25 | # ####### 20 | ******* 15 | ******** * ******** 10 | * : ******* 05 | ******* : 00 |___________________:______________________ t1 ^ t2 ^ t3 ^ t4 ^ t5 ^ время. (да уж, как говориться что получилось... :-|) Где t3 - точка отката назад. (откат назад, но при этом не удаление информации t3,t4,t5) : - t3; *** - планирование №1; ### - планирование №2; Ещё раз, если можно скиньте ссылок по теме. (Структура данных с возможностью хранения истории. По словам Cat2 - ООБД.) Честно говоря, не знаю с чего начать. Заранее благодарен... С уважением Стремление... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2003, 02:58 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Блин... да уж график не верно выглядит... вот ссылка на JPG файл... http://g-studios.by.ru/db/image.jpg - 29 кб... Что делать...? Нужна структура... С уважением Стремление... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2003, 03:43 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Цитата: СУБД POSTGRES95 поддерживает темпоральную модель хранения и доступа к данным. То есть для любого объекта данных, созданного в момент времени t1 и уничтоженного в момент времени t2, в БД сохраняются (и доступны пользователям) все его состояния во временном интервале (t1,t2). Обычные же БД хранят мгновенный снимок модели предметной области, и любое изменение в момент времени t некоторого объекта приводит к недоступности этого объекта в предыдущий момент времени. Хотя, на самом деле, в большинстве развитых СУБД предыдущее состояние объекта сохраняется в журнале изменений, но осуществления доступа со стороны пользователя нет. Источник: http://www.citforum.ru/database/postgres95/2.shtml --------------- Работай с умом, а не до ночи. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2003, 10:05 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Спасибо конечно, за ответ Jimmy, но как всё - же организовать такую структура данных, которая может хранить историю? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2003, 01:50 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Стремление. Если Вы собрались заниматься базами данных, то почитайте ХОТЬ ЧТО-НИБУДЬ о методах их проектирования. Любая "история" реализуется через поля типа DateTime в записи. =========== Jimmy. Это полезно. Но, при желании, это можно организовать в любой СУБД. Да все равно, Стремление не понял, что ты написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2003, 00:03 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Любой склад подразумевает приход и расход. Эти операции совершаются с помощью определенных документов, называемых к примеру товарно-транспортными накладными. У этих документов есть номер и дата. Так вот с помощью этих двух магических операций и документа можно посчитать остаток на складе на любую дату. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2003, 21:59 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
------ Конечно, огромное спасибо Cat2 за очень "лесные" высказывания обо мне. Как говорится без комментариев... :-( (а вроде 3854 сообщений в форуме - да уж) ----- ------------ -------------- ---------------- Вот Denis S. - Так вот с помощью этих двух магических операций и документа можно посчитать остаток на складе на любую дату. - Всё очень классно, но мне нужно хранить этот документ - ТТН, каким - то образом в памяти (причем по каждому товару - все изменения + время). Как же всё - таки это реализовать... (конечно можно создать тип DateTime - создать уник. номер товара и хранить дату и что произошло с товаром свезав его с этим номером - это всё и так ясно, я бы не стал по такой ерунде в форум писать, мне надо немного другое, а именно выбрать такую структуру данных, которая могла бы при вводите уникально номера предоставить осттаток товара на конкретное число - причём данные не могут храниться в файле или таблице т.д., причём эта структура также имела возможность сделать откат и внести изменения - для планирования -, причём данные, которые были сохранены ранее не удаляются из структуры) Что делать? Кто - нибудь, напишите пример кода, или как это реализовать (идею). С уважением Стремление... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 02:46 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Конкретизируйте пожалуйста ситуацию, я например не понимаю что в вашем понимании абстактная структура данных, и что значить не хранить в файле или таблице ? по моему мнению все это можно хранить с помощью timestamp-a и "исскуственной" версионности данных если это так то в принципе спроектировать необходимую структуру не очень сложно .... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 10:42 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
2 Стремление: про моделирование квазиструктурированных данных: http://www.osp.ru/os/2002/09/057_print.htm З.Ы. И все-таки мне не очень понятно, почему вам ТАК хочется использовать абстрактные типы данных. Они как правило тяжеловесны и работать с ними не всегда удобно... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 12:06 |
|
Структура данных с возможностью хранения истории.
|
|||
---|---|---|---|
#18+
Совершенно верно, хранить надо. Есть справочник товаров, есть к примеру несколько ТТН, по которым проходит один товар - дискеты.: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Предположим, что была такая цепочка операций: 318321 от 01.10.2003 10 шт. (входящая ТТН - приход) 1 от 05.10.2003 3 шт. (исх. ТТН - расход) 4783 от 07.10.2003 25 шт. (входящая ТТН - приход) 2 от 15.10.2003 14 шт. (исх. ТТН - расход) Тогда в простейшем случае остаток на складе на дату @onDate можно посчитать как: Код: plaintext 1. 2. 3. 4. 5. 6.
тогда сумма будет выглядеть так: 10 -3 25 -14 и на дату к примеру 17.10.2003 на складе будет 18 дискет. А вот на дату 06.10.2003 будет 7 дискет, а на 10.07.2003 - 32 дискеты. Понятно? Я не рассматриваю хранение остатков, это будет урок номер два =) PS синтаксис MSSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2003, 22:44 |
|
|
start [/forum/topic.php?fid=32&msg=32309799&tid=1546781]: |
0ms |
get settings: |
15ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 171ms |
0 / 0 |