• I'm clearly not communicating my approach to you.

    one data table, one view to go with it.

    The view has a where clause in it.

    That where clause would apply whatever filtering is needed.

    For example, you want to filter on city.

    You would need a security access table called, for example, person_city_approved_access.

    Columns in that table would include a column to identify the person and another to identify the city. I am assuming that a database function the view can use in the where clause can identify the person's id from the user running the query.

    So, the view needs to filter the data table using the city code in the table via a join to the person_city_approved_access table.

    Hope that is clearer.