Normalization exists essentially to resolve redundancies. Do you see any redundancy in it?
Address
None shown. Is it possible for the customer to have more than one address? Is it possible for more than one customer to have the same address? If you can, maybe it makes sense to apply normalization in this case. With just one address it does not make sense to do this separation. Neither the second nor the normal form is applicable.
Note that in the second example you created a table named Cliente Endereço
. Why are you putting an agency address on it? It does not make sense.
Let's assume that it is actually an address table in general. It might even be the address there. But for what?
Nothing prevents you from having a table only for addresses, but if there is no repetition of the data you are not doing this by normalization. This makes sense if entities can have more than one address or more than one address.
I did not enter the normalization of the address table because it does not seem to be the focus of the question and in the presented form it may even be normalized, it does not have data indicating what the columns are, not even the types, it could very well be ids
of standardized data. You also might not want to normalize this.
Agency
A table has been created to separate the agency that it belongs to. Again, do you have more than one agency that the client can have? It's the same address question. How much money do I think I had to do this? What problem do you think solved it? Normalization needs to solve problems, not cause new ones. I saw no advantage in this.
Best model
Even these cases can be questioned in modern databases. It does not cost so much to keep space for more than one address in the entity itself. It is not always a problem to have a very recurring address record when two entities are in the same address. It's a question of pragmatism.
If you can have these cases, strictly speaking, it should normalize, but an experienced developer will analyze how much effort is worth because it complicates the model making all code and performance difficult. So you have to think about whether it pays off, if it's that necessary.
On the other hand, the whole model may be wrong. This idea of separating entities in customer, supplier, bank, etc. is wrong by nature. At least in the form presented.
Entities are individuals and legal entities (separate). Customer, supplier, bank, carrier, seller, employee, etc. are roles that these people play in this organization. In these tables should only have data on the roles. The data of the person in person should be in the physical and legal persons tables. This is most correct, but again it is possible to pragmatically do otherwise if it makes sense. But you have to choose another way because it's the best and not because it's the only way you know it. Not all cases make sense to separate like this, but in general it is the most correct.
I could point out other possible errors in this template. But it would be speculation because it's wrong knowing all the requirements. The mistakes I see would be according to my experience, not with the actual case, they might be right or wrong.
Standardization
To know how to normalize you need to know the objectives. Be the most formally correct, be the fastest to develop, be the easiest to maintain, be the most performative, be what the teacher taught or the boss did even if it is not the best, or whatever. You can not blindly normalize. Where to normalize and where to stop is something you will learn over time.