Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Database Relazionali

  1. #1

    Database Relazionali

    Salve ragazzi poiché è da poco che studio php e mysql vorrei creare una specie di scheda per mio fratello il quale ripara telefoni mobili e quindi volevo sapere se secondo il vostro parere è giusto suddividere le varie tabelle in questo modo:


    ----------------ALL'INTERNO DI UN UNICO DATABASE ----------------
    CLIENTE

    • Id
    • Nome
    • Cognome
    • Ragione sociale
    • Numero di telefono

    TELEFONO

    • Id
    • Marca
    • Modello
    • Imiei

    SCHEDARIO

    • Id
    • Data inserimento
    • Costo dell’operazione
    • Ricambio pezzi
    • Note personali
    • Note interpersonali
    • Descrizione problema
    • Stato attuale del telefono

    UNIONE

    //Tutti primari key --- questo relaziona tutti per la clausola where
    • Id cliente
    • Id telefono
    • Id schedario

    Ringrazio anticipatamente chiunque voglia darmi un consiglio o un suo parere

  2. #2
    Le schede non sono relazionate, a quanto vedo.
    La tabella UNIONE, per quello che ho capito, dovrebbe svolgere il ruolo che tu pensi, ma non è necessaria: basta mettere (per esempio) un campo ID_TELEFONO nella sceda cliente, o meglio ancora viceversa.
    Peraltro, dovresti aggiungere il campo ID_CLIENTE nella tabella dello schedario, se ti serve (per quello che ho capito) come riferimento delle riparazioni.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Per prima cosa ti ringrazio della tua attenzione

    Quindi come dici te (aggiungendo un idcliente sia nella tabella telefono sia nella tabella schedario) potrei impostare la clausola where in questo modo:

    select name, data_inserimento,marca …… from cliente, telefono, schedario where cliente.id= telefono.idcliente and cliente.id=schedario.idcliente

    giusto?

    In questo modo risparmio una tabella e codice -- sarebbe sicuramente un vantaggio- effettivamente i miei scopi principali sarebbero quelli di distinguere o poter distinguere clienti , telefoni e schedari ma nella ricerca collocarli nell'insieme in modo da poter così trovare quel problema di quel telfono di quel cliente.

  4. #4
    Senza un vincolo relazionale tra le tabelle, dovresti eseguire più query per ottenere comunque un risultato dubbio, in quanto si rischia che il risultato ottenuto contenga più record di quelli richiesti.

    Detto questo, le query su più tabelle si possono eseguire con sintassi SQL standard con con le parole chiave tipo JOIN.
    Non mi sono messo a vedere troppo la tua query (senza offese ma adesso non ho né tempo né voglia) però noto che c'è un errore di base: anche nelle colonne della query di SELECT devi concatenare nome_tabella.nome_colonna.

    Ti consiglio di andare ad informarti bene sulle query tra più tabelle al fine di ottenere una panoramica migliore sulla sintassi.

    Ricordati, nello strutturare le tabelle, che per ogni tabella che vuoi collegare ad una già esistente, devi inserire una colonna da usare come riferimento.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Per relazionare le tabelle infatti intentevo usare proprio quella query

    nome_tabella.nome_colonna

    (per questo ad esempio pensavo di utilizzare where cliente.id=tel.id_cliente and cliente.id = schedario.id_cliente

    il join per quanto ho potuto vedere serve proprio a trattare più tabelle come se fosse una sola e questo riportandolo a ciò che mi dice il libro lo dovrei aver effettuato con la clausola select .... from ....where (dati relazionati)

    per ciò che riguardano le query sql effettivamente nn mi preoccupano molto - però è logico che se non riesco a fare tutto ciò prima con mysql o quantomeno nn riesco a impostare bene il mio database è del tutto inutile che poi vai a creare codice php

    cmq vedrò di sbatterci la testa ancora un pochino...

    cmq perdona la mia insistenza però nn riesco a capire due cose:

    - Mi dici di relazionare le tabelle quando queste dovrebbero essere già relazionate tramite la clausola where e le colonne in comune (appunto where cliente.id=tel.id_cliente and cliente.id = schedario.id_cliente )

    - Mi dici che le tebalelle nn sono relazionate quando la relazione dovrebbe essere data proprio dalla clausola where cliente.id=tel.id_cliente and cliente.id = schedario.id_cliente )

    Cmq grazie lo stesso


    :quote:

  6. #6
    Originariamente inviato da emanuelevt1
    - Mi dici di relazionare le tabelle quando queste dovrebbero essere già relazionate tramite la clausola where e le colonne in comune (appunto where cliente.id=tel.id_cliente and cliente.id = schedario.id_cliente )
    - Mi dici che le tebalelle nn sono relazionate quando la relazione dovrebbe essere data proprio dalla clausola where cliente.id=tel.id_cliente and cliente.id = schedario.id_cliente )
    Forse sono stato un po' troppo conciso nella risposta!
    Intendevo che nella struttura delle tue tabelle, la prima che hai postato, non vedevo i campi che collegassero tra loro le tabelle stesse.
    Per questo ti dicevo prima di tutto di rivedere la struttura stessa del DB.
    Per capirci:

    codice:
    ----------------ALL'INTERNO DI UN UNICO DATABASE ----------------
    CLIENTE
    
    • Id_Cliente # usa dei nomi di colonna univoci nelle query di JOIN
    • Nome
    • Cognome
    • Ragione sociale
    • Numero di telefono
    • Id_Schedario # questo per collegarlo con l'omonima tabella
    
    TELEFONO
    • Id_Telefono
    • Marca
    • Modello
    • Imiei
    
    SCHEDARIO
    
    • Id_Schedario
    • Id_Telefono
    • Data inserimento
    • Costo dell’operazione
    • Ricambio pezzi
    • Note personali
    • Note interpersonali
    • Descrizione problema 
    • Stato attuale del telefono
    Forse con questo esempio sono stato un po' più chiaro.
    Non so... spero. Eventualmente posta di nuovo senza farti problemi.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.