社交网站的核心就是人,接着通过人与人之间的关系开展一系列活动,昨天终于静下心,打开PowerDesigner画了几个Table在画布上,如下所示:【SysUser】用户表:最重要的两个信息----邮箱和密码,其次是昵称。
【SysFriendShip】朋友关系:我想人与人这间关系自然是“多对多”的关系,即张三可以是李四、王五的朋友,而李四又可能是赵六、周七的朋友,故以表SysUser的主键UserIdentifier(nchar(10))作为联合主键,字段在表现形式上分别更改为:FriendShipRequestID(好友发起人)、FriendShipAcceptID(好友接受人),与后面字段FriendCategoryID(朋友分组)连起来所表达的意思便是:某发起人向接受人提出了好友申请,并预先将其纳入到自己的某个朋友分组中,比如"随便聊聊"分组;那么反过来,当接受人接纳了发起人的请求,欲把发起人纳入某个分组时,该如何表达出这个关系呢?为此当接受人接收请求后,将重新新增一条记录,而不仅仅是把字段IsPassed更改为1,即接受人此时成了发起人对应字段FriendShipRequestID,而当初的发起人对应字段FriendShipAcceptID,这样就可以记录下接受人自己选择的FriendCategoryID(朋友分组),显然IsPassed直接就是1。
【SysFriendCategory】朋友分组:各人维护自己的分组,由SysUser(用户)进行外键约束即可。我只是个小小的C#程序员,很想听听数据库设计达人们是如何思考这个问题的。
【SysFriendShip】朋友关系:我想人与人这间关系自然是“多对多”的关系,即张三可以是李四、王五的朋友,而李四又可能是赵六、周七的朋友,故以表SysUser的主键UserIdentifier(nchar(10))作为联合主键,字段在表现形式上分别更改为:FriendShipRequestID(好友发起人)、FriendShipAcceptID(好友接受人),与后面字段FriendCategoryID(朋友分组)连起来所表达的意思便是:某发起人向接受人提出了好友申请,并预先将其纳入到自己的某个朋友分组中,比如"随便聊聊"分组;那么反过来,当接受人接纳了发起人的请求,欲把发起人纳入某个分组时,该如何表达出这个关系呢?为此当接受人接收请求后,将重新新增一条记录,而不仅仅是把字段IsPassed更改为1,即接受人此时成了发起人对应字段FriendShipRequestID,而当初的发起人对应字段FriendShipAcceptID,这样就可以记录下接受人自己选择的FriendCategoryID(朋友分组),显然IsPassed直接就是1。
【SysFriendCategory】朋友分组:各人维护自己的分组,由SysUser(用户)进行外键约束即可。我只是个小小的C#程序员,很想听听数据库设计达人们是如何思考这个问题的。
解决方案 »
- 在vs中怎么实现点击展开功能呢?
- 球衣方法删选重复数据
- 请教一下C#如何写mySQL的接口?哪位给一个例子程序
- 【提问】如何选择datatable中的某些行,以及如何快速把datarow[]转换成datatable
- FileUpLoad上传图片保存到服务器后,如何即时显示图片
- 在这方面,人脑永远比电脑聪明,反应速度快!
- 如何在DetailsView中使用日期输入控件,
- asp.net中如何访问远程的excel表
- 怎么样设置dropdownlist里的滚动条的颜色,在线等待,,谢谢
- 如何防止重复提交?
- 在gridview模板中添加了checkbox,通过选中checkbox拿到这一行的值
- 问长期跟数据库以及触发器打交道的大神
一.张三向李四申请好友:
发起人 接受人 朋友分组 是否通过
张三 李四 2(随便聊聊) 0(未通过,等待确认)二.李四登录后作出应答,如果李四表示【同意】,该过程是事务原子性
1.更新第一步中那条记录,把 IsPass字段由0更新为1,即
张三 李四 2(随便聊聊) 1(已通过确认)2.新增一条记录
李四 张三 8(IT朋友圈) 1(已通过确认)
---
我想应该这么设计关系表(用户A,用户B,AB关系【A关注B、B关注A、互相关注】)
分组表(用户,用户组别)【比如:用户A 随便聊聊,用户A 等待进一步发生】
组别人员表(组别,用户)【比如 等待进一步发生 B,等待进一步发生 c】
表达不是太好,不知道大家有没有明白
省略了ID,为了直接表达一下意思,实际中肯定得加组别ID的