¿Cómo diseñar una base de datos para el diccionario de traducción?

Tengo una base de datos con palabras y frases de for exp. Inglés a otros 15 idiomas, y también para todos los idiomas en esa lista a otros 15. Para un par están ordenados por ahora en una tabla como esta (en -> de):

id_pairpalabra_esword_de

¿Cuál es la mejor manera de crear una base de datos para esa enorme lista de palabras y frases? Sé que debo separar todos los idiomas primarios de los demás y pensé tal vez así:

ENGLISH
ID | WORD
1  | 'dictionary'

GERMAN
ID | WORD
1  | 'lexikon'
2  | 'wörterbuch'

TRANSLATION_EN_DE
ID_EN | ID_DE
1     | 1
1     | 2

¿Es esta la mejor manera de normalizar DB? Pero lo que es con las frases, necesito también si alguien ingresa la palabra "dictionay" que también devuelve "Este diccionario es bueno" y la traducción para eso. (Sé que esto se puede encontrar en la primera tabla con la consulta SQL, ¿es la mejor manera?)

También lo necesito alfabéticamente todo el tiempo, tendré muchas entradas nuevas todos los días, así que puedo imprimir un par de palabras antes y después de las palabras / fases que alguien busca traducir.

Estoy atascado y no puedo decidir cuál es la mejor manera de optimizarlo. Estos db tienen todos juntos más de 15 gb, solo traducción basada en texto, y alrededor de 100 mil requisitos diarios, por lo que cada ms vale. :) Cualquier ayuda será apreciada, gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta