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

голоса
11

У меня есть префикс синтаксического дерева. Какова рекомендуемая схема для представления этой структуры в реляционной базе данных? Мне нужно подстрока согласования, чтобы оставаться эффективными.

Задан 10/12/2008 в 05:06
источник пользователем
На других языках...                            


2 ответов

голоса
6

Как насчет материализовались Path дизайн?

CREATE TABLE trie (
  path VARCHAR(<maxdepth>) PRIMARY KEY,
  ...other attributes of a tree node...
);

Для того, чтобы хранить слово, как «StackOverflow»:

INSERT IGNORE  INTO trie (path) VALUES
  ('s'), ('st'), ('sta'), ('stac'), ('stack'),
  ('stacko'), ('stackov'), ('stackove'), ('stackover'),
  ('stackover'), ('stackoverf'), ('stackoverflo'),
  ('stackoverflow');

Материализовался путем в дереве является Префиксальной последовательностью символов самого. Это также формирует первичный ключ. Размер столбца VARCHAR максимальная глубина синтаксического дерева вы хотите сохранить.

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

Ответил 10/12/2008 в 05:15
источник пользователем

голоса
0

Есть ли какие-либо из ваших сущностей имеют отношения с каким-либо другим? Если нет, то есть, не реляционными, хэш-таблица с сериализацией бы сделать это.

Ответил 10/12/2008 в 05:30
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more