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
ALTER TABLE STRANIERE ADD FOREIGN KEY(linguaID) REFERENCES LINGUE(IDlingua)
MANIPULATION
Aggiungere una lingua straniera
INSERT INTO LINGUE(lingua) VALUES('svedese') INSERT INTO LINGUE(IDlingua, lingua) VALUES(NULL, 'svedese') INSERT INTO LINGUE VALUES(NULL, 'svedese')
QUERY
Le parole italiane
SELECT parola FROM ITALIANE ORDER BY parola
Le parole straniere
SELECT parola FROM STRANIERE ORDER BY parola
Le parole inglesi
SELECT parola FROM STRANIERE INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua WHERE lingua = 'inglese' ORDER BY parola
Le traduzioni
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
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
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?
SELECT Count(*) AS 'Numero parole' FROM ITALIANE;
Numero di parole straniere?
SELECT Count(*) AS 'Numero parole' FROM STRANIERE
Numero di parole inglesi?
SELECT Count(*) AS 'Numero parole' FROM STRANIERE INNER JOIN LINGUE ON STRANIERE.linguaID = LINGUE.IDlingua WHERE lingua = 'inglese';
Numero di parole straniere per lingua?
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
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