Czy rozważali Państwo zastosowanie tutaj bazy danych dokumentów? Jest to problem, który rozwiązują znacznie lepiej niż tradycyjne rozwiązania RDBMS. Osobiście jestem wielkim fanem RavenDb. Kolejną całkiem przyzwoitą opcją jest CouchDb. Uniknąłbym MongoDb, ponieważ to naprawdę nie jest bezpieczne miejsce na dane w jego obecnej implementacji.
Nawet jeśli nie można korzystać z bazy danych dokumentów, można udawać, że SQL to taki, konfigurując tabele tak, aby miały pewne metadane w tradycyjnych kolumnach z polem danych, które jest serializowane XML lub json. Dzięki temu możesz wyszukiwać metadane, pozostając poza obszarem EAV. Ziemia EAV to okropne miejsce.
UPDATE
Nie jestem pewien, czy to dobry przewodnik istnieje, ale koncepcja jest dość prosta. Podstawową ideą jest rozbicie części, które chcesz przesłać, na "normalne" kolumny w tabeli - dzięki temu możesz wyszukiwać w standardowy sposób. Po znalezieniu rekordów, które chcesz, możesz pobrać CLOB i deserializować go odpowiednio. W twoim przypadku trzeba stół, który wyglądał mniej więcej tak:
SurveyAnswers
Id INT IDENTITY
FormId INT
SubmittedBy VARCHAR(255)
SubmittedAt DATETIME
FormData TEXT
Kilka protips:
a) użyć tekstu na podstawie rutynowych serializacji. Daje ci szansę na naprawę błędów w danych i naprawdę pomaga w debugowaniu.
b) W przypadku SQL 2000, możesz rozważyć zerwanie CLOB (pole TEKST zawierające dane ładunku) w osobnej tabeli. Dawno nie używałem SQL 2000, ale moje wspomnienia polegają na używaniu kolumn TEKSTU do tabel.
Być może możesz udostępnić niektóre pola i relacje z nami. Czasami, i to naprawdę zależy od celu, tabele muszą być znormalizowane, a czasami musimy denormalizować tabele (jak w niektórych przypadkach magazynowania!) :) – Nonym
Wciąż jestem na bardzo wczesnym etapie projektowania, więc nic nie ma zostały sfinalizowane za pomocą dowolnych środków. Najprawdopodobniej, jak zasugerowałam poniżej, zamierzam mieć tabelę Form, która przechowuje kolumny takie jak typ formularza, created_on, etc ... Tabela formularzy będzie miała relację jeden do wielu z polem tabeli FormField przechowującej nazwę, typ i wartość. – pteranodonjohn
Chciałem tylko dodać, że jest to aplikacja typu back office z ubezpieczeniem. Wartości pól przechowują informacje, takie jak numery licencji kierowcy, w polach adresu. – pteranodonjohn