Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Database con campo che immagazzina pi� valori da altre tabelle connesse

    Salve mi chiamo Valerio e vorrei creare un database con una struttura molto simile a quello che si potrebbe pensare per un ricettario. Mi trovo bloccato nel sviluppare una funzione che mi permetta immagazzinare in un unica colonna della tabella A pi� elementi provenienti da una tabella B.

    esempio
    Tabella ricette:
    id_ricetta:INT AI
    nome_ricetta:VARCHAR 255:
    cat_ricetta: collegata con comando FOREING KEY con tabella (categorie_ricette))
    Descrizione:VARCHAR 255
    Ingredienti:ingrediente1, ingrediente2, ingrediente3, ingrediente4 etc.....(Come posso immagazzinare pi� elementi provenienti dalla tabella 'Ingredienti' in un unica colonna della tabella 'ricette'?)

    Tabella Ingredienti
    id_ingrediente: INT AI
    nome_ingrediente:VARCHAR 255

    Tabella Categorie_ricette
    id_cat_ricette: INT AI
    nome_cat_ricette:VARCHAR 255

    Come penso avrete capito sono ancora alle "prime armi" con PHP e MySql, dovrei aver appreso le basi per la costruzione di tabelle MySql e la successiva interrogazione tramite php .
    Ora sto sviluppando questo piccolo progetto con lo scopo di esercitarmi e trovarmi bloccato su questo punto � sia motivante che frustrante.
    Qualche dritta ?
    Grazie Cordiali Saluti
    Valerio

  2. #2
    in questi casi (molti-a-molti: un ingrediente può far parte di più ricette, una ricetta può avere più ingredienti) la cosa migliore è fare una tabella cross

    tbRicette
    -------------
    idRicetta
    Descrizione

    tbIngredienti
    ---------------
    idIngrediente
    Descrizione

    tbRicetteIngredienti
    -------------------------
    idRicetta
    idIngrediente

    Così hai la massima flessibilità possibile


  3. #3
    Grazie Mille per la celere risposta, cercando sul sito ho trovato questa guida che parla delle relazioni tra tabelle molti a molti.
    http://www.html.it/articoli/join-cre...le-in-mysql-4/
    se ho capito correttamente la tue indicazioni nel mio caso dovrei creare il seguente schema di tabelle:

    tbRicette
    -------------
    idRicetta:1
    Nome:Pasta al pesto
    _________________________
    idRicetta:2
    Nome:Pizza
    _________________________
    idRicetta:3
    Nome:Pasta al sugo e formaggio


    tbIngredienti:
    ------------------
    idIngrediente:1
    Nome:Pasta
    _________________________
    idIngrediente:2
    Nome:Pomodoro
    _________________________
    idIngrediente:3
    Nome:Basilico
    _________________________
    idIngrediente:4
    Nome:Formaggio




    tbRicetteIngredienti
    ------------------------
    idRicetteIgredienti:AI 1
    idRicetta:1
    IdIngrediente:1
    _________________________
    idRicetteIgredienti:AI 2
    idRicetta:1
    IdIngrediente:3
    _________________________
    idRicetteIgredienti:AI 3
    idRicetta:1
    IdIngrediente:4
    _________________________

    idRicetteIgredienti:AI 4
    idRicetta:2
    IdIngrediente:2
    _________________________
    idRicetteIgredienti:AI 5
    idRicetta:2
    IdIngrediente:3
    _________________________
    idRicetteIgredienti:AI 6
    idRicetta:2
    IdIngrediente:4
    _________________________

    idRicetteIgredienti:AI 7
    idRicetta:3
    IdIngrediente:2
    _________________________

    idRicetteIgredienti:AI 7
    idRicetta:3
    IdIngrediente:3
    _________________________
    idRicetteIgredienti:AI 7
    idRicetta:3
    IdIngrediente:4
    _________________________


    nella tabella tbRicetteIgredienti vado ad inserire diverse volte idRicetta ad un corrispondente idIgredienti
    e poi successivamente li vado a selezionarli con le query indicate nel link.
    Domanda (forse stupida) anche la tabella tbRicetteIgredienti dovr� avere un id auto-incrementante?
    Il ragionamento sullo schema delle tabelle � corretto?
    Ciao grazie cordiali saluti.

  4. #4

  5. #5
    Grazie optime per i consigli , ora sono riuscito nel mio primo intento, ho creato le mie tabelle e le ho richiamate con questo codice trovato sul link precedente

    SELECT libro.titolo, GROUP_CONCAT(DISTINCT categoria.nome
    ORDER BY categoria.nome ASC SEPARATOR ‘, ‘) AS categorie
    FROM libro JOIN libro_in_categoria ON (libro.id = libro_in_categoria.libro)
    JOIN categoria ON (categoria.id = libro_in_categoria.categoria)
    GROUP BY libro.id ORDER BY titolo ASC

    tutto funziona come dovrebbe .
    Nel pensare al passaggio successivo cioè permettere ad un utente admin di creare una nuova ricetta (scrivere dati nelle tabelle tbRicette e tbRicetteIngredienti) tramite un form di controllo in cui appariranno i seguenti campi indispensabili:


    Nome Ricetta: ( verrà scritto nella tabella tbRicette)
    Descrizione procedimento: ( verrà scritto nella tabella tbRicette)
    Ingredienti ricetta: ( verrà scritto nella tabella tbRicetteIngredienti)

    il dubbio è di tipo logico:
    dato che la tabella “tbRicetteIngredienti” dipende dai dati della tabella “tbRicette” più i dati “tbIngredienti”, se non esiste ancora il dato da inserire nella tabella “tbRicette” da associare agli ingredienti nella tabella “tbRicetteIngredienti” io come posso scrivere nella tabella “tbRicetteIngredienti” per inserire gli ingredienti da abbinare al piatto?

  6. #6
    ovviamente questo non è un problema di db, ma di interfaccia client: dovrà permettere di inserire un nuovo ingrediente nel momento in cui si inserisce la ricetta. Chiedi nel forum apposito (dipende dal linguaggio che userai per scrivere il client)

  7. #7
    Capito, scusa per l'errore, grazie mille per i consigli ora per altri dubbi mi rivolgerò in altre parti del forum.
    Thanks

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