マナビング基本情報技術者

関係モデルの属性で並び順と名前をどう考える?

基本情報技術者試験 平成31年度春期 午前 問26 / データベース › データベース方式

過去問にチャレンジ

平成31年度春期 午前 問26

関係モデルの属性に関する説明のうち,適切なものはどれか。

  1. ア

    関係内の属性の定義域は重複してはならない。

  2. イ

    関係内の属性の並び順に意味はなく,順番を入れ替えても同じ関係である。

  3. ウ

    関係内の二つ以上の属性に,同じ名前を付けることができる。

  4. エ

    名前をもたない属性を定義することができる。

会話形式の解説

講師講師
この問題では、属性の並び順、定義域、名前を分けて考えます。まず、並び順を変えると関係そのものは変わるでしょうか。
受験者受験者
順番も属性の決まりの一部に思えます。入れ替えたら別の関係になりませんか。
講師講師
関係モデルでは属性の並び順に意味はありません。入れ替えても同じ関係なので、並び順についての説明が正解です。
受験者受験者
では、複数の属性が同じ定義域を使うこともできるのですか。
講師講師
できます。定義域は値の範囲を表し、複数の属性で同じ定義域を使っても構いません。重複を禁じる説明は不適切です。
受験者受験者
定義域を共有できるなら、属性の名前も同じにできそうですが、どうでしょうか。
講師講師
属性名は、その関係内で属性を識別する名前です。一つの関係内では重複できないので、同じ名前を付けられるという説明も不適切です。
受験者受験者
名前が重複できないなら、名前を付けずに属性を定義することはできますか。
講師講師
それもできません。関係内の各属性には名前が必要です。
受験者受験者
並び順を変えても同じ関係で、定義域は共有できます。一方、属性名はそれぞれ必要で、重複できないのですね。
講師講師
そのとおりです。定義域の重複と属性名の重複を、同じ規則で判断しないことがポイントです。

まとめ

関係モデルでは、属性の並び順を入れ替えても同じ関係です。複数の属性が同じ定義域を使うことはできます。一方、一つの関係内で属性名は重複できず、各属性には名前が必要です。

解答・解説

正解はイです

この問題のテーマ

関係モデルで、属性の定義域・並び順・名前にどのような規則があるかを問う問題です。

解き方の考え方

属性の並び順を変えたときに、関係そのものが変わるかを判断します。次に、定義域と属性名を区別して各選択肢を確かめます。定義域は値の範囲を表し、属性名はその関係内で属性を識別するための名前です。

選択肢ごとの解説

  1. ×ア  関係内の属性の定義域は重複してはならない。
    複数の属性が同じ定義域を使っても構いません。この説明は定義域の重複を禁じていますが、そのような制約はありません。
  2. ○イ  関係内の属性の並び順に意味はなく,順番を入れ替えても同じ関係である。
    属性の並び順には意味がありません。属性を入れ替えても関係の同一性は変わらないため、この説明が正解です。
  3. ×ウ  関係内の二つ以上の属性に,同じ名前を付けることができる。
    一つの関係内では、属性名を重複させることはできません。二つ以上の属性に同じ名前を付けられるという説明は、属性名の規則に反します。
  4. ×エ  名前をもたない属性を定義することができる。
    関係内の各属性には名前が必要です。したがって、名前をもたない属性を定義できるという説明は成り立ちません。

POINT

  • 属性の並び順を入れ替えても、関係の同一性は変わりません。
  • 同じ定義域を使う属性を、一つの関係内に複数設けられます。
  • 一つの関係内で属性名は重複せず、各属性に名前が必要です。

※出典:平成31年度春期 基本情報技術者試験 午前 問26