多角色系统中的数据库设计问题


一个系统中有多个角色,每个角色有不同的属性。比如教师和学生,教师有职称、所属院系等属性,而学生有班级、指导教师等属性,所以把教师和学生分为了两个表。

现在系统中有一个消息系统,存放消息的表该如何设计?如果发一条消息,需要指定发件人和收件人,难道需要在消息表中定义四个外键,比如发件人1(教师)、发件人2(学生)、收件人1(教师)、收件人2(学生)。这样会不会太麻烦了,如果再多几个角色该怎么办?

想到一种方法,建一个用户基础信息表,放几个角色共有的属性,然后对应每一个角色再建一个表。在用户基础信息表中建立外键,连接到每一个角色对应的表。不过这样,如果角色多的话,用户基础信息表中的外键就比较多。还有就是查询一个用户信息的时候,需要连接的表的数量多,比如要查一个学生信息,要连接用户基础信息表、学生表、班级表等。不知道这样做合适吗。

数据库 数据库性能优化 数据库设计

vvstar 9 years, 9 months ago

@暗雨西喧 三个表确实够了
确少角色权限信息,补充下
Role表,加个字段rules(里面存放rule_id:1,2,3,4...)
Rule表,rule_id

瞪大我的星星眼 answered 9 years, 9 months ago

3个表足以
关系

scv87 answered 9 years, 9 months ago

“用户” “拥有” “学生角色”

这里外键放在学生角色表里合理的多,这样不存在角色增加以后基础信息表的外键字段越来越多的问题

图片描述

月咏小萌_ answered 9 years, 9 months ago

Your Answer