Visualizzazione risultati 1 fino 2 di 2

Discussione: [SQL] Relazioni tra tabelle

  1. #1
    Guest

    Predefinito [SQL] Relazioni tra tabelle

    Ciao a tutti, sto avvengo problemi col creare relazioni tra tabelle...
    Devo fare se nella tabella padre vieni cancellato o modificato un campo la stessa cosa deve avvenire nella tabella figlia.


    Codice PHP:
    CREATE TABLE IF NOT EXISTS `libri` (
    `
    codice_libro` int(11) unsigned NOT NULL,
    `
    titolo_libro` varchar(255) NOT NULL,
    `
    isbn` varchar(255) NOT NULL,
    `
    casa_editrice` varchar(255) NOT NULL,
    `
    prezzo` varchar(255) NOT NULL,
    PRIMARY KEY (`codice_libro`),
    UNIQUE KEY `codice_libro` (`codice_libro`)
    )
    ENGINE=InnoDB DEFAULT CHARSET=latin1;

    CREATE TABLE IF NOT EXISTS `libri_comodato` (
    `
    codice_libro` int(11) unsigned NOT NULL,
    `
    codice_fiscale` varchar(16) NOT NULL,
    `
    data` int(11) NOT NULL,
    PRIMARY KEY (`codice_libro`),
    UNIQUE KEY `codice_libro` (`codice_libro`)
    )
    ENGINE=InnoDB DEFAULT CHARSET=latin1;

    CREATE TABLE IF NOT EXISTS `studenti` (
    `
    codice_fiscale` varchar(16) NOT NULL,
    `
    nome` varchar(255) NOT NULL,
    `
    cognome` varchar(255) NOT NULL,
    `
    indirizzo` varchar(255) NOT NULL,
    `
    telefono` varchar(11) NOT NULL,
    `
    email` varchar(255) NOT NULL,
    UNIQUE KEY `codice_fiscale` (`codice_fiscale`)
    )
    ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Le relazioni devono essere libri->libri_comodato e studenti->libri_comodato

    Ho fatto in questo modo, va bene come posso fare a fare la seconda relazione...
    Codice PHP:
    --
    ALTER TABLE `libri_comodato`
    ADD CONSTRAINT `libri_comodato_ibfk_1` FOREIGN KEY (`codice_libro`) REFERENCES `libri` (`codice_libro`) ON DELETE CASCADE ON UPDATE CASCADE;
    P.s.
    Secondo voi i tipi per i campi che ho impostato vanno bene o posso mettere un tipo migliore?

    Ringrazio anticipatamente

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Non devi fare altro che eseguire un'altra query molto simile:
    Codice PHP:
    ALTER TABLE `libri_comodato`
    ADD CONSTRAINT `libri_comodato_ibfk_2` FOREIGN KEY (`codice_fiscale`) REFERENCES `studenti` (`codice_fiscale`) ON DELETE CASCADE ON UPDATE CASCADE;
    Tieni presente però che su AV la query, così come le altre, sarà eseguita, ma non avrà alcun effetto reale: AV infatti non supporta l'engine InnoDB che consente i vincoli di integrità referenziale. Dovrai quindi preoccuparti di sviluppare un'applicazione che provveda ad eseguire le contestuali modifiche e cancellazioni sulle altre tabelle...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •