我的题目可能有点误导,因为我不知道怎么说。真对不起。
我有一个名为course的表,它包含有ID和Name列的课程列表
ID Name
---- ---------
1 JAVA
2 C#
3 C++
4 HTML
5 PHP
6 JAVASCRIPT
7 HARDWARE
8 PERL
9 CSS有一个简单的应用程序,学生问他是否可以注册一个特定的课程,然后系统将检查他是否完成了先决条件。要完成特定的课程,您需要完成一个或多个先决条件。以下是一些愚蠢的例子:
如何在数据库中显示这种关系,是否需要添加新列才能实现?
非常感谢你的帮助。
发布于 2014-03-15 08:19:24
您需要引入名为CoursePreRequiste的第二个表。它可以有以下列:
Id CourseId PreReqCourseId
样本条目
Id CourseId PreReqCourseId
--- --------- --------------
1 1 4
2 1 7必须将CourseId / PreReqCourseId组合定义为表中的唯一组合。当然,您可以取消第二列中的Id列,但我个人喜欢在所有列中使用Id,这样可以更容易地更新表。
发布于 2014-03-15 08:27:58
您需要在表设计中定义依赖关系。根据您的描述,您有以下内容:
这是一种多对多的关系,最好用一个额外的表来表示,该表包含对每个关系侧的Foreign key (在您的例子中,这两种关系都是来自同一表的课程)。新的表格设计应该如Raj在回答中所强调的那样:
Id CourseId PreReqCourseId
--- --------- --------------
1 1 4
2 1 7
3 2 8
4 2 3以后,要知道某一课程所依赖的是哪一门课程,只需运行:
SELECT PreReqCourseId FROM ThisNewTable WHERE CourseId = @Value记住用您正在寻找的课程的Id更改@Value,或者考虑使用它作为一个参数,如果您的脚本是为应用程序调用的(比如C#或其他)
https://stackoverflow.com/questions/22421292
复制相似问题