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

    [MYSQL][PHP]Relazioni tabelle MYSQL!

    Salve a tutti!

    Sto lavorando ad un piccolo progetto ma avrei bisogno di alcuni chiarimenti per quanto riguarda le relazioni tra tabelle gestibili in MYSQL. Per cominciare ho due tabelle :

    Tabella Utenti
    id_utente PRIMARIA ( Auto Inc. )
    username
    password
    id_hardware

    Tabella Hardware
    id_hardware PRIMARIA ??
    cpu
    mobo
    video
    monitor

    Vorrei creare una relazione in modo che ogni utente abbia la sua tabella dedicata con tutte le informazioni sulla configurazione hardware. In poche parole come risultato finale vorrei avere una pagina dove venga visualizzato l'username dell'utente con la sua relativa configurazione hardware. Leggendo alcune guide su HTML.IT ho capito che le relazioni in SQL vengono gestite tramite il comando JOIN ( In questo caso LEFT JOIN? ) ma ho dei problemi.

    Potrei avere un chiarimento a riguardo?
    Grazie mille!

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    definisci una chiave primaria sulla seconda tabella e fai una query del tipo

    codice:
    SELECT * FROM utenti u
    JOIN hardware h ON u.id_hardware = h.id_hardware
    WHERE u.id_utente = '1'
    cambiando il where secondo le condizioni che ti servono
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Grazie mille...funziona alla perfezione!Davvero grazie!

  4. #4
    E se invece di visualizzare i dati volessi inserirli? :master:

  5. #5
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Allora, se la configurazione hardware dell'utente può essere solo una, non è necessario nemmeno separare le due tabelle, ma basta che accorpi i campi della tabella hardware a quella di utente.

    Questo se la maggioranza degli utenti ha una configurazione, oppure la stessa è obbligatoria altrimenti separare le due tabelle può avere il suo senso.

    Comunque, mettiamo il caso che tu abbia un'interfaccia da cui poter inserire subito sia i dati utente che di configurazione.

    Nel momento in cui fai un submit della form esegui una INSERT nella tabella dell'hardware, recuperi l'ID inserito (si come chiave primaria ed autoincrementale) e subito dopo esegui l'INSERT sulla tabella utenti (chiave primaria autoincrementale) specificando nella chiave esterna id_hardware il valore appena memorizzato nella tabella hardware.

    Per massimizzare le prestazioni di lettura metti pure un indice UNIQUE sulla chiave esterna id_hardware della tabella Utenti.

    Ciao.

  6. #6
    Il mio progetto prevede che un utente, dopo essersi registrato, possa accedere ad un pannello di controllo dove inserire tutte le informazioni riguardo la propria configurazione hardware. Ovviamente ognuno inserirà le caratteristiche del proprio PC.

    In pratica...

    Durante la registrazione inserisco un record VUOTO nella tabella HARDWARE e poi nella tabella UTENTI inserisco Username, Password e l'ID corrispondente al record Id_Hardware giusto?

    Grazie per l'aiuto!

  7. #7
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    In realtà se la relazione è 1:1, come ho detto prima puoi benissimo accorpare tutto sotto l'unica tabella Utenti o meglio ancora, togliere la chiave esterna id_hardware da Utenti e mettere anche id_utente come chiave primaria della tabella hardware.

    In quest'ultimo caso avresti una sottotabella della prima.

    Di solito viene fatto ciò per evidare la ridondanza di dati NULL per relazioni senza vincoli di partecipazione tra le tabelle.

    Quello che ti consiglio per non stravolgere il lavoro fatto sin'ora è di:

    - togliere la chiave esterna dalla tabella utenti id_hardware.
    - Quando l'utente inserirà i dati del suo pc sarà loggato quindi ovviamente conoscerai il suo ID precedentemente memorizzato
    - Quando inserisci i dati del pc li associ in un nuovo record alla chiave primaria id_utente nella tabella hardware.

    es:
    UTENTI
    id_utente (chiave primaria autoincrementale)
    username
    password

    HARDWARE
    id_utente
    cpu
    mobo
    ...

    nella tabella Hardware id_utente funge sia da chiave primaria che da chiave esterna della tabella Utenti.

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.