Why so many (ten million rooms - wow!)? You can get 9,999 rooms out of
four digits!

The short (easy) answer is:- Room
Number versus Room
Code.For project work, that Room Code has to be (reasonably) universal. The large city hospital - or the dialysis annexe to the bush clinic. It also needs to be consistent (and of fixed length) in order to relate to other projects and other databases.
In a code string an individual alpha position gives you 26 possibilities, whilst a digit only gives ten. But the trouble is that when you use A-Z characters, the eye (brain) can't help but seek out meanings, and/or patterns (sometimes rendering "unintended consequences", such as "ECG" meaning something other than "ECG", or even something rude or offensive in someone else's language, culture, religion, world-view ... whatever). That's another reason that I like to restrict alpha strings to clusters of three only (
ie, no "four letter words" allowed)!
If you used only alphas, you would end up with something like:-
HA-KTN-AB-AZ ... which looks more like an aircraft registration number than a project room code (or, as intended in this case, a room in the main hospital kitchen)!
In my room code the AAA cluster is a 3-character "department" code that is semi-meaningful. Anything else would have been inelegant, in my view.
The 3-digit segment to the right of the department code is the room number (within the department). Obviously this allows for up to 999 rooms in any department. 99 may be enough in many cases, but anything less (that is, up to ten) would simply be insufficient! All design is compromise, and when laying out databases such decisions have to made early on (especially as it can be a mountain of work to revamp it all later).
Looking at a floor-plan (drawing), or even on the ground at site, I usually go around each department in clockwise fashion, starting at the entrance, numbering
every room as I go. 001, 002 ...
etc. whilst ignoring the original "architects'" room numbering (apart from noting it in the database alongside my own room code). I have often found original room numbering schemes to be an incoherent mess, sometimes missing out some rooms altogether (small ones, for instance ... and sometimes even large ones as well - such as main lobbies and unusual stuff like tunnels, mechanical shafts and the like)!
The right-most 3-digits relate to room type(s). Again, there has to be more than a hundred of those (I'm looking at a list of 645 at the moment)! You probably don't need to mention "room type" in a room numbering scheme once the hospital is operating, but you do when you're at the design stage and/or trying to produce a decent BofQ.
The first three (left-most) positions point to a physical area within a project (eg, which building, and floor level). Again it seems to work OK.
Sorry Neil, but bearing in mind its intended use (new hospital projects and similar) that room code is as good as any (and better that most I have ever come across). Believe me I have given stuff like this a fair amount of consideration over the years. So much so, that to my mind at least, it is (c) Geoff Hannis!

Anyway, how about the Item Code:- BFX-010 (for example - and currently pointing to "Bar: Grab: Straddle: Toilet" of all things)? Perfect, or what?
Again:- three alphas giving "Package" grouping (
eg, BFX for "Building Fixtures and Fittings")* and 3-digits for consecutive numbering (that is, up to 999 spec items in each grouping). Also my own original work over many years, and largely in response to appallingly poor efforts by others!
OK ... that's enough for now. Time for a cup of tea, and then to crack on with writing up the Users' Guide. As Huw has mentioned, the most tedious (but necessary) part! To which I would add that (in my own experience at least) that is when the most glaring
snafus leap up and slap you in the chops!
*
Full Package list (presently of 62 codes) available on request!