• SqlServer数据库设计,纠结的问题,有胆你就来!


    最近,小菜遇到了数据库设计上的一个问题,希望各位大侠再次,直抒己见,帮忙分析一下。也可有更好的设计,请直接提出来。

    要求:数据库(SQL Server 2005)存储每个学生,单个客观题答案、分数,主观题单个分数。

    问题:设计网上阅卷数据库,其中数据库扫描数据存储设计,遇到问题。问题难点在于数据量庞大,中型联考,预计考试人数10万人左右,每人预计考试9科目(未分文理之前),略估计每科考试主观与客观总共100道题左右,10*9*100估计源数据在5000万~9000万左右,如多次考试的话,数据量将会翻倍增长,如何在数据库中存储这庞大的数据,给我带来的非常头问题的问题。

    我的思路:

    1. 每次考试每次科目学生作答内容存储为单个表,每个小题为此表的一列,这样一张表的行数为10万(以10万人联考做参考),但是动态创建的列数为120+列(以每科120个题做参考),则每次考试要创建9张此类。

    优点:每次考试不必过多创建表(9张/次),且单表数据少(10万级左右)

    缺点:单表列数不固定,且单表列数120列左右(没用过这么多列不知道,性能如何),列数太多且不易统计。

    2. 每次考试各个科目各个小题存储为单个表,即要创建9(以9科目作参考)*100(单科100题做参考)=900张/每次,里面存储此科目此小题下所有参加考试人员的答题记录,10万/张表。

    优点:每次考试单表结构简单,单表数据少(10万级左右),列数固定且列数简单

    缺点:每次考试新建900(以9科目900小题做参考)表,数据库压力大。

    3. 按照平常小数据量存储模式,各科各个小题各人员,存储一张表,单表数据量(100*9*10万)9000万左右。

    优点:结构简单,数据合理,方便统计。

    缺点:数据量庞大,查询速度慢。

    以上,是我的三个既定思路,不知道哪个更好一些,希望大家帮忙分析一下,更希望有大数据量数据库设计的大侠指点一下。欢迎拍砖,但请提出您的理由或者是更好的设计思路!

  • 相关阅读:
    C# 获取电脑SN号
    Windows 使用ffmpeg将MP4视频转换为m3u8格式
    C# 创建或打开TXT文件并逐行写入
    Dictionary通过下标获取key和value
    Winfrom 连接考勤机设备时界面假死
    Win 10操作系统快捷键
    SQL Server 2008 在表中插入新的字段
    什么是CSR
    Sql Server中的事务隔离级别
    Web验证方式(4)--JWT
  • 原文地址:https://www.cnblogs.com/BinaryBoy/p/3600068.html
Copyright © 2020-2023  润新知