我真心没学习过数据库设计,都是自己看了两篇文章应付基本的开发的。但是最近我又开始纠结这个问题,还是空教室;
http://www.cnblogs.com/virusdefender/p/3523464.html
这个已经说了两个数据库的模型了,现在看来,还是比较原始的那个比较好,使用ManyToMany的数据库是在是效率太低了,而且导入数据很慢很麻烦。
查询三个表,数据量变成11倍,这个真是没办法忍受的。我们还是乖乖的去使用第一个吧。但是现在话说回来,第一个有没有办法去优化呢?
数据库设计的原则有一个就是原子性,基本表中的字段是不可再分解的。 但是这个我觉得在这个项目里面可以去打破,我去这样的存储 数据:11个空教室的信息
存成字符串,比如0,1,1,1,1,0,0之类的。这样代码会减少很多,效率还是一样的高。
class EmptyClassroom(models.Model): building_name = models.CharField(max_length=20) room_name = models.CharField(max_length=30) week = models.IntegerField() day = models.IntegerField() classroom_status = models.CharField(max_length=30)
模型就变成这样的了,实际测试,原先的ManyToMany的形式,导入这9000多条数据,大约要15分钟,而!这!个!只!要!大!约!10!秒!钟!
原先查询每一节课都是一行代码,仅仅变的是变量名,而这个代码量少了很多,基本上和其中一种情况的代码差不多。
---------------------
http://www.cnblogs.com/wuhenke/archive/2010/08/11/1797307.html
转载一个数据库设计原则,这个都是很灵活的,有时候合理的去打破可能会起到很好的效果。