1. 程式人生 > 資料庫 >資料庫設計心得 -- 十萬伏特人間皮卡丘

資料庫設計心得 -- 十萬伏特人間皮卡丘

 

 


 

資料庫設計心得

專案名稱:WIFI人體動作識別系統

小組:十萬伏特人間皮卡丘

指導老師:週四望

小組成員:潘琳 劉大衛 曹芊 唐詩遠 鄢蝶

 

 

 


 

    

 

 

 

前言:

在本次軟體工程導論課程中,資料庫設計主要的目標是利用課程中學到的資料庫知識和技術較好的開發設計出一個數據庫系統,去解決課程設計的資訊化處理的要求。

在這次專案設計中,我們小組所選擇的是設計一個WiFi訊號人體動作識別系統,這對我們來說是一次嘗試與創新的過程,也可以說是一個挑戰的過程。現在我們利用自己學到的知識設計並製作一個人體動作識別系統,這本身就是一個知識轉化為生產力的過程,所以大家都很興奮,都不同程度的投入了很高的熱情與努力。

 

    

 

 

資料庫設計流程

1. 規劃

當我們這組決定做WiFi人體動作識別系統時,我們並沒有立即手寫程式。而是大家一起商量這個系統概述、系統目標、系統需求、業務流程分析、資料流程分析和資料詞典。當這些都準備好了之後,我們再進行模組的分工,以及資料庫設計。

 

2. 需求分析

當然這個過程並沒有想象中的那麼簡單,首先我們的需求並不是很明確,這導致我們在後面的設計中遇到了非常多的困難,進而導致我們的資料庫設計也寸步難行。

不過當我們的需求初步定了下來以後,小組抽了一整個晚上的時間對資料庫進行設計分析,這其中也有過好幾個版本,最終在資料庫大佬的幫助下才確定下來。

 

     

 

3. 概念結構設計

 

概念結構設計是整個資料庫設計的關鍵,它通過對使用者需求進行綜合,歸納與抽象,形成了一個獨立於具體DBMS的概念模型。

 

在小班課展示完原型後,就要進入資料庫設計的階段了,我們根據小班課老師的建議,和專案指導老師進行了討論,因為我們的專案是偏向於演算法的,開始我們能夠想到的表很少,與老師討論後,發現其實也不少,需要包含很多動作資料資訊和使用者資訊。於是進一步結合需求,設計出概念資料模型,包含的實體有使用者資訊,使用者反饋,頭像,原始的跑步、行走、搖手資料和處理後的跑步、行走、搖手資料等,也基本確定了每個實體中應該包含的屬性。

 

4. 邏輯結構設計

 

邏輯結構設計是將概念結構轉換為某個DBMS所支援的資料模型,並將進行優化。

 

根據概念資料模型和它們之間的關係進行邏輯結構的設計,建立了專案資料庫的實體及繪製了E-R圖。

 

 

5. 資料庫物理設計

 

物理設計是為邏輯資料結構模型選取一個最適合應用環境的物理結構(包括儲存結構和存取方法)。

 

 根據邏輯結構設計進行資料庫的物理設計,因為前面的工作已經基本完成了,所以這個過程比較簡單。我們使用的是MySQL資料庫,然後用Navicat進行管理。最後利用powerdesigner匯出資料字典。

 

(1)在建使用者資訊表時,我們考慮過是每類使用者建一張表,還是所有的使用者在同一張表裡,然後新增一個欄位表示他是哪一類使用者,最後根據高類聚低耦合的原則選擇採用後者。

 

(2)部分組員認為應該有一個表用來儲存所有的使用者型別,這樣才能符合資料庫設計的正規化,但是另一部分組員認為如果建這樣一張表的話,這張表裡就只有一個屬性,所以並沒有這樣做的必要。最後我們也是沒有新增這個表。

 

是否需要建管理員與普通使用者關係表也產生了一些討論,我們在考慮,應該在使用者資訊表裡新增一個欄位,來表示該使用者所屬的管理員,還是建一張表來儲存他們之間的關係。最後選擇了建一張表。

 

 

 

遇到的問題及解決

用例的選擇

在設計過程中,對於資料庫設計的理解上,組員與組員之間產生分歧。主要體現在我們的資料庫的使用者分為三類,分別為普通使用者,管理員和超級管理員,在設計資料庫時,設定普通使用者的type為0,管理員的type為1,超級管理員的type為2。在初始情況下,資料庫中不存在型別0,1的資訊,需不需要設定一個表格來記錄type型別0,1,2和對應的使用者類別資訊。

經最終討論,我們認為無需另外新建一個表格,原因為我們認為type型別0,1,2為系統可選值,已經存在超級管理員,除超級管理員外,其餘使用者最初為普通使用者,經申請成為管理員,超級管理員保管使用者型別,因此無需。

 

不同型別資料的儲存

在設計資料庫時,因為我們需要儲存矩陣資訊,對於矩陣的儲存,最初不知道應該如何處理。

後來,我們意識到可以將我們需要儲存的矩陣儲存在另外的地方,而資料庫中只需要儲存矩陣儲存地址就可以解決。

 

使用者間對應關係

對於刪除管理員,下屬的所有普通使用者的歸屬問題。即當一個使用者,新註冊之後或者是管理他的管理員被刪除,他所屬的管理員不存在的設計上的問題。

我們給出的解決方案為設定一個管理員為預設管理員,當新使用者註冊還未被管理員管理,或者管理員被刪除,則該使用者將臨時被歸於預設的管理員。

 

 

總結與收穫

 

團隊智慧
我們在小組討論的過程中相互補充,相互學習,體現了團隊的智慧。


知識獲取

這次課程設計加深了我們對資料庫系統設計相關知識以及MySQL相關功能的理解。比如在建立基本的表、檢視、索引、儲存過程、觸發器等,都比以前更加熟悉了,並在解決各種問題的過程中學到了很多新的知識。在設計中我們基本能按照規範的方法和步驟進行,首先對現有的系統進行調查,並查閱有關資料,最後確定設計方案,然後設計並製作,實施過程中我們深刻的認識到認真執行管理系統軟體標準的重要性,由於我們對管理系統軟體相關的標準和規範不太瞭解,缺少行為操作準則,所以在設計中手法比較生硬,主與次也沒能很好把握住,這些方面通過這次我們都要加強了解。


理解專案

通過建立資料庫,對於我們的專案有了更深層次的理解,逐漸清晰了表與表,資料與資料之間的關係,特別是對於管理員管理使用者,超級管理員管理管理員之間的層次關係。

 

完成分工

在建立資料庫的過程中,我們同時討論了前後端的任務。因此對於前後端的分工也有了很深的認識。

 

改進

在這次課程設計中,我們以小組為單位去完成本系統的設計與製作,所以小組內的分工和相互協調很重要,大家可以在分工中揚長避短,各取所長,這樣可以很好的提高大家的積極性,和合作意識,並有效的縮短開發時間,但我們在這方面做的還不夠,缺乏人員管理與溝通,導致人力資源浪費,可以說是不足之處,且迫切的需要思考和改進。這在以後的工作與學習中將會非常重要。

 

把握進度

很多時候由於之前的設計問題,後面的設計根本無法繼續,感覺像是被前面做的各種圖以及需求能否完成這一點所限制了。而資料庫的設計又會影響到後面的編碼設計,感覺一環套一環,如果前面設計得完善合理的話,後面的任務相對而言就會輕鬆不少。

 

 

總的來說,這次資料庫設計將課程上講解的內容運用到了實際中,實踐才是檢驗真理的唯一標準。