Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Archiwozowanie danych, Pytanie dotyczące organizacji danych historycznych
Lysiur
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 11
Dołączył: 25.07.2012

Ostrzeżenie: (0%)
-----


Witam, mam pewną zagwozdkę - pewnie prostą, ale im więcej myślę tym gorzej wymyślam (IMG:style_emoticons/default/smile.gif)

Mam sytuację taką, mam w bazie pacentów (patients), pacjent ma swoją kartę która składa się z masy opcji (patients_details - dane są składowane id| categoryCode | option(int) | value(Varchar) ), gdzie w categoryCode mam nazwę właściwości (jest ona w aplikacji tłumaczona na języki), w option (mam wartości z formularzy typu checkboxy), a w value mam wartości z pól tekstowych.

Mam teraz problem, ponieważ co jakiś czas tworzę pacjentowi zamówienie (PDF), zamówienie jest tworzone na podstawie jego aktualnej kartoteki. Dodatkowo wartość zamówienia może się z czasem zmienić w zależności od pogorszenia/poprawienia się stanu pacjenta. Potrzebuję z czasem mieć historię, np.: że pacjent miał wystawienie zamówienie na wartość XXX, oraz uchwyt do jego kartoteki z danego okresu. Mało tego, na podstawie już przygotowanego zamówienia (dane zamówienia + karta pacjenta), dokonuje selectów w innych tabelach.

Kombinuję jak rozwiązać dane zagadnienie. Myślałem by podczas tworzenia zamówienia tworzyć jakby cache kartoteki, np.: w postaci zesrializowanego obiektu - lub tablicy z danymi na którym mógłbym później łatwo tworzyć odpowiednie zapytania do innych tabel. Wtedy do zamówienia mógłbym wrzucać id 'cachu' i w zasadzie myślę, że byłoby okej. Jednak nie jestem do końca przekonany, czy trzymanie serialzowanego obiektu/tablicy w bazie jest dobrym rozwiązaniem. wydaje mi się, że wyciągnięcie jendego takie wiersza będzie wydajniejsze niż prasowanie za każdym razem patients_details.

Co mój pomysł ma sens, czy znacie jakieś lepsze rozwiązania?

Z góry dziękuję za odpowiedź.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
buliq
post
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Pomysł z mojej strony bez sensu, bo tracisz możliwość wyszukiwania w tych danych, ja bym stworzył tabelę archiwum i tam zapisywał dane z danego okresu( sumarycznie, albo jednostkowo jak wolisz). W tych danych często operacji nie będzie.
Go to the top of the page
+Quote Post
Lysiur
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 11
Dołączył: 25.07.2012

Ostrzeżenie: (0%)
-----


Czyli jeśli obrze rozumiem, to proponujesz defacto powielić strukturę tabeli i wrzucać tam dane, które uległy zmienie z jakimś numerem rewizji czy timestampem. Tylko teraz zastanawiam się w jaki sposób w przypadku (archiwizowania tylko zmian), wyłapać np.: że zgłoszenie z przed 6 msc było na bazie takiej kartoteki. W przypadku archiwizowania anych całościowych (poczas tworzenia zamówienia), to dało by radę to w rozsądny sposób wyciągnąć, ale nie bardzo widzę tą metodę przy nie całościowym podejściu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:40