Какими должны быть отношения между таблицей adminstrators и таблицей users - PullRequest
0 голосов
/ 30 января 2020

Если учетная запись администратора может создавать учетные записи пользователей, означает ли это, что связь между таблицей администратора и таблицей пользователей:

ADMIN OneToMany Users

Например, , в моем проекте:
enter image description here

Человек с привилегией adminstrateur учетная запись, может создавать учетные записи с привилегией technicien_sav, Очевидно, что каждый вид привилегии предоставляет тому, кто имеет доступ к различным частям приложения.
Однако я не вижу отношения SQL, необходимого для общего функционирования моего приложения. Т.е.: administrator может создавать technicien_sav учетных записей даже без существования отношений между ними.
Как вы думаете?
PS: Прошло много лет с тех пор, как я работал с SQL базами данных, надеюсь, вопрос не слишком наивный.

Ответы [ 2 ]

1 голос
/ 30 января 2020

В комментариях вы сказали, что пользователи с правами администратора и техники

не имеют абсолютно никакого отношения друг к другу

Их реальная работа может отличаться, но в Термины вашего приложения - это просто две разные вариации пользователя, поэтому они принадлежат одной и той же таблице (потому что они - один и тот же тип сущности, «пользователь» приложения, и каждая таблица должна представлять сущность). Тот факт, что они являются «администраторами», является просто свойством пользователя, которое отличает их от других типов. Затем вы можете использовать это свойство (и другие, если вам нужно больше тонкости), чтобы определить, какие привилегии они имеют в приложении.

На самом деле пользователи нередко имеют несколько наборов привилегий, поэтому Отношение «многие ко многим» между таблицей «пользователи» и таблицей «привилегии» (конечно, с таблицей отображения между ними) может иметь больше смысла и быть более гибким в долгосрочной перспективе.

PS Чтобы рассмотреть исходную точку, в предложенной вами исходной структуре вам понадобятся только некоторые отношения между строками администратора и технического персонала, если вам необходимо записать, какой администратор создал какие записи. Вы все еще можете сделать то же самое в одной таблице «пользователи», если вам нужно, просто имея отношение «один ко многим» между двумя столбцами в одной таблице. например, у вас будет столбец CreatedBy, который будет необязательным, и будет иметь внешний ключ для столбца идентификатора, чтобы он мог записывать идентификатор пользователя, который добавил текущую запись.

0 голосов
/ 30 января 2020

В общем, администратор и пользователь являются частью одной таблицы.

Администратор - это пользователь с большими привилегиями. В вашей пользовательской таблице вы можете добавить столбец (например, admin_column и может быть логическим), так что если admin_column = true (пользователь является администратором).

Надеюсь, это поможет вам.

...