Relazioni in mysql

Salve a tutti,

volevo capire qualche cosa di più su come inserire relazioni in una database mysql, via phpMyAdmin o anche direttamente riga di comando.

Conosco già in maniera discreta la teoria sui db relazionali (anche perché in passato ho usato db access di questo tipo con asp), ma sono a digiuno di pratica in questo argomento con php e mysql.

Mi indicate qualche link che non sia troppo complesso?

Infatti è da ieri che scavo con google anche nei gruppi ma non ci ho capito molto :-(

F.

inviato 10 anni fa
fante1998
X 0 X

Con relazioni cosa intendi?

Creare DB con relazioni 1a1, 1 a Molti, Molti a Molti?

Oppure creare chiavi esterne e cose del genere?

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Per queste cose ti consiglio di utilizzare direttamente la documentazione ufficiale di MySQL.

Per prima cosa devi impiegare le tabelle InnoDB perché le tabelle MyISAM non supportano le FK (foreign key). Se hai delle tabelle MyISAM da convertire puoi fare così:

ALTER TABLE nome_tabella TYPE=INNODB

maggiori info qui:

http://dev.mysql.com/doc/refman/4.1/en/converting-tables-to-innodb.html

Fatto questo per creare delle FK devi rispettare determinate regole, trovi tutto qui:

http://dev.mysql.com/doc/refman/4.1/en/innodb-foreign-key-constraints.html

Se ti studi bene questa pagina conoscerai l'80% dell'argomento.

Gli esempi riportati mostrano come generare delle FK all'atto della creazione della tabella, ma è possibile farlo anche a posteriori con delle ALTER TABLE la cui sintassi è mostrata qui:

http://dev.mysql.com/doc/refman/4.1/en/alter-table.html

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Per Lore:

Ho un db con 5 tabelle di entità diverse. Alcune di esse sono in relazione uno a molti. Altre in relazione molti a molti (e quindi alle 5 tabelle fondamentali ne aggiungo una di collegamento x ogni relazione molti a molti).

Sulla carta il db ce l'ho bell'e pronto. Ora lo devo reare in mysql, popolare e poi leggere da php per riempire il sito...

Per Gianni:

Grazie per le indicazioni... speravo in qualcosa di un po' più semplice e magari in italiano (tipo una quida all'argomento per principianti, o un esempio realizzato) ma va benissimo lo stesso...

risposto 10 anni fa
fante1998
X 0 X

Per Lore:

Ho un db con 5 tabelle di entità diverse. Alcune di esse sono in relazione uno a molti. Altre in relazione molti a molti (e quindi alle 5 tabelle fondamentali ne aggiungo una di collegamento x ogni relazione molti a molti).

Sulla carta il db ce l'ho bell'e pronto. Ora lo devo reare in mysql, popolare e poi leggere da php per riempire il sito...

Per l'interazione tra php/mysql:

http://freephp.html.it/guide/lezioni.asp?idguida=8

Per creare invece il Db partendo da zero, potresti fare da riga di comando ( trovi le info sul sito di riferimento che ti ha girato Gianni ),oppure più semplicemente ti installi phpmyadmin (per esempio) e crei il DB in 'modalità grafica' direttamente da lì...

[guida a phpmyadmin: http://freephp.html.it/guide/lezioni.asp?idguida=9 ]

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ecco cosa ho trovato su di un altro sito:

Le tabelle INNODB sono in grado di gestire lintegrità referenziale tra le chiave esterne del database, in sostanza tale integrità è sempre stata delegata allabilità dello sviluppatore, ora con il motore INNODB è possibile delegare questa annosa attività a MySQL stesso, potendo quindi specificare vari comportamenti a seconda della chiave esterna utilizzata

In pratica tutto quello che posso fare con INNODB lo posso fare anche con le semplici tabelle MySAM senza dovermi arrabbattare e incasinare cercando di imbrigliare a priori il db?

In poche parole: il db che ti ho descritto lo posso realizzare anche senza indicare in maniera precisa a mysql le relazioni che ci sono? Basta che lo sviluppatore (io) tenga gli occhi bene aperti?

Oppure sono fuori strada?

risposto 10 anni fa
fante1998
X 0 X

Quello che dici è corretto, infatti nella maggior parte dei casi la coppia PHP/MySQL non prevede l'uso delle FK. Ma questo in realtà succede perché fino a non molto tempo fa era difficile trovare hostig che supportassero le tabelle InnoDB.

Le FK invece sono molto potenti e ti permettono di poter contare sulla consistenza del database, indipendentemente dallo script che lo gestisce. Ti mettono al riparo da eventuali errori di programmazione o malfunzionamenti dello script. Inoltre si risparmiano query grazie alle clausole "on update" e "on delete".

Usando le InnoDB avrai poi a disposizione le transazioni, e non è poco!

A te la scelta.  :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Gianni, da che versione di MySQL sono state introdotte le tabelle InnoDB?

risposto 10 anni fa
Xscratch
X 0 X
Gianni, da che versione di MySQL sono state introdotte le tabelle InnoDB?

Dalla 3.23, che però necessita una esplicita attivazione:

http://dev.mysql.com/doc/refman/4.1/en/innodb-in-mysql-3-23.html

dalla 4.0 sono abilitate di default.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda