Mam kilka tabel, które odnoszą się do siebie nawzajem ze związkami wiele do wielu, ale nie są normalne.Entity Framework wiele do wielu relacji bez klucza podstawowego
Zwykle relacja wiele do wielu ma tabelę łączenia, która łączy dwie pozostałe tabele na ich głównych kluczach.
W moim przypadku mam kilka tabel, które odnoszą się do siebie, dzieląc pasujące klucze obce.
Mam zapisy pacjentów z dwoma tabelami.
- Lekarze przypisani do pacjenta.
- Wyniki testu pacjentów.
Nie wolno mi przechowywać niczego na temat pacjenta oprócz jego identyfikatora pacjenta (i nie mam powodu), więc nie ma sensu w stole pacjenta.
Jak mogę powiązać Lekarzy z TestResults?
Oboje mają klucz obcy do tabeli, która nie istnieje. tj. oba mają numery rekordów pacjenta, ale nie ma tabeli numerów rekordów pacjentów (numery rekordów są generowane przez system, do którego nie mam dostępu).
Tak więc w rzeczywistości są ze sobą w wielu związkach.
Pomyślałem o zrobieniu stołu tylko po to, by przechowywać identyfikatory. Ta tabela będzie miała jedną kolumnę, która jest kluczem podstawowym i niczym więcej.
To rozwiązanie w ogóle nie działa.
- Moja agnostyczna biblioteka przechowywania (poco), która będzie zarządzać i analizować te zapisy, nie byłaby w stanie sprawdzić, czy pacjent był w naszym systemie podczas dodawania nowego wyniku testu.
- Nawet jeśli przekazałem kontekst bazy danych do biblioteki zarządzającej. Oznaczałoby to, że system musiałby wywoływać bazy danych za każdym razem, gdy chciałby dodać rekord testowy tylko po to, aby zobaczyć, czy pacjent miał jakiekolwiek wcześniejsze zapisy u nas, czy był to pierwszy. Wszystko, aby dodać rekord w tabeli, która nie miała żadnego celu. W szczytowych czasach przetwarzania może to być tysiące razy na minutę. Coś, co byłoby trywialne, gdybyś miał dostęp do obiektów klr, ale całkowicie przytłaczające, jeśli potrzebujesz wywołać bazę danych dla każdego z nich.
Dziękujemy!
To łamie zasady modelowania bazy relacyjnej więc nie będzie obsługiwany z zewnątrz stół most połączyć Zapisy –
Jestem prawie pewien, że pacjent musi istnieć w tym, co próbuje zrobić. – Derek