1. Ensure all tables have a PK
2. Merger EMPLOYEE with EMPLOYMENT DETAILS, they have the same pk and are 1 to 1. You could have separate tables if an employee held multiple positions over time
3. Link ACCOUNT to CUSTOMER, the customer has an account, the account has an account type
And some questions
1. Are accounts of 1 or more types?
2. Do branches have ID values?
If you're in one of those predicaments where cls.__private attributes just aren't enough since they can easily be accessed through inst._cls__private, and you need something a little more secure, here's ...