(火)概念データモデル第9回MMD杯、楽しませて頂きました。運営の皆様、お疲れ様でした。素敵な動画を作って下さった参加者の皆様、ありがとうございました。第9回では、MMD杯作品支援システムAngel-CUPのミラーサイトとして、少しだけお手伝いさせていた来ましたが、次回、第10回に向けて、もう少し深くお手伝いさせて頂くことになりました。手はじめに、データベースを再構築を提案します。Angel-CUPは、第9回MMD杯に向けて開発される段階で、1つのデータベースで複数のイベントに対応するなどの追加要件に対応した様で、システムの設計、特にデータベース設計に無理や無駄がある様に感じました。(小夜さんスミマセン)もちろん、ちゃんと第9回MMD杯を支える役割を果たしているので、間違ってはいないのですが、今後の拡張を考慮すると、基本から見直しをしておきたいです。Angel-CUPは、これから育つのですから。今回は、現在のAngel-CUPシステムのデータベースとPHPスクリプト他の実装をベースに、システムの範囲外まで対象を広げ、概念データモデルを作成します。賞の記録などの新たな要件も考慮します。MMD杯を例に、概念データモデルを検討し、E-R図にしていきましょう。主催者がイベントを企画し、レギュレーションを公表します。ここで主催者は、一人あるいは複数のニコニコ動画会員で構成されているはずですが、ここではひとまとめに主催者として扱います。主催者(主催者名、主催者HP、運営メンバー、...)イベント(イベントコード、イベント名、各種レギュレーション、...)2つのエンティティ、「主催者」(例:MMD杯運営委員会)と「イベント」(例:第9回MMD杯)が識別でき、主催者がイベントを企画・開催するという動作から、「主催者→イベント」のリレーションが認識できます。このイベントに参加するニコニコ動画会員は、動画を投稿します。ここで、動画を投稿するニコニコ動画会員を投稿者と呼ぶことにします。リレーションが認識できます。イベントの主催者は、参加動画を管理するためにイベントのマイリストを作成し、イベントに参加した動画をそのマイリストに登録します。イベントマイリスト(マイリストID、マイリスト名、...)新たなエンティティ、「イベントマイリスト」が識別でき、イベント用にマイリストを作る動作から、「イベント→イベントマイリスト」、参加動画をマイリストに登録する動作から、「イベントマイリスト→動画」のリレーションが認識できます。イベントの参加動画が公開されると、ニコニコ動画会員は動画を視聴し、お気に入りの動画をマイリストに登録します。ここで、動画を視聴するニコニコ動画会員を視聴者と呼ぶことにします。視聴者(ニコニコ動画会員ID、ニックネーム、...)視聴者マイリスト(マイリストID、マイリスト名、...)2つのエンティティ、「視聴者」と「視聴者マイリスト」が識別でき、参加動画をマイリストに登録する動作から、「視聴者マイリスト→動画」のリレーションが認識できます。マイリスト」のリレーションが認識できます。(これは、概念データモデルの範囲ではないかもしれない)イベントの投票機関が終了したら、参加動画のマイリスト数や、動画の内容を元に評価し、授賞します。賞(イベントコード、賞、受賞動画ID、...)新たなエンティティ、「賞」が識別でき、動画に対して賞を授ける動作から、「賞→動画」のリレーションが認識できます。賞は、イベント毎に設定しておくものであるため、「イベント→賞」のリレーションが認識できます。この他、以下のリレーションも認識できます。・第9回MMD杯参加動画は、MMDFes2012など、他のイベントにもエントリーすることができる。従って「動画→イベントマイリスト」。・1つの動画が、同じイベントの複数の賞を受賞することがある。この結果、多対多のリレーションが出来るため、連関エンティティが必要になりますが、ここでは省略しておきます。以上をまとめて、概念データモデルのE-R図が出来ました。参考として、第9回MMD杯で使ったAngel-CUPの実装と比較してみます。・オレンジ色の角丸四角の領域で示される部分、主催者・イベント・イベントマイリストにまたがる部分は、eventcode/setting.phpで実装されています。(ここでeventcodeは、"mmdcup9"など、実施のイベントの識別子)・ピンク色の角丸四角の領域で示される部分、イベントマイリスト・動画・投稿者にまたがる部分は、videolistテーブルで実装されています。[補足]※この概念データモデルでは、以下の点については、考慮していません。※説明文の記述として、エンティティとリレーションシップを、ほぼ同時に定義していますが、実際の手順では、エンティティの識別とリレーションシップの認識を繰り返して完成させます。以下の点は省略し、論理データモデルで検討します。次回、「論理データモデル」に続く、予定。[2012/10/1:訂正]論理データモデル検討中に、概念データモデルの間違いに気づきました。「動画」は、複数の「視聴者マイリスト」に登録されます。E-R図差し替え済み。2)「イベントマイリスト」および「視聴者マイリスト」と「動画」のリレーションが、多:多となっているのは、「マイリスト明細」と呼べるエンティティの検討が抜けているためです。「動画」を「マイリスト」に登録すると、「マイリスト明細」が作られ、2つのリレーション「マイリスト→マイリスト明細」「動画→マイリスト明細」が同時に発生します。エンティティ「マイリスト明細」は、論理データモデル検討時に「マイリスト」を正規化すると、存在が明らかになります。物理データモデル(2012.10.15)論理データモデル(2012.10.12)概念データモデル(2012.09.18)テーマミス対策の詳細(2012.08.16)課題整理(2012.08.14)コメントコメントを書くコメントは記事投稿者が公開するまで表示されません。[システム屋って何だっけ]第10回MMD杯の準備が進んでいるようです。概念データモデルの段階でモタモタしている場合ではありません。今回は、論理データモデルをつくりましょう。祝!ランクインバックナンバー2012年10月2012年9月2012年8月2009年2月2009年1月2008年9月2008年7月2008年5月2008年4月2008年2月RSSを表示する@niftyが提供する無料ブログはココログ!プロフィールウェブページ儲かる?。