I have account_id on all of the tables in the database that belong to an account. Could this be why our database is using a lot of memory?
Welcome.

There can not be a best and perfect database design (always). It all depends upon your (project) use case, coding simplicity and expandability.

Any best database design will have its own (exclusive) disadvantages too.

Nothing negative about your described design (until you listed - though not all of your ~50 tables). But you shall think of account as a single entity where in the record details goes into the account table itself. Referring

account.first_name, account.address1 account.city


looks good unless your account holders have multiple addresses.