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

    funzionamento foreign key

    ieri parlando con un programmatore mi spiegava le foreign key su sql server etc...

    lui non ha mai usato mysql quindi non lo sapeva, e io invece che lo uso sempre non lo so nemmeno io


    quindi qualcuno è in grado di spiegarmi o darmi un qualche link in cui si spieghi il funzionamento delle foreign key su mysql?





    grazie
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    spulciando un po' in giro ho trovato che le FK sono e saranno disponibili solo per le innoDB, e se io ho invece a disposizione solo MyISAM non posso usare le FK? :master:
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    In che senso il funzionamento?

    L'unica cosa di differente rispetto ad altri DBMS e' che MySQL utilizza piu' motori per salvare dati (e questo tende a confondere le idee dei novellini), e che solo alcuni di questi motori supportano l'integrita' referenziale.

    In particolare, il motore di default, cioe' MyISAM, non la supporta, mentre motori piu' evoluti come InnoDB, recentemente acquisita da Oracle, si. Per "non la supporta" intendo dire che la sintassi SQL viene accettata, ma viene ignorata; dunque, se tu provi a cancellare una tupla cui punta una foreign key di un'altra tabella, non ottieni errori di sorta e la eliminazione viene effettuata. Idem per un inserimento: se tu inserisci una tupla in una tabella in cui un campo punta a un record un'altra tabella che non esiste, non ottieni alcun errore di inserimento.
    There are 10 types of people in the world - those who understand binary and those who don't.

  4. #4
    dunque, innanzitutto grazie per la risposta!

    ho una tale confusione in testa che non immaginate

    è la prima volta che dovrei mettermi ad usare le FK e lo trovo abbastanza complicato; ho scoperto ora di poter impostare il tipo delle mie tabelle a innodb, quindi di poterle usare

    prendiamo un esempio semplicissimo. Io ho due tabelle: CATEGORIE e CATEGORIE_IMG

    codice:
    CREATE TABLE `CATEGORIE` (
      `CATEGORIA_ID` int(10) unsigned NOT NULL auto_increment,
      `CATEGORIA` varchar(50) default NULL,
      `META` text,
      `CATEGORIA_PADRE_ID` int(10) unsigned NOT NULL default '0',
      PRIMARY KEY  (`CATEGORIA_ID`)
    ) TYPE=InnoDB AUTO_INCREMENT=1 ;
    
    CREATE TABLE `CATEGORIE_IMG` (
      `CATEGORIA_IMG_ID` int(10) unsigned NOT NULL auto_increment,
      `CATEGORIA_ID` int(10) unsigned NOT NULL default '0',
      PRIMARY KEY  (`CATEGORIA_IMG_ID`),
      KEY `CATEGORIA_ID` (`CATEGORIA_ID`)
    ) TYPE=InnoDB AUTO_INCREMENT=1 ;
    e come mai nella seconda vedo la voce KEY ma non FOREIGN KEY ??
    e non vedo inoltre nessun REFERENCE...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    quello che non capisco è proprio come impostare le FK...non vedo nessuna voce quando creo la tabella che dovrebbe avere la FK.
    Io la posso impostare come indice o chiave primaria o unica...non vedo nessuna voce chiave esterna
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Originariamente inviato da 13manuel84
    quello che non capisco è proprio come impostare le FK...non vedo nessuna voce quando creo la tabella che dovrebbe avere la FK.
    Io la posso impostare come indice o chiave primaria o unica...non vedo nessuna voce chiave esterna
    vietato sperare nei miracoli ..... se non la dichiari....

    http://dev.mysql.com/doc/refman/5.0/...nstraints.html

    http://database.html.it/guide/lezion...ase-e-tabelle/

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da piero.mac
    vietato sperare nei miracoli ..... se non la dichiari....

    http://dev.mysql.com/doc/refman/5.0/...nstraints.html

    http://database.html.it/guide/lezion...ase-e-tabelle/
    io l'ho dichiarata...

    ho seguito questo guida http://www.disi.unige.it/person/Mogg...ySQL/Demo.html e ho fatto esattamente quello che hanno descritto lì

    tant'è che quando clicco ad esempio sulla tabella CATEGORIE_IMG vedo nelle intestazioni:
    InnoDB free: 9216 kB; (`CATEGORIA_ID`) REFER `dbname/CATEGORIE`(`CATEGORIA_ID`); (`CATEGORIA_IMG_ID`) REFER `dbname/PRODOTTI`(`CATEGORIA_IMG_ID`) ON DELETE CASCADE


    ma quando esporto la struttura vedo quello che ho scritto sopra.



    poi su mysql ho visto questa pagina: http://dev.mysql.com/doc/refman/4.1/...eign-keys.html e non quella che mi hai linkato tu, perché non ho mySQL 5

    e quello su freephp l'avevo visto anche io, ma non mi diceva niente di nuovo, se non che mySQL supporta le FK dando come tipo alle tabelle innoDB.

    Ho quindi visto quest'altro articolo: http://database.html.it/articoli/leg...abelle-in-m/1/ ma non mi dice come impostarle da PMA, solo da codice, ma se devo scrivermi il codice a mano non mi sembra un'idea geniale, visto che questo è solo un esempio e che le tabelle saranno relativamente più grandi.


    non spero nei miracoli, prima di chiedere mi documento di solito e qualora avessi ancora dubbi posto, speravo si fosse capito visto che non è il primo post che faccio


    grazie comunqur per la risposta! e scusami, ma davvero, per me quanto scrivono su queste FK è arabo
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    nell'ultima versione di phpmyadmin se la tabella e' innodb trovi un menu' apposito per la creazione/modifica/rimozione delle foreign key.

    "vedi relazioni"

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Originariamente inviato da piero.mac
    nell'ultima versione di phpmyadmin se la tabella e' innodb trovi un menu' apposito per la creazione/modifica/rimozione delle foreign key.

    "vedi relazioni"
    si appunto! è quello che sta scritto anche nella guida che ho linkato ( quella che spiega passo passo con gli screenshosts ).

    Solo che 'sta cosa che non le chiama FOREIGN KEYS mi ha mandato un po' in paranoia forse...
    soprattutto il fatto che nell'esportazione dela struttura della tabella non le vedo come FK ma come "semplici" KEY


    ora faccio un po' di prove e vedo se riesco a capire meglio il funzionamento
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.