• User

    Problema progettazione database MySQL

    Salve ragazzi, ho un serio (?) problema nel progettare il database per un sito che sto costruendo. Il problema è il seguente:

    Devo impostare ad ogni utente dei permessi in base ai prodotti acquistati, il che vuol dire che potrebbero aver acquistato più prodotti e non mi viene in mente un modo per memorizzare in database i loro acquisti senza infrangere le regole di normalizzazione o comunque senza avere una rindondanza eccessiva di dati..

    Ho già creato una tabella prodotti, ma se l'utente acquista più prodotti vorrebbe dire inserire in un campo colonna più dati, relativi all'ID di prodotto, e questo so che non è consigliato.. come fare??

    avevo pensati a questi casi:

    CASO 1: inserire più dati in un campo colonna

    Tabella Prodotti:

    ID | NOME | PREZZO
    1 Mouse 16
    2 Casse 25
    3 Ram 19
    4 Case 89

    ora se per esempio:

    Alberto ha acquistato il prodotto1 e il prodotto 4;
    Gianluca ha acquistato il prodotto 1, 2 e 3;

    si avrà una tabella user in questa maniera

    Tabella User:

    ID | NOME | COGNOME | PRODOTTI ACQUISTATI

    1 Alberto Rossi 1,4 (o con che simbolo si spazia?)
    2 Gianluca Verdi 1,2,3


    CASO 2: ***Tabella permessi con due chiavi esterne relative all'ID utente e ID prodotto:

    Tabella Permessi:

    ID | ID_USER | ID_PRODOTTO
    1 1 1
    2 1 4
    3 2 1
    4 2 2
    5 2 3

    però in questo caso avrei un record per ogni acquisto ripetendo anche più volte lo stesso utente..

    mi date un consiglio?!? _

    grazie mille!


  • User

    :mmm: farò domande strane io! nessuno risponde mai! :lol:


  • User

    mbhà..


  • User

    La seconda che hai detto 🙂

    A parte gli scherzi, la seconda soluzione è quella corretta, utilizzi una tabella di relazione tra le tabelle utenti e prodotti. E' inevitabile che vi siano più record relativi allo stesso id utente, ma è la soluzione corretta.
    Probabilmente nella tabella di relazione non ti serve neanche il campo id, ti bastano id_utente e id_prodotto.


  • User Attivo

    Ciao, forse ho capito il tuo problema
    con un solo prodotto sarebbe stato semplice abbinarlo attraverso l'id_prodotto, tu vai in difficoltà perchè una persona può acquistare più prodotti insieme. Allora prova a creare un array e dentro inserisci tutti i prodotti, tipo:```
    1=>mela, 2=>pera

    poi attraverso la funzione implode fai l'inserimento, e ti recuperi i dati con la funzione explode.
     
    Spero che qualcuno molto più bravo ti dia un consiglio migliore
     
    ciao da danny:ciauz: