小波 2012-05-04 17:37:08 4402次浏览 4条回复 0 0 0

正在做一个学习交流类的网站,设计数据库的时候,每个用户需要存储一个课程表, 如果为每个用户动态建一个表有点不切实际, 请问yii中如何设计数据库时间效率和空间效率比较高? 求解答,急!!!

  • 回复于 2012-05-04 18:38 举报

    为什么需要每个用户建一个表呢?

    多对多的关系可以这样建:

    class(id, name, category)
    user(id, username, email)
    user_class(userid, classid)
    

    通过user_class来完成课程和用户之间多对多的关系

  • 回复于 2012-05-04 19:41 举报

    谢谢!
    我的意思是这个课程表是二维表格的形式,如周一有哪些课程周二有哪些课程,我主要想问的如何存储这个课程表
    如果所有的课程表存储在一个表中的话,课程表这个属性 需要设定成什么样的数据类型
    如果为每个课程表建 一个表,又不太可能,能帮忙解答一下吗

  • 回复于 2012-05-05 15:18 举报

    我觉得2楼已经说的很清楚了,在class里面当然还可以有其他属性,比如说是第几周,星期几,第几节,至于如何显示,这个应该不是数据库的工作

  • 回复于 2012-05-07 10:58 举报

    感谢4楼的支持。
    楼主这个需求不是很明确啊,一下说清楚可以嘛?
    基于现在你说的时间问题,我揣测你的需求可以这样实现:

    1. 如4楼所说, 时间加在class里,比如class(id, course, duration, day_of_week, time),同一个课程会在这个表里出现很多次,其他表不变,
    2. 按照时间建表,周一至周日建7张表,user_class_monday(userid, classid), user_class_tuesday(userid, classid) ......如果你的功能重在选课,有很多时间的操作,这种方法可以减轻总读一张主表的负担,不过在数据量大的情况下才会用这个结构,比如大型论坛每天或者每周会建新表
您需要登录后才可以回复。登录 | 立即注册