ASP.NET和一对许多一对多方案
-
21-08-2019 - |
题
我是新来ASP.NET而不是编程。我迁移我们目前从PHP / MySQL的网站ASP.NET(3.5)/ SqlServer的。我一直潜伏在这里,因为该网站的推出,所以我相信你们中的一个(或多个)可以帮助我。这里的情景:
这是一个培训部网站和部。具有存储在表course
一个课程目录。每个疗程可能有许多先决条件课程,例如,A和B是用于C.我通常存储此无论是作为在course
以逗号分隔的列或在一个单独的表或course_prereq
作为course_course
递归关系的先决条件。这一部分,我能做到的。
然而,业务规则要求每个当然可以具有多组先决条件。前示例中,N
要求A
,B
和C
,或N
需要X
和Y
。这是我坚持。
以前,我存储在用于行N
作为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?
解决方案
添加一个表来保存Prerequisite Sets
。该表保存一组ID和关键回的课程表集合中的每个过程。该表可具有用于给定组ID的若干行,所以主键将是该组ID的加过程ID。然后在你的course_prereq
表你涉及的课程不同的先决条件集。一个OR
关系可以假定存在,因为任何AND
s在集合themsevles执行。
其他提示
有一个称为其PrerequisiteSet FKS每个前提条件表。然后有一个Course_PrerequisiteSet多对多表FKS到课程和PrerequisiteSet。大部分时间将只有在Course_PrerequistieSet一个条目,但是,如果有一个以上的,那么这将是一个OR关系。
上述两个问题的答案是非常有益的。最后我只使用一个数据库表,而不是建议的两个。该表包含一个course_id
,prereq_id
和set_id
,其中所有一起形成的主键。
在ASP.NET页面中,我使用的中继器遍历在SqlDataSource存储过程返回一个过程的先决条件集,该中继器内一个gridview读取从第二SqlDataSource的存储过程的各个先决条件的信息。像这样:
RepeaterSqlDataSource
(返回集ID),点击Repeater
结果 。 。 。GridViewSqlDataSource
(返回路线信息中集点击每个prereq_id 。 。 。GridView
希望这有助于其他人在看一个类似的方案。