日期:2014-05-18  浏览次数:20473 次

单表(添加用户角色字段)还是多表(每种用户角色一张表)?
数据库设计时,多员工不同角色用以下哪种设计方法比较好?多表和单表的好坏之处?
1. 单表 —— 加用户角色字段。 
2.多表——每种角色一个表。

 多表的好处:
1.话查询效率应该高一点吧,特别是多请求并行处理的时候.
2.简化程序逻辑,减少bug的可能。比如学生和老师,学生只能选课,老师只能教课,在对学生-选课和老师-教课表的操作时就省略了判断用户角色步骤,也可以防止用户恶意提交。比如通过通过get传递id时手动修改url的值。

多表的坏处:


单表的优缺点应该刚好跟多表相反吧?

------解决方案--------------------
每种角色一个表,这种是不合理的,你不可能新加一个角色就给它来个表,这。。。

建议:角色为一个单独的表,用户中有个字段关联到角色,这种设计才是最常用的,也是合理的

表少冗余数据多,有助于查询

表多冗余数据少,关系结构性好,查询分析起来可能写的关联条件比较多,速度可能稍有点慢,不过表设计合理,就可以了


------解决方案--------------------
在登陆的时候初始化这个角色为一个session值啊,判断是老师类型的时候不插入啊

 if (session("personType") == "老师") 
{

db.excute("insert into Teacher-Chose valuse(userid,classid)");
}