Inheritance of unknown type at creation time Say I have a table called People into which people are inserted from the moment they are born. Now lets say I want some subclasses of people based on their job. So there are also tables for Plumber, Carpenter and Electrician. Now, when a person is born, I don't know if they're going to grow up to be plumbers, or carpenters, or electricians - So I can't have reference the person in every table via a foreign key. 

So when little Johnny grows up, how can I bind him to being a Plumber. Is there some sort of pattern for this, or is this a stupid question with an obvious answer? Either way I'd appreciate some help, thanks!
Try searching  "single table inheritance" or "class table inheritance".  Especially the web pages from Martin Fowler.

Also, if you use a technique called "shared primary key", you can reference a person by that person's personid regardless of what occupation the person eventually chooses.  In the Plumber table, the primary key is not plumberid, but rather personid, which is a copy of the personid from persons.  You declare plumber.personid to be a primary key, and also to be a foreign key that references person.personid.

This has some rather nice results.  It makes joining plumbers and persons simple, easy, and fast.  It maintains the one-to-one or zero-to-one relationship between plumbers and persons.  And it allows you to reference a child without knowing  whether that child will grow up to be a plumber or not.