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

    [sql] Problema tabelle relazionate

    Ciao ragazzi, sto un po a digiuno di DB mi serve un chiarimento.
    Ho un db con 2 tabelle, AZIENDE & FATTURE
    devo creare una relazione 1-N in quanto 1 azienda nell'arco dell'anno avrà N fatture.

    AZIENDE:
    -id
    -denominazione
    -ecc.

    FATTURE:
    -id_azienda
    -id_fattura
    -descrizione
    -quantita
    -iva
    -importo
    -ecc.
    --------------
    in tabella AZIENDE 'id' sarà una primary key con auto_increment
    in tabella FATTURA 'id_azienda' come sarà? che attributi deve avere?

    Ho bisogno di relazionare le tabelle in quanto successivamente farò una join fra azienda e le sue N fatture. Chi mi aiuta?
    www.gicchesto.com
    Servizi informatici ed elettronici a 360° per aziende e/o privati.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Ciao,
    id_azienda sarà uguale a id(che essendo auto_increment deve essre di tipo unsigned int).Inoltre,devi avere in fattura una foreign key verso id della relazione aziende.Infatti,all'atto di un inserimento in fattura id_azienda deve essere uguale ad uno degli id in Aziende se non è così ti viene rifiutato l'inserimento e ti viene segnalato la violazione del vincolo.

    create table Fatture(
    id_azienda unsigned int(9) references Aziende(id) on delete cascade,
    ........
    ........
    );

    Questo dice al server che in Fatture ci possono essere solo id_azienda che si trovano in Aziende sotto la voce id.Se una azienda viene cancellata per un qualsiasi motivo verranno cancellate anche le fatture corrispondenti.Oppure se non vuoi che le aziende vengano cancellate puoi scrivere "on delete no action".Puoi anche dare una politica per gli update su Aziende,in questo caso non vedo il motivo per aggiornare l'id di una azienda dato che hai usato l'auto_increment.Non so se sono stato chiaro e se ho capito il problema.Non esitare a chiedere.Saluti.

  3. #3
    Ciao e grazie prima di tutto per il tuo tempo e risposta.
    Ti dirò come avevo affrontato in principio:
    alla tabella aziende il campo 'id' è un autoincrement primary key.
    Poi per mia teoria, sbagliata o giusta che sia non so,
    alla tabella FATTURE il campo 'id_azienda' è ovviamente uguale a 'id' (AZIENDA) con attributo di foreign keys...
    Io ricordavo che si usa fare cosi per relazionare...cioè assegnare alla tabella associata una foreign key che si colleghi alla primary key 'id' della tabella principale.
    ----
    Che ne pensi? grazie. Mauro
    www.gicchesto.com
    Servizi informatici ed elettronici a 360° per aziende e/o privati.

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