Broadly speaking, I think most approaches to alchemy in adventure games tend to go wrong in one of two ways:
1) All mixtures and alchemical works are ultimately random, involving combining some arbitrary combination of junk that results in nothing more than a random roll or two on a table. In some rule sets, this will not even be a repeatable process, so that eye of basilisk mixed with cyanide will be a healing potion one week and a potion of flame breath the next. Player skill is irrelevant to the final outcome.
2) In predetermining what combinations of ingredients will create. Usually this involves a list of ingredients or mixtures of ingredients, and a correlated list of effects. The list may be kept secret from players, or may not be. Either way, the referee must create a large table of ingredients and effects beforehand, only a small portion of which will likely be used. Once a given formula is determined, players will either ignore it (if detrimental) or attempt to reproduce it to the point of trivial accessibility (if beneficial).
Neither of these approaches is completely wrong, but rather each emphasises one possible fun element of alchemical systems in games and then builds itself around reproducing only that element. Random systems emphasise surprise and unpredictability. Indexed chemical lists emphasise reproducibility. What I will propose is not an alchemical system, but a procedure for running an alchemical system.
My Proposals Are That:
1) One ought to start off with no list of ingredient combinations in one's alchemical system. A potion mixture begins with combining two ingredients. Ingredients are two interesting bits of the environment that a PC wishes to mix alchemically (presumably using a lab, though not necessarily). Combining the two ingredients produces a random roll on the table of effects (or you can just make something cool up, as one pleases). Once this has been done, write the ingredient combination down with the effect next to it. As PCs continue to do this, more entries are added to the table, ensuring that only combinations that will actually be used in play are generated. Entries become fixed in this way.
2) If a third ingredient is added to the mixture, either roll an additional effect (increasing the likelihood of poison), or roll on the table of potion-mixing results if one's adventure game provides one, or make something else up. Add any additional effects created by the mixture of each of the constituent ingredients of the original mixture with the new ingredient. Write this combination down with its correlated effect twice. Once as "[Potion of X] + [Ingredient 3] = [Effect 1], [Effect 2]" and once as "[Ingredient 1] + [Ingredient 2] + [Ingredient 3] = [Potion of Y] with [Effect 1], [Effect 2]"
This will provide potions with multiply-realisable pathways for their creation. It may also lead to the production of additional effects as players work out the logic of various combinations:
a) Eye of Basilisk + Cyanide = Potion of Healing [Randomly determined]
b) Cyanide + Kraken's Blood = Potion of Flight [Randomly determined]
c) Potion of Healing + Kraken's Blood = Potion of Flame Breath [Randomly determined]
d) A Potion of Healing (Eye of Basilisk + Cyanide) + Kraken's Blood = Potion of Healing + Potion of Flight + Potion of Flame Breath
Eventually a deadly poison or acid, or some other detrimental effect will be generated as one of the effects, so this system tends to be self-limiting. I tend to use a list that includes a variety of non-deadly poisons to make the decision to use potions more calculated. In Emern, the one type of healing potion the PCs knew how to make also caused them to hallucinate wildly for 1d6 hours.
3) For simplicity's sake, have the players keep the paperwork. If they can't produce a written record of what a previous combination of ingredients did, then mixing ingredients defaults to a random roll. If the potion has no obvious ingredients (viz. you randomly rolled it in a treasure hoard and are too busy dealing with the consequences of the ring of three wishes the PCs obtained at the same time), then the effect of its combination with another ingredient is randomly determined. If this ends up partly mimicking an already-existing combination and a PC can demonstrate so through reference to written records, then the potion was clearly composed of those constituent ingredients. This also means no one devotes more time to a complex alchemical system than they feel useful.
4) A PC may conduct alchemical research, which is just figuring out the effects of potions without having to administer them to one's self or another named character. This can be a skill test, cost money, whatever (this is not an alchemy system; this is the sort of thing alchemy systems exist to do). PCs name an effect they want (either off the table or more generally) and then are given two ingredients (which may be complex mixtures themselves) that will create some version of it. You can just roll on your already existing list of ingredients, or your already existing list of potions, or already existing table of monsters or whatever other table one pleases to generate these ingredients.
Additional Comment on "Potions"
"Potions" as fluid-in-a-vial are kind of boring and one can easily spice them up by doing nothing more than providing them in forms requiring different types of administration. One of the things I tried to do in my Emern potion tables from a couple years ago was to create potions that almost never came in the form of bottled liquids. One can provide an additional random factor to the above system by randomly determining the form the new potion is in. This may mean that certain combinations are more useful / tasteful than others, as well as providing amusing colour about the process of creating the potion (feeding it to docile spiders who then inject it into one; pouring it into the ground surrounding a tobacco plant and then harvesting the leaves, etc.).