Guest
Roger Lascelles <despam_rklasl@aanet.com.au> wrote:
suggesting that these are optimal for you, just giving some examples.
General Electric major appliance part numbers are (were?) of the form
W[A-Z][0-9]{1,2}X[0-9]{1,4}
The leading "W" is constant and I am told it stands for "white goods" -
refrigerators, washing machines, etc. ("Brown goods" are TVs, stereos,
etc... they had a leading "E".)
The second letter indicates what type of product the part is for. R=
refrigerator, B=oven, E=dryer, H=washer, etc. X was used for common
parts like screws, washers, and bolts that could be used in many
different products.
The next two digits indicate a major subsystem or group of related parts
on the machine. For example, in refrigeration, timers are 9, and
compressors are 87.
The "X" was a fairly constant separator. Historically it was the only
separator, but "J" and "M" have also been included in newer part
numbers.
The last one to four digits are just a serial number to tell the parts
apart - they don't encode any characteristics of the part. About the
only thing you could tell from these numbers is that newer parts had
bigger numbers.
People typically didn't pad the numbers (WR9X330) but the computers did
(WR09X0330). The lookup was smart enough to accept either style and
find the right part. The "canonical" form was all upper case, but as
far as I remember, it was case insensitive... wr9x330 or wR9x330 would
all be acceptable to the computer as the same part number.
Volkswagen automotive part numbers are described at
http://www.type2.com/library/identifi/numsys.htm . This system was
probably originally designed with Hollerith cards in mind!
The parts list for an old Systron-Donner frequency counter I have shows
parts with a leading letter and four or five digits. The leading letter
mostly corresponds to the part type: (R)esistor, (C)apacitor (no
distinction between ceramic, electrolytic, etc), (S)witch, X for
sockets, (V)acuum tube, CR for diodes, etc. Integrated circuits and
transistors seem to have all-numeric part numbers. The digits just seem
to be assigned in order of use.
My response to a couple of other points that have been brought up:
Allowing upper case and lower case letters in your part numbers does
double the number of possible values in each digit, but IMHO will drive
you crazy. If nothing else, most existing part numbering schemes are
case insensitive, and you may tend to confuse people if they assume
your scheme is the same. I think it won't be obvious to a lot of people
that an A0123 and an a0123 are two totally different items.
The two extremes of part numbering are probably an all-numeric part
number that has no inherent meaning (73853), and an alphanumeric string
that tries to describe everything about the part (RES 1K 0.5W 5% METAL
FILM). Both of them will drive you crazy. The all-numeric ones are too
easy to confuse with one another. The alphanumeric string only works if
you rigidly enforce some standard when you're putting new parts into the
system, which never happens.
One slight advantage to the all-number system is that these are easy to
copy correctly over the telephone. An alphanumeric system is harder to
communicate - was that a D123 or a P123 or a B123? - unless you can train
people to use some kind of phonetic alphabet (Alpha Bravo Charlie, Able
Baker Charlie, etc).
If you have reason to suspect the part numbers may get garbled, or if
you're just paranoid, you can include a check digit.
It may be helpful for the humans to include dashes, dots, or spaces in
the part number. A big reason why local phone numbers in the US are
seven digits expressed as three digits, dash, four digits (555-1212) is
that Bell System research showed that most people could remember at most
seven digits, and they remembered the digits better if they were broken
into a couple of groups. The computer can store the numbers without any
of this stuff, but it should accept user input with or without the
dashes, dots, etc.
When you're trying to decide how long to make the number, also consider
how many numbers you will need total. Disk storage is cheap, and adding
one more digit multiplies your total available part numbers by at least
10 or 26 or 36. If you later discover that the part numbers are too
short and you need to go back and add more digits, this can range from
trivial to painful (usually the latter) depending on the software. It
may be smart to "waste space" now to save pain later.
If I were trying to do this from scratch for electronic components, I
might do something like this:
[A-Z]-[0-9][0-9]-[0-9][0-9][0-9][0-9]
The initial letter would identify, broadly, the component type:
(R)esistor, (C)apacitor, magic (S)moke, etc.
The next two digits would indicate more attributes of the component.
For resistors, this might include metal film, carbon film, wirewound,
through-hole, SMT, wattage, etc. Maybe this would be just one digit.
The final four digits would just get assigned as needed.
I would create a database to go with this, with the part number as the
primary key of the main table. The main table would also have
additional columns of descriptions that apply to most parts, like
tolerance, through-hole or SMT, and so on. It would also have a
reasonably-sized string field for future use. It's not "clean" design
to have to stick two or three new attributes into this string field
later, but sometimes it beats having to add a column to the table.
There might be other tables for less frequently used descriptions,
also indexed by the part number.
To make the production people happy, one of the pieces of data would be
the part marking for parts that are color coded or too small for a
complete part number. In other words, the list going to production
would say things like "R-42-5309, resistor 1K 5% 0.25 watt metal film,
brown-black-red" or "T-12-8670, transistor 2N2222A surface-mount, 8T5".
A place I worked at also used the Parts and Vendors software that has
been mentioned. I don't know anything about it other than that it
exists and it was possible to run it on several networked computers
accessing a common database.
Whatever database or other software you use, and whatever backup plan you
have, I would also suggest occasionally dumping the part number database
tables to CSV or similar delimited plain-text files. If you need to
change software vendors for whatever reason, most databases can be
persuaded to accept a CSV or delimited-text input. To get your data
into the new database, you might have to change single quotes to double
quotes or escape the commas or whatever, but this is really easy to do
with the right tools, such as awk, sed, perl, and friends on a Unix
system.
I hope this helps!
Matt Roberds
Here are the ways a couple of big companies have done it. I'm notWe are a small company, and we would like to implement a better components
numbering scheme.
suggesting that these are optimal for you, just giving some examples.
General Electric major appliance part numbers are (were?) of the form
W[A-Z][0-9]{1,2}X[0-9]{1,4}
The leading "W" is constant and I am told it stands for "white goods" -
refrigerators, washing machines, etc. ("Brown goods" are TVs, stereos,
etc... they had a leading "E".)
The second letter indicates what type of product the part is for. R=
refrigerator, B=oven, E=dryer, H=washer, etc. X was used for common
parts like screws, washers, and bolts that could be used in many
different products.
The next two digits indicate a major subsystem or group of related parts
on the machine. For example, in refrigeration, timers are 9, and
compressors are 87.
The "X" was a fairly constant separator. Historically it was the only
separator, but "J" and "M" have also been included in newer part
numbers.
The last one to four digits are just a serial number to tell the parts
apart - they don't encode any characteristics of the part. About the
only thing you could tell from these numbers is that newer parts had
bigger numbers.
People typically didn't pad the numbers (WR9X330) but the computers did
(WR09X0330). The lookup was smart enough to accept either style and
find the right part. The "canonical" form was all upper case, but as
far as I remember, it was case insensitive... wr9x330 or wR9x330 would
all be acceptable to the computer as the same part number.
Volkswagen automotive part numbers are described at
http://www.type2.com/library/identifi/numsys.htm . This system was
probably originally designed with Hollerith cards in mind!
The parts list for an old Systron-Donner frequency counter I have shows
parts with a leading letter and four or five digits. The leading letter
mostly corresponds to the part type: (R)esistor, (C)apacitor (no
distinction between ceramic, electrolytic, etc), (S)witch, X for
sockets, (V)acuum tube, CR for diodes, etc. Integrated circuits and
transistors seem to have all-numeric part numbers. The digits just seem
to be assigned in order of use.
My response to a couple of other points that have been brought up:
Allowing upper case and lower case letters in your part numbers does
double the number of possible values in each digit, but IMHO will drive
you crazy. If nothing else, most existing part numbering schemes are
case insensitive, and you may tend to confuse people if they assume
your scheme is the same. I think it won't be obvious to a lot of people
that an A0123 and an a0123 are two totally different items.
The two extremes of part numbering are probably an all-numeric part
number that has no inherent meaning (73853), and an alphanumeric string
that tries to describe everything about the part (RES 1K 0.5W 5% METAL
FILM). Both of them will drive you crazy. The all-numeric ones are too
easy to confuse with one another. The alphanumeric string only works if
you rigidly enforce some standard when you're putting new parts into the
system, which never happens.
One slight advantage to the all-number system is that these are easy to
copy correctly over the telephone. An alphanumeric system is harder to
communicate - was that a D123 or a P123 or a B123? - unless you can train
people to use some kind of phonetic alphabet (Alpha Bravo Charlie, Able
Baker Charlie, etc).
If you have reason to suspect the part numbers may get garbled, or if
you're just paranoid, you can include a check digit.
It may be helpful for the humans to include dashes, dots, or spaces in
the part number. A big reason why local phone numbers in the US are
seven digits expressed as three digits, dash, four digits (555-1212) is
that Bell System research showed that most people could remember at most
seven digits, and they remembered the digits better if they were broken
into a couple of groups. The computer can store the numbers without any
of this stuff, but it should accept user input with or without the
dashes, dots, etc.
When you're trying to decide how long to make the number, also consider
how many numbers you will need total. Disk storage is cheap, and adding
one more digit multiplies your total available part numbers by at least
10 or 26 or 36. If you later discover that the part numbers are too
short and you need to go back and add more digits, this can range from
trivial to painful (usually the latter) depending on the software. It
may be smart to "waste space" now to save pain later.
If I were trying to do this from scratch for electronic components, I
might do something like this:
[A-Z]-[0-9][0-9]-[0-9][0-9][0-9][0-9]
The initial letter would identify, broadly, the component type:
(R)esistor, (C)apacitor, magic (S)moke, etc.
The next two digits would indicate more attributes of the component.
For resistors, this might include metal film, carbon film, wirewound,
through-hole, SMT, wattage, etc. Maybe this would be just one digit.
The final four digits would just get assigned as needed.
I would create a database to go with this, with the part number as the
primary key of the main table. The main table would also have
additional columns of descriptions that apply to most parts, like
tolerance, through-hole or SMT, and so on. It would also have a
reasonably-sized string field for future use. It's not "clean" design
to have to stick two or three new attributes into this string field
later, but sometimes it beats having to add a column to the table.
There might be other tables for less frequently used descriptions,
also indexed by the part number.
To make the production people happy, one of the pieces of data would be
the part marking for parts that are color coded or too small for a
complete part number. In other words, the list going to production
would say things like "R-42-5309, resistor 1K 5% 0.25 watt metal film,
brown-black-red" or "T-12-8670, transistor 2N2222A surface-mount, 8T5".
A place I worked at also used the Parts and Vendors software that has
been mentioned. I don't know anything about it other than that it
exists and it was possible to run it on several networked computers
accessing a common database.
Whatever database or other software you use, and whatever backup plan you
have, I would also suggest occasionally dumping the part number database
tables to CSV or similar delimited plain-text files. If you need to
change software vendors for whatever reason, most databases can be
persuaded to accept a CSV or delimited-text input. To get your data
into the new database, you might have to change single quotes to double
quotes or escape the commas or whatever, but this is really easy to do
with the right tools, such as awk, sed, perl, and friends on a Unix
system.
I hope this helps!
Matt Roberds