You've got two issues: data, and presentation.

\r\n\r\n

Most of the time, it's a mix of address, additional address (call that address 2, and CRC, it's not always used here either), city, state/province, postal code, and country. Address itself is street number, street. And/or building box, suite, apartment number, or P.O. Box.

\r\n\r\n

Then you have the problem of presenting it. Eg: German street addresses are expressed as "Street ##", so "Konigstrasse 101". Then postal code, then city, then country (you'll note that the Staadt (state) is omitted). There is a relatively small number (no more than a few hundred tops, allowing each country its own variant). I'd keep this as a format specifying structure, possibly tied to the national code so you don't have to store an additional field with each address. You'd express it as ranking street number, street, building suffix, city, state/province, postal code, country. I'm growing increasingly partial to printf() notation for such formats in various contexts.

\r\n\r\n

There's a good book on data modeling I picked up years ago which addresses this and similar problems. Know that the issues seem trivial but aren't, and have been the cause of more than one heated, hours-long argument between professionals.