I suppose it depends on what you need them for. Basically all you need is one field in the database and a text area in your UI. I don't know of any address that won't fit into that schema.
About the only thing that really changes much is that not every
country has a ZIP code or equivalent.
Having 3-4 lines for an address or just a text field is normally sufficient,
but you do want to be capturing concepts like City/State (though
allowing for the fact that different countries have different names for
their primary geographic administrations, like province, county,
You might also want to read “Frank’s Compulsive Guide to Postal Addresses”, which I have found helpful.
To summarize: it’s really difficult. Unless you need to separate fields like city, state, postal code, or country for analytical purposes, the text area solution will hold an address of any format.
Just do it like Amazon does it and use name combinations to label the
fields like postal/zip code state/region, etc.. Most post offices
are pretty good about delivery even if things don't all get on the
right lines. For example some places might have a region, district,
city, and postal code, but most people will just put the
region/district or district/city together and it works. Just be
careful to give ample room for input fields and don't make them all
required unless you know the rules for the country in question. For
example some places still don't have postal codes.