数据模型设计和权限

时间:2018-04-26 09:41:01

标签: java sql-server hibernate data-modeling

我正在制作structured interviewing应用。

在高级别我的DataModal看起来像:

interface State {
    dependencies: { [key: number]: Dependency},
    dependencyIds: number[];
}

interface Dependency {
    id: number,
    name: string,
    type: "basic" | "complex"
}

我正在使用Hibernate / JPA和MS Sql。这里的问题是

  1. 我想要一套针对技术和非技术问题的不同的读/写/更新/删除权限。就像只有开发人员才允许对技术问题进行写访问,只允许HR访问NonTech问题等。是否可以使用上面的数据模式实现这一点,或者我应该将技术和非技术问题保存在两个不同的数据库中?

  2. Hibernate是正确的选择还是我应该使用Mybatis?

  3. 这里的潜在客户表示赞赏!

    谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您需要区分应用程序工作流程与权限。通常,权限侧重于允许对资源的不同类型的访问(例如,"组x的成员已经读取但不写入,对文件y"的权限)。权限通常在应用程序本身之外进行管理。

另一方面,工作流表示"向x类型的用户显示应用程序的以下视图,y类型的用户显示不同的视图" - 例如,Stack Overflow向具有高声誉的用户显示不同的工具集。这是基于权限,但通常它会在"申请。

我不知道你的正确答案,但在决定任何特定的框架之前我会考虑这个问题。

回答你的第一个问题:

  

是否可以使用上面的数据模式或我应该实现这一点   将技术和非技术问题保存在两个不同的数据库中?

不,您的数据模型不完整。它没有显示您如何为用户建模 - 您的应用程序如何知道登录的用户类型?绝对没有理由将不同类型的问题存储在不同的数据库中 - 使用数据库级权限来强制执行应用程序级安全性并不常见。

  

Hibernate是正确的选择还是我应该使用Mybatis?

选择与您描述的问题无关。