首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查我的数据库设计/ PHP/MySQL

检查我的数据库设计/ PHP/MySQL
EN

Stack Overflow用户
提问于 2009-09-12 15:27:37
回答 3查看 280关注 0票数 3

我目前正在努力改进我的数据库,以便为增长腾出空间。目前来看,不同的用户对网站的不同区域有不同的“权限”。某些用户拥有访问网站多个区域的权限。

如果我以最有效的方式做这件事,我希望得到一些反馈:

代码语言:javascript
复制
 tblUsers:
    usrID       usrFirst       usrLast       phone    //etc....
      1            John          Doe 
      2            Jane          Smith
      3            Bill          Jones          


 tblAreas: 
    id      name   
     1       Marketing
     2       Support
     3       Human Resources
     4       Media Relations

 tblPermissions:

    id       usrID       areaID   
    1          1           2
    2          1           4
    3          2           1
    4          3           3

现在,对于每个“区域”,我都有单独的目录。但是,我想将所有这些目录最小化到一个主目录,然后根据用户的权限将用户重定向到他们适当的“区域”。

这听起来像是我做得对吗?我从来没有创建过具有不同权限和不同人群的多层站点,因此,我当然愿意学习更多关于如何正确操作的知识。

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-12 17:10:11

总体设计还可以。突然出现在我身上的问题与命名有关。

  • SQL不需要匈牙利符号--通常被认为是不必要的/不好的(tblUsers ->用户)。
  • 我不会在列名前面加上表名...
  • ...除了"id“列应该始终包含您的表名(即areaId)之外,"first”和“
  • ”列没有任何意义(提示:firstName)
  • I‘’d‘’d tblPermissions -> userAreas

根据您的编程语言和数据库,我还建议您对表/列名使用下划线而不是大写。

至于对不同的组使用不同的目录,我建议不要这样做。在代码中进行安全检查,而不是在目录布局中。

推理:

当有人决定也允许支持人员做一些营销工作时,会发生什么?您是应该更改代码,还是应该在数据库中添加记录?

或者,如果您有重叠的操作怎么办?

@brianpeiris:有几件事浮现在脑海中:

  • 在连接中不需要列别名
  • 使搜索代码变得更容易("foo_id“提供的结果比”id“少)在(foo.id=bar.id).

上使用(foo_id)而不是JOIN的

  • JOIN
票数 3
EN

Stack Overflow用户

发布于 2009-09-12 15:42:45

模式看起来很好。

我建议您将访问控制放在控制器中,并将其作为URL路径的基础,这样您就不会将其编码到每个部分中。

票数 1
EN

Stack Overflow用户

发布于 2009-09-16 05:42:53

是的,这似乎从数据库端完美地满足了您的需求。

挑战将是尽可能简单和声明地使用数据。哪里是正确的地方来声明你所在的“区域”?是每个页面都这样做,还是有一个计算它的函数,或者你的控制器可以这样做?就像有人说的那样。第二部分是根据这一点评估当前用户。理想情况下,你可以使用一个像"security_check_for_area(4)“这样的函数来完成所有的任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1415372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档