computer

課程資料

資料庫系統概論

開課:梁婷老師

修課年度:100資工系

這學期因為 project 在期末考前一個月就要交了,所以課程也變更了一下順序。

期中考範圍:

  • Databases and Database Management Systems - 資料庫系統簡介,包含其和傳統儲存方式相比的優點
  • ER and EER Model - 使用圖像方式協助設計資料模型
  • Relational Model
  • Relation Schema Design and Functional Dependencies - 怎樣的資料表格設計才是好的設計?
  • Relational Design Algorithms and Further Dependencies

上半學期主要教我們如何將想儲存的資料,設計成適當的格式以儲存於資料庫之中。好讓我們可以開始設計專題的資料庫。後期就比較注重於資料庫系統背後的原理與架構了。

期末考範圍:

  • SQL - 一種標準化存取資料庫的語言
  • Relational Algebra - 關聯式資料庫數學理論
  • Disk File
  • File Structure - 資料庫系統檔案儲存的實做方式
  • Transactions
  • Concurrency
  • Recovery - 資料庫系統如何從當機中復原,保證資料狀態的正確性?
  • Query Optimization

使用的課本是《Database System: Models, Languages, Design, and Application Programming》,美國版書名是《Fundamentals of Database Systems》。選擇此書的原因是因為,老師覺得這本比起《Database System Concepts》容易理解。個人也稍微看過《DSC》那本,我也覺得《DSMLDAP》是比較好理解的。

不過由於老師上課投影片結合多家書籍內容,而其中許多採用的定義其實跟課本不太一樣。像是 primary index, cluster index 的定義等等,都與所使用教科書不同,需多加注意。而像是 extendible hashinglinear hashing 的操作,也和課本細節有些微不同, 考試可能會出現。

上課方式

用投影片教學。老師曾說每個讀資工系的人都有個夢想是創造自己的程式語言。她也曾想過。老師很希望有人問她問題,害羞的話寄電子郵件也無妨。

評分方式

評分如下:

  • 小考成績 15%
  • 期中考成績 30%
  • 期末考成績 30%
  • project 35% (proposal 20% demo 80%)

總分 110 分,所以就沒有調分了,最後平均約 72.5,大概有 1/6 的同學 90 以上。

小考方面總共有 7 次,有時會事先通知要小考,有時不會。7 次中,取三次高分採記。由於似乎也剛好有三次小考是有交的就直接算 100 分,所以算是點名性質,也因此不會另外每次點名。

小考可以 open book,也可和同學討論。期中期末都是 close book,這點跟去年不太一樣。

Project 的部份是1~2個人一組,以網頁界面實做一個資料庫應用程式。像是訂書系統、選課系統等等。期目自訂,一開始要先交一個 proposal,設計資料庫 schema 等等。接著再去 demo,並交一份介紹投影片。demo 感覺只要沒有什麼 bug,分數就不錯。排版應該不太佔分。

程式語言不限定,一般是用 PHP。不過特別規定不能使用一些太強大的資料庫套裝功能,而要自己直接用SQL操作。我們這組採用的是 Python 配合 Django,當然就不能使用裡頭的 models 了。

原始碼可以在 github 上觀看:animedbs。真的做了好久,簡直是心血結晶!

設計 SQL 時使用了 MySQL Workbench,感覺幫助良多。

結語

基礎方面,理論的部份還好。實做 project 的話,有些相關經驗會有幫助。我覺得這堂課修起來最辛苦的地方有兩個,首先是 project,似乎是一開始的 proposal 不小心把資料庫設計的太複雜,所以花了很久的時間才實做完成。尤其這學期我剛好修了不少實做課,所以感覺力不從心。不過可以使用任意語言這點滿令人高興的,一直想學 Django ,這次終於有機會使用。

另外一個辛苦的地方大概是定義不清的問題吧,因為投影片採用各家書籍,有時會出現不同定義,例如 natural join, equi-join,老師是說使用哪種定義都可以。不過也有一些是投影片只有一種講法,但和課本不同的情形。也有遇到公佈的小考解答解法跟老師教的其實不太一樣。助教表示僅供參考。另外就是 B+ tree 要怎麼刪除資料,課本沒有寫出詳細演算法,可能也得細心多看才能理解。這些小問題需要多加注意,所以有時滿困擾的。

平常這堂課都會有一些不同年級的同學來修。這學期應該是因為跟專題(一)衝堂,所以修課人數非常少,只有四十幾個人,相比起來是溫馨的小班教學。

辛苦的一學期終於結束了,覺得很開心。