2010-11-21 16 views
8

Estoy creando una base de datos botánico donde las plantas serán organizados por su taxonomía:Creación Taxonomía tabla en MySQL

vida dominio Unido Filo Clase Solicitar familia Género Especies

I estaba considerando usar el ejemplo presentado por el artículo Managing Hierarchical Data in MySQL, sin embargo, está agregando la lista anterior como registros dentro de la tabla ... y no estoy seguro si eso es lo mejor que puedo hacer, ya que estaré havi ng especies múltiples por género y múltiples géneros por familia, etc. ¿Cuál sugeriría es la mejor manera de abordar este problema? Gracias por adelantado.

+1

Creación de tablas de taxonomía en mysql: [introduzca aquí la descripción del enlace] (http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/) – rd42

+0

@ rd42 +1 ¡excelente artículo! – cawecoy

Respuesta

11

Trabajé con datos similares, y lo hice en 2 partes. En la sintaxis de PostgreSQL.

En primer lugar es la estructura de la taxonomía (familia, género, especie, ...):

CREATE TABLE taxonomic_units (
    id   serial  PRIMARY KEY, 
    name  varchar(20) NOT NULL, 
    parent_id integer  REFERENCES taxonomic_units(id) 
); 

1 | Life | NULL 
2 | Domain | 1 
... 
7 | Family | 6 
8 | Genus | 7 
9 | Species | 8 

En segundo lugar está la descripción y almacenamiento de datos botánica:

CREATE TABLE taxons (
    id     serial  PRIMARY KEY, 
    suptaxon_id  integer  REFERENCES taxons(id), 
    taxonomic_unit_id integer  NOT NULL REFERENCES taxonomic_units(id), 
    name    varchar(50) NOT NULL, 
    authority   varchar(50) 
); 

100 | NULL | 8 | Ocimum | L. 
101 | 100 | 9 | basilicum | L. 
102 | 100 | 9 | gratissim | L. 
+1

esta podría ser la mejor respuesta que he visto en SO. período. –

0

Parece más un gráfico. Me pregunto si NEO4J sería una mejor opción.

3

No estoy seguro de que realmente admita ese artículo. Las estructuras de gráficos serían necesarias cuando las categorías en sí mismas son mutables. Por ejemplo, todos los taxonomistas repentinos decidieron agregar tres nuevos niveles entre género y especie, y así sucesivamente.

Desde el artículo:

... la gestión de datos jerárquica no es lo que una base de datos relacional se destina.

En realidad, es exactamente lo que está destinado a:

http://en.wikipedia.org/wiki/Hierarchical_database_model

El modelo de datos jerárquico pierde tracción, modelo relacional de Codd se convirtió en el estándar de facto utilizado por prácticamente todos los sistemas de gestión de bases de datos de corriente .

me Escribir una opinión de que se unió a todas las tablas de modo que tendría estos como sus columnas:

Life Domain Kingdom Phylum Class Order Family Genus Species 

Ahora se puede consultar este punto de vista lo que le gusta y no tener que preocuparse sobre cualquier unión. Fácil :)

0

Hay varias formas de representar jerárquica datos en una base de datos relacional, aunque una solución NoSQL podría ser más fácil de trabajar como @duffymo mencionado. Asumiendo un RDBMS, see my question on the topic for an enumeration of a half dozen possibilities. Para su situación, lideraría con un camino materializado para facilitar el ver el árbol genealógico. Si la jerarquía cambia regularmente, probablemente yo también modelaría como una lista de adyacencia y actualizaría la ruta materializada usando un disparador.

2

Puede descargar datos completos de taxonomía desde http://itis.gov y los datos se actualizan más o menos mensualmente. Los datos que proporcionan incluyen un Ruta Materializada - cada especie en la base de datos tiene una cadena de todos los niveles superiores, como una cadena de migas de pan o una ruta de sistema de archivos.

Utilicé estos datos para diseñar una demostración en mi presentación Models for Hierarchical Data. Convertí los datos de ruta materializados en Tabla de cierre.