首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计,如何在表中显示依赖关系?

数据库设计,如何在表中显示依赖关系?
EN

Stack Overflow用户
提问于 2014-03-15 08:08:20
回答 2查看 108关注 0票数 1

我的题目可能有点误导,因为我不知道怎么说。真对不起。

我有一个名为course的表,它包含有IDName列的课程列表

代码语言:javascript
复制
ID   Name
---- ---------
1    JAVA
2    C#
3    C++
4    HTML
5    PHP
6    JAVASCRIPT
7    HARDWARE
8    PERL
9    CSS

有一个简单的应用程序,学生问他是否可以注册一个特定的课程,然后系统将检查他是否完成了先决条件。要完成特定的课程,您需要完成一个或多个先决条件。以下是一些愚蠢的例子:

  • 要实现JAVA,您必须完成硬件和HTML
  • 要执行C++,您必须完成硬件和PHP
  • 要实现CSS,您必须完成JAVA

如何在数据库中显示这种关系,是否需要添加新列才能实现?

非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-03-15 08:19:24

您需要引入名为CoursePreRequiste的第二个表。它可以有以下列:

Id CourseId PreReqCourseId

样本条目

代码语言:javascript
复制
Id  CourseId  PreReqCourseId
--- --------- --------------
1   1         4
2   1         7

必须将CourseId / PreReqCourseId组合定义为表中的唯一组合。当然,您可以取消第二列中的Id列,但我个人喜欢在所有列中使用Id,这样可以更容易地更新表。

票数 1
EN

Stack Overflow用户

发布于 2014-03-15 08:27:58

您需要在表设计中定义依赖关系。根据您的描述,您有以下内容:

  • 一门课程可以依赖于很多。
  • 对于许多人来说,一门课程可以是一种依赖。

这是一种多对多的关系,最好用一个额外的表来表示,该表包含对每个关系侧的Foreign key (在您的例子中,这两种关系都是来自同一表的课程)。新的表格设计应该如Raj在回答中所强调的那样:

代码语言:javascript
复制
Id  CourseId  PreReqCourseId
--- --------- --------------
1   1         4
2   1         7
3   2         8
4   2         3

以后,要知道某一课程所依赖的是哪一门课程,只需运行:

代码语言:javascript
复制
SELECT PreReqCourseId FROM ThisNewTable WHERE CourseId = @Value

记住用您正在寻找的课程的Id更改@Value,或者考虑使用它作为一个参数,如果您的脚本是为应用程序调用的(比如C#或其他)

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

https://stackoverflow.com/questions/22421292

复制
相关文章

相似问题

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