Scenario.
I have a library shelf, library, user, application tables in the database. One library shelf can have many library files. I want to associate the files to users under each application. I can have users under one application access library files using a UserXLibraryShelf table. Lets say rather than saying what shelves are available for the users, i want to say which shelves will not be available. Most times users will have access to all the shelves except say for applications 3 and 5. I can do this probably by having a UserXNotAvailableShelf. but then this works like a look up table and i have to say bring all the shelves that do not exist in the NotAvailable table for this user.
What is the best practice for handling exception scenarios (exclude rather than include) in the database design.
It is a perfectly acceptable design choice to have (base) tables for both ‘available’ and ‘unavailable’, ensuring that every shelf/user correspondence goes into exactly one of those tables. However, there may be practical problems of such a design in an update-intensive environment. p.s. have you considered creating groups of users then corresponding shelvers with these groups?