Shimatterシステムの 初期モデルの正規化

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