Witam serdecznie, to mój pierwszy post więc proszę o wyrozumiałość.
Mam następujący problem.
"Chcę ewidencjonować (zapisywać) w bazie informacje o dokumentach w formie skrzynki przychodzącej / wychodzącej.
Czyli jak przysłano jakas poczte to wprowadzam ją do skrzynki odbiorczej. Poczta - dokumenty przychodzące mogą być różnego typu (Zwolnienia lekarskie, akta osobowe, zaświadczenia, wnioski itp. razem ponad 30 typów).
Dla wszystkich dokumentów zapisywanych w bazie chcę zapisać informację o nadawcy, dacie wprowadzenia do systemu, znaczniku poprawności danych itp.
Dodatkowo dla niektórych typów dokumentów chcę zapisywać informacje szczegółowe, które dla różnych typów są różne. Np. dla zwolnienia lekarskiego chce dodatkowo zapisać pesel, okres zwolnienia, kod choroby.
Teraz chce aby interfejs użytkownika posiadał takie funkcjonalności:
-
Przeglądanie i wprowadzanie dokumentów na formularzu arkusza danych w "skrzynce odbiorczej"
Tutaj wypełnia się jedynie typ dokumentu i pola wspólne dla wszystkich typów dokumentów -
Przeglądanie i wprowadzanie dokumentów na formularzach arkuszy danych stworzonych dla określonego typu dokumentu. Czyli osobny formularz dla zwolnień lekarskich i na tym formularzu wypełniam informacje szczegółowe o zwolnieniu lekarskim.
-
Pojedynczy dokument zwolnienia lekarskiego lub innego typu dokumentu ma być widoczny i edytowalny na obydwu formularzach (skrzynce odbiorczej informacje ogólne, formularzu zwolnienia lek. lub innego typu informacje szczegółowe)
"
Moje pytanie brzmi jak zbudować tabele do ewidencjonowania takich dokumentów?
Siedziałem nad tym chwilkę i to co udało mi się stworzyć:
-
Tabela główna t_inbox { PK:id_document, FK:id_doctype, field1, field2,...}
W tej tabeli przechowywane są wszystkie dokumenty przychodzące i informacje wspólne dla wszystkich dokumentów -
Osobna tabela na zwolnienia lekarskie t_Doc_L4 { PK:id_document, pesel, begda, endda, ....}
Tutaj przechowywane są dane szczegółowe zwolnień. Id_document z tej tabeli pozostaje w relacji 1:1 z t_inbox.id_document -
Osobne tabele na inne typy dokumentów o analogicznej budowie t_Doc_XXX { PK:id_document, field_x, field_y, ... }*
Dodatkowe tabele tworzone w miarę potrzeb - rozszczerzania ewidencji szczegółowej
Id_document z każdej tabeli pozostaje w relacji 1:1 z t_inbox.id_document
Czy dobrze zaprojektowałem tabele na dokumenty?
Następna kwestia to integralność.
Tworzenie i usuwanie wpisów w tabeli t_inbox powinno skutkować odpowiednio tworzeniem i usuwaniem wpisów w odpowiednich tabelach danych szczegółowych.
Podobnie tworzenie i usuwanie dokumentów z tabel danych szczegółowych powinno skutkować usunięciem wpisów z tabeli t_inbox.
Chciałbym aby podstawowe rzeczy (wstawianie i usuwanie w tabelach zależnych) realizowane było po stronie bazy danych a nie po stronie formularzy.
Access 2010 (nie wiem jak wcześniejsze) umożliwia ustawianie triggerów na tabelach i własnie tymi triggerami chciałbym zrealizować podstawowe funkcjonalności.
Czy ktos ma jakiś pomysł jak to zrealizować?
Mam kilka pomysłów ale chciałbym dowiedzieć się jak takie coś zrealizować najlepiej.
Pozdrawiam
Mrlestat