1

4つのクラスがあります:

StudentBaseCourseBaseおよび StudentDataMapperCourseDataMapper

Studentオブジェクトは、Courseオブジェクトと関係を持つことができます。1人の学生が多くのコースを持つことができます。多くの学生が1つのコースを訪れることができます。

ERダイアグラムでは、Studentエンティティには「コース」と呼ばれる属性がありますが、コースは彼の学生について何も知りません。コースには、見返りに「学生」と呼ばれる属性はありません。

これらのクラスのどれが関係の作成を実行する必要がありますか?

編集:これはシステムレイヤーです!ビジネスロジック層では、開発者はStudentBaseとCourseBaseをサブクラス化して、StudentクラスとCourseクラスを作成します。これらのクラスを作成する開発者は、自分のビジネスロジックコードを除いて、そのコードを表示しません。

4

3 に答える 3

5

ない。

まず、ERDを変更する必要があります。あなたが説明したのは多対多の関係です(コースには多くの学生がいて、学生には多くのコースがあります)。したがって、学生はコース属性を持つべきではありませんが、代わりに、学生コースエンティティが存在する必要があります。

次に、要求していること(関係を維持すること)を実行するStudentCourseDataMapperクラスが必要であり、StudentDataMapperとCourseDataMapperの両方がそれを認識して使用する必要があります。

于 2010-01-05T15:27:45.470 に答える
0

私があなたの質問を理解しているかどうかは100%わかりません。

たとえば、NHibernate(オブジェクトリレーショナルマッパー)は、ビジネスコードにできるだけ影響を与えないようにします。

したがって、ORMはあなたの関係を管理するべきではありません。保存するときはそのままにして、データベースからロードするときは元の状態に再作成する必要があります。

コースが学生について何も知らない場合、それは関係を管理することができません。

したがって、状況の説明に基づいて、学生は関係を管理できる最も自然な場所です。

于 2010-01-04T18:17:23.553 に答える
0

どちらが関係を管理する必要があるかに関する質問に答えるには、答えは学生、コース、またはその両方である可能性があります。

これらのクラスが使用されていることをどのように見ていますか?それらが常にコースの観点から使用される場合は、関係を管理する学生プロパティを追加する必要があります。逆に、学生の観点から常に使用されている場合は、明らかにそれが存在します。

ただし、話しているデータの種類を考えると、両方が最も可能性の高い答えである可能性がある場合は、両方の場所に属します。

于 2010-01-05T15:09:23.230 に答える