MySQL数据库设计:一个用户表,两个用户组?

问题描述:

我建立一个旅游平台,我计划有以下用户表:MySQL数据库设计:一个用户表,两个用户组?

USERS:ID,用户名,密码,电子邮件,名字,姓氏,说明,picture_path

我的目标是有两组用户:

  1. 旅游经营者
  2. 游客

当旅游运营商登录时,我希望系统认识到他来自“旅游经营者”小组,以便将他的不同信息显示给他,就好像他是“游客”组的一部分一样。

我的问题:在我的数据库设计中实现这两个用户组的最佳方式是什么?

你应该有UserCategories表:

CREATE TABLE `UserCategories` (
    UC_ID INT PRIMARY KEY AUTO_INCREMENT, 
    IC_Title VARCHAR(100) 
)engine=innodb; 

然后在你的users表中有一个名为CategoryID列,并把它引用在UC_ID = CategoryIDUserCategories表。

这样,你就会知道哪些种类中的用户属于我会做到这一点无论是其operator ID 1或tourist ID 2.

是我有另一个表称之为Permissions引用许可UserCategories。这样你将能够自定义什么样的访问Tourists应该有。

更新:

SELECT COLUMN1, COLUMN2 ... 
    FROM users 
    INNER JOIN UserCategories ON UC_ID = CategoryID 
    INNER JOIN Permissions ON UC_ID = PCategoryID 
    WHERE Permission = 'update_data' OR Permission = 'delete_data' 

或者你可以抓住特定用户类别的所有权限,并查看是否当前登录的用户必须执行该操作该权限。

+0

所以你建议三个单独的表:1)用户,2)UserCategories,3)权限。将用户表与usercategories表链接起来的SQL命令是什么? –

这样做的一个简单方法是在存储组类型的USERS表中添加一列。例如:groupType可以存储operatortourist,根据该值,可以显示或隐藏页面中的内容。