情報応用演習Ⅰ(2024)

課題08(2/4)

注意
  • 以下の設問はリアクションペーパーに「課題08」という節を設けて, 課題名の見出しを付けて 回答すること.
    • これらはすべて課題点として成績に算入される課題である

【課題8-02】データモデリング2

あるウェブアプリで,「書籍」と「著者」というデータを扱う必要があったと仮定する. ここで「著者」とは,その本の作者・著者のほかに訳者や監修といった役割も含むエンティティである. これらは 「書籍」多─多「著者」 の多重度を持つ関係であるため,これをデータベース/EF CF で 扱うためには_に示すような,いわゆる対照表となるエンティティ「書籍著者」が必要となる. なおここでは分かりやすさのためデータアノテーションなどは省略している.

このアプリのER図

このためにこのウェブアプリには_に示すクラスが定義されている.

モデルクラス
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 「書籍」のためのモデルクラス
public class Book 
{
    public int Id { get; set; } // ID
    
    public string Title { get; set; } // 書名
    
    // ..以下省略..
}

// 「著者」のためのモデルクラス
public class Author
{
    public int Id { get; set; } // ID
    
    public string Name { get; set; } // 氏名
    
    public AuthorRoleType AuthorRole { get; set; } // 役割の種別
                                                   // (どこかで定義されている列挙型)
    
    // ..以下省略..
}

//「書籍著者」
/***********************************************/
/*                                             */
/*                                             */
/*                   空欄1                     */
/*                                             */
/*           クラス名: BookAuthor              */
/*                                             */
/* (データアノテーションやナビゲーション       */
/* プロパティを含むクラスの定義全体を回答せよ) */
/*                                             */
/*                                             */
/***********************************************/

またこのウェブアプリのデータコンテキストクラスは_のようになっている.

データコンテキストクラス
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class SomeAppContext : DbContext
{
    public SomeAppContext(DbContextOptions<SomeAppContext> opt)
        : base(opt) 
    { }

    /****************************************/
    /* 空欄2: Book のためのプロパティ       */
    /* (プロパティ名は適切なものを選ぶこと) */
    /****************************************/

    /****************************************/
    /* 空欄3: Author のためのプロパティ     */
    /* (プロパティ名は適切なものを選ぶこと) */
    /****************************************/

    /****************************************/
    /* 空欄4: BookAuthorのためのプロパティ  */
    /* (プロパティ名は適切なものを選ぶこと) */
    /****************************************/

}

空欄1~4に必要なコードを回答せよ.

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

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