My definition is that an atomic part is one which has a symbol and a footprint (and one assumes that the footprint carries with it a 3D model, but that’s not important). The atomic part includes a Part Number or some other identifier. This Part Number could be a complete manufacturer’s part number (which necessarily encodes package type), or it could be a “house” or “company” part number, which is used as a key in a database which will ultimately point to an orderable manufacturer’s part number.
The name of the atomic part in a library is generally the full manufacturer’s part number. This is important, as OPA551UA and OPA551PA are two unique devices. They differ in package, so substitution (in the sense that you want to put them on a PCB) is impossible. (I know there are those who say, “but I want to defer the choice of package until I’m in layout.” I am not interested in that argument, as it complicates the design, and generally when I am choosing parts I work with the buyer to know what I can get and at what price. That consideration is more important than package per se.)
For ICs and many types of parts, the Value field is unimportant, and is usually identical to the name of the part in the library.
The spanner in the works is what to do about common passives, such as resistors. The brute force choice is to have one library entry per resistor value/package/tolerance. This can lead to very large libraries, but the library creation itself can be automated. Other ways of handling this include using the Value field and the Part Number field together, and have a post-processing script build the manufacturer part number from the two. Panasonic resistors, for example, have a very rational part-numbering scheme, so the mapping is not onerous.
Electrolytic capacitors? Good frickin’ luck.
I realize that I am repeating myself.