Извините, что напугал вас, но это очень маленький дизайн базы данных.
Когда я впервые начал нуждаться в разработке базы данных для веб-приложений, я обнаружил опору. К счастью, костыль, который я использовал тогда, теперь доступен в бесплатном инструменте NORMA , который работает с Visual Studio 2008 или 2005 (ожидается поддержка 2010).
Я быстро догадался о вашем дизайне и получил следующую модель ORM:
![Kids and Sponsors](https://i.stack.imgur.com/xepH8.png)
Это привело к созданию базы данных с десятью таблицами, включая соединительные таблицы, необходимые для множества отношений.
Инструмент NORMA может генерировать DDL из модели для нескольких различных баз данных, а также может создавать схемы XML и объекты LINQ to SQL.
Кстати, вот диаграмма ER сгенерированной базы данных:
![ER](https://i.stack.imgur.com/stLfa.png)
Я не понимаю, зачем вам все это нужно в одном наборе результатов, но вот запрос, который, я думаю, может все это вернуть. Я не проверял это с данными:
SELECT k.KidId, k.Name, k.FavoriteToy,
s.SponsorId, s.Name,
st.SponsorShipTypeCode, st.Description AS SponsortshipTypeDescription,
fw.FieldOfWorkCode, fw.Description AS FieldOfWorkDescription,
Skill.SkillCode, Skill.Description AS SkillDescription,
Parent.ParentId, Parent.Name AS ParentName
FROM Kid k
LEFT OUTER JOIN KidHasParent ON KidHasParent.KidId = k.KidId
INNER JOIN Parent ON Parent.ParentId = KidHasParent.ParentId
LEFT OUTER JOIN KidHasSkill ON KidHasSkill.KidId = k.KidId
INNER JOIN Skill ON Skill.SkillCode = KidHasSkill.SkillCode
LEFT OUTER JOIN Sponsor s ON s.SponsorId = k.SponsorId
INNER JOIN SponsorIsOfSponsorShipType Sst ON Sst.SponsorId = s.SponsorId
INNER JOIN SponsorShipType st ON st.SponsorShipTypeCode = sst.SponsorShipTypeCode
LEFT OUTER JOIN SponsorParticipatesInFieldOfWork sfw ON sfw.SponsorId = s.SponsorId
INNER JOIN FieldOfWork fw ON fw.FieldOfWorkCode = sfw.FieldOfWorkCode
Я создал этот запрос, взглянув на диаграмму ORM, чтобы узнать, какие пути являются необязательными (LEFT JOIN), а затем с помощью инструмента (ApexSQL Edit), который использует внешние ключи, чтобы помочь мне построить соединения. Это заняло менее десяти минут.