情報応用演習Ⅰ(2024)

【T7b】複数のモデルクラスの連携(3/9)

プロジェクトタイプ(注意: 本文参照)
プロジェクト名T7b
ソリューション名PIT7
注意
  • 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
    • 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
    • プロジェクトの作成作業については準備作業を参照せよ.

7b-3. 多重度の分析

さて今回は「学生」に加えて新たに「学科」という,モデルクラス─リレーショナルモデルの用語でいえば エンティティ を扱うことになる. 本コースの主眼は ASP.NET Core を学ぶことであってリレーショナルモデルを理解することではない(それは前提科目で学習済みであるはずである)が,ウェブアプリを製作するにあたっては そのアプリが扱うべきデータの種類とその形,それらのあいだの関係(≒多重度)を分析すること は非常に重要であるため,ここで少しだけその方法についても触れておこう.

では一般的な大学の「学生」とその学生が在籍する「学科」とのあいだの多重度はどう考えるのが適切だろうか. つまり_のⒶとⒷには,それぞれ「1」が入るだろうか,それとも「多」が入るだろうか?

「学生」と「学科」のあいだの多重度?

こういった二つのエンティティのあいだの一対多,多対多といった 多重度 の分析は自然にできる者もいれば, 苦手とする者もいるだろう.また,今回のような単純なケースでは簡単に分析できても,より複雑なケースでは 悩むこともあるかもしれない.このような場合には次の質問をしてみよう.

「一方のエンティティを具体的に一つ定めたときに,もう一方のエンティティはいくつ定まるか?」

今回の「学生」と「学科」であれば,具体的な「学生」山田太郎さんを想像してみよう. 山田太郎さんが在籍している「学科」はいくつになりうるだろうか? 当然のことながらこれは一つであるはずである.山田太郎さんが医療情報学科と医療栄養学科に同時に在籍している,という状態はあり得ない. また,大学に在籍しながらいずれの学科にも所属しない,といったこともあり得ない.したがって「学生」から見ると 「学科」というエンティティはただ一つに定まる_Ⓑは「1」とするのが適当である.より厳密にいえば「学生」に対する「学科」の多重度は下限1上限1(1..1)ということである.

逆も考えてみよう.具体的な「学科」医療情報学科を想像してみよう. 医療情報学科に在籍している「学生」は何人ありうるだろうか? これも当然のことながら複数人存在しているはずである.学生ごとにその学生一人のため専属の「学科」が存在している,という状態はあり得ない. 下限に関してはむつかしい部分もあるが,学生が在籍していない学科というのは(新設を除いて)設置を許されないので少なくとも一人以上は在籍しているはずである. したがって,「学科」から見ると 「学生」というエンティティは複数定まる_Ⓐは「多」とするのが適当である.より厳密にいえば「学生」に対する「学科」の多重度は下限1,上限なし(1..*)ということである1

以上を踏まえると,「学生」多─1「学科」という関係であると考えるのが適切である.

他の例も見てみよう.「俳優」とそれが出演する「映画」とのあいだの多重度はどう考えるのが適切だろうか(_).

「俳優」と「映画」のあいだの多重度?

これも同じように分析してみよう.具体的な「俳優」神木隆之介さんを想像してみよう. 神木隆之介さんが出演している「映画」はいくつになりうるだろうか? これは複数定まるはずである.ただ俳優であっても映画には出演したことがない俳優も存在するであろうから,その下限はゼロと考えるべきだろう. したがって「俳優」から見ると 「映画」というエンティティは複数定まる_Ⓑは「多」とするのが適当である.より厳密にいえば「俳優」に対する「映画」の多重度は下限0上限なし(0..*)ということである.

また逆に具体的な「映画」,「ジョジョの奇妙な冒険 ダイヤモンドは砕けない 第一章(2017年8月4日、東宝 / ワーナー・ブラザース)」を想像してみよう. この映画に出演している「俳優」は何人ありうるだろうか? . 通常,一つの映画には複数の俳優が出演しているはずである(リンク先を見ると少なくとも9人の俳優が確認できる).始終ただ一人の俳優しか映らない映画, とか人間が出演しないドキュメンタリー映画というものもなくはないので,下限に関してはゼロと考えるべきだろう. したがって,「映画」から見ると 「俳優」というエンティティは複数定まる_Ⓐは「多」とするのが適当である.より厳密にいえば「映画」に対する「俳優」の多重度は下限0上限なし(0..*)ということである.

以上を踏まえると,「俳優」多─多「映画」という関係であると考えるのが適切である.

エンティティ間の多重度は上述のようにすると分析がしやすいため,覚えておくとよいだろう. 多対多の関係を正しくアプリケーションで扱うにはコツがいるが,今回は「学科」と「学生」との一対多の関係を扱うことにする. 以降ではこれをどのようにして実装すればよいかを説明する.


  1. 大学には学科や学部ごとに定員が定められているため,上限に関しては具体的に定まりうるがここでは煩雑になるので考慮しないことにする. ↩︎

Last updated on 2024-06-10
Published on 2024-06-10

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.