Is my design optimal?
The switching was done using an transistor bc547b. Which has an
  2.5kohm resistent on its base leg to the aurdino pin. Base current is 100mA/200


No, this is untrue. The base current IS NOT 100 mA. Some arduinos run from 5V and some 3V3. I have assumed 3V3 and if the GPIO pin driving the base were high, the likely current you have flowing into the base is: -

I = \$\dfrac{3.3V - 0.6V}{2500\Omega}\$ = 1.08 mA.

The 0.6V comes from the forward volt drop of the base-emitter in the BC547.

So, irrespective of the collector current being maybe a problem, you are driving it with 1 mA and not 100 mA. FYI the arduino's GPIO pins cannot source anything like 100 mA.

If you want to drive 100 mA into the LED then a BC547 can do this but you will probably need a current limiting resistor in series with the LED. I'd consider reducing the base resistor to something like 470 ohms and putting a 100 ohm resistor in series with the LED BUT, this all assumes you have a fairly standard high power LED with a forward volt drop of 2 or 3 volts.

You have not disclosed this information so, you need to research this and possibly come back with a link to the data sheet.