我目前正在设计一个数据库表,在这里我存储了学生为某个会话选择的课程列表。我目前的设计是将每门课程一排排地存储起来,学生每节课最多可以有30门课程。这意味着,该单一部门的300名学生仅在一个会话中就会消耗30*300 = 9000行。学校有50多个系,每个系每级至少有300名学生(5级),每节课上的最低课程可达30门。系统的设计方式是不删除存储的这些数据。
50 (系)* 300 (可能的学生)*5(等级)* 30 (课程行)= 2,250,000 (可能在一节课中消耗的行)。
是否最好将学生课程存储在仅使用一行保存的序列化格式中?
50 (系)* 300 (可能的学生)*5(等级)*1(课程行)= 75,000 (可能在一节中消耗的行)。
我计算了这个,我认为这是合理的,但我不知道这是否是一个错误的设计。
低点I认识到更新和删除查询将覆盖/删除课程列中的所有内容。
请提供有洞察力的帮助将不胜感激。
注意:我使用MySql作为我的数据库。
发布于 2016-12-26 18:08:19
2米行是“中型”。这不应该是您关心的问题;数据库是设计用来处理数百万甚至数十亿行的。但是,您需要有适当的索引,并包括最优的PRIMARY KEY。
想想你所拥有的“实体”--部门、学生、课程、课程等等。少想一下“关系”--系中的课程;课程中的学生;等等。
1:许多都是由一个用于JOINing的表中的id处理到另一个表的。很多:很多是由一个包含两个it的额外表来处理的。1:1通常是不-不。
完成一些关于数据库设计的教程。一定要理解JOINs。
https://dba.stackexchange.com/questions/159169
复制相似问题