So the following are our notes on the OP schema. It's a bit informal, but should be good enough to get the point across. It's described in terms of data type; these might or might not all actually wind up DB tables, but they're the conceptual objects and relationships we need to track. (In particular, when I say "Enumeration" below, it means a relatively finite list, but they might be represented as either real enumerations or small tables.) Note that most pointers may be null -- the sad reality is that information is often incomplete. It's by no means final, but it's mostly right.
This is potentially interesting to programming or heraldry/OP geeks, and probably not to anyone else.
In no particular order (well, in the order they wound up in the white board sketch):
Type: Crown Type
Name: SCA Name
Enumeration -- King, Baron, Prince, etc.
Type: Group Type
Contained By: Group
Enumeration -- Kingdom, Barony, Shire, etc.
Enumeration: Unknown, Male, Female, Collective
Primary Name: SCA Name
Resides In: Group
Current Mundane Name: Mundane Name
Registered Arms: String
Is Collective: Boolean
Is Living: Boolean
Enumeration: Peerage, Upper Kingdom, Lower Kingdom, etc.
Name: String ("Laurel", "Crescent", "AoA", etc)
Level: Award Level
Crown 1, Crown 2: Crowned Head
Name of Court: String (optional, eg, "First Court of TRM")
Sequence: Integer (eg, first, second, third court of the event)
Hosting Group: Group
Recipient: SCA Name
Data Source: Data Source (where we got the info from)
As Part Of: SCA Name (collective)
Enumeration -- Court Report, Heard from Recipient, Other Kingdom OP, etc