摘要:數據庫課程教學中如何引導學生理解數據庫的作用以及表和規則的設計。
關鍵詞:數據庫 表 規則
數據庫類的課程對職業信息院校的學生來說是必修課。但是從以往教學的結果看,學生在學習這門課程中,對數據庫的作用比較迷惑,不知道數據庫在實際生活中是如何應用的。通過幾輪數據庫課程的教學,摸索出點滴經驗,就此談談數據庫課程教學中的一些方法和體會。
1 通過“銀行卡”使學生認識數據庫的作用
社會的信息化給我們的生活帶來了極大的方便,各種各樣的“卡”就是其中的一項。現在每個人手中有不少卡,像銀行卡、交通卡、借書卡以及學生玩網絡游戲的“點卡”。這些卡實際上都與數據庫有關系,卡中數據的變化會影響我們的學習和生活。讓學生通過對“銀行卡”的了解來認識數據庫是一條捷徑。
由于國家發給每個學生的獎學金和助學金是放在銀行卡中的,因此銀行卡就與學生的生活息息相關。在學習數據庫之前,學生只知道插入自己的銀行卡并輸入密碼后,就可以進行取款操作了。但是他們并不知道數據庫內部的運作機制,感覺這些很神秘。筆者通過數據庫中一系列數據的變化為學生揭開了這個謎底。首先讓學生了解我們之所以能夠在ATM上可以取錢,是由于網絡、計算機和數據庫的功勞。我們把卡插入ATM并輸入正確的密碼后,系統就認識我們手中的卡了。這張卡在銀行的數據庫中對應了一條信息,這條信息中保存著它的卡號、密碼、交易日期、交易形式、發生額、余額等重要內容,我們每取一次錢,余額便會減少;學校每次往我們的卡中存錢,余額便會增加。通過鋪設的網絡、,自動取款機與銀行的數據庫服務器相連,這樣就可以方便地從ATM上取到錢了。
在授課過程中,以圖1中的某卡號為例,為學生講解了數據庫信息的變化過程:張曉平同學手中有一張銀行卡,在2009年9月6日時,學校為她開戶并存了60元,那么發生額是60元,余額也是60元;在2009年10月6日時,學校又給她存了60元,即續存了60元,由于她并沒有把之前發的60元取走,因此,在10月6日時,她的余額便是120元;2009年10月10日,她取了100元,發生額就是100元,余額就變成了20元。信息的變化準確無誤并通過存折的打印讓我們非常清楚的看到了這些變化。沒有數據庫,這些信息就保存不了,我們也就不能從卡中進行存、取款的操作了。
通過以上的案例,學生明白了數據庫的作用。
2 通過圖書借閱系統使學生認識數據庫中的表
學生對圖書的借閱比較熟悉,用圖書借閱系統作為課程實施的載體學生也容易理解。在教學中,創建了一個圖書館數據庫,并在其中表設置了三張表:圖書信息表、讀者信息表和租借信息表。
2.1 圖書信息表 圖書信息表用來保存每本書的信息,其中,‘圖書編號’字段是圖書館為每本書做的標識號,必須唯一,不允許重復,設置為主鍵(圖2中‘圖書編號’左側的小鑰匙是主鍵的標志);‘狀態’字段用來記錄該書是否已經借出,如果是借出狀態,則不允許再借閱這本書;其余字段都是圖書自身的屬性。參見圖2。
2.2 讀者信息表 讀者信息表用來記錄辦理借書證的讀者信息,其中,‘讀者ID’是讀者借書的標識,每個讀者的ID號必須唯一、不允許重復,設置為主鍵;‘已借書數’用來記錄讀者借了幾本書,超過借書數量后不允許再借閱;‘是否有效’字段記錄讀者的借書資格是否有效,如果學生會已經畢業,則該字段的值被設置為無效,即不允許再借書;其余字段都是讀者自身的屬性。參見圖3。
2.3 租借信息表
租借信息表記錄讀者借書的信息。其中‘借閱號’必須唯一,不允許重復,是主鍵;每借出一本書,借閱號會遞增,增量為1;‘讀者ID’用來記錄哪位讀者借的書,對應讀者信息表中的‘讀者ID’字段;‘圖書編號’表示借的是哪本書,對應的是圖書信息表中的‘圖書編號’字段;‘借書日期’、‘應還日期’和‘還書日期’用來記錄借書的開始和結束期間,其中,‘借書日期’和‘應還日期’必須輸入,‘還書日期’在還書時必須輸入,如果‘還書日期’沒有值,表示尚未歸還;‘超期欠款’字段的設置是記錄對沒有按時還書的讀者進行處罰的金額。
3 表中字段規則的設置
規則是數據庫管理系統中一組使用T-SQL語句書寫的條件語句,它可以和列捆綁在一起,當用戶向捆綁了規則的數據列上插入和修改數據時,數據庫管理系統就會驗證所輸入的數據是否遵循規則,如果違反了規則,這一操作就會失敗。
在教學過程中,本著由簡到繁的思想, 先講解如何為電話號碼設置規則。由于電話號碼的內容全部由阿拉伯數字組成,因此為電話號碼設置規則比較簡單,其關鍵是必須輸入一定的位數(8位),再有就是必須是0-9之間的數字。創建的T-SQL語句是:
create rule 電話號碼As @vale like‘[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’
以上語句中單引號中的內容體現了電話號碼8位數字的特點。按照這個特點,學生很快寫出了為6位班級編碼創建的規則。在學生掌握了電話號碼和班級規則的設置之后,在課堂上又為學生提出了新的內容:為讀者信息表中的‘讀者郵箱’字段設置規則。在教學過程中,先讓學生寫出自己的電子郵箱地址,例如張曉平同學的郵箱是:zhangxp@163.com,分析它有什么特點,學生分析的結果是:對電子郵箱來說,最大的特點是必須有一個特殊的符號,那就是“@”,如果在電子郵箱字段中沒有“@”符號,就不符合郵箱名稱的規定了。結論是正確的,如何體現出來?學生最初寫出的T-SQL語句是:
create rule電子郵箱 as @ vale like ‘zhangxp@163.com’
按照這樣寫的規則在數據庫中創建后,學生們發現,所有人的電子郵箱都必須寫成zhangxp@163.com,否則系統就提示操作失敗。顯然這是不對的,因為劉小平的郵箱可能是lxp@sina.com。問題出現在哪里?引導學生分析后,在@符號的前后,不能給出具體的字符內容,必須使用匹配字符串‘%’才行,因此正確設置電子郵箱的規則應該是:
create rule 電子郵箱 as @ vale like‘%@%’
按照以上語句設置規則并將其捆綁到‘讀者郵箱’字段后,每個學生都能輸入自己的電子郵箱了。
通過以上的教學設計,使筆者感到,在教學中,老師的引導是十分必要的,這種引導需要我們認真思索后才能取得較好的效果。