Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [db design] uhm, che tipo di dato per un flag?

    Stavo pensando alla maniera ottimale per memorizzare su un db tipo MySQL un flag, ovvero una variabile booleana che può assumere solo due valori 0/1, True/False.

    In C/C++ per un tipo di dato strutturato riserverei una variabile mettiamo a 32bit di cui ogni bit può essere usato liberamente come flag e acceduto tramite una maschera tipo 0x1, 0x2, 0x4... ma i MySQl forse per facilitare le ricerche conviene dedicare un char e memorizzare '0' o '1' buttando così 7 bit?

    Rileggendo credo sia un be problema del cavolo quello di risparmiare su 7 bit rispetto alla mole di dati che poi verrà caricata sul db, i flag di certo non pesano.

    Di contro se un domani dovessi aggiungere un flag dovrei aggiungere un campo alla tabella, mentre se vi avessi dedicato un campo potrei iniziare ad un usare un bit prima inutilizzato...

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    think simple think ringo

  3. #3
    puoi usare tinyint

    un tiniyint a 1 dove lo zero indica false e l'uno indica true
    occupi molte meno spazio rispetto ad un enum ed è ottimo per indicare i valori booleani

    ENUM e SET non sono molto adatti in situazioni del genere ^^ ad es se hai una tabella che contiene dei permessi...e questi sono 100 avresti, usando enum e set, 100 campi che per ogni riga consumano un sacco di spazio, mentre con tinyint, oltre che la tabella sarebbe FIXED e non DYNAMIC (quindi MOLTO più veloce nelle ricerche) sarebbe anche nettamente più piccola

  4. #4
    Grazie a tutti e due, anche se non userò ENUM almeno ho imparato ad usarlo visto che non l'avevo mai fatto prima

  5. #5
    c'è anche set, che lo ritengo nettamente più utile di enum dato che ti permette di impostare più "stati" insieme

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.