Разумно ли хранить массивы в столбцах таблицы? Точнее, я думаю о следующей схеме, которая, по моему мнению, нарушает нормализацию:
create table Permissions(
GroupID int not null default(-1),
CategoryID int not null default(-1),
Permissions varchar(max) not null default(''),
constraint PK_GroupCategory primary key clustered(GroupID,CategoryID)
);
и это:
create table Permissions(
GroupID int not null default(-1),
CategoryID int not null default(-1),
PermissionID int not null default(-1),
constraint PK_GroupCategory primary key clustered(GroupID,CategoryID)
);
UPD3: я представляю разрешения в виде строки с разделителями-запятыми, поскольку MSSQL является нашей основной целью развертывания.
UPD: Забыл упомянуть, что в рамках этого конкретного вопроса мы будем считать, что "выборка строк, имеющих разрешение X" не будет выполнена, вместо этого все поиски будут выполняться только с помощью GroupID и CategoryID
UPD2: я предполагаю типичный сценарий использования следующим образом:
int category_id=42;
int[] array_of_groups=new int[]{40,2,42};
if(!Permissions.Check(category_id, array_of_groups, Permission.EatAndDrink)) {
throw new StarveToDeathException();
}
Мысли
Заранее спасибо!