1. A computer-implemented method for storing addresses within a database, comprising: capturing, to a memory of the computer, an address for an entity, the address having an address usage type that defines the intended use of the address; determining, by a processor of the computer, address elements of the address using an address template based upon the address usage type; determining whether the address is already stored within the database; if the address is not already stored within the database: creating, by the processor, within an addresses table, the database, and an address entry having a new unique address identification number; storing each of the address elements within an address element table of the database in association with the new unique address identification number; and creating, by the processor, an association entry within an address association table to associate the new unique address identification number with the entity and to store the address usage type; if the address is already stored within the database: determining an existing unique address identification number for the address within the database; and creating, by the processor, an association entry within the address association table to associate the existing unique address identification number with an entity and to store the address usage type; wherein the address usage type corresponds to an entry in an address usage order table that defines an order for searching for an alternative address when there is no address stored within the database with a requested address usage type for an entity.