Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446

    [MySQL] Struttura database & Domande

    Salve a tutti!
    Prima di tutto, vi ringrazierei per l’attenzione

    Sto realizzando un database MySQL e avrei alcune domande da farvi.
    Comincio con il screenshot:



    Vi spiego a cosa mi servirebbe questo database:
    1. Il campo “titolo” mi serve per inserire un titolo di un prodotto (di 50 caratteri)
    2. Il campo “descrizione” mi serve per la descrizione del prodotto (di 350 caratteri)
    3. Il campo “prezzo”... il nome dice tutto...
    4. Il campo “img” serve per inserire un url completo ad una immagine
    5. Il campo “attivo” mi servirebbe per fare qualcosa tipo “si/no” di access. E giusto così?
    6. Il campo “url” mi serve per una url completa ad un certo prodotto

    Ora vorrei chiedervi:

    1. Io quanto quando ho creato i campi, ho messo in “titolo” un valore 50 per limitare a 50 caratteri e in “descrizione” 350 per limitare a 350 caratteri. Quando ho salvato la tabella sono usciti fuori un pò di valori quà e là. Es: mediumint(9), tinyint(4) ecc. A cosa servono quei numeri tra parentesi?
    2. Ho visto che nel campo “Predefinito” sono usciti fuori alcuni numeri ( 0 0 0 1 0) Perchè ?
    3. Secondo voi si può migliorare la struttura per renderla più veloce e snella ? (visto che dovro inserire tanti records nel database....)


    Vi ringrazio veramente tanto per gli aiuti.

  2. #2
    Hai qualcosina da rivedere nella tua struttura.

    il campo text e' di dimensione max fissa a 64kb. e' un campo dinamico, cioe' occupa solo lo spazio per la stringa inserita piu' 3 byte. Quindi TEXT non accetta un valore esempio tipo VARCHAR(50).

    I numeri tra parentisi nei campi di tipo INT (tutti quelli usati da te) servono a definire il numero max di digit visualizzabili e non come limitatori di capienza. Questa e' fissa. Vedi il manuale

    Predefinito o default e' il valore che viene immesso in mancanza di altre indicazioni specifiche sul valore da inserire.

    I campi numerici non vanno bene per inserire i dati previsti da te:


    4. Il campo “img” serve per inserire un url completo ad una immagine
    ---> questo deve essere un campo VARCHAR

    5. Il campo “attivo” mi servirebbe per fare qualcosa tipo “si/no” di access. E giusto così?
    ---> sarebbe piu' corretto tinyint(1)

    6. Il campo “url” mi serve per una url completa ad un certo prodotto
    ---> Anche questo dovrebbe essere un campo varchar

    il campo prezzo (per euro) dovrebbe essere FLOAT, oppure DECIMAL (vedi il manuale ) con due decimali. Il decimale deve essere separato dal punto e non dalla virgola.


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

  3. #3
    Originariamente inviato da Timopongo
    Io non ho capito bene questo

    lo potresti rispiegare?
    Che ti dovrei dire di piu' ??

    http://dev.mysql.com/doc/mysql/en/st...uirements.html

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

  4. #4
    Originariamente inviato da Timopongo
    Ma se un campo è text come fa ad essere contemporaneamente varchar(50)?
    Scusa.. ma dove hai letto questa affermazione????

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

  5. #5
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446
    Hai qualcosina da rivedere nella tua struttura.
    Bene!

    il campo text e' di dimensione max fissa a 64kb. e' un campo dinamico, cioe' occupa solo lo spazio per la stringa inserita piu' 3 byte. Quindi TEXT non accetta un valore esempio tipo VARCHAR(50).
    Perciò, per memorizzare 350/400 caratteri numerici/testo, cosa devo usare ?

    I numeri tra parentesi nei campi di tipo INT (tutti quelli usati da te) servono a definire il numero max di digit visualizzabili e non come limitatori di capienza. Questa e' fissa. Vedi il manuale
    Anche qui, mi puoi spiegare meglio ? io per esempio so’ che con CHAR(10) posso inserire 10 caratteri alfanumerici.

    Predefinito o default e' il valore che viene immesso in mancanza di altre indicazioni specifiche sul valore da inserire.
    Anche qui, se e possibile vorrei maggiori spiegazioni.

    I campi numerici non vanno bene per inserire i dati previsti da te:


    4. Il campo “img” serve per inserire un url completo ad una immagine
    ---> questo deve essere un campo VARCHAR
    Non va bene TINYINT ? TINYINT non va da 0 a 255 ? Perchè io dovrei inserire un url tipo http://www.miosito.it/img/img1.gif

    5. Il campo “attivo” mi servirebbe per fare qualcosa tipo “si/no” di access. E giusto così?
    ---> sarebbe piu' corretto tinyint(1)
    Bene!

    6. Il campo “url” mi serve per una url completa ad un certo prodotto
    ---> Anche questo dovrebbe essere un campo varchar
    Come sopra... per risparmiare spazio, non e meglio usare TINYINT o SMALLINT ?

    il campo prezzo (per euro) dovrebbe essere FLOAT, oppure DECIMAL (vedi il manuale ) con due decimali. Il decimale deve essere separato dal punto e non dalla virgola.
    Perciò, posso usare DECIMAL(2,2)
    Ma supponiamo che devo inserire 125.55
    In questo caso cosa devo fare ? Devo mettere DECIMAL(3,2) ?
    E se poi inserisco 56.23 ? Mi viene fuori 056.23 ?

    Grazie!

  6. #6
    Originariamente inviato da Timopongo
    Quello che non ho capito è questa frase
    TEXT ha la dimensione massima fissata a 64 kb, percio' non si puo' assegnare un valore limitativo come faresti con un campo VARCHAR(nn) , cioe' non puo' essere definito TEXT(350) come aveva tentato Cesar.

    Pero' il campo TEXT e', parimenti al campo VARCHAR, un campo dinamico e quindi lo spazio occupato sara' solo quello effettivamente occupato piu' tre byte.

    Se rileggi ho scritto esattamente questo, chiaro che la mia risposta e' legata alla domanda di Cesar e quindi ne segue la logica espositiva.


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

  7. #7
    Originariamente inviato da Cesar
    100.000 domande
    Ti rispondo randomize.

    Nel link che ti ho postato trovi i riferimenti che cerchi.

    I campi si dividono in NUMERICI, TESTO, DATA, e BLOB (binary)

    Devi utilizzare il formato corretto per il tuo bisogno. La dimensione max la trovi nelle tabelle allegate.

    Per i campi valore dovrai usare un campo numerico in formato FLOAT o DECIMAL. Il valore che dichiari con il campo es.: DECIMAL(8,2) significa che il campo sara' composto complessivamente da 8 digit numerici, di cui 2 decimali. Quindi 123456.12 Ok?

    Poi il campo numerico puo' essere definito: UNSIGNED cioe' solo numeri positivi, SIGNED (default) numeri negativi e positivi, ZEROFILL UNSIGNED cioe' verra' FILLED, riempito di zeri fino al completamento dei digit visualizzabili.

    Va benissimo il campo tinyint(1) per definire un campo tipo bool (che non esiste in mysql) tanto si sara' dentro solo 0 oppure 1.

    poi vediamo altro dopo, se il caso.

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

  8. #8
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446
    Bene
    sono arrivato a questo punto, ma vorrei avere (se e possibile, ovviamente) dei suggerimenti più diretti su come impostare questo database!.



    Non riesco a capire bene la lunghezza/set degli *INT e degli *CHAR
    Gli attributi sono giusti così ? -.-
    E poi come mai “img” “id_negozio” e “url” hanno un valore predefinito (default) 0 ?


  9. #9
    "img" e "url" devono essere VARCHAR(100). I caratteri che compono un url oppure un link non possono essere solo numerici e possono facilmente superare i 50/60 caratteri.

    "attivo" TINYINT(1) e non 4. Si tratta di coerenza. Dentro ci metti solo 0 / 1 quindi e' sufficiente vedere una cifra. Sempre per coerenza lo metterei anche UNSIGNED.

    In linea generale tutti i campi numerici in cui non sono previsti numeri negativi andrebbero settati UNSIGNED. Raddoppi la capacita' ed eviti immissioni di valori negativi erronei

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

  10. #10
    Originariamente inviato da Timopongo
    Forse voleva metterli int perché nell'url cambiava solo il numero di immagine, tipo .../img1.jpg - .../img2.jpg ecc.
    Potrebbe essere?
    Direi di no.

    in un campo numerico ci stanno solo numeri.

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

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.