risparmiare spazio nel database

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buonasera

volevo un parere dagli esperi su una cosa riguardante lo spazio fisico del database

in pratica ho uno script che per ipotesi itneragisce con 5 tabelle simili per utente

ed in sostanza ad ogni nuovo utente dovrebbe creare 5 tabelle

mi chiedevo invece se si risparmierebbe spazio se invece di 5 tabella ne creo una aggiungendo il campo utente ed i campi mancanti

il neo sarebbe che quella tabella potrebbe arrivare ad avere chissà quante righe e probabilemtne mi rallenterebbe le query perchè se ogni utente mi crea 20 righe nella nuova tabella avtò 20 righe per il numero degli utenti totali

la creazione di nuove tabella occupa più spazio o siamo sempre lì.

perchè se il risparmio è minimo preferisco lasciare le 5 tabelle per utente che perlomeno dovrebbe velocizzarmi le query

pareri?
 
Scusa ma non mi è molto chiaro, oppure voglio non crederci.
Per ogni utente crei 5 tabelle?? Oppure crei una tupla nelle 5 tabelle per ogni utente che si iscrive?
Poi non si se hai mai sentito parlare del modello E/R (entità/relazioni). Ci sono delle regole per crearlo e quello che viene fuori, in generale, è ottimizzato.
 
Scusa ma non mi è molto chiaro, oppure voglio non crederci.

non vedo cosa ci sia di strano

sto creando uno script gestionale che principalmente è composto da 5 tabelle. in pratica 3 tabelle sono uniche dove esiste un campo id_utente

altre due tabelle però potrebbero arrivare a contenere anche un 500 righe ad utente quindi mi chiedevo se conveniva creare una tabella per ogni nuovo utente che accede al gestionale o creare una tabela unica che porebbe arrivare ad avere anche 10.000 righe

quindi se ho 10 utenti e 10.000 righe , a livello di spazio conviene avere una tabella da 10.000 righe oppure 10 tabelle da 1.000 righe

.
Oppure crei una tupla nelle 5 tabelle per ogni utente che si iscrive?
Poi non si se hai mai sentito parlare del modello E/R (entità/relazioni).

in realtà non so nemmeno cos'è questa tupla :crying:
 
ciao
per tupla guarda
http://it.wikipedia.org/wiki/Tupla
poi nella costruzione delle tabella cerca il più possibile di usare le proprietà relazionali di mysql, cero 10.000 righe sono tante.
un consiglio prima di buttarti a capofitto al pc, studiati con carta/matita/gomma la struttura del db perche da quello che capisco non è un db semplicissimo quindi il tempo che impieghi a studiarlo prima ti farà risparmiare il doppio poi
 
ciao
per tupla guarda
http://it.wikipedia.org/wiki/Tupla
poi nella costruzione delle tabella cerca il più possibile di usare le proprietà relazionali di mysql, cero 10.000 righe sono tante.
un consiglio prima di buttarti a capofitto al pc, studiati con carta/matita/gomma la struttura del db perche da quello che capisco non è un db semplicissimo quindi il tempo che impieghi a studiarlo prima ti farà risparmiare il doppio poi

ad essere onesto non ho molto ben capito queste proprietà relazionali e come si dovrebbero applicare.

Purtroppo non ho molta scelta

faccio un esempio:

se voglio inserire in una tabella tutt i negozi presenti in una regione ed a ogni città associare un utente penso che siano solo due strade:

databse_complessivo
ID negozio citta regione cap utente --------------->10.ooo righe

oppure

database _ $x_utentepuglia
ID negozio citta regione cap ------------------>1.000 righe per 10 tabelle

nel secondo caso avrei tot tabelle quanti gli utenti ma con meno righe epr tabella mentre nel secondo caso avrei una tabella unica con migliaia di righe

e se invece usassi un database in txt invece? sicuro risparmierei spazio sul database ma come velocità di esecuzione della query ci eprderei molto?
 
ciao
per farti un esempio partendo dal tuo
ID negozio citta regione cap utente --------------->10.ooo righe

tabella regioni
id_regione
nome


tabella citta (immagino siano province)
id_provincia
id_regione
nome
cap


tabella dalle_10000_righe
ID
negozio
id_provincia
utente

facendo poi le varie join tiri fuori quello che vuoi
non so cosa hai nei campi negozio e utente, ma anche di quelli puoi farti le varie tabelle (es)
tabella anagrafica_utente
id
nome
cognome
indirizzo
telefono email
ecc....

quindi la tabella dalle_10000_righe potrebbe diventare
ID
id_negozio
id_provincia
id_utente

riempiendosi solo di numeri interi quindi pochissimi byte e quindi molto leggera
 
ok capito capito

faccio inte mpoa modificare la cosa ma.

se io nella famosa tabella da 10.000 righe uso questo sistema degli id quindi avendo tutto in campo INT risparmio spazio?

inoltre il oin poi non mi rallenta le query?

un altra domanda

non mi è benchiara la differenza tra int smallint e bigint, intuisco che si parla di piccolie grandi numerima riferiti a cosa?

mi illuminate?
 
Borgo ti ha illustrato il modo come potresti organizzare tutto. È per quello che mi ero meravigliato delle 5 tabelle per ogni utente. In quel modo aggiungi tupla e le tabelle sono sempre quelle.
Si la join rallenta perché fa una moltiplicazione di tabelle ma conviene in questo caso.
Per i tipi di dati numerici guarda il manuale mysql e in particolare la tabella in questo link.
 

Discussioni simili