2010-11-21 3 views
8

я создаю ботаническим базу данных, где растения будут организованы их систематики:Создание таксономической таблицы в MySQL

Life Домен Королевство фила Класс Заказать Семейство Род Виды

I рассматривал использование примера, изложенного в статье Managing Hierarchical Data in MySQL, однако он добавляет вышеприведенный список в качестве записей внутри таблицы .... и я не уверен, что это лучшее, что нужно сделать, поскольку я буду хави множественные виды на один род и множественный род на семью и т. д. Что бы вы предложили, это лучший способ подойти к этой проблеме. Заранее спасибо.

+1

Создание таблиц таксономии в mysql: [введите ссылку здесь] (http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/) – rd42

+0

@ rd42 +1 отличная статья! – cawecoy

ответ

11

Я работал с аналогичными данными, и я сделал это в 2 частях. В синтаксисе PostgreSQL.

Первая является таксономия структура (семья, род, вид, ...):

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 

Во-вторых, описание и хранение ботанических данных:

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

это может быть лучший ответ, который я когда-либо видел на SO. период. –

0

Это больше похоже на график. Я бы подумал, будет ли лучше NEO4J.

3

Я не уверен, что действительно куплю эту статью. Структуры графов будут необходимо, когда сами категории изменяемы. Например, все внезапные таксономисты решили добавить три новых уровня между родом и видами и т. Д.

Из статьи:

... управление иерархических данных не то, что реляционная база данных предназначена для.

На самом деле, ее именно то, что она предназначена для:

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

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

Я бы первым написать мнение, что присоединились все ваши таблицы, так что вы бы это как ваши колонки:

Life Domain Kingdom Phylum Class Order Family Genus Species 

Теперь вы можете запросить эту точку зрения так, как вам нравится, и не придется беспокоиться о любых объединениях. Easy :)

0

Есть несколько способов представления иерархической данные в реляционной базе данных, хотя решение NoSQL может быть проще работать с упоминанием @duffymo. Таким образом, предполагая РСУБД, see my question on the topic for an enumeration of a half dozen possibilities. Для вашей ситуации я бы привел к материализованному пути, чтобы легко увидеть семейное дерево. Если иерархия изменяется регулярно, я, вероятно, также буду моделировать как список смежности и обновлять материализованный путь с помощью триггера.

2

Данные полной таксономии вы можете скачать с http://itis.gov, а данные обновляются более или менее ежемесячно. Данные, которые они предоставляют, включают в себя: Материализованный путь - каждый вид в базе данных содержит строку всех уровней над ним, например, строку панировки или путь к файловой системе.

Я использовал эти данные для создания демонстрации в своей презентации Models for Hierarchical Data. Я преобразовал материализованные данные пути в таблицу Closure.

 Смежные вопросы

  • Нет связанных вопросов^_^