Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [MySQL] Parere su query da lanciare

    Salve a tutti,

    vorrei ricevere un parere da voi. Vorrei sapere se la query lanciata è "sulla strada giusta" oppure se ci sono modi migliori per ottenere lo stesso risultato.

    Dunque ho delle tabelle strutturate in questo modo:

    #Staff_persona
    - id_persona (pk)
    - nome
    - cognome

    # Staff_email
    - id_persona (fk)
    - email

    # Staff_telefono
    - id_persona (fk)
    - telefono

    # Staff_ruolo
    - id_ruolo (pk)
    - ruolo

    # Rel_staff_pr (che sta per tabella di relazione tra le persone e il ruolo investito)
    - id_persona (fk)
    - id_ruolo (fk)


    La query che lancio per ottenere tutti i nomi e cognomi con gli indirizzi email e i numeri di telefono E il ruolo rivestito da essi è la seguente:


    codice:
    SELECT p.nome, p.cognome, e.email, t.telefono, r.ruolo 
    FROM staff_persona AS p 
    LEFT JOIN staff_email AS e ON p.id_persona = e.id_persona 
    LEFT JOIN staff_telefono AS t ON p.id_persona = t.id_persona 
    LEFT JOIN rel_staff_pr AS pr ON p.id_persona = pr.id_persona 
    LEFT JOIN staff_ruolo AS r ON r.id_ruolo = pr.id_ruolo
    La seguente query mi restituisce i risultati proprio come voglio io. In caso qualcuno non ha un indirizzo email, oppure un numero di telefono, oppure non riveste alcun ruolo, tali valori saranno NULL(i).

    La domanda è: ci sono modi migliori per formulare la query ed ottenere gli stessi risultati oppure questo è di già il miglior metodo?


    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: [MySQL] Parere su query da lanciare

    La query mi sembra corretta.
    Non ho capito una cosa, se l'utente ha più di una mail a te sta bene che venga replicata tutta la riga?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Giusta osservazione. Ma in questo caso specifico una persona NON avrà più di un indirizzo email. Ne avrà solo uno.

    La query si, è corretta. Non so se ci sono modi per ottimizzarla.

    L'altro giorno si discuteva sul fatto che magari, per evitare l'uso delle JOIN si sarebbe potuto includere il campo email e il campo telefono nella tabella #Staff_persona direttamente e in caso questi non l'avessero, metterlo di default a NULL.

    Ma io cocciuto ho preferito questa soluzione anche per una questione di normalizzazione ..quindi non avere (anche se non è che siano questo gran peso) diversi potenziali valori NULL.

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da wartpro
    Giusta osservazione. Ma in questo caso specifico una persona NON avrà più di un indirizzo email. Ne avrà solo uno.

    La query si, è corretta. Non so se ci sono modi per ottimizzarla.

    L'altro giorno si discuteva sul fatto che magari, per evitare l'uso delle JOIN si sarebbe potuto includere il campo email e il campo telefono nella tabella #Staff_persona direttamente e in caso questi non l'avessero, metterlo di default a NULL.

    Ma io cocciuto ho preferito questa soluzione anche per una questione di normalizzazione ..quindi non avere (anche se non è che siano questo gran peso) diversi potenziali valori NULL.
    A livello di normalizzazione, essendo, il campo mail un attributo semplice dell'entità staff_persona può correttamente essere presente sulla tabella dell'entità principale. Ha senso spostarle su una tabella a parte quando la relazione non è 1:1 ma 1:N (da qui la mia domanda). E' anche vero che se la tabella principale diventa molto grande a livello di colonne, può avere senso splittare in più tabelle tali informazioni.

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.