Well, the way I would probably tackle this is to have a move list table. All moves listed out in singles, one row per one move. Each move will have a move_id.
That is what I have now with 12 different fields/attributes. (id, name, damage, energy, etc)
Then you have another table that is called moveset. Inside this table you have each row being an ID'd moveset, and fields for the total possible number of moves. There would be a moveset for every possible combination of moves, so that way each fighter would only need to have one moveset ID and that would cover every possible move combination.
This is where I get lost. Movesets seem a bit linear in terms of having a set amount of moves in order assigned to a specific moveset. For example, if a user wants his fighter to ONLY have move23, move105, move276, and move488, and he purchases said moves with in game cash, how would this be put in to a moveset? From what I gather your process seems like it might have to loop?
My biggest question is what would be the positives and negatives for this approach in customization terms over say a "many-to-many" relationship table linking fighter_id to move_id?