Sono uno sviluppatore iOS e sinceramente non sto cercando di diventare un esperto di database proprio in questo momento, ma ho bisogno di sapere come pianificare correttamente quello che ritengo essere un bel cookie cutter social backend / database di stile di rete.
Terrò questo breve e dolce:
L'app per social network avrà utenti, post, commenti e preferiti.
Uso dei commenti come esempio:
Ogni commento è un oggetto che è stato creato nel mio backend per una classe chiamata "Commenti" (è eccessivo? Non vedo in quale altro modo si possa ottenere ma non riesco a credere a come un server gestirà così tanti singoli commenti se un'app diventa popolare, ma forse sto solo sottovalutando la potenza di un buon back-end?)
Un oggetto commento è composto da un URL per l'avatar del commentatore, l'ID utente del commentatore, un ID oggetto univoco, l'ID dell'oggetto post del commento e il testo del commento.
I post e i preferiti sarebbero anche propri classi / oggetti nel back-end e seguirebbero lo stesso modello dei commenti nell'esempio sopra.
Quindi la mia domanda principale è, sono in linea con quanto sopra? Voglio assicurarmi di strutturare correttamente il mio back-end.
La mia seconda domanda è: in che modo l'utente dovrebbe tenere traccia di tutti i loro post, commenti e preferiti?
La mia idea iniziale era di avere solo campi array per la classe User e memorizzare gli ID dei post, commenti e preferiti ad es. La classe utente ha un campo array chiamato "Post" con ID di oggetti post.
La cosa che mi confonde è la capacità eccessiva di tenere traccia di questi nella classe User, quando sto memorizzando l'ID dell'utente nei post, nei commenti e nelle classi preferite già? E poi vorrei solo interrogare quelle classi e filtrare per l'ID dell'utente, ma poi ci penso e se l'applicazione ha un sacco di utilizzo, potrebbe richiedere più tempo per interrogare tutti quegli oggetti e filtrare dall'ID dell'utente quando l'utente potrebbe tieni traccia dei loro oggetti attraverso i campi nella classe User.
Ultimo ma non meno importante, la scorsa settimana ho letto quanto segue in alcuni documenti di Parse.com (popolare Backend as a Service):
"Quando stai pensando a relazioni uno-a-molti e se implementare puntatori o matrici, ci sono diversi fattori da considerare: in primo luogo, quanti oggetti sono coinvolti in questa relazione? la relazione potrebbe contenere un numero molto grande (superiore a 100 o così) di oggetti, quindi è necessario utilizzare i puntatori. "
Sono confuso su cosa siano i pointer in un back-end?
Mi rendo conto che queste sono tutte domande piuttosto belle, ma voglio davvero assicurarmi di configurare correttamente il mio back-end e assicurarmi che la sua struttura abbia un senso.
Speriamo che alcuni di voi ragazzi siano disposti a leggere questo gigantesco muro di testo e aiutare un brutto fuori.
Grazie per l'aiuto!