【问题标题】:Database Schema for Hierarchical User and Roles Representation分层用户和角色表示的数据库模式
【发布时间】:2011-01-22 21:21:54
【问题描述】:

我正在寻找一个通用的开源数据库架构,用于基本登录和角色用户管理。

用户:属于属于客户的业务单位。

用户拥有角色 - 经理、区域经理、现场经理、工人等。用户可以拥有多个角色,具体取决于业务部门和多个业务部门。

业务部门属于客户。 业务单位可以包含其他业务单位(Region 包含其他包含业务单位的区域)。

特征:描述系统中的行为实体。 功能被分配给用户或角色,或两者兼而有之,业务部门和/或客户在系统中也具有活动的功能。

例如,它是一个会计系统,具有应付账款、应收账款、报告、总账等功能有源矩阵层次结构。

有没有人参考过符合这些基本要求的类似架构?如果它具有基于 Web 的界面的代码(用户登录、用户管理、区域、角色等),则奖励 .Net C# 首选,但我可以翻译。

【问题讨论】:

  • 看起来像一个家庭作业问题。如果我解决了这个问题,我可以获得你的学位吗?
  • 绝对不是功课,只是想在一些设计思想上更上一层楼。 PS,我实际上在大约 25 年前教过 CS 课。 :)

标签: sql-server schema roles hierarchy


【解决方案1】:

在 SQL 数据库中实现这一要求有多难?有许多设计可以使用,但如果您正在寻找现成的东西,那么您所描述的就是LDAP,对于一个发球台。这只是描述了协议,但有许多不同的开源实现,包括Apache Directory ServerOpenLDAP。维基百科有一个广泛的list of LDAP software

这是需要考虑的事情。如果您需要将其与另一个 SQL 数据库紧密集成,为用户强制执行参照完整性等,那么这可能不适合您。但是,如果您正在寻找通用和可扩展的东西,这可能是要走的路。您会发现大多数成员/角色数据库(例如由 ASP.NET SQL Server Registration Tool 创建的那些数据库)都不是分层的,因为松散的分层结构有点复杂。

如果您需要嵌套任意数量的业务单位,那么管理所有规则和覆盖并非易事。这正是我们有分层目录协议的原因。

(注意 - 如果您已经在 Microsoft 环境中,那么 Active Directory 将是显而易见的选择;它不是开源的,但它可能是所有目录服务器中最强大且得到良好支持的。)

【讨论】:

  • 真的是在寻找SQL的足迹和管理——它真的比我描述的要复杂,但是在寻找一个起点。访问固然重要,但层次结构形成的业务层的管理更需要。
  • 不幸的是,管理层次结构不仅仅是创建数据库模式。有各种各样的分层查询、报告、规则等。通常你正在寻找某种“继承”。这绝不是“基本的”。这就是为什么存在执行这些功能的完整系统的原因。如果你不能使用它,那么听起来你已经理解了这些关系,所以只需使用一种常见的模型——邻接列表、嵌套集、物化路径或hierarchyid 对主要层次关系(业务单位)进行建模。
【解决方案2】:

不完全是您要寻找的东西,而是一个开始:

http://www.databaseanswers.org/data_models/user_identity_management/index.htm

您查看过 ASP.NET 成员资格吗?有一个脚本可以在您的 .net 目录中创建所有对象。如果您在 Visual Studio 中使用默认设置创建网站,则可以使用网站管理工具来管理用户。

【讨论】:

  • 好吧,这只是一个开始,接下来看看会出现哪些其他选项。谢谢你。也许这两者的结合将满足我预见到的这个级别的许多需求。
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 2020-10-05
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多