H30 午後1 問3 設問1(1)

にゃんころさん  
(No.1)
■問題要約
複数の施設を運営しており、入場者に入場券を発券している。
以下の「精算」テーブルにUNIQUE制約をつけなさい。
つける列がなければ「なし」と回答すること。

精算(PK利用年月日, PK施設ID, PK券番号, 精算時刻, 利用額合計, FK会員ID, ポイント消費数)
※PKから始まる3列は複合主キー、FKから始まる列は外部キー
※券番号は日ごと・施設ごとに1から始まる連番
※施設内で発生した利用額は、退館時に一括精算
※同じ会員が精算後に再入場することも可能(新たな券番号が発行される)

↓本サイトの過去問PDFです。18ページ~
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_1/2018h30h_db_pm1_qs.pdf
---------------------------

正解は「なし」です。
質問が2つあります。

①UNIQUE制約に主キーすべてを含めてはいけないのでしょうか。
主キー制約が設定されているテーブルなのですが
この場合は主キー制約で事足りているので不要ということでしょうか。

②以下はユニークな組み合わせにならないのでしょうか。
(利用年月日、精算時刻、会員ID)
いつ&だれが、の時点で重複は発生しないかと思っています。
複数レコード発生するのは、同じ人が異なる券番号を複数枚持っていたり
同時に異なる施設で精算をしたりという有り得ない状況になるかと思います。
唯一思いつくのは家族連れで子供の券番号を精算した場合ですが
この場合、登録されるのは精算者の会員IDなのか、券番号に紐づく子供の会員IDなのかは記載がありません。
2021.09.30 22:38
よぷてぬさん 
(No.2)
>①UNIQUE制約に主キーすべてを含めてはいけないのでしょうか。
主キーがUNIQUE制約とNOT NULL制約の役目をしているので
改めてUNIQUE制約をつける必要はありません。
従って不要となります。

>②以下はユニークな組み合わせにならないのでしょうか。
>(利用年月日、精算時刻、会員ID)
結論としてはユニークにはなりません。

冒頭に「A社では、リピータを増やすために、全施設で利用できる会員カードを希望する客に発行し~」と書かれているので会員でない客が利用する可能性がありその場合は会員IDはNULLになります。
残った利用年月日、精算時刻に着目すると同日、同時刻で精算する可能性があるためユニークになりません。

>唯一思いつくのは家族連れで子供の券番号を精算した場合ですが
>この場合、登録されるのは精算者の会員IDなのか、券番号に紐づく子供の会員IDなのかは記載がありません。
問題とは無関係なので予測になりますが
券テーブルで券番号と会員IDがあるので
券番号と会員IDは紐づけされていると見ることが出来ます。
この結果、子供の会員IDがセットされることになります。
2021.10.01 22:26
にゃんころさん  
(No.3)
入館の際に会員カードを提示、入場券と鍵を受け取るフローだと思い込んでましたが
そんな記載はまったくないですね。。。

会員カード登録した方がポイントたまる(&運営側はデータを蓄積して分析に使える)
というイメージですね。
会員IDにNULLが入ってくるとは思っていませんでした、たしかに精算テーブルの主キーにもなってないですね。

ありがとうございました。
2021.10.01 22:38

返信投稿用フォーム

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

その他のスレッド


Pagetop