Mam scenariusz projektowania tabeli i jako typ inny niż DBA, chciałbym opinii, w których jest bardziej skalowalny.
Powiedzmy, że jesteś proszony o zapisanie informacji o domach dla obszaru metra, zaczynając od małej dzielnicy (200 domów), ale ostatecznie rosnąc do 5000000+ domów.
Wymagane jest przechowywanie podstawowych informacji: ID # (unikalna partia #, której możemy użyć jako unikalnego indeksu), Addr, City, State, Zip. Poradzi sobie z tym prosty, prosty stół.
Ale każdego roku zostaniesz poproszony o zapisanie dodatkowych informacji o wszystkich domach - i CO te informacje będą się zmieniać każdego roku. Na przykład w pierwszym roku zostaniesz poproszony o nagranie nazwiska właściciela i materiału kwadratowego. W drugim roku zostaniesz poproszony o zachowanie nazwiska, ale zrzuć kwadratowy materiał i zacznij zbierać imiona właścicieli.
Wreszcie - co roku zmieni się liczba dodatkowych kolumn. Może zacznij od 2 dodatkowych kolumn, następnie przejdź do 6 w przyszłym roku, a następnie z powrotem do 2.
Tak więc jednym podejściem do tabeli jest próba dodania niestandardowych informacji jako kolumn w tabelach domów, aby istniała tylko jedna tabela.
Ale mam sytuację, w której ktoś rozłożył tabele w tym celu:
Kolumny „Tabela domu”: ID, Adres, Miasto, Stan, Kod pocztowy - z jednym rzędem na dom
ID Addr City State Zip
-------------------------------------------
1 10 Maple Street Boston MA 11203
2 144 South Street Chelmsford MA 11304
3 1 Main Avenue Lowell MA 11280
Kolumny „Tabela informacji niestandardowych”: identyfikator, nazwa, wartość - z tabelą wyglądającą jak:
ID Name Value
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 Square Footage 1200
2 Square Footage 1930
3 Square Footage
Istnieje więc wiele wierszy dla każdego rekordu domu. Każdego roku, gdy wymagane są opcjonalne informacje, ta tabela jest dosłownie przebudowywana, więc w przyszłym roku może wyglądać następująco:
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
W końcu gromadzisz 100 000 rzędów domów ORAZ w ciągu roku pojawia się 10 dodatkowych informacji; druga tabela zawiera teraz 1 000 000 wierszy informacji, z których wiele zawiera informacje nadmiarowe (opisowe). Ogólne wymagania dotyczące bazy danych są takie, że ludzie będą musieli uzyskać informacje o wierszu domu + powiązane wartości pól niestandardowych tysiące razy dziennie.
Więc moje pytanie: czy byłoby złym (lub okropnym) ćwiczeniem zamiast tego:
A) Ułóż tabelę domu, zgadując przy maksymalnej liczbie niestandardowych kolumn (zwanych być może „1” do „10”) i wstaw te niestandardowe wartości bezpośrednio w rzędach domu
LUB
B) Przechowuj niestandardowe informacje w tabeli domu, ale każdego roku, gdy zmieniają się wymagania, odbuduj tabelę domu, używając tylko # kolumn potrzebnych do niestandardowych informacji, z myślą, że wymagania mogą się zwariować i nigdy nie wiesz, ile maksimum opcjonalne pola mogą być wymagane?
Dzięki, mam nadzieję, że to ma sens!