Pergunta

Eu sou novo para ASP.NET, mas não para a programação. Eu estou migrando nosso site atual do PHP / MySQL para ASP.NET (3.5) / SqlServer. Eu estive à espreita aqui desde o lançamento do site, por isso estou confiante de que um (ou mais) do que você pode me ajudar. Aqui está o cenário:

Este é um site departamento de formação e o dept. tem um catálogo de cursos armazenados no course mesa. Cada campo pode ter muitos campos de pré-requisito, por exemplo, A e B são pré-requisitos para C. I normalmente armazenar este quer como uma coluna delimitado por vírgulas em course ou em um course_prereq tabela separada ou course_course como uma relação recursiva. Esta parte eu posso fazer.

No entanto, as regras de negócio exigem que cada curso pode ter vários conjuntos de pré-requisitos. Fore exemplo, N requer A, B e C, ou N requer X e Y. Aqui é onde eu estou preso.

Anteriormente, eu armazenada esta informação em uma coluna para N linha como A,B,C|X,Y, analisado os ids em um 2D-array PHP, apresentou uma segunda consulta para todas as linhas cujo id estava naquele array, então utilizado PHP para separar as linhas nos seus respectivos grupos. Uma vez que todo esse processamento é feito, os grupos de pré-requisitos são apresentados como tabelas separadas na página da web, assim:

| 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 |

Como eu poderia fazer isso usando ASP.NET?

Foi útil?

Solução

Adicionar uma tabela para Prerequisite Sets espera. Esta tabela possui um ID set e volta chave para a tabela de cursos para cada curso no conjunto. A tabela pode ter várias linhas para um determinado conjunto de ID, assim que sua chave primária será o ID set mais o ID do curso. Então, em sua mesa course_prereq você se relaciona cursos para os diferentes conjuntos de pré-requisitos. Uma relação OR pode ser assumida lá porque nenhum ANDs são aplicadas nas themsevles conjuntos.

Outras dicas

Tenha uma tabela chamada PrerequisiteSet que FKs para cada pré-requisito. Então, Course_PrerequisiteSet muitos para muitos tabela que FKs para Curso e PrerequisiteSet. Na maioria das vezes, haverá apenas uma entrada na Course_PrerequistieSet, mas se houver mais de um, então será um OR relacionamento.

Tanto as respostas acima foram muito úteis. Acabei usando apenas uma tabela de banco de dados em vez do sugeriu dois. A tabela contém um course_id, prereq_id, e set_id, que no seu conjunto formam a chave primária.

Na página ASP.NET, eu uso uma repetidor de varrer o procedimento SqlDataSource armazenado que retorna conjuntos de pré-requisitos de um curso, e um gridview dentro desse repetidor que lê as informações de pré-requisito individual de um procedimento armazenado segundo SqlDataSource. Como esta:

RepeaterSqlDataSource (retornos definir ids)
Repeater
. . . Informações GridViewSqlDataSource (retornos curso para cada prereq_id em conjunto
. . . GridView

Hope isso é útil para qualquer outra pessoa olhando para um cenário semelhante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top