不同寻常的多对多表设计,望大神指点!

zy_gougou 2013-02-16 09:48:42
同样是学生和所选课程表之间的多对多表设计,理论上会多创建一张存储学生ID和课程ID的表作为关系表,方便各自一对多的查询。

问题来了!!因为项目需求,我们需要用sqllite数据库,而sqllite仅支持单表10W数据以内的高性能查询,而若遵循以上设计,因为项目本身,那张关系表很容易会突破10W条记录。望大神给出如何设计这几张表可以满足项目需求??(10W * 10W可以满足)
...全文
1241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2013-10-14
  • 打赏
  • 举报
回复
关系表,加个时间戳,过期作废,不就完了吗? 手工写SQL删除都可以
gaolin 2013-06-08
  • 打赏
  • 举报
回复
不建议楼上的方式(个人观点,大家讨论楼上别生气),跟业务耦合度太紧;同意di74jun 的观点,就是表根据不同的条件分组。
庄鱼 2013-04-14
  • 打赏
  • 举报
回复
虽然你的条件很苛刻,但是还是可以实现,只是数据组织形式会变: 由于每门功课分数不存在负分,而且200以内,那么可以用字节代替整数,假设每学期最多同时进修20门课,全校主修与选修有200门,有5个学年,那么一个学籍表舅可以设计成: struct SchoolCensus{ unsigned int ID; unsigned char Classes1a[20]; unsigned char Scores1a[20]; unsigned char Classes1b[20]; unsigned char Scores1b[20]; unsigned char Classes2a[20]; unsigned char Scores2a[20]; unsigned char Classes2b[20]; unsigned char Scores2b[20]; unsigned char Classes3a[20]; unsigned char Scores3a[20]; unsigned char Classes3b[20]; unsigned char Scores3b[20]; unsigned char Classes4a[20]; unsigned char Scores4a[20]; unsigned char Classes4b[20]; unsigned char Scores4b[20]; unsigned char Classes5a[20]; unsigned char Scores5a[20]; unsigned char Classes5b[20]; unsigned char Scores5b[20]; }; 第几个字节对应相应代码的分数,为避免0导致字符串终止,可以将class与score的基准提高至0x20;这样复杂的查询比较就变成了若干字段的个别字符比较,速度还是较快的,但是不能够直接读写数据库,而必须通过程序实现了。
dyf0130 2013-04-03
  • 打赏
  • 举报
回复
单表10W数据以内的高性能查询 -------------- 5W学生对20门课程 应该勉强够用 如果加上学期就不大够了 可以1个学期(或学年度)1个表呀

8,029

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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