Как вы храните дерева в реляционной базе данных?
У меня есть префикс trie. Какова рекомендуемая схема представления этой структуры в реляционной базе данных? Мне нужно соответствие подстрок, чтобы оставаться эффективным.
2 ответов
как о Материализованный Путь дизайн?
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, которую вы хотите сохранить.
Я не могу придумать ничего более простого и простого, чем это, и он сохраняет эффективное хранение строк и испытующий.
все сущности имеют связь с какой-либо другой? Если нет, то есть не реляционная, хэш-таблица с сериализацией сделает это.