我的问题标题可能有点误导,因为我不知道怎么说出来。对不起。
我有一个名为course
的表格,其中包含ID
和Name
列的课程列表
ID Name
---- ---------
1 JAVA
2 C#
3 C++
4 HTML
5 PHP
6 JAVASCRIPT
7 HARDWARE
8 PERL
9 CSS
有一个简单的应用程序,学生询问他是否可以注册特定课程,然后系统将检查他是否已完成先决条件。要完成特定课程,您需要完成一个或多个先决条件。以下是一些愚蠢的例子:
如何在数据库中显示此关系,是否需要添加新列才能实现此目的?
非常感谢你的帮助。
答案 0 :(得分:1)
您需要引入一个名为CoursePreRequiste的第二个表。它可以包含以下列:
Id
CourseId
PreReqCourseId
样本条目
Id CourseId PreReqCourseId
--- --------- --------------
1 1 4
2 1 7
CourseId
/ PreReqCourseId
组合必须在表格中定义为唯一。您当然可以取消第二列中的Id列,但我个人喜欢在我的所有列中使用Id,这样可以更轻松地更新表格。
答案 1 :(得分:0)
您需要在表设计中定义依赖关系。根据您的描述,您有以下条件:
这是一个多对多关系,最好表示为一个额外的表,其中包含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#或其他方式)