令和6年午後I問1設問2(1)図4正規化違反?

ぶどうさん  
DB ブロンズマイスター
(No.1)
企業は、法人受講生に対して一つ以上の研修カリキュラムを受講させる。研修カリキュラムへの法人受講生の割当てでは、あらかじめ複数の法人受講生を束ねたグループを作成し、グループ単位で割当てを行う。…
『い』グループ別法人受講生{企業#,アカウント#,グループ#}
『う』グループ別研修カリキュラム{企業#,グループ#,研修カリキュラム#},受講可能開始年月日,…
『え』研修カリキュラム受講{企業#,アカウント#,研修カリキュラム#},研修カリキュラム受講開始日時,…
質問①「(模範解答では)法人受講生は複数のグループに参加できる。その根拠はどこに記載されているのかしら?」
質問②「(模範解答では)法人受講生は自由に研修カリキュラムを受講できる。グループの制約が消えているが、その根拠がどこかに記載されているのかしら?
2025.09.15 22:44
aptさん 
(No.2)
①は、参考書の解説では
1つのグループにしか参加できないと仮定すると、完成済みの法人受講生にグループへの外部キーがあるはずですが、それがないので多対多と考えられる
という感じになっていました。背理法みたいですね…

②は、所属グループが変わっても情報を保持したいのかな?という感じで解釈しています。(ご質問の意図と異なっていたらすみません。)
2025.09.15 23:49
ぶどうさん  
DB ブロンズマイスター
(No.3)
>①は、参考書の解説では…背理法みたいですね…。

 なるほど。
 例えば、
『い』グループ別法人受講生
{企業#,アカウント#,グループ#}
企業A,ぶどう,新入社員
『う』グループ別研修カリキュラム
{企業#,グループ#,研修カリキュラム#},受講可能開始年月日,…
企業A,新入社員,マナー研修,2025/04/01,…
『え』研修カリキュラム受講
{企業#,アカウント#,研修カリキュラム#},研修カリキュラム受講開始日時,…
企業A,ぶどう,マナー研修,2025/04/01,…

> ②は、所属グループが変わっても情報を保持したいのかな?…。

『い』グループ別法人受講生
{企業#,アカウント#,グループ#}
企業A,ぶどう,新入社員
企業A,ぶどう,リーダー
『う』グループ別研修カリキュラム
{企業#,グループ#,研修カリキュラム#},受講可能開始年月日,…
企業A,新入社員,マナー研修,2025/04/01,…
企業A,リーダー,マナー研修,2025/05/01,…
『え』研修カリキュラム受講
{企業#,アカウント#,研修カリキュラム#},研修カリキュラム受講開始日時,…
企業A,ぶどう,マナー研修,2025/05/10,…

 つまり、法人受講生は、自分が最後に受講した研修カリキュラムで、受講開始日時と受講完了日時を確認できる、という事になるのかしら。もし下記のように出題されていたら、所属グループごとの情報を保持したいのかな?と、属性項目を根拠に判断する流れになったのかしら?
『え』(企業#*下線あり,空欄f,グループ研修カリキュラム受講開始日時,グループ研修カリキュラム受講完了日時)
2025.09.18 14:56
aptさん 
(No.4)
もしグループに関する制約があると、グループから抜けた場合に参照制約でひっかかって、旧グループ時に受講していた情報が保持できなくなるイメージでした。(ぶどうさんのNo.1の「グループの制約が消えているが」の制約と認識が異なっていたらすみません。)


ちなみにですが、もし一番最後にご提示されているような関係スキーマだった場合、(そこ以外は同一の問題文だと仮定して)所属グループごとの情報というのは表現可能なのでしょうか?

すでに法人受講生と研修カリキュラムから単品で「え」にリレーションシップが引かれているため、表現する方法が私には思いつきませんでした。
(私のイメージでは、「い」とか「う」から「え」にリレーションシップを引くイメージで、それだと冗長になるため)

なので、これも①と同様に、すでに完成している部分から推理して判断するものなのかもと思いました。

DB未受験で勉強中の身のため、質問返しになり申し訳ございません。
2025.09.18 16:27
ぶどうさん  
DB ブロンズマイスター
(No.5)
> もしグループに関する制約があると、…。
 出題文の次の箇所がグループに関する制約です。
研修カリキュラムへの法人受講生の割当てでは、…グループ単位で割当てを行う。…
> ちなみにですが、…表現可能なのでしょうか?
 aptさんのご指摘のとおり冗長を許容しないと表現できません。研修カリキュラムへの法人受講生の割当てでは、法人受講生単位(個人単位)で割当てを行うべく線が引いてあるからです。
> これも①と同様に、すでに完成している部分から推理して判断するものなのかもと思いました。
 ヒントから推理云々以前に、試験問題の中で矛盾が生じているので、試験不成立じゃないのかしら?これが質問②の趣旨です。
 質問②「(模範解答では)法人受講生は自由に研修カリキュラムを受講できる。グループの制約が消えているが、その根拠がどこかに記載されているのかしら?
 aptさん、ありがとうございました。引き続き、募集しますので、どなたか説明できませんか?
2025.09.20 19:29
enさん 
(No.6)
「え」はあくまで個人単位の研修カリキュラム別の受講履歴なだけで

「い」と「う」の2つで、個人が所属するグループ、グループが受講可能な研修カリキュラムの情報はそろっており、それらをもとにグループの制約はかけられているような気がするのですが、そういう意味ではないのですかね。
2025.09.21 19:03
ぶどうさん  
DB ブロンズマイスター
(No.7)
 enさん、回答ありがとうございます。
> 「い」と「う」の2つで、個人が所属するグループ、グループが受講可能な研修カリキュラムの情報はそろっており、それらをもとにグループの制約はかけられているような気がするのですが、そういう意味ではないのですかね。

 制約は、「え」から「い」と「う」を直接参照しない限り、かからないんじゃないかしら?研修カリキュラムを参照する模範解答では、所属グループに割当てられていなくても自由に選べるので杜撰な設計に見えます。

 下記のように設計しない根拠があるのかしら?
『え』研修カリキュラム受講
{企業#,アカウント#,研修カリキュラム#,グループ},研修カリキュラム受講開始日時,…
企業A,ぶどう,マナー研修,新入社員,2025/04/01,…
企業A,ぶどう,マナー研修,リーダー,2025/05/10,…
 『え』が、「法人受講生は、自分が最後に受講した研修カリキュラムで、受講開始日時と受講完了日時を確認できる」というエンティティであった場合
『え』研修カリキュラム最終受講履歴
{企業#,アカウント#,研修カリキュラム#},受講時グループ#*破線あり,研修カリキュラム受講開始日時,…)
企業A,ぶどう,マナー研修,(受講時)リーダー,2025/05/10,…
2025.09.21 20:28
enさん 
(No.8)
>制約は、「え」から「い」と「う」を直接参照しない限り、かからないんじゃないかしら?

なるほど、おっしゃる通りですね。
ただ、実装レベルだと、たとえば「い」と「う」の情報をもとに、選択可能な研修カリキュラムを表示する。
表示された研修カリキュラムを受講後、「え」に受講履歴が追加される。
という制約は可能かなと思ったのですが、これはそもそも論点がずれちゃいますかね?


>下記のように設計しない根拠があるのかしら?
いったん下記状況について考えてみたく、ご意見うかがえますでしょうか。

たとえば、ぶどうさんが新入社員グループから抜けて新たにリーダーグループに参加した場合

「い」の
(企業A,ぶどう,新入社員)
のレコードは削除され
(企業A,ぶどう,リーダー)
のレコードが新たに追加されます。

そして仮に「う」において、マナー研修というのは新入社員グループのみが受講可能だった場合
(企業A,新入社員,マナー研修,2025/04/01,…)
という状況になります。
※リーダーはマナー研修は受講できないという仮定。

そうすると「え」から「い」を直接参照すると
ぶどうさんが新入社員の時代に受講していた下記レコード
(企業A,ぶどう,マナー研修,新入社員,2025/04/01,…)
は、ぶどうさんが新入社員グループを抜けると、参照先がなくなってしまい、そのままだと受講履歴が保存できなくなります。
※(企業A,ぶどう,新入社員)のレコードが削除されるため

そのため、個人ごとの受講履歴を保つために、研修カリキュラム受講にグループは入れていないというのが私の理解です。
いろいろ想像を飛躍させたので、誤字とか破綻しているところがあったらすみません…
2025.09.21 22:31
ぶどうさん  
DB ブロンズマイスター
(No.9)
>No8
設問4[K部長の指摘]グループ脱退したらレコードを削除…
 このように設問が追加され担当者が設計変更するのであれば、ご指摘のように忖度して解答するしかないかしらね。

 実務では削除しても問題ないから削除するのであって、削除して困るのであればそもそも削除しないでしょう。また、グループ脱退を管理するのであれば、時間軸を導入するんじゃないかしら。
2025.09.22 01:50
ぶどうさん  
DB ブロンズマイスター
(No.10)
> ただ、実装レベルだと、たとえば「い」と「う」の情報をもとに、選択可能な研修カリキュラムを表示する。
表示された研修カリキュラムを受講後、「え」に受講履歴が追加される。
という制約は可能かなと思ったのですが、これはそもそも論点がずれちゃいますかね?

 制約が可能な代替案を検討する場合、内容変更や削除に関してもアノマリーが生じないように配慮しましょう。そもそも実装レベルでそんな事をやらなくて済むように、データベースを勉強しているんじゃないのかしら。
 設問のように概念データモデルの全体図(土台)を隠して、実はスナップショットのエンティティと出題するのは、さすがに不適切だと思うんですけど、どうなんでしょう。
 引き続き、わかる人がいれば教えて下さい。
2025.09.23 18:54
enさん 
(No.11)
>そもそも実装レベルでそんな事をやらなくて済むように

設計段階で制約を考えることがNGということでしょうか?
そのようなルールが試験問題に対してもあてはまるのであれば、ぶどうさんのおっしゃる通り不適切な問題かもしれませんね。

私は「え」が個人単位の履歴管理のエンティティということに違和感は感じず
「い」と「う」があるのにも関わらず、研修カリキュラムへの法人受講生の割り当てをエンティティとして別に表す理由が分からなかったので、私の知識レベルだとぶどうさんの疑問点は解消できませんでした。

お時間を取らせてしまい、大変失礼いたしました。
2025.09.24 07:08

返信投稿用フォーム

スパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop