I worked on a company that used the following naming system... I'm sure it's not that perfect naming system but it was the best i worked with, we had just a few problems with it.
9999-99-99
The four first digits are just a sequential and unique numbering system, the tow middle ones are thre to indicate the if the part is welded in anoter one, it's 00 for the welded assy and 01, 02, 03 and so on for the parts in this assy, or just 01 if it's a independent part. The last two are the revision number. Every fabricated part or assy is saved with an unique number with those rules. The drawings are saved with the same name of its referenced part or assy. Every project has a folder on the server and its parts are saved into a PARTS folder in this folder. When the revision is increase we just have a macro that do the bored work of saving the drawings and all the references as needed. The revised parts are archived in a dead file folder. The mounting assys are saved separetely of the fabricated parts and assys, with no special naming system, ie PACKING UNIT, HOT MELT APPLICATION, FORMING UNIT...
For comercial parts we save them with the manufacturer code like DNC-32-XX-PPV, SKF3201... all in a library folder. Then we have lots of configurations into all of them and each config has an User Specific Name to appear in the BOM, this number is the naming system of the parts, like C9999, EF9999, P9999, and the first one or two alpha characters means the tipe of the library item, like component, fixing elements... We chose this method for comercial parts just because they should have configs and we can't use more than one name to the same file... a windows limitation yet LOL Then we have a database with all codes of the manufactured and comercial parts with all information about this part, even the info that is in the custom info, so if a client needs a spare part just give us the code and we track it by the database... I was having some ideas to some little improvements but I changed the company... The biggest problem with this naming system is the limitation of just 9999 diferent parts... We almost reached this number in less than 2 years... But it's easy to solve, there's a lot of easy ways, like changing for something like that: X999-99-99. This way we double the possible variations.