如何用最少的资源实现以下功能。

ruhong1 2014-09-04 01:03:03
单元有个需求,每发一次值班公告,要求每个人都要看,并记录下阅读时间。
假设这个公告是表a,
那我要根据表a,在表b中生成所有人的一个阅读记录。
如果有几百份公告,还有几百名员工,那将生成一个不小的表。
各位是如何处理这个事情的?能不能表a的一个公告,表b就用一行记录来记录谁看没有看?
如果象我上面那样处理,一个公告生成几百个阅读记录,
会不会在后期造成数据读取变得很慢?
请指教。
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
effun 2014-09-29
  • 打赏
  • 举报
回复
如果真想这样,表B都没有存在的意义了,直接在表A里增加一个阅读情况的字段,把所有已阅人员的ID和阅读时间放在这个字段里就可以了。存储方式可以用XML、JSON或者二进制。 但问题是,这样的做法给后面的检索带来了很大的麻烦,例如你想知道某一个用户看了或没看哪些公告,就要一条一条遍历A表里的记录,在性能上会很差,所以,这样的做法不合理。 还是老实点用B表来记录每个用户的阅读情况吧,这样的做法还给你的程序添加了很强的可扩展性。
ruhong1 2014-09-29
  • 打赏
  • 举报
回复
这么说来,还是要建一个阅读记录表了。
wangnaisheng 2014-09-04
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
[quote=引用 3 楼 wangnaisheng 的回复:] 是否已阅读,放到一条记录的一个字段中,例如:A,B,C……依次,类似于点赞是的 不知是否可以?
点赞可绝对不是这么实现的. 万一有10000个人点赞,你的字段要设置成几万的长度?[/quote] 也许是个从表吧……
卧_槽 2014-09-04
  • 打赏
  • 举报
回复
这种日志表每天建一个,每周归档一次就是了。
於黾 2014-09-04
  • 打赏
  • 举报
回复
所谓资源,不能仅仅考虑硬盘资源 内存和CPU难道不是资源? 为了节省一点点硬盘空间,导致查询处理的时候效率低下,得不偿失的.
於黾 2014-09-04
  • 打赏
  • 举报
回复
引用 3 楼 wangnaisheng 的回复:
是否已阅读,放到一条记录的一个字段中,例如:A,B,C……依次,类似于点赞是的 不知是否可以?
点赞可绝对不是这么实现的. 万一有10000个人点赞,你的字段要设置成几万的长度?
wangnaisheng 2014-09-04
  • 打赏
  • 举报
回复
是否已阅读,放到一条记录的一个字段中,例如:A,B,C……依次,类似于点赞是的 不知是否可以?
於黾 2014-09-04
  • 打赏
  • 举报
回复
几百份公告,几百名员工,也才10万不到的数据,一点都不多.而且这个表也才只有2个字段而已
於黾 2014-09-04
  • 打赏
  • 举报
回复
把所有人是否已读,放到同一行,你觉得对么... 后期如果来了新人,走了旧人,你这个表都不够你折腾的

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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