考试系统数据库设计
??? 歷經多天對考試系統需求的研究,終于數據庫也有了些原型。
??? 這次的數據庫設計,以三范式為原則,本著理論與實踐結合,達到一種更合理更簡潔的目的進行設置。但是,粒度的大小真的是不很好把握。說一下,我遇到的一種比較新的情況。
??? 舉個比較通俗的例子。一張紙上可以寫n行字,一本書可以有n張紙。在進行數據庫設計時,我就遇到了這種情況。那這種問題怎么解決呢?拿例子來說。就是考試,一個考生一張試卷,每張試卷上有n道題。(由于是隨機抽題進行考試,每個人的考題都是不一樣的。)這樣的話,數據庫中我們要記錄每個考生的試卷以及答題情況。下面是幾種數據庫的設計情況,記錄下來,有時間在分析。
第一種情況,操作比較方便
| ?考號 | ?考試編號 | ?試卷id???? | ? 試題id????? | ?考生所答答案 | ? 得分 |
| ?01 | ?01 | ?01 | ?1 | ?A | ?0 |
| ?01 | ?01 | ?01 | ?2 | ?A | ?1 |
| ?01 | ?01 | ?01 | ?3 | ?B | ?1 |
| ?01 | ?01 | ?01 | ?4 | ?C | 0? |
| ?02 | ?01 | ?02 | ?2 | ?A | ?1 |
| ?02 | ?01 | ?02 | ?5 | ?C | ?1 |
| ?02 | ?01 | ?02 | ?3 | ?B | ?1 |
???第二種情況
| ?考號 | ?考試編號 | ?試卷id | ?試卷試題所在的表格 |
| ?01 | ?01 | ?01 | ?Paper01 |
| ?02 | ?01 | ?02 | ?Paper02 |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
???Paper01
| ?試題id | ?正確答案 | ?考生答案 | ?得分 |
| ?1 | ?B | ?A | ?0 |
| ?2 | ?A | ?A | ?1 |
| ?3 | ?B | ?B | ?1 |
???Paper02
| ?試題id | ?正確答案 | ?考生答案 | ?得分 |
| ?2 | ?A | ?A | ?1 |
| ?5 | ?C | ?C | ?1 |
| ?3 | ?B | ?B | ?1 |
???這樣,有一個總表,以考號,考試編號為主鍵,試卷id為索引,找到各個試卷所在的表,并進行操作。
?? 第三種想法想法:
| ?考號 | ?考試編號 | ?試卷id | ?備注(其中所包含所抽到試題的id,考生所答的答案,題正確答案,得分。按此先后順序進行排列) |
| ?01 | ?01 | ?01 | ?{(1,A,B,0),(2,A,A,1),(3,B,B,1)} |
| ?02 | ?01 | ?02 | ?{(2,A,A,1),(5,C,C,1),(3,B,B,1)} |
???這樣在一個表中也能存儲所有的數據。而且一張試卷一張表也比較清晰。
??
?????????
轉載于:https://www.cnblogs.com/yanmei-yaomy/archive/2011/07/26/3025112.html
總結
- 上一篇: asp.net播放声音
- 下一篇: 可拖拽的ImageButton