Дизайн базы данных: определение контроля доступа - PullRequest
0 голосов
/ 16 августа 2010

Разрабатываемое мной приложение должно обеспечивать доступ к данным на основе списка городов, определенных для каждого клиента. Клиент может иметь:

  • доступ ко всем городам страны ИЛИ
  • доступ ко всем городам в штате / регионе ИЛИ
  • доступ к выбору городов в любом штате или страна.

Как лучше всего определить это в базе данных (если в базе данных есть таблица Country , State / Region table, Город стол и клиент стол)?

Разъяснение : (Упрощенный вид таблиц, в котором указаны только основные столбцы, относящиеся к этому вопросу).

Таблица страны -

idCountry | Имя

Таблица состояний -

idState | idCountry | Имя

Городской стол -

idCity | idState | Имя

Клиентский стол -

idClient | Имя

1 Ответ

0 голосов
/ 16 августа 2010

Можно создать собственную таблицу Location (Id, Name, ParentLocation) и таблицу AccessControl (ClientId, LocationId). Когда клиент связан с местоположением, вы можете предоставить доступ ко всем расположениям под ним. Некоторые примеры:

ID Name      Parent
-------------------
 1 World     NULL   -- Need to represent all countries
 2 Brazil    1      -- A country
 3 São Paulo 2      -- A state
 4 São Paulo 3      -- A city

Если вы хотите прикрепить свою текущую модель, например, таблицу (ClientId, CountryId обнуляемый, StateId обнуляемый, CityId обнуляемый). Таким образом, вы можете определить свой безопасный доступ в качестве своего определения, но вам придется иметь дело с пустыми полями.

...