関係モデルの属性で並び順と名前をどう考える?
基本情報技術者試験 平成31年度春期 午前 問26 / データベース › データベース方式
過去問にチャレンジ
関係モデルの属性に関する説明のうち,適切なものはどれか。
- ア
関係内の属性の定義域は重複してはならない。
- イ
関係内の属性の並び順に意味はなく,順番を入れ替えても同じ関係である。
- ウ
関係内の二つ以上の属性に,同じ名前を付けることができる。
- エ
名前をもたない属性を定義することができる。
会話形式の解説
講師この問題では、属性の並び順、定義域、名前を分けて考えます。まず、並び順を変えると関係そのものは変わるでしょうか。
受験者順番も属性の決まりの一部に思えます。入れ替えたら別の関係になりませんか。
講師関係モデルでは属性の並び順に意味はありません。入れ替えても同じ関係なので、並び順についての説明が正解です。
受験者では、複数の属性が同じ定義域を使うこともできるのですか。
講師できます。定義域は値の範囲を表し、複数の属性で同じ定義域を使っても構いません。重複を禁じる説明は不適切です。
受験者定義域を共有できるなら、属性の名前も同じにできそうですが、どうでしょうか。
講師属性名は、その関係内で属性を識別する名前です。一つの関係内では重複できないので、同じ名前を付けられるという説明も不適切です。
受験者名前が重複できないなら、名前を付けずに属性を定義することはできますか。
講師それもできません。関係内の各属性には名前が必要です。
受験者並び順を変えても同じ関係で、定義域は共有できます。一方、属性名はそれぞれ必要で、重複できないのですね。
講師そのとおりです。定義域の重複と属性名の重複を、同じ規則で判断しないことがポイントです。
まとめ
関係モデルでは、属性の並び順を入れ替えても同じ関係です。複数の属性が同じ定義域を使うことはできます。一方、一つの関係内で属性名は重複できず、各属性には名前が必要です。
解答・解説
正解はイです
この問題のテーマ
関係モデルで、属性の定義域・並び順・名前にどのような規則があるかを問う問題です。
解き方の考え方
属性の並び順を変えたときに、関係そのものが変わるかを判断します。次に、定義域と属性名を区別して各選択肢を確かめます。定義域は値の範囲を表し、属性名はその関係内で属性を識別するための名前です。
選択肢ごとの解説
- ×ア 関係内の属性の定義域は重複してはならない。複数の属性が同じ定義域を使っても構いません。この説明は定義域の重複を禁じていますが、そのような制約はありません。
- ○イ 関係内の属性の並び順に意味はなく,順番を入れ替えても同じ関係である。属性の並び順には意味がありません。属性を入れ替えても関係の同一性は変わらないため、この説明が正解です。
- ×ウ 関係内の二つ以上の属性に,同じ名前を付けることができる。一つの関係内では、属性名を重複させることはできません。二つ以上の属性に同じ名前を付けられるという説明は、属性名の規則に反します。
- ×エ 名前をもたない属性を定義することができる。関係内の各属性には名前が必要です。したがって、名前をもたない属性を定義できるという説明は成り立ちません。
POINT
- 属性の並び順を入れ替えても、関係の同一性は変わりません。
- 同じ定義域を使う属性を、一つの関係内に複数設けられます。
- 一つの関係内で属性名は重複せず、各属性に名前が必要です。
