Megválaszolatlan hozzászólások | Aktív témák Pontos idő: szomb. okt. 05, 2024 18:44



Hozzászólás a témához  [ 7 hozzászólás ] 
Az ido kezelese relacios db-ben 

Munkáid során ha rajtad mulna milyen RDBMS-t hasznalnal legszivesebben
Sybase 13%  13%  [ 1 ]
Oracle 13%  13%  [ 1 ]
MSSql 25%  25%  [ 2 ]
MySQL 25%  25%  [ 2 ]
IBM DB-2 13%  13%  [ 1 ]
Informix 0%  0%  [ 0 ]
PostgreSQL 13%  13%  [ 1 ]
Firebird/Interbase 0%  0%  [ 0 ]
Gupta SQL 0%  0%  [ 0 ]
Inkább valami mást... 0%  0%  [ 0 ]
Szavazatok száma : 8

Az ido kezelese relacios db-ben 
Szerző Üzenet
vas-tag

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 3
Hozzászólás 
Ezt a problémát mi a következőképpen oldottuk meg:

Minden rekordban van egy dátum bélyegző (USERDATUM), valamint egy verziószám. A verziószám benne van a kulcsban is. .A módosítás során bizonyos idő elteltével egy új rekordot hozunk létre megnövelt verziószámmal. Ezek után a kapcsolatba nem kell felvenni a verziószámot, mivel a rekord dátuma alapján ki lehet keresni a megfelelő rekordpárt. Plusz még egy AKTUALIS nevú logikai változót is használunk az utolsó érték gyors visszakereséséhez. A verziószám azért kell, mert a dátummezővel mindig kerekítési problémák vannak, ezért nem célszerű a kulcsba betenni.


hétf. aug. 23, 2004 21:35
Profil Privát üzenet küldése
arany tag

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 474
Hozzászólás 
Most lehet hogyen vagyok az ertetlen de meg mindig nem veszem. Vilagijjuk mar meg egy peldaval.
Mondjuk itt van ket tabla a Sybase EAS Demobol:

Kód:
CREATE TABLE "customer"
 (
  "id" integer NOT NULL DEFAULT NULL,
  "fname" char(15) NOT NULL DEFAULT NULL,
  "lname" char(20) NOT NULL DEFAULT NULL,
  "address" char(35) NOT NULL DEFAULT NULL,
  "city" char(20) NOT NULL DEFAULT NULL,
  "state" char(2) NOT NULL DEFAULT NULL,
  "zip" char(10) NOT NULL DEFAULT NULL,
  "phone" char(12) NOT NULL DEFAULT NULL,
  "company_name" char(35) DEFAULT NULL ,
  PRIMARY KEY ("id")
 ) ;

CREATE TABLE "sales_order"
 (
  "id" integer NOT NULL DEFAULT NULL,
  "cust_id" integer NOT NULL DEFAULT NULL,
  "order_date" date NOT NULL DEFAULT NULL,
  "fin_code_id" char(2) DEFAULT NULL,
  "region" char(7) DEFAULT NULL,
  "sales_rep" integer NOT NULL DEFAULT NULL ,
 PRIMARY KEY ("id") ,
 FOREIGN KEY "ky_so_customer" ("cust_id" ) REFERENCES "customer"
 ) ;


A ket tabla a "cust_id"-n keresztul van osszekapcsolva. Szeretnem kovetni mindket tablaban az adatokban beallt valtozasokat, ugy hogy barmilyen (multbeli)idopillanatra az akkor allapotot lassam. Hova rakjak datumbelyegeket?


szomb. júl. 17, 2004 11:55
Profil Privát üzenet küldése
arany tag

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 474
Hozzászólás 
Most lehet hogyen vagyok az ertetlen de meg mindig nem veszem. Vilagijjuk mar meg egy peldaval.
Mondjuk itt van ket tabla a Sybase EAS Demobol:

Kód:
CREATE TABLE "customer"
 (
  "id" integer NOT NULL DEFAULT NULL,
  "fname" char(15) NOT NULL DEFAULT NULL,
  "lname" char(20) NOT NULL DEFAULT NULL,
  "address" char(35) NOT NULL DEFAULT NULL,
  "city" char(20) NOT NULL DEFAULT NULL,
  "state" char(2) NOT NULL DEFAULT NULL,
  "zip" char(10) NOT NULL DEFAULT NULL,
  "phone" char(12) NOT NULL DEFAULT NULL,
  "company_name" char(35) DEFAULT NULL ,
  PRIMARY KEY ("id")
 ) ;

CREATE TABLE "sales_order"
 (
  "id" integer NOT NULL DEFAULT NULL,
  "cust_id" integer NOT NULL DEFAULT NULL,
  "order_date" date NOT NULL DEFAULT NULL,
  "fin_code_id" char(2) DEFAULT NULL,
  "region" char(7) DEFAULT NULL,
  "sales_rep" integer NOT NULL DEFAULT NULL ,
 PRIMARY KEY ("id") ,
 FOREIGN KEY "ky_so_customer" ("cust_id" ) REFERENCES "customer"
 ) ;


A ket tabla a "cust_id"-n keresztul van osszekapcsolva. Szeretnem kovetni mindket tablaban az adatokban beallt valtozasokat, ugy hogy barmilyen (multbeli)idopillanatra az akkor allapotot lassam. Hova rakjak datumbelyegeket?


