It's rather interesting how since the beginning of computers, computer systems have had trouble stuffing the world's addresses into an originally American based schema (ZipCode/State), with ancient protocols (Fax?!?)
They don't fit.
Here is an example of a more capable schema that does work.
!includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt
class Body {
Id:Guid
State:State
CategoryFK:Guid
Category:BodyCategory
PreferredNameFK:Guid
PreferredName:BodyName
Names:BodyName[]
Properties:BodyProperty[]
Claims:BodyClaim[]
}
class BodyCategory{
Id:Guid
State:State
Text:string
}
class BodyName {
Id:Guid
State:State
Type
Name
Prefix
First
Middle
Last
Suffix
}
class BodyProperty {
Id:Guid
State:State
Key:string
Value:string
}
class BodyClaim {
Id:Guid
State:State
Authority:string
Key:string
Value:string
Signature:string
}
class BodyChannel {
Id:Guid
State:State
Protocol:enum
Address:string
Unit:string
Street:string
Neighborhood:string
City:string
Department:string
State:string
PostalCode:string
Country:string
}
Body "1" -UP- "*" BodyCategory
Body "1" -LEFT- "1-*" BodyName
Body "1" -RIGHT- "*" BodyProperty
BodyProperty -[HIDDEN]DOWN- BodyClaim
Body "1" -RIGHT- "*" BodyClaim
Body "1" -DOWN- "*" BodyChannel
Note, obviously, one can take it further (remove enums, etc.) but you get the point.