Assets are like parts. You would have an Asset table that holds all the fields that define the asset. You have a Facilities table that defines the facilities. Then you need a junction table that connects assets to a facility. If the assets have serial numbers and installation dates, and other attributes that relate to its relationship to facility, those attributes would be stored in the junction table.
I'm not sure you need a bill of material (assets attached to other assets) unless something about the asset changes when it is attached to a different asset. For example, does something about a hard drive change if it is installed on a different computer? When you say that HDA is installed on Comp1, you specify the serial number for HDA. If you have a second computer with the same typ0e of HD, then it has a different serial number in the record that attaches it to Comp2.
If an asset requires different types of maintenance such as oil change, lubrication, rotation, etc, you would have a a table that defines Maintenance with a row for each type of maintenance for each asset. Then you would have a completed maintenance table that connects a maintenance type record to a SPECIFIC instance of an asset by linking it to the junction table that connects assets to facilities.