个人和群组的数据库设计注册

时间:2016-07-02 14:38:26

标签: sql database

我需要创建一个允许个人用户和群组(例如公司)注册订阅服务的系统。

注册组成员资格的过程将涉及用户在注册时为他们需要的用户付费(例如,5)。一旦他们付款,他们将能够创建将与该组(例如,他们公司的其他成员)相关联的这些其他用户(即,具有管理功能)。 (如果他们愿意,他们将能够在以后为他们的小组支付更多用户。)用户不能在多个组中。代表组注册的原始人员可以为这些新创建的成员分配管理员角色。

出于登录目的,我希望在数据库的同一个表中同时拥有单个用户和组用户。例如,它可以被调用并具有列(为了简单起见):

用户表: 用户身份 用户名

然后我认为必须有第二个表格显示用户之间的链接(即属于哪个组)。让我们说这是:

组表: GROUP_ID USER_ID

我猜这是一对多的关系,因为许多用户可以在一个组中,但每个用户只能在一个组中。

为了为代表某个组注册的用户分配适当的角色,会有另一个名为的表:

角色表: ROLE_ID USER_ID

这将允许一些用户拥有管理员的权限而不仅仅是用户。然后,我只需要在登录时查找admin角色的user_id(特定的admin user_id),这样就可以访问他们组中的正确人员。

在我继续设计这个数据库之前,我想知道这是否适合创建这些个人和群组用户,或者是否有更好的设置?

进一步信息:有两种注册形式:个人注册表格和团体注册表格。

对于个人,我们将记录他们的“用户名”,他们的user_type(个人)并为他们分配“用户”角色。他们不需要分配组ID,我们以后不需要将他们的会员资格转换为组成员资格。

对于使用群组注册表单注册为群组的用户,我们会记录他们的“用户名”,他们的user_type(群组),否。购买的会员资格(例如,5),组ID(例如,唯一的整数)并为其分配“admin”的角色。由于他们购买了多个会员资格,因此他们可以创建/添加新用户到他们的群组,直到购买的数量。他们可以为每个新用户分配“用户”或“管理员”的角色。 “user”在个人和组成员中的角色具有相同的权限,因此只有两种类型的角色。

因此,我计划了一个createUser()函数来创建:

对于个人:用户名,user_type(个人),角色(用户)
对于组:username,user_type(group),group_id,no_purchased,role(admin)
对于组的新成员(由admin创建):username,user_type(group),group_id(与admin相同),角色(admin或user)

然后我计划创建一个checkUser()函数:

  1. 获取他们的ID,用户名等...
  2. 检查他们是管理员还是用户。
  3. 如果是admin,则获取与他们在同一组中的用户/管理员。
  4. 对数据库的大多数调用都是登录(即用户名/密码)。我想看看这种情况下最简单的数据库结构是什么。

1 个答案:

答案 0 :(得分:2)

如果您将个人用户视为只有一个成员的群组用户,我觉得您可能会让您的生活变得更简单。如果个人用户希望扩展到一个群组,这也将为您提供未来的灵活性?

另一方面,你可以保留它,但我不打扰指定用户类型。这可以根据它们是否属于某个组而得出。

解决这个问题的方法很多......