リレーショナルデータベースの設計において、データの重複を排除し、データの追加・更新・削除に伴う不整合(異常)の発生を防ぐために、表(テーブル)を適切な形に分割する作業はどれか。
(解答記号:イ)
データベースの設計手法に関する基本的な定義を問う問題です。
他の選択肢については以下の通りです。
* ア:インデックス作成は、特定の列に対して索引を作ることで、データの検索速度を向上させる手法です。
* ウ:排他制御は、複数のユーザーが同時に同じデータを更新しようとした際に、データの不整合が起きないようアクセスを制限(ロック)する仕組みです。
* エ:レプリケーションは、データベースの複製を別のサーバーに作成し、負荷分散や耐障害性を高める技術です。
以下の表は、ある企業の「受注伝票」のデータをまとめたものである。この表を第1正規形にするための操作として、最も適切なものはどれか。
| 受注番号 | 受注日 | 顧客名 | 商品名1 | 数量1 | 商品名2 | 数量2 |
|---|---|---|---|---|---|---|
| 101 | 1/20 | 瀧川商店 | Aソフト | 2 | Bソフト | 1 |
| 102 | 1/21 | 上板建設 | Aソフト | 5 | (空白) |
(解答記号:ウ)
第1正規化のルールに関する問題です。
他の選択肢については以下の通りです。
* ア:これは第2正規化の説明です。複合主キーの一部にのみ依存している列を分離する作業を指します。
* イ:導出項目(計算で出せる項目)を排除することも正規化の一部ですが、第1正規形の直接的な定義ではありません。
* エ:これは第3正規化の説明です。主キー以外の項目に依存している(推移的関数従属)列を分離する作業です。
第1正規化された「受注明細」表の主キーが「受注番号」と「商品コード」の複合キーであるとする。このとき、主キーの一部である「商品コード」が分かれば一意に決まる「商品名」を別表に切り出す作業はどれか。
(解答記号:ア)
正規化の段階に関する問題です。
他の選択肢については以下の通りです。
* イ:第3正規化は、主キー以外の項目に依存している項目(推移的関数従属)を分離することです。
* ウ:非正規化(逆正規化)は、パフォーマンス向上のために、あえて正規化された表を結合して重複を許容する手法です。
* エ:結合演算は、正規化によって分かれた複数の表を、共通の列を介してつなぎ合わせる操作(JOIN)です。
「受注」表の主キーが「受注番号」である。この表には「顧客コード」と「顧客名」が含まれており、受注番号が決まれば顧客コードが決まり、顧客コードが決まれば顧客名が決まるという関係にある。このとき、「顧客名」を別表に分離する作業はどれか。
(解答記号:ウ)
推移的関数従属の解消に関する問題です。
他の選択肢については以下の通りです。
* ア:第1正規化は、繰り返し項目の排除です。
* イ:第2正規化は、部分関数従属の解消です。本問の主キーは「受注番号」単独(複合キーではない)であるため、第1正規化が終われば自動的に第2正規形を満たしています。
* エ:主キーの設定は、表の中でデータを一意に識別するための列を決めることであり、正規化の「分割」作業そのものを指す言葉ではありません。
正規化が行われていないデータベースにおいて、ある商品の名称を変更した際、複数のレコードに存在するその商品名の一部だけが更新され、他のレコードに古い名称が残ってしまう現象を何と呼ぶか。
(解答記号:ア)
正規化の目的である「異常の回避」に関する問題です。
他の選択肢については以下の通りです。
* イ:デッドロックは、2つ以上の処理が互いに相手のロック解除を待ち続けて、処理が進まなくなる状態です。
* ウ:参照整合性制約は、外部キーの値が、参照先の主キーの中に必ず存在しなければならないというルールのことです。
* エ:インジェクション(SQLインジェクション)は、Webサイトの入力フォームに不正なSQL文を注入し、データベースを操作するサイバー攻撃の手法です。