关于数据库设计,速度快慢的问题?
比如一个表包括学生的名字和学科成绩,假设学科成绩有20种左右,比如数学,语文等
方案1:一条数据显示
ID       姓名  数学  语文  。。
 1       小明  80    90方案2:多条数据显示ID       姓名  学科类别  分数  
 1       小明  数学      90
 2       小明  语文      80
 。       。   。        。
 。       。   。        。
 。       。   。        。
请问这2个方案,在数据项很多了以后哪个速度会快些,比如对某个学生的某个学科成绩的增删改
请高手详细说说啊

解决方案 »

  1.   

    方案1表宽,记录少,问题在于扩展性,加一门课需要加字段
    方案2表窄,记录多,姓名重复,需要加索引
    增删改 操作的速度应该差不多总体应该选择2
      

  2.   

    第二种;
    第一种适合统计报表, 
      

  3.   

    一般都选择第二种方案。既方便又便于添加新的数据或者字段。
        大多数数据表格设计都选用第二种。。呵呵 
      

  4.   

    学习,我一般做这种,做第一种,在查询的时候,可能比较麻烦
      

  5.   

    良好的数据库设计,不仅仅指的是性能方面。
    逻辑处理,关系型设计,数据冗余,可扩展等很多方面都是需要考虑的。
      

  6.   

    1、只能选择第二种方案,在进行数据库设计的过程中必须考虑扩展性的问题,如因数据字典的变化引起数据结构的变化(如新增计算机等学科),数据库的设计就存在较大的问题
    如报表需要显示成第一种方案,可以通过后台编程或其他方式显示成第一种方案的样式2、至于效率的问题,可通过优化索引和算法的问题解决
    3、第一种方案同时存在存储空间的浪费,如小明只选修了语文,其他科目的成绩都存在存储空间的浪费
      

  7.   

    汗,,第一个不满足 第一范式,可能出现 更新或者说删除异常
    第2个满足第一范式,范式 越高 在某种角度来说 肯定是 要 效率差与 低级范式
      

  8.   

    方案一 ,如果删除记录的话,, 小明的所有记录全部丢失...
      

  9.   

    第二种. 因为无论多少课, 都可以扩展的, 在实现应用中将会事来好处
    不过有个ID就行了, 不用再记录冗余的姓名字段