簡介: 很多時候所有資料如果都集中在一張表上會有很多重複的資料,譬如選課時每個學生選好幾門課,如果每一筆選課資料都要寫學號、姓名與班級,就會很浪費時間與空間;而且如果寫錯了,同一個人產生兩個不同學號之類的就更加麻煩了。因此好的資料庫都會適當的切割,或重組資料表(術語稱為正規化Normalization)。在此我們以選課資料為例,將選課資料與學生資料、科目資料切割開來,並建立好欄位之間的關聯性,這樣只要記錄學號就可以連帶找出該學生的姓名與班級;科目部分也是一樣,以課程編號與科目表相連,於是就可以帶出該課程的細節資訊,譬如任課老師或上課時間等等。因為學生資料與科目資料都是唯一的,所以資料不會寫錯或重複,而且可以跨越多個資料表組織出資料檢視表,可以更具彈性的檢視資料,不必受限於一次只能看一個資料表的內容。 建立資料庫 開一個ASP.NET網站建立一個資料庫加入以下三個SQL資料表。 A.學生資料 設定欄位定義如下: 輸入幾筆資料: B.科目資料 設定欄位定義如下: 輸入幾筆資料: C.選課資料 設定欄位定義如下: 輸入幾筆資料: 可以看到這個表變得很簡單,分別是三位學生各選了兩門課的意思。我們希望稍後可以列出各科目的選課單! 建立資料欄位關聯 請到資料庫總管視窗,對著資料庫圖表項目按右鍵選擇加入新的圖表 出現如下視窗選擇是! 出現如下視窗時將三個表全選,之後按加入鍵!出現三個表的圖示後按關閉。 請用滑鼠左鍵點選選課資料表的學號欄前面的灰色方塊,繼續壓住滑鼠鍵,以拖曳方式連線到學生資料表的學號欄; 再以同樣方式將選課資料表的科目編號欄連到科目資料表的科目編號欄。完成畫面如下,請注意拉線的起終點是有關係的,起點的欄位會參考到終點的資料表。 接著按下磁碟圖示儲存,檔名預設是:Diagram1,使用預設值即可。這個設定只是明確告知資料庫:選課資料表中的學號與科目編號就是另外兩個表中的同名欄位。 建立檢視表 檢視表在網頁上使用時與一個獨立的資料表相同,但是實際在資料庫中不是儲存為一個實質獨立的表,只是一個篩選資料的SQL指令,需要時會根據這個指令臨時組織出這個名字的檢視表。我們在此要建立出各個科目的選課名單(點名單),請用類似增加資料表的動作增加一個檢視表,操作畫面如下: 出現如下視窗時全選三個資料表,按加入與關閉。 請點選小視窗中的項目設定本資料表的項目如下,篩選條件手動輸入科目編號0001(程式設計), 之後按下磁碟片圖示存檔,存成『程式設計』表: 資料庫總管變成這樣: 程式設計課程名單 網頁呈現檢視表 接著開啟一個ASPX網頁,用GridView設定檢視這個『程式設計』表(只選學號姓名班級欄),畫面應該如下: 練習題:製作其他科目的選課名單檢視表(點名單) |