用户帐户的数据库设计

问题描述:

我正在为学校管理系统的一部分设计数据库。我不确定如何设计用户/帐户部分,以便在我的应用程序基础上安全且智能。用户帐户的数据库设计

帐户角色:学生,实习主管,学校管理部门,系统管理员,超级用户。 学生必须参加强制性实习(表格“实习生”)。 实习主管将监督他们并查看统计数据。 学校管理部门也会看到统计数据。

我想留给学生的数据是:他们的学号,姓和名。

至于其他角色,他们显然没有学号,并且名字也不是必须的,但也许这是一个好主意 - 我不确定。你怎么看?

我的困境是:如何设计数据库的account/membership/users部分,以便它对我的应用程序有用,智能和安全?我应该摆脱“学生”表,并保持所有用户在“帐户”表?还是保留这个“学生”表并将它们与“帐户”表结合起来会更好?或者也许有一些标准和良好的做法,表明其他方法? 下面,我将UMLS:

设计1:

design 1

设计2:

design 2

那么,你需要设计6张桌子

Users (id, name, email, phone etc) 
Userroles (id, title) 
users_to_Userroles (many to many) (contains userId and userRoleId) 
packages (id, title) 
package_rules (id, packageId, discount, free, etc) 
packages_to_users (contains userId, packageId) 

通过这种方式,您可以处理包裹和用户角色以及用户数据