For medium and large sized utilities a lot of this detail is stored and maintained inside external asset management systems (Cityworks, SAP, Maximo, and WAM are the ones I've seen the most). Related data you're going to be using in things like collector is going to be captured in related tables (the example packages have inspections done this way). Other misc related data can be stored in flat tables and then either related or joined to the source data as needed. I wouldn't recommend having these joins and relates in your day-to-day editing displays since they'll impact performance, but having specific views that pull in several aspects of this data at a time is pretty typical.