誰かの決断で誰かの運命も決まるみたいな感じが関数従属

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった過去問

関係R(A,B,C)の候補キーが{A,B}と{A,C}であり,{A,B}→C及びC→Bの関数従属性があるとき,関係Rはどこまでの正規形の条件を満足しているか。

  1. 第1正規形
  2. 第2正規形
  3. 第3正規形
  4. ボイス・コッド正規形

出典 : データベーススペシャリスト試験 令和3年秋期 午前Ⅱ 問3

関数従属とは、1つの項目値が決まるともう1つの項目値も決まる関係のことです。

誰かの決断で誰かの運命も決まるみたいな感じがします。

次の表において,属性Aに対して関数従属性を満たしている属性はどれか。

A B C D E
100 3100 10 東京都 2006年5月
100 1200 60 東京都 2006年11月
100 1200 20 東京都 2007年1月
200 1100 10 大阪府 2006年6月
200 2200 20 大阪府 2006年10月
300 3200 10 北海道 2006年7月
300 1200 30 北海道 2006年9月
400 4030 40 東京都 2006年8月
400 2200 40 東京都 2006年9月
400 1200 20 東京都 2006年12月

出典 : 基本情報技術者試験 平成18年秋期 午前問60

上記過去問の場合、「A列の値」によって「D列の値」が決まっています。
例えば「A列が100」と決まると「D列が東京都」に決まります。

A D
100 東京都
200 大阪府
300 北海道
400 東京都

こんな関係を「DはAに関数従属している」といい「A->D」と書きます。

六つのタプルから成る関係Rの単一の属性間において成立する全ての関数従属性を挙げたものはどれか。ここで,X→Yは,XがYを関数的に決定することを表す。
R

A B C
300 阿部商店 3
300 阿部商店 3
400 鈴木商店 2
400 鈴木商店 2
500 鈴木商店 1
500 鈴木商店 1
  1. A→B
  2. A→C,C→A
  3. (正解)A→B,A→C,C→A,C→B
  4. A→B,A→C,B→C,C→A,C→B

出典 : 応用情報技術者試験 平成24年秋期 午前問26

上記過去問では、「A列の値」によって「B列の値」が決まっています(A->B)。

A B
300 阿部商店
400 鈴木商店
500 鈴木商店

「A列の値」によって「C列の値」も決まっちゃいます(A->C)。
しかも、逆に「C列の値」によって「A列の値」が決まるとも考えることができます(C->A)。

A C
300 3
400 2
500 1

よく見ると「C列の値」によって「B列の値」が決まっています(C->B)。

B C
阿部商店 3
鈴木商店 2
鈴木商店 1

世田谷47 松の湯

候補キーとは、レコードを一意にすることができる項目の組み合わせです。

主キーの候補になるキーです。

関係R(A,B,C,D,E,F)において,関数従属A→B,C→D,C→E,{A,C}→Fが成立するとき,関係Rの候補キーはどれか。
ア. A イ. C ウ. (正解){A,C} エ. {A,C,E}
出典 : 応用情報技術者試験 平成26年秋期 午前問26

「A→B」なのでAでBは決まります。
「C→D,C→E」なのでCでDとEは決まります。
そして「{A,C}→F」もあるので{A,C}でBとDとEとFがきまるので、{A,C}でレコードを一意にすることができます。

関数従属を絵にしてみた

関係モデルの候補キーの説明のうち,適切なものはどれか。

  1. 関係Rの候補キーは関係Rの属性の中から選ばない。
  2. 候補キーは主キーの中から選ぶ。
  3. (正解)タプルごとに,候補キーの値は異なる。
  4. 一つの関係に候補キーが複数あってはならない。

出典 : データベーススペシャリスト試験 平成24年春期 午前Ⅱ 問6

「レコード(タプル)を一意にする」ので、候補キーの具体的な値はため異なります。

関係Rは属性{A,B,C,D,E}から成り,関数従属性 A→{B,C},{C,D}→E が成立する。これらの関数従属から決定できるRの候補キーはどれか。
ア. {A,C} イ. {A,C,D} ウ. (正解){A,D} エ. {C,D}
出典 : データベーススペシャリスト試験 平成27年春期 午前Ⅱ 問3


候補キーでレコードを一意にすることができるので、候補キーのないテーブルを外部キーの参照先とすることはできません。

関係モデルにおける外部キーに関する記述のうち,適切なものはどれか。

  1. 外部キーの値は,その関係の中で一意でなければならない。
  2. 外部キーは,それが参照する候補キーと比較可能でなくてもよい。
  3. 参照先の関係に,参照元の外部キーの値と一致する候補キーが存在しなくてもよい。
  4. (正解)一つの関係に外部キーが複数存在してもよい。

出典 : 情報セキュリティスペシャリスト試験 平成26年春期 午前Ⅱ 問21

推移的関数従属とは、1つの項目値が決まると玉突き的に他の項目値も決まる関係のことです。

関係R(A,B,C,D,E,F)において,次の関数従属が成立するとき,候補キーとなるのはどれか。
〔関数従属〕
A→B,A→F,B→C,C→D,{B,C}→E,{C,F}→A
ア. B イ. {B,C} ウ. (正解){B,F} エ. {B,D,E}
出典 : 応用情報技術者試験 平成27年秋期 午前問28

上記過去問では、「A列の値」によって「B列の値」が決まって、「B列の値」が決まったから「C列の値」も決まっています。
「A->B->C」な感じです。
しかし、「{C,F}->A」はあるけど「B->A」はなので、逆流的に「B列の値」が決まっても「A列の値」は決まりません。
こんな関係を「CはAに推移的関数従属ししている」といいます。

関数従属を絵にするときは横書きがいい

部分関数従属とは、候補キーの1つの項目値が決まると他の項目値も決まる関係のことです。

部署ID 部署名 部員名
1 くま
1 きつね
2 くらげ
2
2 くじら

上記の表の場合、候補キーは{部署ID, 部員名}です。
そして、候補キーの1つである「部署ID」の値が決まると「部署名」の値も決まります。
こんな状態を「部分関数従属」といいます。

「繰り返す項目をなくした状態」だけの「第1正規形」から「部分関数従属を排除した状態」が「第2正規形」となります。
ponsuke-tarou.hatenablog.com

次回の勉強内容

勉強中・・・