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

    Progettare struttura DB

    Buonasera a tutti, ho bisogno del vostro aiuto, se volete!

    Mi trovo a dover creare la struttura di un database, e vorrei qualche consiglio.

    Il database dovrà contenere due tabelle, Fornitori e Prodotti.

    L'utente dovrà essere in grado di cercare tra i prodotti (ma anche tra i fornitori), e per ogni prodotto trovato dovrò avere l'indicazione del relativo fornitore.

    Ho creato la tabella Fornitori, con questi campi:
    id
    nome fornitore
    indirizzo fornitore

    ora, devo creare la tabella Prodotti, che deve contenere: Nome, Descrizione, Prezzo, Url immagine.
    Per non ripetere i dati del fornitore, ho pensato di creare una nuova tabella. Ma come crearla per fare in modo che, scegliendo un prodotto, sappia a che fornitore esso è associato e abbia la possibilità di interrogare il db per sapere i dettagli del fornitore?

    E' la strada giusta questa? Datemi qualche consiglio perfavore, è la prima volta che faccio qualcosa di più che un SELECT con con mysql!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    Beh non è facile darti un suggerimento con cosi pochi dati a disposizione.

    Secondo me la soluzione ottimale per collegare i prodotti e fornitori è questa:

    FORNITORI

    Id_fornitore (Primary Key)
    Nome
    Indirizzo


    PRODOTTI

    Id_prodotto (Primary Key)
    Id_fornitore
    Nome
    Descrizione
    ecc...

    Mi raccomando di specificare quali sono le primary key.


    P.s. Questo schema va bene solo nel caso un prodotto può avere un solo fornitore...
    Se il prodotto può avere piu' fornitori lo schema va cambiato...
    FAMMI SAPERE!!!

  3. #3
    no no, il prodotto ha sempre un solo fornitore.

    Da questo articolo di freephp ho imparato un metodo che si sposa alla perfezione con la struttura che mi hai suggerito: il metodo join.

    Così, per collegare un prodotto al suo fornitore, quando questi stanno su 2 tabelle distinte, faccio:

    SELECT prodotto, nome FROM prodotti
    LEFT JOIN fornitore ON prodotti.fornitore = fornitore.nome

    Ora mi diverto... Grazie!

    P.S. Ma la key primaria è sempre id? O quella di join? Oppure quella sulla quale si fanno le ricerche?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    La chiave primaria non dipende assolutamente da id o da ricerche.

    Deve essere un campo univoco..cioè i dati non si devono ripere mai.
    Per l'identificazione delle persone si potrebbe usare il codice fiscale, in questo mod si identifica l'utente senza correre rischi di avere qualche doppione!!.
    Ricapitolando deve identificare ogni record (riga) del database in maniera univoca.

    Esatto potresti collegare le due tabelle proprio tramite Join.Ma il tuo codice non è corretto:

    SELECT prodotto, nome FROM prodotti
    LEFT JOIN fornitore ON prodotti.fornitore = fornitore.nome
    **1 prodotto dopo la select non è presente nell' esempio che abbiamo visto.


    **2 Devi fare così:
    SELECT prodotto, nome FROM prodotti
    LEFT JOIN fornitore ON prodotti.Id_fornitore = fornitori.Id_fornitore

    Potresti anche togliere il left join e usare direttamente il join.

    Oppure puoi fare in questo modo:

    SELECT prodotto, nome FROM prodotti,fornitori Where fornitore ON prodotti.Id_fornitore = fornitori.Id_fornitore

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