首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态表?

动态表?
EN

Stack Overflow用户
提问于 2010-09-27 22:14:28
回答 2查看 154关注 0票数 3

我有一个每个课程都有不同等级的数据库(即课程1有三个作业,课程2有两个作业,N门课程有M个作业)。就数据库设计而言,我应该如何处理这个问题?

代码语言:javascript
运行
复制
CourseID HW1  HW2 HW3
    1    100  99  100
    2    100  75  NULL

编辑我想我需要重新表达我的问题。到目前为止,我有两张桌子,课程和作业。作业指的是当然要通过外键。我的问题是,我如何知道有多少家庭作业将提供给每堂课?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-27 22:19:42

将表分解成三个不同的表。一个举办课程,第二个举办家庭作业,第三个把课程连接起来并存储结果。

课程:

代码语言:javascript
运行
复制
CourseID CourseName
1        Foo

作业:

代码语言:javascript
运行
复制
HomeworkID HomeworkName HomeworkDescription
HW1        Bar          ...

结果:

代码语言:javascript
运行
复制
CourseID HomeworkID Result
1        HW1        100
票数 0
EN

Stack Overflow用户

发布于 2010-09-27 22:19:35

不,这不是个好设计。这是一个反模式,我被称为元数据Tribbles。你必须继续为每个家庭作业添加新的列,这样它们就失去了控制。

这是重复组的一个例子,违反了关系数据库设计的第一范式

相反,您应该为Courses创建一个表,为Homeworks创建另一个表。Homeworks中的每一行在课程中引用一个父行。

我的问题是,我如何知道有多少家庭作业将提供给每堂课?

您将为每个家庭作业添加行,然后按以下方式计算它们:

代码语言:javascript
运行
复制
SELECT CourseId, COUNT(*) AS Num_HW_Per_Course
FROM Homeworks
GROUP BY CourseId

当然,这只会在您用行填充表之后才算家庭作业。所以你(或者课程设计者)需要这样做。

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

https://stackoverflow.com/questions/3808317

复制
相关文章

相似问题

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