Как Вы храните trie в реляционной базе данных?

16
задан 7 revs, 5 users 40%blank 29 May 2010 в 04:50
поделиться

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, который Вы хотите сохранить.

я не могу думать ни о чем более простом и простом, чем это, и оно сохраняет эффективное строковое устройство хранения данных и поиск.

10
ответ дан 30 November 2019 в 23:14
поделиться

Какой-либо из Ваших объектов имеет отношения с кем-либо другим? В противном случае то есть, не реляционный, хеш-таблица с сериализацией сделала бы это.

0
ответ дан 30 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: