I can't even begin to answer a lot of your database questions as I don't do a lot of programming. However, I do understand components. We manufacture custom HVAC ducting and piping, so while the component list is small, the need for the list work is still there. So, I made a dynamic component of a flange, with a bolt pattern.
See my attached sketchup file using this dynamic component. Under file, click generate report. Using the native tools with sketchup, this seems at the very least feasible to me. With the report generator, I am able to harvest the information I need with the ItemCode section, which would let me identify my large components. The small component information can be used to build my device with the proper CNC machining equipment. Although it has X,Y,Z information that is relative to the coordinates of the minor components, it would require simple vector addition to get the precise location of each hole in the model, and feed that to the CNC.
Working in reverse is a bit more complicated, but dynamic components would make working in reverse possible (an advantage). You could edit the data in your tables, use a script to redraw the dynamic component with the updated values, and viola! It would be updated. X, Y, Z and LenX, LenY, LenZ values would be recalculated and ready for the CNC. This does take some time however, as well designed dynamic components would take time.
Unfortunately, this will not be updated instantaneously. There would have to be a request for redraw, or a request to save the generated report, so these scripts could not be used if you wanted instantaneous information. Still, it would beat working with the sometimes buggy "observers" of ruby. And the report generator is actually a ruby script (so you could make it anew). The only issue I would see then is finding someway of having your ASP net "ping" sketchup to regenerate the report and redraw the model.
Dynamic Hole 2.skp