By default when I create a new database in odoo, the tables are created in the public schema. Is there a way to change this configuration and that odoo create and use another defined scheme?
There is no way to do that, odoo use it by default and it don't provide any config for this.
And you cannot do this because a lot of the module also use sql query that retrieve the data from the public schema.
Like account, amail, sale........ etc. They assume that it's public always.