Creazione ottimale database

di il
6 risposte

Creazione ottimale database

Buongiorno,
sto creando un piccolo sistema dove un utente, una volta registrato, deve compilare una sorta di scheda rappresentata da diverse checkbox. Ad esempio:

cucina_preferita[] -> Italiana, Giapponese, Cinese, Messicana ecc
hobby[] -> Musica, Giardinaggio, Modellismo ecc
sport[] -> Bodybuilding, Piscina, Basket, Calcio ecc

e altri 5 o 6 gruppi di checkbox.

Il database contiene al momento la tabella UTENTE con all'interno i vari campi come nome, cognome, email, cellulare, telefono, fax, password ecc, come posso gestire le scelte degli utenti in maniera ottimale? Vorrei sicuramente evitare di inserire nella tabella UTENTE i campi HOBBY, CUCINA_PREFERITA, SPORT e salvare all'interno i dati come stringa (tipo:" italiana,cinese,messicana"), preferirei qualcosa di più ottimale. Vorrei evitare anche di creare una tabella per ogni gruppo di checkbox (tabella_cucina, tabella_hobby, tabella_sport ecc ecc) con relazione n/n con la tabella utente perché rischierei di creare troppe tabelle. Qualche consiglio a riguardo?

Ringrazio anticipatamente

6 Risposte

  • Re: Creazione ottimale database

    L'approccio e' sbagliato:

    PRIMA si realizza il modello dei dati, POI si realizza l'interfaccia utente che serve a popolarlo.

    La "Teoria Relazionale dei Dati" ha proprio il compito di fornire le DIRETTIVE necessarie per la creazione di un "database ottimale".

    La vedo dura condensare 400 pagine (o 800 dipende dal libro) in un paio di post!

    Vabbe', non devi studiare per forza tutte le 400/800 pagine, ma UN LIBRO sull'argomento e' PROPEDEUTICO alla progettazione, se vuoi evitare le ""castronate"" piu' banali.
  • Re: Creazione ottimale database

    Ciao, grazie per la risposta intanto.
    L'interfaccia utente ancora non è stata creata, per questo ho chiesto un consiglio. L'unica cosa che è stata creata è la tabella utente, nient'altro.
  • Re: Creazione ottimale database

    Come ben consigliato da @migliorabile, con un libro decente puoi imparare la teoria per progettare dei piccoli database relazionali senza troppe pretese.

    Fondamentalmente puoi gestire il tutto con tre tabelle: Utenti, InfoRappresentative, Utenti_InfoRappresentative (caso 1) o solo con due tabelle: Utenti, InfoRappresentative (caso 2)

    InfoRappresentative, puoi:
    Caso 1) denormalizzarla (uh che scandalo, benvenuto nella realtà) e predisporre le colonne : categoria (es. hobby) e tipologia (es. cucina) : con indice composto da entrambre
    Caso 2) Più figo: usare JSON Data Type (perfetto per la tua casistica)
  • Re: Creazione ottimale database

    Grazie Toki per la risposta, ho le idee più chiare ora.
  • Re: Creazione ottimale database

    Caso 2 non è un granché perché i campi json ci sono solo nelle ultime versioni di mariadb, altrimenti si impongono fullscan per ogni ricerca.
    ancor prima di tutto ciò va stabilito dove esattamente deve funzionare il db
  • Re: Creazione ottimale database

    Qualsiasi provider di servizi hosting aggiorna i suoi sistemi alle ultime release (altrimenti deve mettere in conto di non soddisfare le necessità dei clienti). Quando ci sono problemi di retro compatibilità tiene in piedi anche le versioni precedenti.

    Posso sbagliarmi ma a occhio mi sembra un piccolo sito web da mettere online o un applicativo a scopo didattico.
    @Antigua se ci sei batti un colpo.

    Il tipo Json viene usato proprio per gestire casistiche come quella citata dall'utente, archiviare testi in maniera strutturata e per gestire il versionamento degli stessi o di altri dati. E aggiungo per la gestione dello storico.

    Tanti casi in cui è necessaria la denormalizzazione o una babele di tabelle similari li si può gestire meglio con il supporto json.
Devi accedere o registrarti per scrivere nel forum
6 risposte