Can you create multiple tables in a migration? Yes. You can create/remove/modify whatever you like in there really.
Can you write a seed script that adds data to multiple tables? Yes.
Can you write a function that adds data to those tables/schemas at runtime? Yes. Repo.transaction and Ecto.Multi will do it in a transaction. There is nothing stopping you doing it outside of a transaction (except application requirements, e.g. consistency).