Tengo un prefijo trie. ¿Cuál es el esquema recomendado para representar esta estructura en una base de datos relacional? Necesito la coincidencia de subcadenas para seguir siendo eficiente.¿Cómo se almacena un trie en una base de datos relacional?
Respuesta
¿Qué tal el diseño Materialized Path?
CREATE TABLE trie (
path VARCHAR(<maxdepth>) PRIMARY KEY,
...other attributes of a tree node...
);
Para almacenar una palabra como "stackoverflow":
INSERT INTO trie (path) VALUES
('s'), ('st'), ('sta'), ('stac'), ('stack'),
('stacko'), ('stackov'), ('stackove'), ('stackover'),
('stackover'), ('stackoverf'), ('stackoverflo'),
('stackoverflow');
El camino materializado en el árbol es la secuencia prefijada de sí mismo caracteres. Esto también forma la clave principal. El tamaño de la columna varchar es la profundidad máxima de trie que desea almacenar.
No se me ocurre nada más simple y directo que eso, y conserva el almacenamiento y la búsqueda de cadenas eficientes.
El enlace redirige a nada de interés. Aquí hay una versión archivada: http://web.archive.org/web/20071019044908/http://www.dbazine.com/oracle/or-articles/tropashko4 – Howie
@Howie, gracias, respondí esto hace 5,5 años, por lo que no es una sorpresa que algunos enlaces se vuelvan obsoletos. –
Puede dar un ejemplo de cómo va a consultar esta tabla para decir "st" y hay más palabras como "stackoverflowone" – zengr
¿Alguna de sus entidades tiene alguna relación con alguna otra? Si no, es decir, no relacional, una tabla hash con una serialización lo haría.
- 1. ¿Se puede hacer una base de datos relacional usando MongoDB?
- 2. ¿Almacena datos de imagen en una base de datos MySQL?
- 3. Representación de pedidos en una base de datos relacional
- 4. Almacenamiento de objetos R en una base de datos relacional
- 5. Python, almacena un dict en una base de datos
- 6. Modelado de ubicaciones geográficas en una base de datos relacional
- 7. Modelado: Xml vs. Base de datos relacional
- 8. ¿Qué ventajas tiene una base de datos basada en documentos sobre una base de datos relacional?
- 9. NoSql vs Base de datos relacional
- 10. ¿Por qué querría usar una base de datos no relacional?
- 11. neo4j - base de datos de gráficos junto con una base de datos relacional?
- 12. Vaciar un esquema de base de datos relacional
- 13. BigTable de Google frente a una Base de Datos Relacional
- 14. ¿Dónde almacena contraseñas de base de datos?
- 15. Base de datos estándar XSD neutral para describir un esquema de base de datos relacional
- 16. ¿Cómo modelar un tipo personalizado en una base de datos relacional?
- 17. Pares de valores clave en la base de datos relacional
- 18. Cómo almacenar una dirección compatible con IPv6 en una base de datos relacional
- 19. ¿Algún buen tutorial de base de datos relacional?
- 20. ¿Cuándo optas por almacenar XML en una base de datos relacional?
- 21. ¿Tiene sentido asignar una estructura de datos de gráficos a una base de datos relacional?
- 22. ¿Cómo manejas las relaciones m..n en una base de datos relacional?
- 23. ¿Cómo se usa una sal para hacer una contraseña más segura si se almacena en la base de datos?
- 24. Sistema de base de datos que no es relacional
- 25. Trie ahorra espacio, pero ¿cómo?
- 26. Estructuras de datos Trie - Java
- 27. # estructura de datos que almacena C en una base de datos SQL
- 28. Uso de una base de datos relacional para datos Schemaless: mejores prácticas
- 29. .net DateTime MaxValue es diferente una vez que se almacena en la base de datos
- 30. Base de datos orientada a objetos Vs objeto Base de datos relacional
Sí, trie no tree. Ver http://en.wikipedia.org/wiki/Trie – dkretz
¿Está almacenando y recuperando el trie de/desde DB para ser utilizado en su código? Porque para la búsqueda de bases de datos hay herramientas integradas, como la indexación de texto completo (basada en principios similares) –