Ho uno scenario di progettazione della tabella e come tipo non DBA, vorrei opinioni su quale sia più scalabile.
Supponiamo che ti venga chiesto di registrare informazioni sulle case per un'area metropolitana, iniziando con un piccolo quartiere (200 case) ma alla fine crescendo fino a oltre 5000000 case.
È necessario memorizzare le informazioni di base: ID # (un lotto unico # che possiamo utilizzare come indice univoco), Addr, Città, Stato, CAP. Un tavolo semplice e raffinato lo gestirà.
Ma ogni anno ti verrà chiesto di registrare informazioni aggiuntive su tutte le case e QUALI informazioni cambieranno ogni anno. Quindi, ad esempio, il primo anno, ti viene chiesto di registrare il cognome e il metraggio dei proprietari. Il secondo anno, ti viene chiesto di mantenere il cognome, ma scarica il metraggio e inizia a raccogliere i nomi dei proprietari.
Infine, ogni anno il numero di colonne extra cambierà. Potrebbe iniziare con 2 colonne aggiuntive, quindi andare a 6 il prossimo anno, quindi tornare indietro a 2.
Quindi un approccio basato su una tabella consiste nel provare ad aggiungere le informazioni personalizzate come colonne nelle tabelle della casa in modo che vi sia una sola tabella.
Ma ho una situazione in cui qualcuno ha preparato i tavoli per questo come:
Colonne "Tavolo casa": ID, indirizzo, città, stato, CAP - con una riga per casa
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
Colonne "Tabella informazioni personalizzate": ID, Nome, Valore - con tabella simile a:
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
Quindi ci sono più file per ogni singolo record di casa. Ogni anno, quando le informazioni opzionali richiedono modifiche, questa tabella viene letteralmente ricostruita, quindi l'anno prossimo potrebbe apparire come:
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
Alla fine accumuli 100.000 file di case E un anno ci sono 10 informazioni extra; la seconda tabella ora contiene 1.000.000 di righe di informazioni, molte delle quali hanno informazioni ridondanti (descrizione). I requisiti generali del database sono che le persone dovranno ottenere le informazioni sulla riga della casa + i valori dei campi personalizzati associati migliaia di volte al giorno.
Quindi la mia domanda: sarebbe una cattiva (o orribile) pratica invece:
A) Disporre la tabella della casa con il numero massimo di colonne personalizzate (chiamato forse da "1" a "10") e inserire tali valori personalizzati nelle righe della casa
O
B) Archivia le informazioni personalizzate nella tabella della casa, ma ogni anno quando cambiano i requisiti, ricostruisci la tabella della casa con solo il numero di colonne necessarie per le informazioni personalizzate, con l'idea che i requisiti potrebbero impazzire e non sai mai quanti campi opzionali potrebbero essere richiesti?
Grazie, spero che abbia senso!