The problem with our BOM is that it goes so many levels so I find it to be less intrusive on the system if I level that out to 1 flat file. Then I relate it to whatever I need.
My flat file looks like this
Parent Item, Component, BOM Level, Pieces Per, Component Item Revision, Release Status, and a few other user fields that I populate later.
I do however keep all of this on the DB2 system (IBM iSeries) and just read these on the users systems.