I would use my own identifier.
The species name may be unique but
- it's too long
- it's a string
For example, in SQL Server, if used as the clustered primary key it will be used in non-clustered indexes, thus repeating the long string. And typically foreign keys omn child tables will go to the primary key, thus repeating it again
As a string, you have the overhead of sorting and comparison (case, accents, etc).
Using a surrogate numeric key avoids these problems: but you must create a unique non-clustered index on the species name.
Is species name a good long term identifier too? Not my area of expertise but don't many species have alternate names, or controversies, or get reclassified, or "maybe this species"?
Example: how many Giraffe species are there? 9? 2? 6? 8? 4?