Дизайн таблицы базы данных, доступ к полосам меню пользователя, winforms - PullRequest
0 голосов
/ 25 октября 2019

У меня есть требование к настольному приложению Winforms, чтобы параметры fileMenStrip были скрыты / отображались в зависимости от прав доступа пользователя. Роли не могут быть использованы, так как разный доступ предоставляется от человека к человеку.

Я пытаюсь выяснить структуру базы данных для этого требования.

В настоящее время у меня есть userTable, fileMenuTableLevel1, fileMenuTableLevel2, с таблицами мостов.

Я знаю, что это неправильно, но я не уверен, как представить, что уровень 2 является элементом подменю уровня 1.

Также, если нужен третий уровень, тогда новыйтаблица должна быть создана.

У меня есть идея иметь одну таблицу для представления доступа с 'parentId', просто другой столбец таблицы, ссылающейся на menuId. это тоже не совсем правильно, так как я не могу понять, где хранить, если он видим или нет.

Как лучше всего это представить?

Дизайн, который я знаюневерно

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Я бы порекомендовал следующее, которое допускает добавление к родителю произвольного количества дочерних элементов. Используйте ключ с собственной ссылкой (либо явно объявленный с ограничением, либо без него).

MENU_ELEMENTS_TABLE

: ID

: ELEMENT_TYPE

: PARENT_ID

...

Примечание. Самый верхний элемент (т. Е. У первого родителя будет PARENT_ID, равный нулю, или значение по умолчанию или значениетогда все родители высшего уровня могут отличить его от дочерних элементов. Удаление записи может быть добавлено с помощью ограничения каскадного удаления.

0 голосов
/ 25 октября 2019

У меня есть идея иметь одну таблицу для представления доступа с 'parentId', просто другой столбец таблицы, ссылающейся на menuId. это тоже не правильно, так как я не могу понять, где хранить, если он видим или нет.

У вас есть правильная идея, пытаясь сохранить все элементы меню файла в одной таблице. Я не уверен, что понимаю вашу проблему с «видимостью». Мне кажется, если бы ваша схема состояла из этих трех таблиц:

Пользователь

MenuElement

UserMenuElement

Тогда видимость будет просто сохранена при связывании UserMenuElementТаблица. Я бы сказал, что поле может быть неактуальным, но наличие записи должно указывать на то, что у вас есть доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...