Yes, there is a lot wrong with driving a relay coil directly from an Arduino. It won't work. The Arduino's outputs are not able to supply very much current - you shouldn't try to draw more than about 10 mA from them - and the relay coil needs significant current.
You can calculate the coil current from the coil voltage and the power consumption, using the Power law: P = V I. This rearranges to I = P / V where I is current in amps, P is power in watts, and V is voltage in volts.
It's not clear whether these relays have a coil power consumption of 200 mW or 450 mW so I'll calculate for both.
Assuming 200 mW coil power, I = P / V = 0.2 / 5 = 0.04 = 40 mA
Assuming 450 mW coil power, I = P / V = 0.45 / 5 = 0.09 = 90 mA.
That's the reason for the 2N3904. Say the resistor from the Arduino output to the base is 2k2 (2200 ohms). When the Arduino output is high, there will be about 4.4V across the resistor (about 5V at the Arduino end, and about 0.6V at the base - this is the "base-emitter forward voltage" of the transistor).
Using Ohm's Law you can find the current that flows out of the Arduino pin, through the resistor, and into the base of the transistor. Ohm's Law says I = V / R where I is current in amps, V is voltage in volts, and R is resistance in ohms. Applying this to the series resistor we get I = V / R = 4.4 / 2200 = 0.002 = 2 mA.
So only 2 mA flows from the Arduino to the transistor. The transistor has a current gain of about 100~200, so it will allow around 200~400 mA to flow through its collector-emitter path.
The resistance of the relay coil will limit the current through it to 40 mA (or 90 mA if it's a 450 mW coil) so the transistor will saturate, pulling its collector nearly all the way down to 0V and providing nearly 5V across the coil.
That's what you need to do.
A modern alternative to a BJT (bipolar junction transistor) (the 2N3904) is an N-channel MOSFET such as an FDV303N (
http://www.digikey.com/product-detail/en/FDV303N/FDV303NCT-ND). This is a SMT (surface mount technology) device, and it's also static-sensitive and needs proper handling. Its advantage over the 2N3904 is that it doesn't draw a continuous current from the Arduino pin, which is great for low-power applications, but this application obviously isn't one of those. To use a MOSFET, you connect the Arduino pin straight to the MOSFET's gate, with a high-value pulldown resistor from gate to source (100k or so). The pulldown resistor keeps the MOSFET turned OFF when the Arduino isn't driving it (e.g. during reset, when all its pins go floating). It draws a tiny amount of current. Just FYI.
No matter how you drive the relay coil, you need a reverse-connected diode across it - that is, a diode with its anode to the transistor's collector and its cathode to +5V - to protect the transistor against the back EMF voltage spike generated by the relay coil when the transistor turns OFF. This voltage spike would pull the transistor's collector up to a high voltage and possibly damage it (as well as creating electrical interference). A diode from the 1N400x family is usually used.