from a database perspective, i dont like that baseu table WAAAAY too much wasted memory for the abilities, though i will admit that it would be fast to run a query against. that's often the trade off that has to made with this sort of stuff. i don't know how to make a decision on that trade off, as my experience is with a corporate database that is just in the other room, so speed is not something that i am too terribly concerned with when writing queries. if i were to design it myself, and didnt have the speed of the internet to factor in, i would probably do something similar to what i suggested for the sprites. one table has a row for each skill (this would allow for descriptions to be stored for each skill as well without taking up a horrendous amount of memory) and a second table is a map between units and the skills.
it could be queried like this
Code:
select UnitID
from tbUnit
inner join tbUnitSkillMap
on tbUnit.UnitID = tbUnitSkillMap.UnitID
inner join tbSkill
on tbUnitSkillMap.SkillID = tbSkill.SkillID
where SkillName = "some skill name here";