Sto scrivendo un'app di ricettario di Rails come esercizio di apprendimento. Ho creato una tabella per Ricette che contiene informazioni per la ricetta (nome, autore, ecc ...). Ho anche una tabella per gli ingredienti che sarà una lista degli ingredienti principali, e poi una tabella intermedia che contiene informazioni specifiche per quella combinazione di ricetta / ingrediente (ad esempio, la tabella degli ingredienti avrebbe un elenco per Cipolla, la tabella avrebbe la quantità, la tecnica (fetta, tritare, ecc ...) e qualsiasi altra cosa per una particolare ricetta).
Ad ogni modo - funziona tutto bene, ma man mano che aggiungo ingredienti al tavolo, mi rendo conto che ci sono alcune categorie di ingredienti (spezie, verdure, carne, frutta, ecc ...) e hanno pezzi diversi di info Voglio registrarli. Ad esempio, carni e verdure potrebbero avere il campo della tecnica (tritare, tagliare, tritare, ecc.) Ma le spezie potrebbero avere un campo "spice_type" da registrare se è secco o fresco. Le carni potrebbero richiedere un campo di "doneness" (ben fatto, raro, ecc.) Mentre i frutti non ...
Quindi, il punto cruciale della mia domanda - è meglio avere una grande tabella di ingredienti con campi per ogni categoria, usando solo quelli che mi servono per una particolare riga, o è meglio creare cinque tabelle, una per ogni tipo di ingrediente?
Ho iniziato a codificarlo come tabelle separate, come sembrava corretto dato che sono in possesso di campi diversi per ogni tipo, ma poi ho realizzato quanto lavoro sarebbe stato per codificare 5 x modelli, 5 x controller, 5 x visualizzazioni, ecc. ...
SO, meglio riempire tutto in un tavolo (dopotutto, sono tutti ingredienti!), ogni record lascia solo i campi non applicabili nil e rende le mie viste / etc .. dinamiche per adattarsi a qualsiasi tipo di ingrediente viene lavorato con (in sostanza nascondendo o visualizzando i campi appropriati)?
Spero che abbia senso, quando arrivo su questo sito mi trasformo in uno sciocco vagabondo;)
Grazie per l'aiuto
Aggiornamento:
Ieri stavo preparando un po 'di birra e pensavo alle mie ricette di birra sulla falsariga dell'app del mio libro di cucina, e ho capito che le ricette di birra sono un esempio migliore di quello che sto cercando di capire, quindi qui di seguito c'è la stessa domanda un paradigma diverso:
Nelle mie ricette di birra, ho tre tipi di ingredienti. C'è malto, luppolo e lievito.
Sono comuni nel senso che sono tutti ingredienti e avranno tutti alcuni attributi comuni come Nome, Marca e Prezzo. Tuttavia, ci sono attributi specifici a ciascuno che gli altri non condividono - per esempio, Malt ha un attributo SRM (essenzialmente a colori), mentre Hops ha un attributo AA (alfa acidi), e il lievito ha un attributo Flocculation.
Quindi vado STI e stendo un tavolo come questo? id, tipo, nome, marca, prezzo, srm, aa, flocculazione
Inoltre, la tabella "in-between" conterrà informazioni diverse su ciascuna. Tutti gli ingredienti avranno un attributo Amount, ma il luppolo avrà un BoilTime e i malti avranno un MashTemp, ecc ...
Quindi uso una tabella con STI e una tabella "in-between" per unirmi? Devo fare anche lo STI "in-between"?
Ho un sacco di letture da fare! :)