Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [MySql] foreign key...

  1. #1

    [MySql] foreign key...

    salve a tutti, è da poco che smanetto con sql, ma sono arrivato ad un punto che non riesco ad andare avanti....

    uso MySql in locale, con SQL manager 2010, e sto sviluppando il classico esercizio rappresentanti, aziende ecc....

    ci sono rappresentanti che vendono prodotti alle aziende, e aziende che hanno a disposizione diversi rappresentanti. i rappresentanti vendono prodotti anche uguali tra loro, e vorrei mostrare con una view, una tabella con relazione "molti a molti"....

    avrei bisogno di usare foreign key, ma non ne riesco proprio a venirne a capo

    sono almeno un paio di giorni che faccio ricerche, e ora avrei bisognno del vostro aiuto!!!!!

    apro la tabella "aziende" e vado nella scheda "foreign key".

    1. nel campo "table fields" seleziono il campo "id_rappresentante"
    2. nel campo "foreign table fields" attivo la tabella "rappresentanti", e seleziono il campo univoco "id_rappresentante".
    il ddl è questo
    codice:
    CREATE TABLE `aziende` (
      `id_azienda` int(11) NOT NULL AUTO_INCREMENT,
      `nome_azienda` varchar(20) DEFAULT NULL,
      `indirizzo` varchar(20) DEFAULT NULL,
      `citta` varchar(20) DEFAULT NULL,
      `cap` varchar(7) DEFAULT NULL,
      `id_nazione` int(11) DEFAULT NULL,
      `partita_iva` varchar(13) DEFAULT NULL,
      `id_settore` int(11) DEFAULT NULL,
      `id_rappresentante` int(11) DEFAULT NULL,
      PRIMARY KEY (`id_azienda`),
      KEY `id_rappresentante` (`id_rappresentante`),
      KEY `id_azienda` (`id_azienda`,`nome_azienda`),
      KEY `id_nazione` (`id_nazione`),
      CONSTRAINT `aziende_fk` FOREIGN KEY (`id_rappresentante`) REFERENCES `rappresentanti` (`id_rappresentante`)
    ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 AVG_ROW_LENGTH=3276;
    ora come posso procedere per visualizzare tutte le combinazioni tra "azienda" e "rappresentante"????


    grazie in anticipo,spero di essere stato chiaro!!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    semplice, non ci riesci.
    O meglio non è che la FK "magicamente" faccia qualcosa, essenzialmente è una facilitazione per avere le "cancellazioni a cascata" (sì, e tante altre cose, ma non andiamo troppo nel dettaglio).

    La "R" sta per "relazionale": devi porre in relazione le informazioni presenti nelle tabelle, cosa che si fa coi mitici join.

    Attenzione "tabellE" plurale può anche significare "tabellA" usata due volte (singolare), ossia messa in relazione con sè stessa (meglio un suo sottoinsieme).
    ---
    Confuso? Spero di no, ma ritengo meglio procedere "maieuticamente" piuttosto che "imperativamente" (anche perchè in quest'ultimo caso spesso vado giù troppo pesante per questo forum )

  3. #3
    e allora qual'è la differenza tra join e foreign key??

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    che "join" mette in RELAZIONE due campi (qualsiasi "due campi") di due (in realtà anche una) tabelle diverse.

    una FK mette in relazione UN campo BEN PRECISO di una tabella con UN CAMPO ben preciso di un'altra.

    ---
    Operativamente, come accennato, la FK serve per attivare (o meglio "nascondere") dei trigger.

    Del genere "cancello una riga della tabella X? automaticamente mi si cancellano tot righe della tabella Y"

  5. #5
    ok, grazie

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.