2009-08-18 8 views
1

나는 초보자 프로그래머이며 학교를위한 "학생 프로그램"을 개선하고 싶습니다. 이 프로그램에서 레슨 정보를 추가하고 싶습니다. 예 :asp.net에서 어떻게 데이터베이스를 디자인해야합니까?

Student X 
Lesson name 1st exam 2nd exam 3rdexam 
mathematics 80   70   80 
history  70   70   70 
... 

나는 세 개의 테이블을 가진 KFS를 호출하는 데이터베이스를 가지고 있습니다.

Identity 
RecordID | firstname | lastname | address | city 

Lesson 
LessonID | name | description 

Lessondetail 
DataID | RecordID | LessonID | lessonname | firstpoint | secondpoint | thirdpoint 

이미 학생 목록을 GridView에 표시 할 수 있지만 선택한 학생의 점수도 표시하고 싶습니다.

이 응용 프로그램에 충분한 데이터베이스입니까? 그렇다면 어떻게 그 관계를 디자인하고 gridview에 표시 할 수 있습니까? 또는 데이터베이스를 수정해야합니까?

답변

0

나는 항상 시험을 3 개나 가질 것이라는 확신이 없다면 LessonDetail에 대해 약 Dan Diplo's advice으로 두 번째로 보겠습니다. 불행히도, 원하는 형식으로 데이터를 가져 오려면 피벗이 필요합니다.하지만 그것은 또 다른 질문입니다. 또한 LessonNameLessonDetail에 포함되어 있지만 대신 Lesson에서 가져와야합니다.

은 ASP.NET 측

은 매우 간단합니다 - 그것은 단지 standard Master/Details 뷰의 :

<asp:GridView DataSourceId="dsStudents" runat="server" DataKeyNames="RecordId" /> 

<asp:DetailsView DataSourceId="dsLessons" runat="server" /> 

<asp:SqlDataSource ID="dsStudents" runat="server" SelectCommandText= 
"SELECT RecordID, firstname, lastname, address, city 
FROM Identity 
ORDER BY RecordID" 
/> 

<asp:SqlDataSource ID="dsLessons" runat="server" SelectCommandText= 
"SELECT D.LessonID, L.Name, FirstPoint, SecondPoint, ThirdPoint 
FROM LessonDetail as D 
JOIN Lesson as L ON 
    D.LessonID = L.LessonID 
WHERE D.RecordID = @r 
ORDER BY D.LessonID" 
> 
    <SelectParameters> 
     <asp:ControlParameter Name="r" ControlID="gvStudents" 
     PropertyName="SelectedDataKey" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
+0

에 링크하십시오. 감사합니다. Mark and Dan. 나는 개선되고 대답되어야하는 많은 것이 있다는 것을 압니다. 단계별로, 더 명확하게 될 것입니다. 다시 한번 감사드립니다 :) –

1

데이터베이스 디자인을 볼 때 처음 생각해 보았습니다. (편집을 통해 더 명확하게 할 수있었습니다) : LessonDetail에 항상 3 가지 시험이 있습니까? 아니면 미래에 언젠가 더 많은 것을 가질 수 있을까요?

나는 이런 식으로 그것을 깰 유혹 될 것이다 : 당신이 필요로

LessonDetail(DetailID, DataID, RecordID, LessonID, LessonName) 

LessonPoint(DetailID, Point) 

그런 식으로 레슨이 많은 시험 포인트를 가질 수 있습니다.

+0

3 시험이 한 예이다. 그것은 앞으로 더 많은 것을 가질 수 있습니다. –

+0

시험을 별도로 유지하고 수업 – abatishchev

관련 문제