te-touのブログ

音楽制作・車・プログラミング・旅行・その他考えてる事など、備忘録的なことも含めて個人的なページです。

ウェブアプリを作る。2(設計)

 

 とりあえず、ウェブアプリを作る上でテーブル定義を考えます。

どういった物を作るかは、以前の記事で書いています。

www.te-tou.tokyo

 

 ざっとイメージだけ図にまとめて、

f:id:te-tou:20200124022050p:plain

テーブル設計

それっぽく見えるように、SQLWorkbenchに落としこみます。

www.mysql.com

テーブル定義

f:id:te-tou:20200124022204p:plain

mysql workbench

本来、設計は非常に重要な作業なのですが「これで良いのか?」と思いつつ、考えるより手を動かすことを優先します。

最近数年間はSQLを手書きで書くことがほとんどないので、SQLの知識と技術は落ちていくばかりです。 

SQLworkbenchのDiagramはそんな私にも絵面で視覚的に見れるので便利です。

SQLも発行してくれるし。ただ、Djangoでは不要なので今回は確認のみで使います。

後々は使うかもですが。

 

久しぶりにこの手の設計を考えると、データ型に悩みます。

例えば、「ID」のデータ型はINTかCHRAかとか。

IDに6桁の会員番号を入れたい時、先頭の数字が「0」から始まるような場合はINTでは桁落ちしてしまうのでCHRA(6)の方が良いとか考えましたが、今回は以下の要件を設定した上でINTにしました。

  • IDは1から昇順に番号を振る
  • 会員番号は使わない

実際の仕事であればありえない設計ですが、試しに作る上ではできるだけ簡単に考えます。

あとは、テーブル項目の紐付けとかざっと考えて。

仕様

ScoringSheetテーブルで機能的にやりたいことは、

  • 実技試験の採点者(Markers)は5名
  • 項目score1~5に0~10点を0.5刻みで入力
  • 項目totalPointsにscore1~5の合計点を設定
  • totalPointsが~点以上の場合、項目praticalResultに「合格」を設定
  • 項目writtenExamPointsに筆記試験点数を入力
  • writtenExamPointsが~点以上の場合、項目writtenExamResultに「合格」を設定
  • praticalResultが「合格」かつ、wrritenExamResultが「合格」の場合、項目judgementに「合格」を設定

みたいな感じです。

Exelで作るのは簡単で、ウェブアプリとしてもなんてことないように感じますが、いざやろうとすると結構悩みます。

 

とりあえずはやってみないと。