Shimatterシステムの 初期モデルの正規化 ボトムアップ分析の結果を受けて
ER図(これが正規化前の初期モデル)
主キーが正しいかチェック (エンティティ内) エンティティ内で主キーに矛盾がないかチェック エンティティ「反応」「つぶやき」で、講義は第1回から第15回まであるのに主キーは経過秒数しかない エンティティ「反応」「つぶやき」は、 いつの,誰の、どの科目の、何回目講義の、どの瞬間の 「反応」,「つぶやき」かを識別できないといけない エンティティ「反応」「つぶやき」に主キーを追加 いつの 「講義」の講義日(年が違えば別講義) 誰の? 「講義」の分析教員番号 どの科目の? 「講義」の講義科目名 何回目の講義の? 「講義」の講義順序番号 どの瞬間? 経過秒数
主キーが正しいかチェック (エンティティ間) エンティティ間で主キーに矛盾がないかチェック エンティティ「講義」では、分析教員番号 エンティティ「分析」では、分析教員名 これらは本来同じ情報なので、揃えるべき ここでは 分析教員番号 に揃える エンティティ「分析」の分析教員名を修正 分析教員番号 分析教員名は 非キー属性 に
主キーを修正した後のER図
正規化の第1ステップ 繰り返し項目を取り除け 「分析」の中の「分析メッセージ文字列」は10枚目のスライドに対するつぶやきの繰り返し
「分析」より「分析message」を分割 このスライドに対する何番目のメッセージか 「分析message連番」がないと一意に決まらない 注
「集約反応」にも同じような構造 「集約message文字列」が繰り返し項目 エンティティ「集約message」を別エンティティに
第1ルール適用後のER図
正規化の第2ステップ 複合キーの一部に関数従属する属性は 別のエンティティとせよ エンティティ「分析」の分析教員名 4つある主キーの中の 分析教員番号 がわかれば分析教員名はひとつに決まる。 分析教員名 は、分析教員番号に 関数従属 分析教員名 を別エンティティに この場合、分析教員番号から分析教員名を決めるためのエンティティがない エンティティ「教員」 を作るべき
正規化の第2ステップ 複合キーの一部に関数従属する属性は 別のエンティティとせよ(もう一回) 「分析」「分析message」の分析ファイル名 主キーの中の分析講義日,分析教員番号,分析科目名,分析順序番号より講義ファイル名は一意に決まる。 講義ファイル名 は、分析講義日,分析教員番号、分析科目名、分析順序番号に 関数従属 分析ファイル名を別エンティティに この場合、エンティティ「講義」が,主キーとして講義日,教員番号、科目名、順序番号をもち、かつ、非キー属性に講義ファイル名も持つ エンティティ「講義」をそのまま利用 エンティティ「分析」 「分析message」の属性名変更
第2ルール適用後のER図
正規化の第3ステップ 主キー以外の項目に依存する属性は 別のエンティティとせよ 適用できる部分無し
その他の正規化(導出項目) エンティティ「分析」の分析understand数は,スライドが表示されている間の反応の合計 他のエンティティのデータの合計だから残す エンティティ「分析message」の分析message文字列は,スライドが表示されている間のつぶやきの一覧 エンティティ「集約message」の集約message文字列を,スライドごとに並び替えたデータ 他のエンティティのデータの集計だから残す 文字列は長いので,ひとつにまとめるのもいい方法
集約messageと分析messageを まとめない場合
ひとつにまとめるなら, 少々工夫が必要 「集約message」は,講義開始後○秒経過した時の1秒間に書かれたメッセージの一覧 メッセージの括り方 の違いによる不整合 括り方を見なおしたほうが良い
各スライドに対応したつぶやきを エンティティに エンティティ「スライドつぶやき」を作成 端末ごとのつぶやき「つぶやき」とスライドごとの分析「分析」の双方を参照するエンティティ このようなエンティティは 交差エンティティ エンティティ「分析message」と「集約message」は削除
集約messageと分析messageを まとめて,見直す場合
トップダウンとボトムアップの比較 トップダウン ボトムアップ (messageを まとめたもの)
両方にあるエンティティの比較 (ボトムアップを基本にして統合する) 反応:ボトムアップのほうが詳しい 端末:ボトムアップのほうが詳しい 教員:トップダウンのほうが詳しい トップダウンでの「集計」とボトムアップでの「集約反応」 ボトムアップは「理解」「難解」の数でわかりやすいが,トップダウンの表現は簡潔 ボトムアップを採用し, 「理解」「難解」の数に変更
両方にあるエンティティの比較(続) トップダウンで「メッセージ」,ボトムアップで「つぶやき」 ともに各端末から書きこまれたつぶやき ボトムアップのほうが詳しい トップダウンでの「講義登録」とボトムアップでの「講義」 ボトムアップが詳しいが,トップダウンは各スライドを識別 ボトムアップで,エンティティ「講義」と「スライド」をつくる
残ったエンティティの比較 トップダウンの「学生」,「ユーザ登録」,「使用開始」 トップダウンの「サーバPC」 学生は,匿名にしたので,記録すべきでない ユーザ登録と使用開始は,ボトムアップで「端末」に統合したので削除 トップダウンの「サーバPC」 サーバが複数ある場合に必須 ボトムアップの画面の分析では,サーバが複数ある場合を見切れていなかった ボトムアップの「分析」「スライドつぶやき」 トップダウンで考えなかった授業後の分析のためのエンティティ
エンティティの比較後 (関係を追加) 関係を追加すると,多くから参照されている「講義」の主キーが多い
最終モデル 「講義」 エンティティがもっとも多く参照されていることがわかる 「スライドつぶやき」 がもっとも多く参照していることもわかる