首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >栏太多了,怎么减少呢?每堂课的用户事件、评分、存储分数

栏太多了,怎么减少呢?每堂课的用户事件、评分、存储分数
EN

Database Administration用户
提问于 2017-02-15 10:57:08
回答 3查看 39关注 0票数 0

我正在做一个eLearning项目。它包括:

课程

  1. 课程(n课程)
  2. -Modules (在一门课程中至少有3个模块=nx3)
  3. -经验教训(在一个单元中至少有8个课程=nx8x3=nx24项)
  4. -培训(每门课程1次培训=n x 24 x1=n x 24项目)

我需要给每堂课的总分打分(1,2或3星评分),我需要记录用户的测试数据(错误的答案,正确的答案等)。

如果我将单个课程中的值存储为列,将测试项存储为列,表将变得太大。假设我们有5000名用户,500个测验项目,100个课程。这意味着,在5000行中有500列。

帮助我减少列,并通过避免空条目使数据库优化。

EN

回答 3

Database Administration用户

发布于 2017-02-15 11:18:39

应该将这些重复列中的每一列转换为单独的行。而不是表格设计

代码语言:javascript
复制
QuizId
Item1
Item2
...
Item500

这张桌子应该是

代码语言:javascript
复制
QuizId
ItemNumber   -- values are 1 through 500
ItemValue

然后,不再有数百列,而是有数千行,甚至数百万行。这很好。RDBMS被设计用来处理这么多,而不需要担心。

票数 1
EN

Database Administration用户

发布于 2017-02-16 06:18:41

8课程应该是一些表中的8行,而不是8列。也就是说,“不要跨列显示数组”。

票数 1
EN

Database Administration用户

发布于 2017-02-15 12:17:39

找到解决办法

实际上,我已经想出了另一种方法,我创建了一个由两个主要列组成的两个表。其中一个表有user_id、quiz_id、this和另一个用于上课的表( user_id、lesson_id、stars、score )--这解决了我的问题,但增加了我认为应该很好的行:)

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/164398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档