|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : ЏгвЁ«Ё …ўЈҐЁ© ‚ «ҐвЁ®ўЁз 2:5020/400 28 Feb 2003 11:52:46 To : Ilya Zvyagin Subject : Re: Хранение нескольких версий объекта -- как? -------------------------------------------------------------------------------- Fri Feb 28 2003 10:24, Ilya Zvyagin wrote to Путилин Евгений Валентинович: IZ> From: "Ilya Zvyagin" <ziv@fct.ru> IZ> Hello, Путилин! IZ> You wrote to Lev Serebryakov on Thu, 27 Feb 2003 09:25:19 +0000 (UTC): ПЕВ>> У меня есть рабочая БД, которая это делает. ПЕВ>> 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 HowOld>0. Потом ПЕВ>> копируеться запись insert into ObjectCore (ID,HOWOLD, prop1, prop2, ПЕВ>> prop3) ПЕВ>> select ID,1,prop1, prop2, prop3 from ObjectCore where HOWOLD=0 ПЕВ>> Все это выполняеться до update. IZ> Hу, UPDATE-ить все версии при появлении новой, да еще и поле в PK - не IZ> самый лучший способ. Уж лучше нумеровать версии от 1 вверх по мере IZ> появления IZ> и в самом объекте хранить номер текушей версии. Это тоже способ, но тогда получения последней версии объекта, будет трудемким и условие howold=0 надо будет заменить howold=(select max(howold) from XXXXX where X.ID=XXXXX.ID) А это очень сильная нагрузка на сервер. Мой способ хорош тем точ более частые операции выборки не сильно напрягают сервер. С уважением Путилин Евгений Валентинович --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/16679c9e98ddf.html, оценка из 5, голосов 10
|