★这样的通讯录该如何设计数据库?★

hcx_2008 2007-06-19 05:32:18
要在某个web系统上增加一个通讯录功能,需求如下:
1。通讯录分三个大组:公共、部门、个人
2。公共的每个人都可以看到,部门的只有自己所在部门的人员可以看到,个人的每个人只能看到自己的联系人。
3。每个分组下面可以由他自己添加自定义分组和联系人。

通讯录分组要用数结构显示。。。。

要求就这么多了,请数据库设计高手给个好的数据库设计。已经有一个设计了,但总觉得编程特麻烦。
希望高手前来助阵!多谢了!
...全文
528 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
以梦为马 2008-10-19
  • 打赏
  • 举报
回复
还是自己思考收获得更多。
sunyujia 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 silence1214 的回复:]
就是普通的通讯录 + 权限管理
[/Quote]
通讯录结构不说了很简单,权限管理就是定义通讯录类型权限映射表而已

最简单的设计
用户角色多对一
通讯录类型角色多对一
通讯录有个创建人外键

数据和权限分开,设计表要考虑的事情很多,不可能给你发个设计图,太费时间了,打几个讨论下。
bruni 2008-10-16
  • 打赏
  • 举报
回复
个人想法:
department {
id
name
}
user {
id
name
departmentid
}
contact {
id
name
phone
email
ownerid // address book owner user id
}
// group type: 1-publich, 2-department, 3-private
group {
id
gtype // group type: 1-public, 2-department, 3-private
name
departmentid // 0-no department, public or private
ownerid // 0- public or department group
}
user-contacts {
id
contactid
groupid
ownerid
}

Get contacts by group:
public: select a.* from contact a join user-contacts b on b.contactid = a.id join group c on c.id = b.groupid where a.ownerid= $ownerid and c.gtype = 1;

department: select a.* from contact a join user-contacts b on b.contactid = a.id join group c on (c.id = b.groupid and c.gtype = 2) where c.departmentid = $departmentid;

private: select a.* from contact a join user-contacts b on b.contactid = a.id join group c on c.id = b.groupid where b.gtype = 3 and c.ownerid = $ownerid;
silence1214 2008-09-25
  • 打赏
  • 举报
回复
就是普通的通讯录 + 权限管理
umbrella_yxs 2007-06-19
  • 打赏
  • 举报
回复
那把你的设计写出来,看能不能改进一下!!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