Mam 4 podklasy: Video
, Image
, Note
i Form
. Każdy zawiera różne typy danych. Na przykład klasa Image
zawiera ścieżkę do pliku obrazu na dysku i właściwościach obrazu, a klasa Form
zawiera wartości pól formularza. Wspólnym elementem pomiędzy każdej pozycji jest jednak to, współrzędne GPS i kierunku, więc mam następujący abstrakcyjna klasa podstawowa:model abstrakcyjna klasa podstawowa i podklasy w bazie danych
public abstract class Content
{
public float? Latitude { get; set; }
public float? Longitude { get; set; }
public float? Heading { get; set; }
}
Jednakże gdy mam mgliste jest, w jaki sposób modelować to w bazie danych. Obecnie mam tabelę o nazwie Events
(dla przykładu, powiedzmy, że wydarzenie jest przyjęcie urodzinowe) i 4 tabele (Videos
, Images
, Notes
i Forms
). Każda tabela ma klucz obcy powiązany z kluczem podstawowym Events
.
Używając LINQ-SQL, otrzymuję 5 klas dla każdej tabeli. To jest w porządku, jeśli chcę tylko jeden typ danych, na przykład Event.Images
, ale chcę policzyć całkowitą liczbę "zawartości", jaką ma Event
i uzyskać współrzędne GPS. Mogę skrzywić licznik wystarczająco łatwo, używając tylko Event.Images.Count() + Event.Videos.Count() + ...
, ale nie mogę zrobić tego samego dla współrzędnych GPS. Czy istnieje sposób, w jaki mogę modelować bazę danych, aby móc używać klasy bazowej dla każdego przedmiotu i nadal móc uzyskać indywidualny, mocno napisany przedmiot, gdy potrzebuję zobaczyć jego dane?
Dzięki za linki. Nie opisują dokładnie, jak używać modeli, ale dają mi punkt wyjścia do dalszych badań. Osobiście zawsze uważałem, że model z pojedynczą tabelą jest złym pomysłem, ponieważ oznacza to, że jeśli dodasz nową podklasę, będziesz musiał dodać nowe kolumny dla swoich danych, które mogą zawęzić się do niepożądanego rozmiaru, choć w przypadku mniejszych aplikacji widzę zalety korzystania z niego. –
Ya, są określone kompromisy. To zależy od prawdopodobieństwa dodania nowych typów. Jeśli jest to mało prawdopodobne, lepiej będzie unikać przechodzenia przez wiele tabel i korzystania z pojedynczej tabeli. Jeśli prawdopodobne, jeden z innych wzorów. I, tak, te linki są dość rzadkie, ponieważ chcą, żebyś kupił książkę :-) To dobra książka - warto ją zdobyć. – SingleShot