there may already be somethign available for scouts / cubs but y'd probably be best off asking that question in a scout / cubs forum(s)
designing a db from scratch can go two ways
one way is an almost spreadsheet design that is quirky, on ly the designer knows there way round and fraught with problems
the other way is to properly design the db using the principles of good db design such as normlisation
Fundamentals of Relational Database Design -- r937.com
The Relational Data Model, Normalisation and effective Database Design
are two good articles, there's plenty more out there
one design metaphor is think of a db as a series of tanks each containing information relevent to the subject matter of that tank. you connect the tanks together using pipes (which identify what in tank a is the equivalent in tank b).. so called JOINS.. for now don't worry overmuch about the links.
so what makes a tank
..wee take ferinstance your scouts, a 'tanl' could hold detaisl of your scouts (but only stuff that is relevant to the person.. sao their name address, cotnact details and so on.
you could be tempted to add details of badges earned, but there coudl (should) be mnany badges per scout, so badges belong in another tank
if you have multiple items of data for one tank then thats alwasy a good sign that you should consider using another 'tank' to store that data. if you see yourself wanting to add an element of data as Badge1, Badge2... BadgeN or Phone1,Phone2...phoneN then thats an indication. if you know the number of such items at design time and you dont' need to search or otherwise manipulate the data then there are reasons why you could say have multiple phone numbers. but say those phoine numbers are parent/guardian numbers, perhaps you'd want to tore the names, perhaps you have more than one member of that family as a scout...
so you want to try and avoid repeating data (link a sout with a separate parent record. the reason for this is.. say the parents move hoime. ideally you only want to change information once, rather than each indiviudal scout... why well you may forget to change one of the scouts records meaning you then have inconsistent data and then you have quandry... which address is the right address
I don't know the detail of how scout badges work, but Id expect something like:-
Persons (details of people, people includes scouts, parents, gaurdians).. this would include anything personal (eg email, mobile phone, but not home phone, address and so on)
Person Types (identifies a role eg a scout, parent, guardian, pack staff)
Addresses and address and landline number
A person may or may not have an address
..then you move on to the more scout orientated stuff
form what you say badges are earned either outright or as a completions of a series of sub awards
so you need to know what awards are available, that requires an entity/tank
you then need a way of defining a structure (linking what awards with others further up or lower down the structure. you coudl indicate if the sub task was optional or not
Athletics Plus Activity Badge requires Athletics Activity Badge plus indiviual qualifications.
the potential problem is where you have optional elements or sliding scales, again looking at the Athletics Plus Activity Badge depending on age and distance/speed/time scouts earn points. to fully replicate that model is going to be tricky and require some real design time. it may make more sense at present to record the points earned and manually interpret that rather than have the program do it all for you
but its your design, its your requirments do waht works for you rahter than an academice db exercise
I'd rather be riding on the Tiger 800 or the Norton