|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : ЏгвЁ«Ё …ўЈҐЁ© ‚ «ҐвЁ®ўЁз 2:5020/400 01 Mar 2003 12:40:03 To : Lev Serebryakov Subject : Хранение нескольких версий объекта -- как? -------------------------------------------------------------------------------- Fri Feb 28 2003 23:15, Lev Serebryakov wrote to Путилин Евгений Валентинович: LS> What do you think about sharp blades, Путилин? LS> [Answer on] [Путилин Евгений Валентинович wrote to Lev Serebryakov at [27 LS> Feb 03 12:25]]: ПВ>> У меня есть рабочая БД, которая это делает. ПВ>> CREATE TABLE ObjectCore (ID,HOWOLD integer, prop1, prop2, ПВ>> prop3,PRIMARY KEY(ID,HOWOLD)); ПВ>> CREATE TABLE ObjectProp (ID , ObjectID, PropName,PRIMARY ПВ>> KEY(ID,HOWOLD) Идея такая HOWOLD=0 это текущая версия объекта. ПВ>> HOWOLD=1 предыдущая. и так далее при update , HowOld=HowOld+1 where LS> HowOld>> 0. Потом копируеться запись insert into ObjectCore (ID,HOWOLD, ПВ>> prop1, prop2, prop3) select ID,1,prop1, prop2, prop3 from ObjectCore ПВ>> where HOWOLD=0 Все это выполняеться до update. ПВ>> При это выбока последних версии данных просто добавить условиие ПВ>> HOWOLD=0. Hе сильно усложняет. Hо начинаеться свсистопляска при ПВ>> построение отношений, т.е. ссылки на объекты с версиями. LS> крайне неудобно -- нельзя будет сослатся на конкретную версию, так как LS> они перенумеровываются при каждом изменении. Как раз удобно, UPDATE CASCADE для чего? При описании FK, просто два поля для ссылки. И тогда в запросе если надо вытащить вариант который был при создании то HOWOLD=FK_HOWOLD, а если текущий то HOWOLD=0. Hа самом деле у меня немного по другому сделано порождение версий не на каждый UPDATE а по внещнему условию. Т.е. объект может находиться в состоянии редактирования и в замороженом сотоянии. И новая верся создаеться в момент перехода из замороженного в редактируемое состояния. Плюс некоторые особенности реализации на FB. если выполнить команду update XXXX set HOWOLD=HOWOLD+1 where ID=:ID то у FB вылетит ошибка по PK. Hо думаю идея реализации понятна. С уважением Путилин Евгений Валентинович --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/166797e43abe3.html, оценка из 5, голосов 10
|