Per la maggior parte dei siti principali che è possibile preformare le operazioni CRUD ogni utente ha una propria tabella di database? Mi piacerebbe vedere un esempio di una struttura di database che più utenti, sto guardando la mia struttura di database wordpress e non riesco a immaginare come twitter, tumblr, o anche StackOverflow esegue effettivamente un database. È così facile creare una tabella per un utente in modo dinamico? Grazie in anticipo.Ogni utente ha una propria tabella di database?
risposta
Perché ogni utente avere il proprio tavolo? Un utente dovrebbe semplicemente essere una voce in una tabella. Quindi si utilizza l'id di quell'utente per cercare altri record in altre tabelle.
Se voi database contenuto sy 6 tavoli quindi ogni volta che si è aggiunto un youd utente devono anche aggiungere gli altri tavoli ancora troppo.
Così ora avete 10 utenti e 60 tavoli.
Considerate ora di dover connettersi alla tabella corretta per l'utente specifico ... :) –
Yikes! Sì, che incubo – griegs
ci sono più diversi tipi di database, ma in genere non. Più comunemente, avresti una singola tabella, ma con un campo che designa l'ID utente. In MySQL, puoi selezionare il sottoinsieme di righe per cui l'ID utente corrisponde a un valore specifico, che è un po 'come creare dinamicamente una tabella per utente.
Le tabelle EAV (Entity-Attribute-Value) sono generalmente detestate: prestazioni scadenti, ma possono essere un male necessario per soddisfare i requisiti di funzionalità. –
@OMG, come entra in gioco l'EAV? Hai tabelle diverse in base al tipo di dati, ma colleghi la voce all'utente tramite un campo. Non sono sicuro di come ciò si riferisca all'EAV. –
Non c'è bisogno di una tabella separata per ogni utente. Ma potrebbero esserci alcune ottimizzazioni legate al database.
user rappresenta effettivamente riga della singola tabella. In relazione all'utente ci potrebbero essere altre tabelle per scopi specifici. Supponiamo che la tabella "Commenti" contenga commenti per utente e questa tabella possa avere più commenti da parte dell'utente. Quindi questa tabella utente ha una relazione uno a molti con la tabella dei commenti.
Alcune delle ottimizzazioni che vedo qui sono la creazione di viste (viste materializzate in casi certin), indicizzazione colonna basata sulla domanda di usato, anche partizionamento delle tabelle basate su date/utente o alcuni altri criteri relativi alla applicazione.
Le visioni materializzate sono famigerate come non facili da accettare; il partizionamento delle tabelle è una funzionalità che devi pagare (è disponibile solo nell'edizione Enterprise/Developer di SQL Server, non so su Oracle ...). Entrambi sono concetti oltre a ciò che l'OP sta chiedendo. –
La risposta alla tua domanda è "no". Di solito ciò che fanno questi siti è una tabella per gli utenti in cui la chiave della tabella è un campo ID intero e gli attributi sono attributi dell'utente (ad esempio nome, nome della schermata, password, ecc.). In SQLite, appare come segue:
create table User (id integer, email string);
Quindi si dispone di un paio di tabelle, ad esempio, blog_posts e commenti. Ciascuna di queste tabelle contiene post di blog e commenti di tutti gli utenti. Per identificare un utente, esiste un campo "user_id" che identifica una riga in quella tabella come appartenente a un particolare utente.
create table BlogPosts (id integer, description text, user_id integer);
create table Comments (id integer, description test, blogpost_id integer, user_id integer);
La sintassi è simile per altri database. "user_id" lega un post del blog a un utente e un commento a un utente. blogpost_id lega un post del blog a un utente. Ad esempio, è possibile associare ciascun utente a tutte le sue domande e commenti.
È possibile creare una tabella per utente, ma è necessario disporre di una mappatura di quale utente si connette a quale database e occorre aprire sempre nuove connessioni ai database per ciascun utente.
Non è possibile eseguire questa operazione in modo sicuro, poiché le query con parametri non possono utilizzare nomi tabella come parametro.
- 1. Design della tabella di database "Preferenze utente"
- 2. Design tabella database "Segui utente"
- 3. Perché VIM ha una propria sintassi regex?
- 4. Tabella di database tridimensionale
- 5. In un programma Java multithread, ogni thread ha la propria copia di System.out?
- 6. Crea una tabella SQL per ogni utente del sito Web (migliaia) con migliaia di righe?
- 7. Registrazione delle modifiche per ogni colonna di una tabella
- 8. Dovrebbe esserci un solo SQLiteOpenHelper per ogni tabella nel database?
- 9. Si dovrebbe creare una nuova tabella per ogni utente su un'app Web?
- 10. Dropdown-Select per una tabella di database
- 11. Ripristino di una tabella MySQL nel database
- 12. inserire login e password in una tabella o in più tabelle per ogni tipo di utente?
- 13. Creazione di una tabella in modalità utente singolo in postgres
- 14. Perché Direct3D non ha la propria struttura di vertici?
- 15. Se una sitemap ha * ogni * url
- 16. MYSQL - numero di righe in ogni tabella
- 17. come creare un modello yii senza una tabella di database
- 18. Parse.com - Come accedere come utente senza conoscere la propria password?
- 19. Determinare quale utente ha cancellato un database SQL Server?
- 20. Un modo migliore per rappresentare i ruoli utente nel database
- 21. Interfaccia utente per l'ordinamento di una tabella per più colonne
- 22. Utilizzo di una classe di database nella mia classe utente
- 23. Come visualizzare una tabella di database nella pagina JSP
- 24. Contenitore docker di lancio per ogni utente
- 25. Haskell: Esiste un modo idiomatico di inserire ogni elemento in una lista nella propria lista?
- 26. Progettazione database: più tabelle rispetto a una tabella singola
- 27. Modifica la precisione di tutte le colonne decimali in ogni tabella nel database
- 28. Calcola la media di ogni x righe in una tabella e crea una nuova tabella
- 29. Progettazione del database: miliardi di record in una tabella?
- 30. Lettura e aggiornamento simultanei in una tabella di database
Cercherei altre soluzioni prima di risolvere la creazione di tabelle dinamiche. –