szomb. júl. 17, 2004 11:54
Profil Privát üzenet küldése
vas-tag

Csatlakozott: vas. jún. 13, 2004 12:53
Hozzászólások: 7
Tartózkodási hely: Bp
Hozzászólás 
Dátumbélyegző külön mezőben. Létrehozás és törlés is külön mezőben.
Ezen a táblán belül idegenkulcsokat is másolod.


szomb. júl. 17, 2004 8:57
Profil Privát üzenet küldése Honlap
arany tag

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 474
Hozzászólás 
TillZ írta:
Ezt úgy egyszerű megoldani, ha a rekord módosítására nem kell figyelni, csak az új rekord hozzáadására.


??? Azert az adatott elobb utobb modositani is kell (legtobb esetben, es most nem csak egy elirt nevre gondolok).

TillZ írta:
Ilyenkor a táblák rekordjaihoz teszel egy dátumbélyegzőt, melybe mindig a rekord beírásának dátuma kerül.

Később, ha visszamenőleges állapotot akarsz megnézni, akkor szűrten az addigi rekordokat listáztatod.


Namostakkor hova rakod a 'belyegzot'. Csak ugy a tabla vegere vagy a kulcsba? Mert azert arra is gondolni kene hogy vannak idegenkulcsok is.

TillZ írta:
Ha módosításra is szükség van, akkor ne engedd közvetlenül táblába írni, hanem tegyél a rekordokhoz még egy dátumbélyegzőt a "törlés dátumára".

Mikor módosít, akkor a rekordot még egy példányban létrehozod, régi mellé odaírod a törlés dátumának aktuális dátumot, újba pedig a módosított adatokat teszed.

Ekkor megjelenítésnél már a törlés dátumát is figyelni kell.

Ebbol nekem meg mindig nem vilagit mire gondolsz, ha uj rekordokat csinalok akkor mas lesz az azonosito, ha az azonositoba beveszem a belyegzot akkor az idegenkulcsaimtol elkoszonhetek.


hétf. júl. 12, 2004 15:52
Profil Privát üzenet küldése
vas-tag

Csatlakozott: vas. jún. 13, 2004 12:53
Hozzászólások: 7
Tartózkodási hely: Bp
Hozzászólás 
Ezt úgy egyszerű megoldani, ha a rekord módosítására nem kell figyelni, csak az új rekord hozzáadására.

Ilyenkor a táblák rekordjaihoz teszel egy dátumbélyegzőt, melybe mindig a rekord beírásának dátuma kerül.

Később, ha visszamenőleges állapotot akarsz megnézni, akkor szűrten az addigi rekordokat listáztatod.

---

Ha módosításra is szükség van, akkor ne engedd közvetlenül táblába írni, hanem tegyél a rekordokhoz még egy dátumbélyegzőt a "törlés dátumára".

Mikor módosít, akkor a rekordot még egy példányban létrehozod, régi mellé odaírod a törlés dátumának aktuális dátumot, újba pedig a módosított adatokat teszed.

Ekkor megjelenítésnél már a törlés dátumát is figyelni kell.


pén. júl. 02, 2004 12:47
Profil Privát üzenet küldése Honlap
arany tag

Csatlakozott: szer. márc. 24, 2004 13:43
Hozzászólások: 474
Hozzászólás Az ido kezelese relacios db-ben
Szoval vagyon egy olyan feladat ahol azt kell megoldani hogy az adatbazis mindig naprakesz legyen de ez vonatkozzon a múltra is. Azaz ha beallitok egy régebbi idopontot (pl. belepesnel) akkor az akkori allapotnak megfelelo kepet kapjam. Soxor utkoztem mar hasonlo problemaba, legtobbszor valamilyen nem teljesen korrekt megoldassal meg lehetett kerulni a dolgot (pl. naplok) de nem volt az igazi.
Elofordul hogy vannak torzsadatok amelyek egy-egy idoszakban ilyen vagy olyan erteket vesznek fel majd megszunnek aztan ujra hasznalni kell oket, stb. Ha ez mezei torzs lenne akkor mindig csak a pillanatnyi allapotot latnank, de nekem szuksegem van arra is hogy mikor vegignezem (pl. ujraszamolom) egy mezo erteket (pl. écs) akkor mindig az akkori (jogszabalyban eloirt modon) tudjam azt megtenni. Na ezt naplobol meg kulonfele mentett tablakbol stb. eleg nehez es barkacs megoldas.

Van erre tapasztalatotok hogyan erdemes megvalositani (raadasul ugy hogy ez az egesz adatmodelre kiterjedoen egysgesen kezelheto legyen). Neztem mar tobb (tan)konyvet leirast a temaban de eleg nagyvonaluan kezelik inkabb csak megemlitik hogy ez egy eleg nagy problema es nem egyszeru a megoldasa (ezert nem is reszletezik)...


szer. jún. 30, 2004 12:55
Profil Privát üzenet küldése
Hozzászólások megjelenítése:  Rendezés  
Hozzászólás a témához   [ 7 hozzászólás ] 

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nem nyithatsz témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Magyar fordítás © Magyar phpBB Közösség