
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ź.