管理员表和用户表之间应该是什么关系

时间:2020-01-30 16:18:50

标签: mysql sql database postgresql entity-relationship

如果admin帐户可以创建用户帐户,是否表示admin表和users表之间的关系是:

ADMIN一对多用户

例如,在我的项目中:
enter image description here

具有 adminstrateur 帐户特权的人可以创建具有 technicien_sav 特权的帐户。显然,每种特权都授予有权访问该应用程序不同部分的人。
但是,我看不到应用程序整体功能必需的SQL关系。即:管理员可以创建 technicien_sav 帐户,即使两者之间不存在关系。
你觉得呢?
PS:自从我使用SQL数据库已经有好几年了,我希望这个问题不会太幼稚。

2 个答案:

答案 0 :(得分:1)

在评论中,您说的是管理员和技术人员用户

彼此之间毫无关系

他们的实际工作可能有所不同,但就您的应用程序而言,它们只是用户的两个不同版本,因此它们属于同一表(因为它们是同一类实体,因此是“用户”应用程序,并且每个表都应代表一个实体)。它们是“管理员”的事实仅仅是用户的属性,这使他们与其他类型有所不同。然后,您可以使用该属性(和其他属性,如果需要更多细节)来确定它们在应用程序中拥有哪些特权。

事实上,用户拥有多组特权并不罕见,因此“用户”表和“特权”表之间存在多对多关系(当然,它们之间有映射表)从长远来看可能更有意义并且更灵活。

P.S。为了解决您的原始问题,在建议的原始结构中,如果您需要记录哪个管理员创建了哪些记录,则只需要在管理员行和技术人员行之间建立某种关系即可。如果需要,您仍然可以在单个“用户”表中执行相同的操作,只需在同一表中的两列之间建立一对多关系即可。例如您将拥有一个CreatedBy列,该列是可选的,并且具有ID列的外键,因此它可以记录添加当前记录的用户的ID。

答案 1 :(得分:0)

通常,admin和user是同一表的一部分。

管理员是具有更多特权的用户。在用户表中,您可以添加一列(例如admin_column,并且可以为布尔值),因此,如果admin_column = true(用户是管理员)。

我希望它能对您有所帮助。