Would I be correct to assume you can use the DbLib and external coding to make the library access look any way you want it to ... with enough work?
Sure. I'm pretty sure everyone who has ever set up a Dblib had every intention of building a nice front-end for their custom parts db, and I'm equally sure that only like two people have ever gotten around to actually doing it
. There's at least one commercial offering:
https://pcbparts.blogspot.com/p/welcome.html (never used it, just remember seeing it a while ago), and Google turns up an open source project or two.
Ideally, though, you could do things like link the parts DB into an ERP system and be able to tie in actual purchase pricing for costing out a design, or link design documents directly into procurement orders, etc.
ajb care to name a few of the problems you encountered so we are aware of them?
It was a while ago, so I don't remember the specifics, but I know I had issues with BOM outjobs, and occasionally the library browser would get confused and display/insert the wrong part. This may have been due to the particular way my Dblib was set up, and maybe some of those bugs have been fixed since, but it was a tremendous pain. I had to go through and completely re-link every part in a couple of designs a couple of times before I got the whole system set up to work around various AD limitations. It was also just annoying to deal with eight or so different tables, especially if you want to add or rename a parameter, or share footprints across part categories. . . it's all just easier with a single table.
There's also a temptation to do a separate table for each part category, and put in a whole bunch of different parameters so that you can select parts parametrically when inserting parts into a design, but IME that's a huge waste of time. I mostly just put the headline specs in the description for the part, and if I need more detail than that I have a link to the datasheet just a right click away. Stuff that is critical to selecting a part on a basic level goes into the hierarchical type/subtype fields, so for instance I have Caps->MLCC and then dielectric is a subtype of that, so I can easily put C0G parts where I need them and cheaper dielectrics where I don't.