Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420

    consiglio struttura tabella

    Ciao a tutti;
    siccome sono alle prime armi, ho un dubbio sulla struttura da dare ad una tabella che sto creando;
    i dati che devo salvare sono di questo tipo:

    userippo
    id:123456 (chiave primaria)
    mele:500
    flagmele: si/no
    pere: 150
    flagpere:si/no
    arance: 300
    flag arance: si/no
    //altri frutti

    In pratica salvo un user, il suo id e la quantità di ogni frutto. Il flag si/no abbinato ad ogni frutto non mi indica solo la presenza attuale, ma anche l'eventuale presenza passata, quindi non posso rinunciarvi (o almeno non saprei in che modo sostituirlo).
    In primo luogo quindi ho creato la tabella fedelmente con questa struttura:

    user|id|mele|flagmele|pere|flagpere|arance|flagara nce|altrifrutti

    Mi sembrava però troppo dispersiva e l'ho quindi rielaborata in questo modo:

    user|id|frutto|flag|quantita
    pippo|123|mele|si|500
    pippo|123|pere|si|150
    pippo|123|arance|si|300
    pluto!456|mele|si|400
    ecc

    Questa seconda struttura è si più compatta, ma non avrei una chiave primaria (o meglio la chiave sarebbe data da id e frutto) inoltre il numero delle tuple esplode rispetto alla precedente struttura... (numero utenti * numero frutti)
    Mi sapete dire quale delle due vie è la più prestante e logicamente corretta? O se c'è una terza via...
    Grazie a tutti

  2. #2
    tre tabelle

    users (userId, più tutte le caratteristiche dello user)
    frutti (fruttoId, più tutte le caratteristiche del frutto)
    usersfrutti

    quest'ultima tabella avrà
    userId
    fruttoId
    quantita

    eviti così l'uso del flag


  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Ciao,
    grazie per la risposta!
    La tabella utenti ce l'ho;
    ma nn mi è chiaro nella tabella "frutti" oltre il nome del frutto cosa ci andrebbe? non ci sono altre caratteristiche... se interpreto bene dovrei mettere l'iduser e l'idfrutto in modo da poterla usare come ponte per i join successivi con la tabella delle quantità?
    quindi avrei una tabella:

    userid
    fruttoid

    e un'altra

    fruttoid
    quantità

    Non mi sembra molto corretto ma forse nn ho capito bene...

  4. #4
    Ciao,

    Concordo con optime.

    Nella tabella frutto avresti idFrutto (eventualmente un progressivo) e il nome del frutto (mela, pera ecc)

    Relazioni le 2 tabelle con la terza tabella indicata da optime ed effettivamente non ti serve il flag.
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Uhm...
    scusate ma continuo a non capire...
    Nella tabella frutto, visto che nn ci sono altre caratteristiche, oltre al nomefrutto cosa devo inserire? L'idfrutto in questa tabella è un duplicato visto che non potrei avre due volte la voce "mele"; quindi questa tabella sarebbe composta dall'unico campo "nomefrutto" (o idfrutto) che dir si voglia...
    quindi ricapitolando io avrei una struttura di questo tipo:

    tabella user:
    iduser|altre|caratteristiche|user

    tabella frutto
    Idfrutto

    tabella userfrutto
    iduser|idfrutto|quantita

    La tabella frutto mi sembra inutile... e in che modo viene simulato il flag?
    Grazie per l'aiuto che mi state dando!

  6. #6
    NON è inutile, perché ti permette di fare la terza tabella in verticale anziché in orizzontale (come una tabella excel per intenderci), risparmiandoti il flag (come? mettendo nella terza tabella solo i frutti che ti interessano, pensaci...)



  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Boh... non sono convinto
    resta il fatto che se avessi 1000 utenti e 40 frutti, nella terza tabella avrei 40.000 record più altre 2 tabelle, invece di un'unica tabella con 1000 record come nel mio esempio iniziale...
    Siamo sicuri che sia più performante?

  8. #8
    avresti 40.000 record (che comunque sono niente per un db) se tutti gli utenti prendessero SEMPRE tutti i frutti: in quel caso le tre tabelle sarebbero troppe.

    ma se invece gli utenti prendono qualche frutto si e qualche frutto no (ed è così perché altrimenti non avresti previsto il flag) allora i 40.000 diventano molti ma molti meno (tralasciamo la maggiore facilità di interrogazione col metodo delle tre tabelle).

    poi fai come vuoi (e divertiti a ristrutturare la tabella ogni volta che aggiungi un frutto )


    buon lavoro

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Mi aiuti a fare un esempio pratico del riempimento delle tabelle?
    Se ad esempio avessi questa situazione:

    user 001: 300 mele; mai avuto pere; 100 arance;
    user 002: mai avuto mele; in passato aveva pere; 200 arance;
    user 003:mai avuto mele, mai avuto pere, mai avuto arance;

    la tabella user possiamo tralasciarla;

    la tabella "frutta" cosa contiene? Se ho capito bene conterrà comunque un unico campo (id_frutto o nome_frutto) e l'elenco di tutti i frutti disponibili a prescindere;

    la tabella user_frutta cosa conterrà?

  10. #10
    ragionaci su un attimo, che hai tutte le indicazioni (rileggi i post precedenti) : secondo me ci arrivi da solo

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.