I am now assuming that with schematic you mean symbol. Under schematic one would normally understand the full drawing of a circuit consisting of wires and a number of symbols. (plus maybe labels and subscheets but i think you should get the point.)
As a pre requirement you might want to read these 3 faq articles (As i do not know how knowledgeable you are about the kicad library system)
Kicad is very flexible in what you can do with its library system. Major workflows:
- Assign the footprint in the library (Fully specified symbols)
- Assign the footprints at the end of the design process (Generic symbols)
The later process has the benefit that you can move the part selection towards the end of your design process. It allows a few symbols to represent a large number of parts meaning your library will be a lot smaller (less maintainance work, easier to find stuff.)
It is a bit hindered by the fact that the symbol pin numbers are fixed. This means you need two symbols for every pin arrangement (see the 3 generic symbols that exist for transistor pin numbering schemes.)
The former requires you to think up front what part you will use. It allows you to include more information in the symbol and therefore the BOM. It also allows you to have a set of trusted symbols that are already connected to a trusted footprint. This will reduce your error points over the long run. (More up front investment, high pay-off later on.)
I personally would use a mixture of the two. It does not really make sense to have a specialized symbol for every resistor. But it makes sense to have one for a micro controller that is already connected to the correct footprint.
Here we also have a similar split. Use generic footprints (So one footprint for an SOIC-8_3.9x4.9mm_P1.27mm for all parts that use that particular package)
Use “atomic pairs”. This is a special case of a fully specified symbol where the symbol references a footprint that is “reserved” for that one footprint.
This has the benefit that a BOM created from the pcb side can include more information (pcb_new only knows about referece, value and footprint name. So if you want your pcb_new BOM to include some information it must be part of these 3 fields).
My personal opinion is that the BOM should be created on the schematic side. If a BOM is created from pcb_new then one can combine it with the schematic BOM to get the additional informations in there. This means atomic footprints don’t make that much sense to me.
Some parts however have both a highly specialized symbol and footprint. In such a case i would use specialized footprints. (An example would be a relay.)