データベーススペシャリスト掲示板

掲示板検索:

[0252]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制約に主キーすべてを含めてはいけないのでしょうか。
主キー制約が設定されているテーブルなのですが
この場合は主キー制約で事足りているので不要ということでしょうか。

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

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

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

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

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

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

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

投稿削除用のパスワード(20文字以内)

プレビュー
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2016-2021 データベーススペシャリストドットコム All Rights Reserved.

Pagetop