Relazione tra due tabelle

di il
7 risposte

Relazione tra due tabelle

Salve a tutti, ho un dubbio: avendo due tabelle è possibile creare una relazione 1-N in cui nella seconda tabella porto la chiave primaria della prima tabella peró in due campi; ad esempio avro due campi , nome_richiedente e nome_dato, che si riferiscono tutti e due alla chiave primaria della prima tabella(ovviamente hanno contenuto diverso)

7 Risposte

  • Re: Relazione tra due tabelle

    Incomprensibile la richiesta...

    Se la Relazione è data da un Campo CHIAVE definito lato 1 come PK e lato molti come FK... perchè lato molti dovresti avere 2 Campi...?
    Come può essere poi che il 2° Campo abbia un valore diverso dal 1° visto che la PK dall'altra parte è la stessa...?

    Sicuro che non hai bisogno di una Relazione MOLTI-MOLTI...?
  • Re: Relazione tra due tabelle

    Ciao,guarda forse non sono stato chiaro io,ti mostro lo schema grafico così è più comprensibile che a parole:


    In pratica io ho una tabella clienti in cui sono registrati tutti i clienti di un ipotetico negozio;poi c'è una tabella acquisti in cui verranno registrati tutti gli acquisti che ogni cliente farà e devo registrare sia il cliente che acquista sia quello che ha venduto(id_acquirente,id_venditore).Ovviamente questi due id provengono dalla PK della tabella clienti(id_clienti).

    Ecco come potresti organizzare questa situazione?

    Ti ringrazio molto per la disponibilità
  • Re: Relazione tra due tabelle

    Ciao io credo che possa essere opportuno separare i 2 concetti ossia quello della vendita e quello dell'acquisto.

    Supponendo di non mettere relazioni tra le entita,
    Le entita' che verrebbero ad esserci sarebbero :

    Cliente con attributi gli stessi di prima

    Acquisto con attributi : IdAcquisto , data ed idCliente (dove idCliente indica il cliente che ha fatto l'acquisto)

    Vendita(IdVendita,Data,IdCliente) (dove idCliente indica il cliente che ha effettuato la vendita)
  • Re: Relazione tra due tabelle

    Ciao,
    guarda ci stavo pensando a usare questa soluzione proprio oggi pomeriggio, solo che si crea un altro problema che non riesco a risolvere(usando questa soluzione):
    praticamente io dovrei fare una query in cui devo visualizzare i clienti che hanno fatto più acquisti che vendite.
    Ovviamente devo prevedere che magari un cliente abbia fatto solo acquisti o solo vendite
    Mi potresti aiutare?
  • Re: Relazione tra due tabelle

    Restando sull'idea dell'utilizzo di 3 tabelle la tua query potrebbe essere piu' o meno cosi :
    
    select c.idCliente
    from cliente c join acquisto a on(c.codCliente = a.codCli)
    group by(c.idCliente)
    having count(*) > (
                                 select count(c.*)
                                 from vendite v
                                 where v.idCli = c.idCliente)
    
  • Re: Relazione tra due tabelle

    Ripartiamo in quanto mi pare manchino concetti basilari...!

    Le Tabelle devono essere RELAZIONATE, e le tue non lo sono... mi chiedo e ti chiedo perchè...?

    Innanzitutto non menzioni MAI l'oggetto delle transazioni...(intendo Acquisti/Vendite)...!
    Devi registrare anche gli Oggetti di Acq/Vend oppure solo i TOTALI...?
    Hai un'anagrafica delle merci da acquistare/vendere...?

    Se fai una RIVENDITA, mi pare ovvio che COMPRI e RIVENDI lo stesso Oggetto...
    Un Venditore potrebbe essere Acquirente...?

    Ho buttato quì molti concetti che ora chiariamo passo passo...!

    1) Anagrafica Oggetti, è una Tabella che deve contenere gli Oggetti che possono far parte di Transazioni, ovviamente dovrai poter definire dei Cataloghi con i Fornitori, quindi servirà una Relazione MOLTI-MOLTI con l'Anagrafica Fornitori(non ho scritto Acquirenti in quanto devono poter comprare tutto ed in questo caso non si tratterebbe di Cataloghi ma di preferenze)
    2) Anagrafica Acquirenti/Fornitori... è un'anagrafica con i dati fondamentali, servirà poi una Tabella 1-M che definisce se l'anagrafica è Acquirente/Fornitore/Entrambi... necessario per la successiva Selezione di CAUSALE
    3) Transazioni o Movimenti
    Va da se che la tabella è unica, cosa cambia la CAUSALE ed il Segno del Totale(eventualmente)
    Quì registri la CAUSALE(Acq/Vend), gli attori della transazione(selezionandoli dalla tabella anagrafica Filtrando solo in base alla CAUSALE il codice, la data ed altri dati specifici..
    4) Dettaglio di Transazione o Distinta base nella quale, in base all'Utente andrai a rendere disponibile solo gli Oggetti del Catalogo Fornitore...

    Ci sono altre cose da considerare, ma credo tu debba prima metabolizzare la Struttura NORMALE.
    Cerca di Analizzare in modo Razionale e tecnico le esigenze senza farti ingannare da semplificazioni non corrette...
  • Re: Relazione tra due tabelle

    Ciao,
    scusa ma non riesco a capire come devo risolvere il problema.
    Vi ringrazio per la disponibilità e la pazienza che mettete
Devi accedere o registrarti per scrivere nel forum
7 risposte