問題[1]スポーツジムを対象とした GeneXus アプリケーションに関する問題です:
トレーナーが担当する種目が 1つだけで、1つの種目を担当するトレーナーが複数いる場合、適切と思われるトランザクション設計を選択してください。
※:トレーナー : Trainer 、種目 : Discipline
解答は??
【解答】1.2
【解説】
それぞれのトランザクション定義を元にテーブル(データモデル)に展開して考えてみます。
1.1の場合
1.2の場合
1.3の場合
1.2.はDisciplineが独立したトランザクションで且つ主キーであるDisciplineIdがTrainerトランザクション上に存在している(外部キー項目)ため、TrainerとDisciplineの関係はn対1になり、要件を満たします。
1.1と1.3はテーブル構造が似ていますが、Disciplineテーブルの主キーとしてTrainerIdが含まれているか否かが大きな違いとなります。
1.1の場合はTrainerIdが外部キーで且つ主キーに含まれますので、Trainerのレコードが先に存在しないとDisciplineのレコードは存在する事ができません(一般的にはヘッダー・明細の伝票モデル)。
1.3の場合、TrainerIdは外部キーのみとなりますので、Trainerのレコードが存在していなくてもDisciplineのレコードが存在する事は可能です(TrainerId外部キーのNULL許容をYESに設定した場合)。
0 件のコメント:
コメントを投稿