-2

在这里,我们有一家假公司,一家血库。核心思想是只有献血者可以献血,但不能登录系统。但是,代表公司的“注册用户”(user表中的行)可以登录系统并查看其公司捐献的血量。捐助者必须与公司有联系。在极端情况下,“注册用户”也可以献血。

  • 用户 = 一个“注册用户”。可以登录。
  • 捐助者 = 无法登录。
  • Admin = 站点管理员。可以登录。
  • 血库员工 = 不言自明。可以登录。

未来可能会有其他类型的用户,比如区分“注册用户”的类型。也许,只是也许。

解决方案 1

  • 单独的供体表。

在此处输入图像描述

优点:

  • 寻找捐赠者的查询会更快,尤其是在表格变大的情况下

缺点:

  • 如果捐赠者突然想登录怎么办?在表中创建重复条目user
  • 如果“注册用户”想捐款怎么办?在表中创建重复条目donor

解决方案 2

使用 ACL role/user_role表来定义捐助者(和其他用户类型)

在此处输入图像描述

优点:

  • 易于处理想要稍后以“注册用户”身份登录的捐赠者
  • 轻松处理后来想成为捐赠者的“注册用户”
  • 也更容易将任何用户提升为管理员

缺点:

  • 有些字段是捐助者不需要的,例如“密码”、“节流”,所以 会有额外的 NULL

解决方案 3

与解决方案 2 相同,除了创建一个额外的表user_type。这样做是为了避免重复使用 ACL 系统来控制登录和用户帐户类型的详细信息。

解决方案 4

聚合用户。 在此处输入图像描述

这是基于 user1759572 使用聚合用户的建议。我可能没有完全正确地建模它。

你会选择哪个选项?有第四个.. 第五个选项.. 更好的吗?


非常感谢任何答复。这将帮助我确定我几天来一直在反复考虑的最后一点设计。精氨酸。谢谢你!

4

1 回答 1

0
  1. 使用党模型和党角色模型。个人或组织(如公司)从抽象的法律方继承。一方可以扮演许多角色,例如捐赠者、员工。

  2. 我将使用支持真实用户和组以及可更新视图的数据库,而不是滚动您自己的用户和组登录名,WITH CHECK OPTION。

于 2014-01-24T23:42:17.527 回答