Помощь в проектировании таблиц в базе данных

220
22 мая 2018, 10:40

возник вопрос в проектировании отдельной части базе данных, в частности при использовании Spring Security(Java) у меня будет две роил USER и ADMIN. Соответсвенно и вопрос заключается в следующем как лучше это спроектировать. Стоит ли делать разные таблицы для пользователей и для администраторов? Либо стоит добаить логическое поле у таблицы пользователей is_admin? Хотелось бы получить внятный ответ по поводу этого, не только затрагивая Spring Security, но и в целом как это лучше всего реализовать. Заранее спасибо...

Answer 1

Конкретно насчёт Spring Security смотрите тут.

Делать отдельные таблицы на различные роли не стоит.

Как правило делается таблица пользователей (скажем, TBL_USER), таблица ролей (TBL_ROLE) и связывающая их таблица (TBL_USER_ROLE). Иногда добавляют группы.

Answer 2

Вам нужна связь один-ко-многим 2 таблиц Users и Roles. В первой будут храниться собственно юзеры. Во второй будут записи userId и userRole. Так у вас могут получиться юзеры с разным набором ролей. Собственно роли также можно хранить в отдельной таблице и вместо userRole записывать roleId. Это гибкая и удобная реализация, она используется, в частности в Spring security, ибо для интерфейса UserDetails требуется реализовать метод получения authorities юзера, коий и есть суть его роли.

READ ALSO
как создать объект типа enum

как создать объект типа enum

объект должен быть не MARS, SNICKERS или TWIX а именно ChocolateBars

187
ImageIO не подгружает файл из ресурсов?

ImageIO не подгружает файл из ресурсов?

Работаю с tray для загрузки иконки использую,

218
Одинаковые объекты добавляются в Set

Одинаковые объекты добавляются в Set

Столкнулся со странной проблемой возможности добавления в Set одинаковых объектов (equals и hashSet переопределены) после сериализацииРасскажу...

244
добавление строк в sqlite

добавление строк в sqlite

подскажите пожалуйста, как добавить строки в sqlite? В массиве лимит 12 строк, в sqlite попадает только 1 строкаВот код sqlite:

269