Какова наилучшая практика проектирования для исключения определенного подмножества данных в модели базы данных - PullRequest
1 голос
/ 31 января 2012

Сценарий.

У меня есть библиотека полка, библиотека, пользователь, таблицы приложений в базе данных. Одна библиотечная полка может иметь много библиотечных файлов. Я хочу связать файлы с пользователями под каждым приложением. У меня могут быть пользователи из одного приложения, которые обращаются к файлам библиотеки, используя таблицу UserXLibraryShelf. Скажем, вместо того, чтобы сказать, какие полки доступны для пользователей, я хочу сказать, какие полки будут недоступны. Чаще всего пользователи будут иметь доступ ко всем полкам, кроме, скажем, приложений 3 и 5. Я могу сделать это, вероятно, с помощью UserXNotAvailableShelf. но тогда это работает как справочная таблица, и я должен сказать, принести все полки, которые не существуют в таблице NotAvailable для этого пользователя.

Какова лучшая практика для обработки сценариев исключений (исключать, а не включать) в проект базы данных.

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Совершенно приемлемый дизайн - иметь (базовые) таблицы как для «доступных», так и «недоступных», гарантируя, что каждая полка / пользовательская корреспонденция входит именно в одну из этих таблиц. Однако могут возникнуть практические проблемы такого дизайна в среде с интенсивным обновлением. постскриптум Рассматривали ли вы создание групп пользователей, соответствующих соответствующим группам с этими группами?

0 голосов
/ 31 января 2012

Обычно это делается с помощью ролей в MS-SQL.Например, вы создаете VIEW или PROCEDURE, который исключает определенные значения полки, и назначаете его роли, а VIEW / PROC, который включает в себя все полки, и назначаете его другой роли.Затем пользователям назначаются соответствующие роли.

...