Я работал с похожими данными и сделал это в 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.