a horse has details relevant to that horse
a horse has two parents
a horse may compete in many races
a horse racing event may have many races
a horse racing arena may hold many events
a series may comprise many events from many or one arena over a period of time
a horse may change its name over time
a horse may have many owners over time
a horse may have many riders over time, but only one rider per race
a horse may have many trainers over time, but only one trainer at anyone time
so for your horse table you may see somehting like
HorseID autonumber PK
HorseName
OwnedBy bigint 'fk to table containing details of owners
HorseType 'identifies the type of horse could be M/F, or could be fill, stallion, gelding orwhatever silly names horsey people give
Mare 'fk to to the mare of this horse to another row in this table
Sire 'fk to to the sire of this horse to another row in this table
DoB 'date of the horse's birth
....etc
..you would need to iterate up or down the tree using a series of SQL calls
one problem you are going to have is recursion and re-entry. its quite feasible for the same sire line to re-appear in the progeny, especailly as AI is increasingly used.