![]() |
![]() |
![]()
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ź. |
|
|
![]() |
![]()
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.
|
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:40 |