H31秋問6DB設問3(2)

chickenさん  
(No.1)
https://www.ap-siken.com/kakomon/01_aki/pm06.html

H31秋問6DB設問3(2)
「主キーに睡眠開始日時を加える」では不正解または部分点になってしまうのでしょうか。
公式解答は「主キーを従業員番号と睡眠開始日時に変更する」になっており、もちろんこれが一番良いということは明らかですが、主キーに睡眠開始日時を加えて主キーを3つにしてもエラーは起きないので正解では?と思ってしまいます。
ちなみに、資格の大原とiTECは「主キーに睡眠開始日時を加える」、TACは公式解答と同じで「主キーを従業員番号と睡眠開始日時に変更する」でした。
不正解または部分点になってしまうのか、それとも正解になるのか、どなたか分かる方がいらっしゃればご解答よろしくお願いします。
2020.03.08 19:07
助け人さん 
AP ゴールドマイスター
(No.2)
「主キー」、「候補キー」は、行を一意に識別する、必要最低限の列の組合せです。これに対して、行を一意に識別するなら冗長な列も含んでよい列の組み合わせは「スーパーキー」といいます。

この問題では、「従業員番号、測定日、睡眠開始日時」や「従業員番号、睡眠開始日時、睡眠終了日時」などはスーパーキーです。

スーパーキーのWikiに下記の通りあります。

----------------------------------------
データベース分野におけるスーパーキーは、関係(表)の組(タプル、行)を一意に特定できる属性(列)、または属性の集合のことをいう。スーパーキーは、対象となる関係の全ての属性が関数従属している属性の集合と定義することもできる。

候補キー・主キーとの違いは、一意に識別できるすべての組み合わせを表している点にある。つまり、候補キーに余計な属性を付け加えて冗長にしたものは候補キーではないが、依然としてスーパーキーではあるという差がある。スーパーキーが既約である場合、すなわち冗長性が無い場合、そのスーパーキーは候補キーでもある。 

例えば、市町村(市町村ID, 市町村名, 都道府県名)という関係の場合、市町村ID、{市町村ID,市町村名}、{市町村ID, 都道府県名}、{市町村ID, 市町村名, 都道府県名}、{市町村名, 都道府県名} がスーパーキーである。 
----------------------------------------

応用情報で、スーパーキーについては問われないでしょうが、主キーまたは候補キーが問われたら、必要最低限の列の組合せで解答しないとまずそうです。
2020.03.08 20:45
助け人さん 
AP ゴールドマイスター
(No.3)
追記します。

過去のスレッドに、スーパーキーのことに言及しているものがありました。

主キーの選択[0382]
https://www.ap-siken.com/bbs/0382.html
2020.03.08 20:51
chickenさん  
(No.4)
候補キーに余計な属性を付け加えて冗長にしたもののことをスーパーキーと呼ぶことを初めて知りました。理解できました。
これからの問題は必要最小限になっているかどうかもしっかりと確認するようにします。
ご回答ありがとうございました。
2020.03.09 01:52
助け人さん 
AP ゴールドマイスター
(No.5)
誤解のないように補足します。

主キーまたは候補キーも、スーパーキーの一つです。
(No.2)で、
・スーパーキーが既約である場合、すなわち冗長性が無い場合、そのスーパーキーは候補キーでもある
・市町村(市町村ID, 市町村名, 都道府県名)という関係の例では、市町村IDもスーパーキーの一つ
2020.03.09 06:40
chickenさん  
(No.6)
返信遅れて申し訳ございません。
ご丁寧にありがとうございました。理解できました。
2020.03.18 02:26

返信投稿用フォーム

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

その他のスレッド


Pagetop