0

我是 ASP.NET 新手,但不是编程新手。我正在将我们当前的站点从 PHP/MySQL 迁移到 ASP.NET(3.5)/SqlServer。自从该网站启动以来,我一直潜伏在这里,所以我相信你们中的一个(或多个)可以帮助我。这是场景:

这是一个培训部门网站和部门。有一个课程目录存储在表中course。每门课程可能有许多先修课程,例如,A 和 B 是 C 的先修课程。我通常会将其作为逗号分隔的列存储在单独的表中或course单独的表中course_prereq,或者course_course作为递归关系存储。这部分我可以做。

但是,业务规则要求每门课程可以有多组先决条件。例如,N需要和A,或需要和。这就是我卡住的地方。BCNXY

以前,我将此信息存储在 row Nas的列中A,B,C|X,Y,将 id 解析为 PHP 2D 数组,为 id 在该数组中的所有行提交第二个查询,然后使用 PHP 将这些行分成各自的组。完成所有这些处理后,先决条件组将在网页上显示为单独的表格,如下所示:

| A | A's information goes here |
| B | B's information goes here |
| C | C's information goes here |
- - - - - - - OR - - - - - - - -
| X | X's information goes here |
| Y | Y's information goes here |

我将如何使用 ASP.NET 完成此任务?

4

3 回答 3

1

添加要保存的表格Prerequisite Sets。该表为该组中的每门课程保存一个组 ID 和返回课程表的键。对于给定的集合 ID,该表可能有几行,因此您的主键将是集合 ID加上课程 ID。然后在您的course_prereq表格中将课程与不同的先决条件集相关联。OR可以在那里假设一个关系,因为任何ANDs 都在集合 thesevles 中强制执行。

于 2009-03-20T16:10:51.937 回答
1

有一个名为 PrerequisiteSet 的表,它对每个 prereq 进行 FK。然后有一个 Course_PrerequisiteSet 多对多表,该表对 Course 和 PrerequisiteSet 进行了 FK。大多数情况下 Course_PrerequistieSet 中只会有一个条目,但如果有多个条目,那么它将是 OR 关系。

于 2009-03-20T16:13:49.793 回答
0

上面的两个答案都非常有帮助。我最终只使用了一个数据库表,而不是建议的两个。该表包含一个course_idprereq_idset_id,它们共同构成主键。

在 ASP.NET 页面中,我使用转发器循环返回课程的先决条件集的 sqldatasource 存储过程,并使用该转发器内的 gridview 从第二个 sqldatasource 存储过程读取各个先决条件信息。像这样:

RepeaterSqlDataSource(返回设置 ID)
Repeater
。. . GridViewSqlDataSource(返回 set 中每个 prereq_id 的课程信息
......GridView

希望这对其他看到类似情况的人有所帮助。

于 2009-03-24T14:52:04.403 回答