Ответ 1
Как насчет дизайна Materialized Path?
CREATE TABLE trie (
path VARCHAR(<maxdepth>) PRIMARY KEY,
...other attributes of a tree node...
);
Чтобы сохранить слово типа "stackoverflow":
INSERT INTO trie (path) VALUES
('s'), ('st'), ('sta'), ('stac'), ('stack'),
('stacko'), ('stackov'), ('stackove'), ('stackover'),
('stackover'), ('stackoverf'), ('stackoverflo'),
('stackoverflow');
Материализованный путь в дереве - это префиксная последовательность символов. Это также формирует первичный ключ. Размер столбца varchar - это максимальная глубина trie, которую вы хотите сохранить.
Я не могу придумать ничего более простого и простого, и он сохраняет эффективное хранение и поиск строк.