Frankly, I think the idea of storing the real name as an alias is an excellent idea.
It simplifies logic and reflects reality - the drug can be called anything in the alias table.
The parent table us for reporting, the child table is for searching. It makes perfect sense to me.
So what if there's a tiny bit of data duplication. To remove the duplication introduces a lot of complexity for virtually no gain. Also there's no issue of data maintenance keeping the scientific name in synch with the same name as an alias, because the scientific name never changes.