請你解釋一下你的專案是怎麼設計的?


前言

{{ 警告 }}
這個系列的文章都不保證正確

等等...不保證正確還敢發文!?

發文的用意有兩個:
1.作者想複習,順便記錄
2.坐等寫錯了有人看不下去跳出來打臉

寫這篇文的時候還是很想自盡,寫下來讓未來的我不會又想自盡。
As usual,期待看到回應。

請你解釋一下你的專案是怎麼設計的?

這題要問的應該是情境分析、需求分析、資料表欄位規畫。現在想想,其實就是資料庫最基本也是最重要的資料庫的設計流程。

資料庫的設計流程

情境分析
我們的考生蕃茄鐘專案情境如下:
我們想要設計一款蕃茄鐘,讓考生可以建立蕃茄鐘,了解自己準備考試時的作息,最後出統計圖表讓考生可以回顧一段時間的每日專注時間。不同考生可以以考試搜尋,得到系統推薦的其他考生的蕃茄鐘作息。
(推薦被砍了,只剩統計圖表...)

會有考生身分這一個需求,除了要推薦考試作息,也因為同一個考生可能會同時準備不同考試(學測、多益)。
考試作息包含:蕃茄鐘、起床鬧鐘,這些會在統計圖表取得。
(考生和鬧鐘被砍了,只剩下蕃茄鐘...)

使用者要使用所有功能都要先註冊,註冊完後要建立的考試,建立完考試之後可以在考試底下建立蕃茄。另外,為了使用者方便,也提供待辦事項功能,但與考試無關。
(基本上前面都不用看,剩這些...)

最後殘存的流程圖:

需求分析(殘存版)
User

  • 註冊
  • 登入

考生身分(考試名稱)

  • 建立/取得/修改/刪除考生身分

蕃茄鐘

  • 建立/取得/修改/刪除蕃茄鐘

待辦事項

  • 建立/取得/修改/刪除待辦事項

資料庫架構

完成需求分析後可以進入邏輯設計。通常會先畫 E-R Model(實體關聯圖),然後將關聯圖轉成資料表。

資料表:

總結

面試後端要展示的基本的能力就是有設計資料庫決定資料怎麼接怎麼拿的能力,可惜的是我面試之前沒想過要怎麼樣展示,以為作品寫完就是會了。

老實說,其實我對於這個專案信心很不足的地方還有一個,當初情境和需求設定完後改了很多,常常做到一半/做完需求又砍掉(一個月內至少改 3 次),所以真的拿這個去面試講起來綁手綁腳,之後面試我應該不會再拿這個專案了。只能說是自己太菜啦,當初沒有想過各種被砍情況,也沒有想過備案。

雖然挫折可以帶來成長,但這種的還是能免則免 :(

ps
1.為什麼要用關聯式,只是因為多數公司使用關聯式資料庫,練一下。
2.後來回去看 code,發現因為後來考生身分被砍,所以我幾乎用不到 exam_id,就在蕃茄表裡偷塞 user_id,但我忘記這件事...

參考資料

#Laravel #後端 #新手 #面試





一個新手的筆記。本系列文適合有多年程式開發經驗者,或具備思考與查證能力者閱讀。適合程式課程開發者參考,可以了解新手可憐的小腦袋;嚴禁寫作業照抄,一定不及格。

留言討論