come consentire al codice di memorizzare un numero indeterminato di colonne?
-
27-09-2019 - |
Domanda
Penso che la mia domanda potrebbe non essere chiara, ma proverei a spiegarla con un esempio.
supponiamo che avessimo circa 100 modelli di auto diversi, chiaramente tutte le auto avrebbero parti o specifiche comuni, ma non tutte le parti sono condivise tra tutte queste 100 marche di automobili
qual è la procedura migliore per archiviare queste specifiche in questo caso?
la mia idea era di memorizzare le specifiche più comuni in ciascuna colonna e le specifiche indeterminate (il resto) potevano essere salvate o serializzate come array come oggetto o array.
La dottrina semplifica questa operazione da questi dati (Array-Object) Pensi che sia una buona idea o potresti condividere con me la tua esperienza
ecco la mia idea in 2 semplici tabelle
Table 1
|-------|--------|-------|-------|-------|
| Id | brand |engine |desiel | blah..|
|-------|--------|-------|-------|-------|
| 1 | old car| 1.6 | yes | blah..|
|-------|--------|-------|-------|-------|
Table 2
|-------|--------|----------------------|
| Id | car_id | un common info |
|-------|--------|----------------------|
| 1 | 1 |array of informations |
|-------|--------|----------------------|
penso che la mia idea sia pessima perché interrompe la capacità di ricerca
Altri suggerimenti
Se devi attenersi a MySQL, come dicono Paul e Netcoder, EAV sarebbe la soluzione da scegliere.
A meno che non venga gestito con attenzione, EAV presenta tuttavia problemi di scalabilità e il tuo caso d'uso sembra che sarebbe meglio risolto da una soluzione NoSQL (database non relazionale) come Couch o Mongo.
I database orientati ai documenti come questi sono costruiti attorno alla logica secondo cui un'entità non ha un numero fisso di campi, ad esempio un prodotto e i dati su tutte le sue immagini risiedono all'interno di un "documento".
Una soluzione comunemente usata è quella di avere una tabella che accetta coppie di valori-chiave (comunemente chiamato EAV):
|-------|--------|-------|
| carId | name | value |
|-------|--------|-------|
| 1 | engine | 4cyl |
|-------|--------|-------|
sta costringendo il numero ei tipi di colonne certamente impossibile? Anche se si consente per alcune fra le più vaghe? Se si potesse determinare le colonne, sarebbe necessaria alcuna soluzione complessa. Potrebbe essere l'opzione meno doloroso. Solo un pensiero.
Utilizzare una tabella per ogni combinazione unica di attributi, ma anche mettere gli attributi comuni in tabelle che sono condivise tra i tutti i tipi di auto che hanno tali attributi in comune. L'idea è quella di garantire che ogni possibile tupla che descrive una macchina può apparire solo in un posto nello schema. C'è un nome per questo principio:. Il principio di disegno ortogonale