Per un esempio , diciamo che sto usando Picasa , Flickr e 500px API e che ciascuno dei servizi presenta limitazioni su questi parametri semplificati:
- spazio totale account
- dimensioni del file individuali
Ho una tabella di database chiamata external_services
dove memorizzo i dettagli di tali servizi, i miei token di accesso sviluppatore, ecc., e ho bisogno di fare riferimento ai limiti sopra indicati nella mia applicazione. Posso pensare ai seguenti modi per memorizzare tali informazioni:
1) Aggiungi colonne ad esso per mantenere le informazioni in linea.
+--------+-------+--------+-
| Name | Space | File | …
+--------+-------+--------+-
| Flickr | 1 TB | 200 MB | …
+--------+-------+--------+-
| Picasa | 15 GB | 75 MB | …
+--------+-------+--------+-
| 500 px | 60 GB | ?? MB | …
+--------+-------+--------+-
2) In alternativa, mantieni una meta tabella separata chiamata external_services_details
con una relazione uno-a-molti.
+--------+------------+--------+
| Name | Parameter | Value |
+--------+------------+--------+
| Flickr | acct_space | 1 TB |
+--------+------------+--------+
| Flickr | max_file | 200 MB |
+--------+------------+--------+
| Picasa | acct_space | 15 GB |
+--------+------------+--------+
| Picasa | max_file | 75 MB |
+--------+------------+--------+
| 500 px | acct_space | 15 GB |
+--------+------------+--------+
| … | … | … |
Il mio problema è Non posso dire la differenza tra questi due approcci in termini di entrambe le opzioni essendo a prova di futuro, voglio dire non posso prevedere uno scenario in cui fai la differenza Mi pentirò di sceglierne uno rispetto all'altro? Il motivo per cui lo chiedo è che sono certo che i programmatori migliori di me devono averlo affrontato prima e hanno imparato le loro lezioni, e che c'è già una risposta da qualche parte.
Ora, oltre a questo, ci sono anche limiti specifici di ciascuno dei servizi. Ad esempio, Flickr richiede che Le immagini non possono essere più di 31.25 volte più larghe di quanto siano alte , e nella sua Politica di utilizzo corretto, 500px limiti nuovi utenti per un massimo di 20 nuove fotografie / immagini per settimana .
Il mio pensiero è questo: se i requisiti differiscono, sembra che un modo migliore sarebbe archiviarli in una meta tabella, con un numero flessibile di righe collegate a ciascun servizio. Ma se inizio a incorporare questa logica nell'app, dovrò normalizzare i dati che ho comunque, cioè se Flickr limita il rapporto immagine, dovrei avere una risposta a quello per ciascuno dei servizi rimanenti, anche se non elencano questa limitazione, allora dovrei avere ∞
memorizzato lì o qualcosa del genere. Il tipo di mezzo che l'approccio alla tabella strutturata in realtà ha più senso qui, poiché impone quella struttura.
Quale sarebbe il modo efficace per gestirlo? C'è un nome per questo modello?
Potrei averlo chiesto su DBA , ma una parte di questa domanda si occupa di ottenere la giusta logica applicativa, e questo è il software design.
Mi spiace per il cattivo design del layout di tabella
Riferimenti . I valori nelle tabelle sopra sono reali, ho studiato. Se qualcuno finisce in questa pagina alla ricerca dei limiti effettivi, eccoli qui: