1. 程式人生 > 資料庫 >Kao資料庫設計心得

Kao資料庫設計心得

組名:原來名字可以這麼長
專案名:Kao——教育部學科評估管理資訊系統
組員:黃舟瑜 沈偉峰 趙雙藝 全鴻潤 樑晶淼

最近幾周我們組設計了資料庫,並且在討論課上與老師以及同學們進行了交流,找出了設計的幾點問題:

一、需求分析的重要性
在剛開始專案時,我們有簡單構思過資料庫的表結構,簡單地給出了一個初步的設計。這個初步的設計很多地方都非常地模糊,更多是憑著感覺來。之後,我們按照要求,先進行了需求分析等等工作,隨著需求的逐漸明確,我們對專案的理解逐漸加深,資料庫的表以及之間的關係逐漸明確。在這個背景下,我們正式展開了資料庫 1.0 版本的設計。在這一次會議上,我們的設計十分迅速,而且清晰明確,和我們目前在使用的資料庫差別僅有 10%~20%。理論和實踐都告訴了我們,資料庫的設計應當依託於完善的需求分析,只有立足於需求,才能設計好一個數據庫。所以,針對我們的資料庫,一開始想以功能來進行分類,發現設計的結果並不符合需求,存在大量的資料冗餘。後來我們從原型出發,對每個介面進行了分析,從它需要什麼資料開始逐層分析,共同討論,提高介面函式的複用率,最終設計出了組員理解,專案適配的資料庫。

二、資料冗餘問題
老師上課指出資料冗餘這一點是資料庫設計的重中之重,程式的效能很大程度上也和這點間接相關聯,資料庫的資料越多,對資料的基本操作就會變得越慢,當資料庫中儲存了大量資料並且資料大量冗餘時,對應用程式的響應就會變慢,導致使用者對應用程式的體驗變差。但在設計實際資料庫的時候,需要根據應用程式的需求設計,而不僅僅只是儲存了應用程式所需要的資料。有時候為了應用程式的設計方便,必要的資料冗餘也無可厚非。由於還未進行到具體的開發,我們保留了一些資料段,以備後續的修改使用。在 1.0 版本設計完之後,隨著我們專案的逐步推進,需求有所變化,初版的設計也暴露了一些不合理之處,其中主要以資料長度不合理及缺少欄位為主。在修改的時候也帶來了一些不便,在資料庫評審時老師也提到了這一問題,於是我們對資料庫進行了一些冗餘設計:在不確定資料長度時,適當地增加了長度;在部分欄位可能有改動的表中,添加了幾個冗餘欄位,它們在目前的實現中暫時不會被使用。這也提醒了我們,在設計資料庫時應當新增適當地冗餘,以應對未知的變化,因為冗餘帶來的損失並不大,但是更改表結構則會帶來許多麻煩。

三、訪問許可權
最後,就是針對我們的專案,應該考慮到不同人員訪問資料庫的許可權,所以要設定不同的許可權。不同的使用者如果不分配指定的角色,就可能會具有某些許可權來修改我們不希望被修改的資料,從而導致資料庫中的資料出現混亂;亦或是具有對其他表的訪問許可權,能夠訪問到程式設計者並不希望被使用者訪問到的資料。在這一點上,我們組決定資料庫與前後端結合,層層驗證,進最大可能確保資料的安全性。

經過這次專案的資料庫設計,我們體會到設計資料庫不是一個簡單的資料搬運工作,需要細心加仔細,結合思考,設計出針對本專案更加高效的資料庫。組員的凝聚力得到了提升,交流通順,大家都對本組的專案有了更深的理解。

四、優秀組員感悟(全鴻潤)


在資料庫設計的過程中,可謂一波三折,遇到的問題很多,學到的東西也很多。資料庫設計的主要負責人是由我和組員沈偉峰,在一開始進行設計時,我先自己根據之前已經寫好的需求文件設計了一個大概的樣板,在這個過程中,發現需求文件中所涉及到的資料、實體類之間的關係過於複雜,本來想按著需求文件應該可以很快進行設計,真正到設計時,才發現所要考慮的東西有很多。比如學校類和排名類之間的基數關係是一對多還是多對多;是不是需要單獨設省份表、市區表;以及使用者密碼如果要加密,儲存的密碼的字元長度取多少等等。這只是我個人一開始在設計資料庫時面臨的問題,帶著這些問題,2020年10月29日,我們小組線上下對資料庫設計進行小組討論,會議討論了資料庫實體類確定、實體類屬性設定、實體類之間的關係,經過討論,成功解決了我之前自己在設計資料庫時遇到的問題,感覺豁然開朗,再一次感受到團隊合作的力量,當然,也得益於小組每個人都事先仔細閱讀了需求程式碼、資料庫設計規範,在討論當天,一切都進行的很順利。
但後面的資料庫設計過程中依舊遇到了不少問題。2020-11-01,針對院校表的設計,我增添了學校型別欄位,新增新聞類;以為資料庫設計得還可以,但沒過多久,隨著對需求得進一步挖掘,我們又發現了大量問題,根據需求又對資料表得欄位進行了欄位的擴增,這次比較大的變動使我意識到,資料可設計並非易事。在經過再三檢查後,我們小組於2020-11-9將資料庫文件交與指導老師測評,但老師指出了很多存在的問題;這時候,我們的資料庫設計文件已經改到了第四版,最終通過小組成員的共同努力,終於初步通過指導老師的審批。
反覆的修改和不斷地討論,是在資料庫設計過程經歷最多的事了。讓我再次意識到,團隊合作是解決問題的有效方式之一。在這個過程中,也深刻意識到資料庫設計對後面開發的重要性,如果資料庫設計不合理,到後面發生改動的代價就會越大,雖然資料庫設計還不是很完善,但我們小組會一直跟進,完善資料庫設計。