Sto creando un'API RESTful. Faccio fatica a decidere il modo migliore per progettare le mie tabelle di database in base alle mie risorse.
Inizialmente, ho pensato che una tabella per risorsa sarebbe una buona strada da percorrere, ma ora sono preoccupata che ciò si tradurrà in tabelle esponenzialmente più grandi più in basso nella catena di risorse si va.
Ad esempio, immagina di avere tre risorse: utenti, clienti, vendite. Gli utenti sono abbonati alla mia API, i clienti sono i clienti degli utenti e le vendite sono gli acquisti effettuati da ciascun cliente sull'account degli utenti.
Una risorsa di vendita è accessibile come segue
GET /users/{userID}/clients/{clientID}/sales/{salesID}
Quindi, se ci sono 10 utenti, ciascuno con 10 clienti e per ogni cliente ci sono 10 vendite, la dimensione della tabella aumenta con l'avanzare della catena di risorse.
Sono abbastanza sicuro che SQL sia in grado di far fronte a tabelle di grandi dimensioni, ma non sono sicuro di come rallenteranno le operazioni di lettura e scrittura. L'esempio sopra forse non lo illustra, ma la mia API avrà progressivamente più scritture e letture più in basso nella catena di risorse che andiamo. Ho quindi lo scenario in cui le tabelle più grandi nel mio database verranno lette e scritte più volte rispetto alle tabelle più piccole.
Sarà inoltre necessario unire le tabelle prima di eseguire le query. Il motivo è che consento a ciascun utente di avere un client con lo stesso nome. Per evitare di ottenere dati client errati, la tabella utenti e le tabelle client vengono unite da {userID}. Questo vale anche per le vendite. Unire tabelle di grandi dimensioni ed eseguire letture e scritture rallenta ulteriormente le cose?