the database schema is an API like everything else, and you can solve API evolution problems the same way as you would with a web API, using eg. views, stored procedures and versioning.
There's no reason not to expose parts of your database schema directly to users as long as you treat it like you would any other API you provide.