Osservazioni
- La richiesta del 1987 si riferisce a un’organizzazione fisica degli archivi.
Oggi è più agile una soluzione tramite database e pagine dinamiche… - Perché limitarsi a un vocabolario bilingue?
Per ogni nuova parola si può specificare una lingua straniera. - Una parola italiana può avere più traduzioni in una lingua straniera!
- Il grado di una traduzione rappresenta, con un numero da 1 a 5, la bontà della traduzione.
- casa -> home (5)
- casa -> maison (5)
- casa -> house (4)
- …
- casa -> factory(1)
SCHEMA E/R
SCHEMA RELAZIONALE
In grigio la tabella di collegamento per l’associazione molti a molti…
DEFINITION
1 |
ALTER TABLE STRANIERE ADD FOREIGN KEY(linguaID) REFERENCES LINGUE(IDlingua) |
MANIPULATION
Aggiungere una lingua straniera
1 2 3 |
INSERT INTO LINGUE(lingua) VALUES('svedese') INSERT INTO LINGUE(IDlingua, lingua) VALUES(NULL, 'svedese') INSERT INTO LINGUE VALUES(NULL, 'svedese') |
QUERY
Le parole italiane
1 2 3 |
SELECT parola FROM ITALIANE ORDER BY parola |
Le parole straniere
1 2 3 |
SELECT parola FROM STRANIERE ORDER BY parola |
Le parole inglesi
1 2 3 4 |
SELECT parola FROM STRANIERE INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua WHERE lingua = 'inglese' ORDER BY parola |
Le traduzioni
1 2 3 4 |
SELECT ITALIANE.parola, STRANIERE.parola, grado FROM (ITALIANE INNER JOIN TRADUZIONI ON ITALIANE.IDitaliana = TRADUZIONI.italianaID) INNER JOIN STRANIERE ON TRADUZIONI.stranieraID = STRANIERE.IDstraniera ORDER BY ITALIANE.parola, STRANIERE.parola; |
Le traduzioni, compresa la lingua
1 2 3 4 5 |
SELECT ITALIANE.parola, STRANIERE.parola, lingua, grado FROM ((ITALIANE INNER JOIN TRADUZIONI ON ITALIANE.IDitaliana = TRADUZIONI.italianaID) INNER JOIN STRANIERE ON TRADUZIONI.stranieraID = STRANIERE.IDstraniera) INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua ORDER BY ITALIANE.parola, STRANIERE.parola |
Le traduzioni in inglese
1 2 3 4 5 6 |
SELECT ITALIANE.parola, STRANIERE.parola, grado FROM ((ITALIANE INNER JOIN TRADUZIONI ON ITALIANE.IDitaliana = TRADUZIONI.italianaID) INNER JOIN STRANIERE ON TRADUZIONI.stranieraID = STRANIERE.IDstraniera) INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua WHERE lingua = 'inglese' ORDER BY ITALIANE.parola, STRANIERE.parola |
Numero di parole italiane?
1 2 |
SELECT Count(*) AS 'Numero parole' FROM ITALIANE; |
Numero di parole straniere?
1 2 |
SELECT Count(*) AS 'Numero parole' FROM STRANIERE |
Numero di parole inglesi?
1 2 3 |
SELECT Count(*) AS 'Numero parole' FROM STRANIERE INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua WHERE lingua = 'inglese'; |
Numero di parole straniere per lingua?
1 2 3 4 |
SELECT lingua, Count(*) AS 'Numero parole' FROM STRANIERE INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua GROUP BY lingua ORDER BY lingua; |
Le traduzioni della parola casa
1 2 3 4 5 6 |
SELECT STRANIERE.parola, lingua, grado FROM ((ITALIANE INNER JOIN TRADUZIONI ON ITALIANE.IDitaliana = TRADUZIONI.italianaID) INNER JOIN STRANIERE ON TRADUZIONI.stranieraID = STRANIERE.IDstraniera) INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua WHERE ITALIANE.parola = 'casa' ORDER BY STRANIERE.parola; |
Le traduzioni della parola casa in lingua inglese
…
Pagine dinamiche
Inserire una nuova parola italiana
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$p =$_GET['parola']; $sql="INSERT INTO ITALIANE VALUES (NULL, '$p');"; mysql_connect("localhost", "root", ""); mysql_select_db("dizionario"); mysql_query($str_sql); $risultato=mysql_affected_rows() // controllo se la parola è stata inserita mysql_close(); if($risultato == -1) echo "L'inserimento di $p NON ha avuto successo"; else echo "L'inserimento di $p è avvenuto con successo"; ?> |