Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    [MySQL] Come e in base a cosa scegliere tipo e lunghezza campi?

    Buona sera,
    è da un po' che mi pongo la domanda e che presto poca attenzione quando creo un nuovo DB MySQL.
    Vorrei capire come scegliere accuratamente una tipologia di campo, ad esempio quando impostare un "varchar", quando invece un "longtext", o solo "text" ma soprattutto capire come impostare la lunghezza per evitare di ritrovarmi troncati alcuni contenuti.
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2

    Re: [MySQL] Come e in base a cosa scegliere tipo e lunghezza campi?

    Originariamente inviato da the-bit
    Buona sera,
    è da un po' che mi pongo la domanda e che presto poca attenzione quando creo un nuovo DB MySQL.
    Vorrei capire come scegliere accuratamente una tipologia di campo, ad esempio quando impostare un "varchar", quando invece un "longtext", o solo "text" ma soprattutto capire come impostare la lunghezza per evitare di ritrovarmi troncati alcuni contenuti.
    Ma il quesito e' tutto tuo. Nel senso che tu devi conoscere il progetto e capire/sapere quanto e dove essere inserito, quale ricerca sara' necessario eseguire.

    L'unico suggerimento che mi sento di dare in modo superficiale e' quello di badare forse piu' ai dati che dovrai estrarre che ai dati che dovrai inserire. Mettere e' sempre piu' semplice di trovare. Molti non lo considerano. Un database non e' uno luogo dove si infilano solo dei dati, ma un luogo dove dovrai cercare dei dati.
    Pensa agli scomparti/cassetti del tuo guardaroba e agisci tale e quale .... se sei uno che fa casino in camera tra mutande, maglioni e camicie questo potra' succedere poi anche nel database.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ciao piero.mac,
    fose mi sono espresso male ma non volevo affatto un consiglio su che tipologia scegliere, ma una guida a conoscere i tipi di formato e la lunghezza.
    Ad, esempio, quando creo un campo (int o qualsiasi altro tipo) mi viene chiesto di impostare una lunghezza che per i campi di int - mi pare di ricordare - di default è 10 o 11.
    Io vorrei capire, ad esempio, come "funziona" esattamente la lunghezza. Si riferisce alla lunghezza dei caratteri inseriti o cos'altro?
    Lo stesso parere vorrei per i tipi di campo da scegliere.
    "To iterate is human, to recurse, divine." (R.(Heller))

  4. #4
    Originariamente inviato da the-bit
    Ciao piero.mac,
    fose mi sono espresso male ma non volevo affatto un consiglio su che tipologia scegliere, ma una guida a conoscere i tipi di formato e la lunghezza.
    Ad, esempio, quando creo un campo (int o qualsiasi altro tipo) mi viene chiesto di impostare una lunghezza che per i campi di int - mi pare di ricordare - di default è 10 o 11.
    Io vorrei capire, ad esempio, come "funziona" esattamente la lunghezza. Si riferisce alla lunghezza dei caratteri inseriti o cos'altro?
    Lo stesso parere vorrei per i tipi di campo da scegliere.
    nel caso dei campi numerici la lunghezza e' prefissata. Un campo INT e' costituito da 4 byte.
    La lunghezza non definisce la capacita' complessiva del campo, ma il numero dei digit da visualizzare. In pratica serve se utilizzi ZEROFILL per definire il numero degli zeri che precedono la cifra. Se superi la lunghezza della numerazione che hai impostato non succede proprio nulla il campo INT e' formato SEMPRE da 4 byte. sia che scrivi 1 oppure i 4 miliardi del INT UNSIGNED

    Vedi qui le varie occupazioni.

    http://dev.mysql.com/doc/refman/5.1/...uirements.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    in linea generale la risposta è "più piccolo, è meglio"
    "a lunghezza fissa è meglio che a lunghezza variabile"
    "interi meglio di stringhe"
    blob-text OK per note e simili

  6. #6
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    In realtà mi riferivo più al varchar chè all'int visto che alla fine il campo int ha valori ben precisi.
    Nel campo varchar, infatti, mi è successo che impostandolo, per esempio, a 30 mi venivano troncate alcune parole finali e da lì ho pensato che magari quei numeri si riferisseto alla lunghezza, ma poi mi sono reso conto - come avete detto anche voi - che si riferisce ai bytes.
    Perciò ogni volta che ho a che fare con campi "varchar" non so mai che lunghezza scelta e neanche vorrei utilizzare inopportunamente "longtext".
    "To iterate is human, to recurse, divine." (R.(Heller))

  7. #7
    Originariamente inviato da the-bit
    In realtà mi riferivo più al varchar chè all'int visto che alla fine il campo int ha valori ben precisi.
    Nel campo varchar, infatti, mi è successo che impostandolo, per esempio, a 30 mi venivano troncate alcune parole finali e da lì ho pensato che magari quei numeri si riferisseto alla lunghezza, ma poi mi sono reso conto - come avete detto anche voi - che si riferisce ai bytes.
    Perciò ogni volta che ho a che fare con campi "varchar" non so mai che lunghezza scelta e neanche vorrei utilizzare inopportunamente "longtext".
    tra varchar e longtext ci stanno ancora un paio di opzioni.

    Puoi mettere la lunghezza abbondante perche' sono campi a lunghezza variabile. Una certa quantita' di byte (a seconda del tipo di campo) fissi a disposizione per l'informazione sul campo + l'occupazione in byte della stringa. Occhio al character set. Se multibyte come utf8 un carattere occupera' piu' byte di un carattere character set latin1.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Il mio problema è proprio scegliere una lunghezza giusta di ogni campo, che poi è proprio l'oggetto della discussione.
    Ammettiamo, per esempio, che io abbia due campi:
    - uno "varchar" per il titolo di un film;
    - uno "longtext" per la descrizione del film.
    Come dovrei comportarmi con la scelta delle lunghezze?
    Grazie.
    "To iterate is human, to recurse, divine." (R.(Heller))

  9. #9
    Originariamente inviato da the-bit
    Il mio problema è proprio scegliere una lunghezza giusta di ogni campo, che poi è proprio l'oggetto della discussione.
    Ammettiamo, per esempio, che io abbia due campi:
    - uno "varchar" per il titolo di un film;
    - uno "longtext" per la descrizione del film.
    Come dovrei comportarmi con la scelta delle lunghezze?
    Grazie.
    urca... longtext non contiene solo la descrizione ma tutto il film.
    2^32 fa la bellezza di un numero a 10 cifre -> 4.294.967.265 <- cioe' 4 giga.

    Per il titolo di un film prendi quello piu' longo longo che conosci, e adattalo a quello. Es.:
    Film d'amore e d'anarchia, ovvero stamattina alle 10 in Via dei Fiori nella nota casa di tolleranza
    Con Giannini del 1973 e sono un centinaio di digit. Tu metti varchar(255) e ti togli il pensiero.

    Sono campi ad occupazione dinamica, occupano solo quanto serve a contenere cio' che metti per un max (in byte) da te definito.

    per una descrizione un campo text mi pare sufficiente (64 kb)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ancora grazie.
    Speriamo che non mi perda informazioni
    "To iterate is human, to recurse, divine." (R.(Heller))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.