Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    MySql inserire array in un singolo campo per evitare di creare tabella molti a motli.

    Salve a tutti , ho una domanda puramente teorica .
    Vorrei creare un sistema con php e MySql in cui per esempio ad un prodotto vengano associati vari "tag" colore.
    Esempio

    Tabella prodotto:
    id Nome
    1 "Sedia"
    2 "Tavolo"
    3 "Poltrona"

    Tabella colore:
    id Colore
    1 "Rosso"
    2 "Verde"
    3 "Blue"

    Come prima soluzione utilizzerei una tabella molti a molti per associare quanti colori voglio al prodotto , come ad esempio
    Tabella prodotto colore

    id idProdotto idColore
    1 1 2
    2 1 3
    3 2 1
    4 2 2
    5 2 3
    6 3 1
    7 3 3

    La seconda soluzione che ho pensato e testato � stata di creare una terza colonna nella tabella prodotti in cui inserire come un array gli "id" della tabella colori, cosi facendo non devo creare una tabella molti a molti per associare i colori ai prodotti .
    Esempio

    Tabella "prodotto modificata":
    id Nome idColore
    1 "Sedia" "2,3"
    2 "Tavolo" "1,2,3"
    3 "Poltrona" "1,3"

    In questo caso al posto di utilizzare una query MySql sulla tabella "prodotto_colore" per sapere in che colori sono disponibili i vari i prodotti, andrei ad utilizzare il php per ciclare la colonna idColore della tabella "prodotto modificata" ottenendo cos� gli "id" dei colori disponibili per il prodotto.

    Senza entrare nei dettagli delle query MySql e del codice php ho testato con successo entrambe le soluzioni (testato in locale "MAMP").


    Ora la mia domanda � se la seconda soluzione la si pu� ritenere valida per un progetto in ambito professionale e se per caso qualcuno utilizza o ha utilizzato un sistema simile.

    Spero di essere riuscito a spiegare il mio quesito.
    Ciao grazie

  2. #2
    io preferisco la soluzione a db, vuoi per questioni di performance che per questioni di manutenibilità (pensa agli aggiornamenti....)

  3. #3
    Ciao Optime , grazie per la celere risposta.

    Con aggiornamenti intendi per esempio aggiungere o rimuvore un tag da un elemento?

    Se è quello che intendevi per adesso mi sto appoggiando a script in javascript per inserire e rimuovere i tag senza che ci sia la comunicazione con il database tutte le volte ma solo quando aggiorno lo stato finale del prodotto.

    Per quanto riguarda le performance , la soluzione db rimarrebbe più performante anche nel caso di database con 500.000 o 1.000.000 di voci o più , quindi di conseguenza una taballe molti a molti con ancora più voci?

    Scusa se le domande sono da "profano" ma sto cercando di capire quale potrebbe essere la soluzione migliore per un progetto.
    Ciao Grazie

  4. #4
    più sono i record più il db è performante. è il suo lavoro

  5. #5
    la tua risposta mi lascia perplesso....
    Forse mi sto facendo influenzare da una logica non corretta per l'ambito database.
    Ovvero meno dati dovrebbero richiedere meno risorse e quindi performance maggiori.
    Sto indagando per capirne di più

  6. #6
    Quello che voglio dire è che il db (in proporzione ovviamente) performa di piu rispetto a una soluzione "da codice" via via che aumentano i volumi. In pratica, con pochi dati non vedi la differenza, con tanti sì.

    Poi, come tutte le cose, dipende da quello che devi fare. Per esempio, ti capiterà mai di chiedere: dammi tutti gli oggetti di colore verde?

  7. #7
    Poi, come tutte le cose, dipende da quello che devi fare. Per esempio, ti capiterà mai di chiedere: dammi tutti gli oggetti di colore verde?
    Si e No, è possibile che faccia anche la richiesta di selezionare tutto, ovviamente nel caso andrei ad aggiungere la clausola "LIMIT" nella query per non avere una quantità di dati troppo massiccia.

    Però il mio dubbio maggiore è quando ad una richiesta di visualizzare i dati ,anche semplicemente 30 alla volta, la ricerca di questi dati in tabelle che contengono un grosso numero di righe diventi poco performante.

  8. #8
    se vuoi provare con mano, creati un archivio farlocco di tre milioni di righe e fa' le tue prove

  9. #9
    Non voglio dubitare di chi ha più esperienza di me , ci mancherebbe altro e mi rendo conto che la mia domanda è abbastanza generica e particolare allo stesso tempo.

    Se trovassi il modo di creare in automatico un database fittizzio con milioni di voci con le caratteristiche che servono a me lo avrei già fatto, ma per farlo non saprei bene neanche da dove partire.

    Grazie comunque per i consigli e chiarimenti che mi hai dato

  10. #10

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 © 2020 vBulletin Solutions, Inc. All rights reserved.