フロントのほうの設計方法は、ギャレットの「ウェブ戦略としての「ユーザーエクスペリエンス」―5つの段階で考えるユーザー中心デザイン」で、「戦略、要件、構造、骨格、表層」っていう5つの段階で考えればよい手順が示されている。
で、これを、サーバーサイドのDBに持ってくる方法に関しては、DBはDBで、設計方法はあるけど(正規化理論)、それをどう使うのか、書いていない。
ざっくり書いておく
■フロントの画面項目から、テーブルを出す方法
1.各画面の入力項目、出力項目を出していく
ワークショップ風にやるなら、入力項目1項目1付箋紙をつかうといい。
例:ログイン画面で、「ログイン名」で1枚の付箋紙、「パスワード」でもう一枚の付箋紙の感じ
2.その項目を、グループごとにまとめる。
(2-1)項目を●●のXXという形でわざと表現する
→ログイン名=ユーザーのログイン名、パスワード=ユーザーのパスワード
受注日=受注した日
(2-2)そしたら、●●がグループ、上記の例だと、ユーザーや受注でグループを作る
DBに保存しないもの:操作(~ボタン、並び替え順など)は、ひとまとめのグループに
(2-3)グループに表題をつける
付箋紙にグループ名を書く場合、色を変えたほうがいい
3.グループの表題1レコードに対して、各項目は1個かどうか確認する
1個で無かったら、(たとえ1項目でも)別グループにする
→すでに出来ているグループに所属するのでなければ・・
ユーザー1人に対し、ログイン名は1つであれば、ログイン名はユーザーグループ
ログイン日は、複数考えられるので、別グループに分ける
→この操作が終わると、第一正規形が完成する
4.各グループごとの関係をいれる
グループA,Bとあったとき、A1件に対して、Bが何件もあったら1対多
逆は多対1、両方有り得たら多対多。これをいれる
5.IDをつける
各グループで、グループ名+IDのIDをつける
→1件に1つのもので、IDになりえるものがあったら、わざわざIDを
ふらなくてもよい。
例:ユーザーテーブルのログイン名
(振っても良い:その場合IDはユーザーIDとなる)
6.外部キーを入れる
4の操作で、1対多の場合、多のグループに1のグループのIDを追加する
7.各グループをみて、
この項目がきたときは、この項目がからなずきている!というのが無いかさがす
例:都道府県と地域(関東、関西など)
→ユーザーからみると、どちらも1対1だが・・
もしくは、ロジック的にこの項目のこの値が決まると、他の項目の値が
推測できるものを探す。
それは、別グループにわけ、IDを振って、IDだけを、もとのグループに入れる
→この操作が終わると、第三正規形が完成する
8.ER図にまとめる
エンティティ=グループ(エンティティ名=グループ名)
アトリビュート=項目(付箋紙1枚1枚)
関係:4でつけた
→ER図に書ける
なお、テーブルをつくるときは
エンティティ=テーブル(エンティティ名=テーブル名)
アトリビュート(属性)=テーブルのカラム(各項目)
関係:6で外部キーをつけた
主キー:5で割り振った
となる。
9.シナリオに沿って動かしたとき、テーブルのデータが生成、参照、変更、削除
されるか、矛盾ないか確認
ここでは第二正規形の議論は起こらない(複合キーがないので)
その理由は別のときに・・・
で、これを、サーバーサイドのDBに持ってくる方法に関しては、DBはDBで、設計方法はあるけど(正規化理論)、それをどう使うのか、書いていない。
ざっくり書いておく
■フロントの画面項目から、テーブルを出す方法
1.各画面の入力項目、出力項目を出していく
ワークショップ風にやるなら、入力項目1項目1付箋紙をつかうといい。
例:ログイン画面で、「ログイン名」で1枚の付箋紙、「パスワード」でもう一枚の付箋紙の感じ
2.その項目を、グループごとにまとめる。
(2-1)項目を●●のXXという形でわざと表現する
→ログイン名=ユーザーのログイン名、パスワード=ユーザーのパスワード
受注日=受注した日
(2-2)そしたら、●●がグループ、上記の例だと、ユーザーや受注でグループを作る
DBに保存しないもの:操作(~ボタン、並び替え順など)は、ひとまとめのグループに
(2-3)グループに表題をつける
付箋紙にグループ名を書く場合、色を変えたほうがいい
3.グループの表題1レコードに対して、各項目は1個かどうか確認する
1個で無かったら、(たとえ1項目でも)別グループにする
→すでに出来ているグループに所属するのでなければ・・
ユーザー1人に対し、ログイン名は1つであれば、ログイン名はユーザーグループ
ログイン日は、複数考えられるので、別グループに分ける
→この操作が終わると、第一正規形が完成する
4.各グループごとの関係をいれる
グループA,Bとあったとき、A1件に対して、Bが何件もあったら1対多
逆は多対1、両方有り得たら多対多。これをいれる
5.IDをつける
各グループで、グループ名+IDのIDをつける
→1件に1つのもので、IDになりえるものがあったら、わざわざIDを
ふらなくてもよい。
例:ユーザーテーブルのログイン名
(振っても良い:その場合IDはユーザーIDとなる)
6.外部キーを入れる
4の操作で、1対多の場合、多のグループに1のグループのIDを追加する
7.各グループをみて、
この項目がきたときは、この項目がからなずきている!というのが無いかさがす
例:都道府県と地域(関東、関西など)
→ユーザーからみると、どちらも1対1だが・・
もしくは、ロジック的にこの項目のこの値が決まると、他の項目の値が
推測できるものを探す。
それは、別グループにわけ、IDを振って、IDだけを、もとのグループに入れる
→この操作が終わると、第三正規形が完成する
8.ER図にまとめる
エンティティ=グループ(エンティティ名=グループ名)
アトリビュート=項目(付箋紙1枚1枚)
関係:4でつけた
→ER図に書ける
なお、テーブルをつくるときは
エンティティ=テーブル(エンティティ名=テーブル名)
アトリビュート(属性)=テーブルのカラム(各項目)
関係:6で外部キーをつけた
主キー:5で割り振った
となる。
9.シナリオに沿って動かしたとき、テーブルのデータが生成、参照、変更、削除
されるか、矛盾ないか確認
ここでは第二正規形の議論は起こらない(複合キーがないので)
その理由は別のときに・・・