I don't think this is too terrible to store the data. It sounds like a heirarchy of sorts. The classic example is creating an organzational chart for a company using an Employee table. Everyone working for a company is an employee of that company, but how do you show the hierarchy of the management. I have seen it where you add a ManagerID field and everyone has the EmployeeID of their manager in the ManagerID. The only person that doesn't have a ManagerID would be the President/CEO.
I think this structure would work for you. But when you select a part you will need a function that will recursively find all the related parts. The storage of the data is probably going to be easier than the function(s) to make sure the user is getting all the applicable parts.
Thanks for replying. Your suggestion is very attractive and I would like to do it that way. The only thing I can't wrap my brain around is querying multiple 'managers' up or listing 'employees' in a partitioned/indented fashion.