2009-08-18 103 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

我會繼續Dan Diplo's advice關於正常化LessonDetail,如果不確定是否總是有3次考試。不幸的是,這需要一個關鍵數據來獲取你想要的格式 - 但這是另一個問題。此外,您的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

聯繫起來謝謝馬克和丹。我知道有很多事情必須改進和回答。一步一步,它會更清晰。再次感謝 :) – 2009-08-18 11:40:48

1

我的第一個想法是,在查看數據庫設計時(它可以通過編輯進行更清晰的處理):一個LessonDetail總是有3個考試嗎?或者在未來的某個時候可能會有更多?

我會很想把它分解成這樣的:

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

LessonPoint(DetailID, Point) 

這樣,因爲你需要一個教訓可以有很多考試點。

+0

3考試就是一個例子。未來可能會有更多。 – 2009-08-18 11:06:00

+0

單獨保存考試,並將它們與課程 – abatishchev 2009-08-18 11:09:15