世紀末データベース

これ3回に渡る連続課題でデータモデリングの点数の100%を占めることになるんだが大丈夫なのか…?


1.対象の概要説明
 世紀末スポーツアクションゲーム「北斗の拳」のデータベース。

2.主要なエンティティと関連の発見

  • キャラクター
    • 10人。
  • 必殺技
    • 1人のキャラクターが複数の必殺技を持つ。
  • 究極奥義
    • 1人のキャラクターが複数の究極奥義を持つ。
  • 共通システム
    • 投げやブーストなどの共通コマンドによる行動。マミヤに投げがない、ハート様はブーストが使えないなど、キャラクターとの間に利用可能かどうかの関係がある。
  • ステージ
    • 8ステージ。キャラクターごとにステージが決まっているが、一部複数のキャラが同じステージを共有している。

3.ER図作成

4.スキーマ定義

  • キャラクター(name, style, voice, stage)
  • 必殺技(character, command, (condition, aura)*, name)
  • 究極奥義(character, command, condition, name, aura)
  • 共通システム(command, name)
    • 共通システム利用可否(character, system, available)
  • ステージ(name, bgm)

5.正規化
必殺技(character, command, (condition, aura)*, name)

1NF
必殺技(character, command, condition, name, aura)

部分従属character, command→nameが存在する
2NF
必殺技オーラ消費量(character, command, condition, aura)
必殺技名(character, command, name)

6.考察・疑問
 conditionには地上・空中・ガード硬直中が入る。究極奥義は必ずこれらのうち1つなので問題ないが、必殺技では複数の状況で使えるものがある。よって多値属性とした。また、使う状況によって効果やオーラゲージの消費量が変わることがある(地上ニュートラル状態で出すと当身・地上ガード硬直中に出すとガードキャンセル)が、技名は変わらない(conditionに依存しない)ので部分従属を発見し、正規化した。

7.感想
 正規化で予想以上に複雑なことになって驚いた。よく知っている題材にしてよかったと思う。

8.付録