ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-10-24 11:18:35  阅读:178  来源: 互联网

标签:database-design data-modeling sql mysql


我目前正在努力改善数据库以腾出空间.就目前而言,不同的用户对网站区域具有不同的“权限”.一些用户有权访问网站的多个区域.

如果我以最有效的方式执行此操作,则需要一些反馈:

 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

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

听起来我做得正确吗?我从来没有创建一个具有不同权限和不同人群的多层站点,因此,我当然愿意学习更多有关如何正确执行此操作的信息.

非常感谢!

解决方法:

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

> SQL不需要匈牙利符号-通常被认为是不必要的/不好的(tblUsers-> users).
>我不会在表名之前添加列名…
> …,但“ id”列除外,该列应始终包含您的表名(即areaId)
>您的“第一”和“最后”列没有意义(提示:firstName)
>我将重命名为tblPermissions-> userAreas

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

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

推理:

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

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

@brianpeiris:我想到了几件事:

>在JOIN中不需要列别名
>使搜索代码更容易(“ foo_id”的结果少于“ id”的结果)
> JOIN USING(foo_id)代替JOIN ON(foo.id = bar.id).

标签:database-design,data-modeling,sql,mysql
来源: https://codeday.me/bug/20191024/1920255.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有