Attualmente sto pianificando la mia prima applicazione eCommerce (mySQL e Laravel Framework).
Ho vari prodotti, che hanno tutti attributi diversi. Descrivendo i prodotti molto semplicemente, alcuni avranno un produttore, altri no, altri avranno un diametro, altri avranno larghezza, altezza, profondità e altri avranno un volume.
Opzione 1: creare una tabella di prodotti master e separare tabelle per tipi di prodotti specifici (relazioni polimorfiche). In questo modo, non avrò campi null inutili nella tabella prodotti.
Opzione 2: crea una tabella di prodotti, con tutti i campi possibili nonostante il fatto che ci saranno molte righe null
Opzione 3: Normalizza in modo che ogni tipo di attributo abbia la sua tabella.
Opzione 4: crea una tabella attributes
, nonché una tabella attribute_values
con il valore varchar indipendentemente dal tipo di dati effettivo. La tabella dei prodotti avrebbe molte: molte relazioni con la tabella degli attributi.
Opzione 5: attributi comuni a tutti o alla maggior parte dei prodotti inseriti nella tabella prodotti e attributi specifici a una particolare categoria di prodotti associata alla tabella delle categorie.
I miei pensieri sono che mi piacerebbe poter consentire un facile filtraggio dei prodotti con questi attributi e ordinamento. Vorrei anche che il frontend fosse veloce, meno preoccupante per le prestazioni di inserimento e aggiornamento dei record di prodotto.
Sono un po 'sopraffatto dalle vaste opzioni di implementazione e non riesco a trovare una risposta adeguata in termini del miglior metodo di approccio. Qualcuno potrebbe indicarmi la direzione giusta?
In un mondo ideale, vorrei offrire il seguente tipo di funzionalità - link al mio negozio eCommerce. Come si può vedere, nella barra laterale, è possibile selezionare un attributo gli occhiali per filtrarli. per esempio. maschio / femmina o plastica / metallo / titanio ecc ...
In alternativa, dovrei semplicemente scaricare l'idea del database relazionale mySql e imparare mongodb?