1987 – Vocabolario bilingue

Il problema

Osservazioni

  1. La richiesta del 1987 si riferisce a un’organizzazione fisica degli archivi.
    Oggi è più agile una soluzione tramite database e pagine dinamiche…
  2. Perché limitarsi a un vocabolario bilingue?
    Per ogni nuova parola si può specificare una lingua straniera.
  3. Una parola italiana può avere più traduzioni in una lingua straniera!
  4. 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

 1987_er_dizionario

SCHEMA RELAZIONALE

1987_rel_dizionario

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