Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Aiuto creazione database...

    Ciao ragazzi! Ho fatto un corso di php ma non ho ben capito come creare ed ottimizzare un database..Mi sono inventato un progettino per prendere un pò la mano con la programmazione e volevo chiedervi se mi potevate aiutare a creare questo db anche perchè ci sarebbe da inserire delle chiavi esterne,ma se mai lo faccio mai imparo...
    Vorrei creare una struttura che mi permetta di catalogare i documenti di trasporto che vari tecnici trovano nelle varie zone dove vanno a lavorare.

    Ho pensato che io nella mia schermata voglio vedere questo:

    num_ddt | data_ddt | descrizione_materiale | nome_zona | via_zona | nome_tecnico | note_tecnico

    Diciamo che dato questo ho pensato di fare 3 tabelle:

    tabella_zone

    id_zona | nome_zona | via_zona |

    tabella_tecnici

    id_tecnico | nome_tecnico | cognome_tecnico | email_tecnico

    tabella_ddt

    num_ddt | data_ddt | descrizione_materiale | nome_zona | via_zona | nome_tecnico | note_tecnico


    Come posso fare? Anche perchè non capisco come definire chiavi esterne usando phpmyadmin..
    Secondo voi ci sono delle ridondanze? Aspetto tutti i consigli possibili...
    Grazie grandissimiiiiiii!

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    beh, direi di sì visto che in tabella_ddt ripeti alcuni campi

    num_ddt | data_ddt | descrizione_materiale | zona | tecnico | note_tecnico

    inoltre, nome_zona e nome_tecnico sono chiavi esterne...per crearle, dopo che crei la tabella metti questo
    codice:
    CREATE TABLE nome_tab(
    ....
    INDEX (zona), 
    FOREIGN KEY (zona) 
    REFERENCES tabella_zone(id_zona) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION)
    )Type = InnoDB;
    ovviamente devi decidere tu cosa alla cancellazione e all'update; io ho messo NO ACTION ma dipende a te cosa serve

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Logicamente la stessa cosa la devo fare per i tecnici giusto?
    Basta che mando la query dopo che ho creato la tabella zone e quella tecnici?
    Grazie per la risposta!!

  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    sì a entrambre le domande

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  5. #5
    Scusami non riesco a venirne a capo!!
    Avevo già creato una tabella chiamata tecnici così strutturata:

    CREATE TABLE IF NOT EXISTS `tecnici` (
    `num_tecnico` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `nome` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `cognome` varchar(40) NOT NULL DEFAULT '',
    `email` varchar(64) NOT NULL DEFAULT '',
    PRIMARY KEY (`num_tecnico`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;



    Quando mando questa query che crea la tabella ddt (in modo che associo il campo num_tecnico della tabella tecnici a questa),mi manda sempre questo errore:

    #1064 - Errore di sintassi nella query SQL vicino a 'INDEX (tecnico), FOREIGN KEY (tecnico) REFERENCES tecnici(num_tecnico) ON ' linea 7

    CREATE TABLE IF NOT EXISTS `ddt` (
    `id_ddt` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `via_ddt` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `tecnico` int(10) NOT NULL DEFAULT '',
    `data` date NOT NULL DEFAULT '0000-00-00',
    PRIMARY KEY (`id_ddt`)
    INDEX (tecnico),
    FOREIGN KEY (tecnico)
    REFERENCES tecnici(num_tecnico)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14



    Come devo fare? Grazie per le risposte!

  6. #6
    usare engine InnoDB

    le myIsam non prevedono l'uso delle foreign key

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

  7. #7
    ok l'ho appena fatto,ho ricreato tutte le tabelle InnoDB,poi l'errore era perchè mi mancava una virgola ma ora mi trovo che mi da questo:

    #1005 - Impossibile creare la tabella 'db_gestione.ddt' (errno: 150)

  8. #8
    Originariamente inviato da webking2003
    ok l'ho appena fatto,ho ricreato tutte le tabelle InnoDB,poi l'errore era perchè mi mancava una virgola ma ora mi trovo che mi da questo:

    #1005 - Impossibile creare la tabella 'db_gestione.ddt' (errno: 150)
    forse hai gia' la tabella con nome ddt

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

  9. #9
    innanzitutto ti ringrazio veramente un casino,cmq tanto per la cronaca praticamente il valore del campo di cui volevo fare la relazione,nella prima tabella era segnato come UNSIGNED mentre nella seconda no,quindi mettendolo identico ho eliminato il problema..se mi ricapita qualcosa mi faccio risentire :-D

  10. #10
    Ma si possono mettere 2 chiavi esterne di una stessa tabella? perchè in una ho sia la via che la zona e la devo mettere tutta in una tabella..

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