R2 pm2 問3 設問1 (3) CHECK制約

めがねさん  
(No.1)
会員区分が

個人会員のときの年代の制約として、公式回答は「年代 IS NOT NULL」に対して「年代 BETWEEN 1 AND 7」

法人会員ときの制約の穴埋めで、公式回答は「年代 IS NULL」に対して「年代 IS NULL AND 担当社員ID IS NOT NULL」

と、過去問を解く際に回答していましたが、私がした回答が、回答として不適切である理由を、解釈できずに困っています(汗)

何か、根本的なCHECK制約を定義する上での知識漏れからくるのか、他に別の問題本文からくる制限なのか、皆様のご意見を伺いたく、投稿させていただきました。

ご協力の程、よろしくお願いいたします。
2022.08.21 17:28
GinSanaさん 
DB ゴールドマイスター
(No.2)
>個人会員のときの年代の制約として、公式回答は「年代 IS NOT NULL」に対して「年代 BETWEEN 1 AND 7」
まあ動作的には問題はないと思います。性別はINで聞いといて年代はIS NOT NULLかよ?とも思いましたが、元から検査制約にINで入ってたからか、と気がつきました。

こういうテーブル再構築の問題は
平成26年PM1問3
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
みたいなのが参考になる(・・・というか、これしかない?21年以前はわからない)のですが、
ノリがどうもP24の選択肢から引っ張ってきたからそんなに複数解答としてあげてなかったんじゃないですか。

>法人会員ときの制約の穴埋めで、公式回答は「年代 IS NULL」に対して「年代 IS NULL AND 担当社員ID IS NOT NULL」

表3or4の参照制約で、担当社員IDの参照先から消えたらSET NULLとなるのに、NULL規制を入れたら矛盾しますよね。
2022.08.21 18:59
ヤムーさん 
(No.3)
年代は年代テーブルへの参照制約があるので検査制約で値のチェックは不要。
年代テーブルでチェックしてるはずです。
見直し前の個人会員テーブルの制約定義にも該当の検査制約はありません。
よって見直し後の会員テーブルでは年代はNULLかどうかのチェックになります。
BETWEEN述語では不正解です。
2022.08.21 19:12
GinSanaさん 
DB ゴールドマイスター
(No.4)
年代は年代テーブルへの参照制約があったのを見逃してました。
それはたしかにダメですね
2022.08.21 19:14
めがねさん  
(No.5)
GinSanaさん

>>法人会員ときの制約の穴埋めで、公式回答は「年代 IS NULL」に対して「年代 IS NULL AND 担当社員ID IS NOT NULL」
>表3or4の参照制約で、担当社員IDの参照先から消えたらSET NULLとなるのに、NULL規制を入れたら矛盾しますよね。

ありがとうございます!理解できました!私が問題を読めていませんでした(恥)

ヤムーさん

> 年代は年代テーブルへの参照制約があるので検査制約で値のチェックは不要。年代テーブルでチェックしてるはずです。

ありがとうございます!これも単発の問にのみ意識がいっていて、前問で問われた事を前提に、本問に取り組めていない事が敗因だと思いました(汗)


あたり前の事ですが、午後は、単発知識問題ではないので、視野を広くもって問題文を読むよう訓練しないといけないなと思いました(汗)

ありがとうございました!!!
2022.08.21 22:52

返信投稿用フォーム

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

その他のスレッド


Pagetop