Newbie question: I have a designer who reads information from a SQL Server  database. I've setup a few views for him to pull his data from and granted his user a member of the db_dataread role. His program uses an ODBC connection to grab the data.
However, this allows him read access to all of the tables and system views and tables, requiring unnecessary searching and confusion for the user.
Is there a way to restrict what he can see to only the handful of views I've created for him?
[EDIT: I've created a new test user, and a new test ODBC connection, giving no permissions at all with no change in results. From what I've read, it is because all users are part of the PUBLIC server role. The public role appears to give SELECT privilege to all system objects. Anyone know otherwise?]