用户被分配到一个组ID。有多个登录区域,例如:前端、后端和控制面板登录。
我想知道我应该把LoginArea放在单独的表中吗?或者有什么替代方法?
示例:
tbl_user
UserID | firstName | Email | Password | LoginArea | GroupID
1 , Bill , email@email1.com , passwordhash344, Backend | 2
2 , Paul , email@email2.com , passwordhash123, Backend | 3
或
tbl_user
UserID | firstName | Email | Password | GroupID
tbl_group
GroupID | LoginArea | Group_Name
0 , Frontend , Customer
1 , Backend , Admin
2 , Backend , Staff
3 , Backend , Sales
20 , ControlPanel , Shop
//注意GroupID不是PK
因此,如果我想登录到后端,我需要确保我首先登录到后端。使用SQL之类的东西?
SELECT count(*) FROM members
WHERE email = 'emailhere' AND
password = 'password' AND
LoginArea = 'Backend'
这只是为了确保客户登录详细信息不会在后端登录区域工作。
这里需要考虑一些事情:
- 会不会出现这样的情况:你会有更多的登录区域,或者只有3个登录区域
- 是否存在属于一个组的用户需要登录访问所有3个区域或2个区域的情况
如果你对这两个问题的答案都是肯定的,那么有第一个例子设计是有意义的。
tbl_user
UserID | firstName | Email | Password | LoginArea | GroupID
1 , Bill , email@email1.com , passwordhash344, Backend | 2
2 , Paul , email@email2.com , passwordhash123, Backend | 3