Sql Server 2008 с массивом
У меня две таблицы в моем sql:
Пользователи:
id name roleid
1 David 1
2 Sean 2
3 Joe 1
Роли:
roleid desc
1 copy
2 delete
3 move
Теперь я использую этот cmd для выбора пользователя с разрешением пользователя
SELECT * FROM Users u INNER JOIN Roles r ON u.roleid = r.roleid
Теперь я хочу знать, возможно ли построить таблицу SQL (Таблица ролей), чтобы она динамически увеличивала число ролей для каждого пользователя. что-то вроде:
Пользователи:
id name roleid roleid2 roleid3
1 David 1 2 3
2 Sean 2
3 Joe 1 3
Используйте ассоциативный объект для обращения к отношениям "многие ко многим" между Users
и Roles
. UserRole
первичный ключ в таблице UserRole
предотвратит дублирование назначений ролей, а внешние ключи, ссылающиеся на таблицу Users
and Roles
, сохранят ссылочную целостность.
См. Скрипт SQL для примера реализации.
Сначала я предлагаю вам использовать многие отношения. Это означает таблицу триггеров: UsersRoles (userid, roleid). Во-вторых, невозможно создать динамическое число столбцов в типичном выражении SQL. Но это возможно с помощью хранимых процедур.
вот рабочий пример sqlfiddle
Еще в рубрике
- Вопросы
- Sql-server-2008
- Sql Server 2008 с массивом