データベース方式
データベースの論理的構造を規定した論理データモデルのうち、関係データモデルとは、データ同士の関係を木構造で表現したモデルである。
(出典:平成26年度秋期分 問74一部改変)
答え:×
設問の文章は階層型データベースの説明です。なお、関係データモデル(関係データベース)とは、データの集まりを表形式で表現するモデルです。
関係データベースにおいて、レコード(行)を一意に識別するための情報を主キーと言い、表と表を特定のフィールドで関連付けることもできる。
(出典:平成23年度特別 問72一部改変)
答え:〇
正しい記述です。主キーとは、データベースにおいてテーブル内の各行(レコード)を一意に識別するための列(または列の組み合わせ)のことです。
関係データベースの主キーの設定に関する次の記述中、適切なものは2つある。
- 値が他のレコードと重複するものは主キーとして使用できない。
- 主キーの値は数値でなければならない。
- 主キーは複数フィールドを組み合わせて設定することができる。
- 主キーに設定したフィールドの値に1行だけならNULLを設定することができる。
- 主キーに設定したフィールドの値を更新することはできない。
- 主キーに設定したフィールドは他の表の外部キーとして参照することができない。
(出典:令和5年度春期分 問78一部改変)
答え:〇
- 適切です。主キーは一意性を有する(他のレコードと重複しない)ことが必要です。
- 不適切です。主キーは数値である必要はありません。文字や複数の列を組み合わせた複合キーも主キーとして設定できます。ただし、高速に検索できる、コンパクトでシンプル、変更が起きにくいなどの理由から、特別な理由がない限り、数字(数値ID)を主キーにするのが推奨されます。
- 適切です。関係データベースでは、複数の列(フィールド)を組み合わせて1つの主キーとして設定することができます。これを複合主キーと呼びます。
- 不適切です。主キーにはNULL値を一切設定できません。
- 不適切です。主キーの値は技術的には更新可能です。ただし、主キーは一意な識別子なので、原則として「変更されない値」であるべきです。また、主キーが他のテーブルの外部キーとして参照されている場合、更新は整合性エラーの原因になるため、「更新すべきでない」とされる場合が多いです。
- 不適切です。主キーは、他の表の外部キーとして参照されるために使われるのが一般的です。
よって、適切な記述は1.と3.の2つです。
条件①〜⑤によって、関係データベースで管理する”従業員”表と”部門”表を作成した。”従業員”表の主キーとして、最も適切なものは「部門コード」である。
〔条件〕
① 各従業員は重複のない従業員番号を一つもつ。
② 同姓同名の従業員がいてもよい。
③ 各部門は重複のない部門コードを一つもつ。
④ 一つの部門には複数名の従業員が所属する。
⑤ 1人の従業員が所属する部門は一つだけである。

(出典:令和4年度春期分 問65一部改変)
答え:×
〔条件〕④に「一つの部門には複数名の従業員が所属する」とあるため、部門コードが重複する可能性があります。そのため、部門コードを主キーとするのは不適切です。
また、〔条件〕②に「同姓同名の従業員がいてもよい」とあるため、従業員名も重複する可能性があり、主キーとするのは不適切です。
この問題の場合、重複のない従業員番号を主キーとするのが適切です。
関係データベースの操作を行うための言語はFAQである。
(出典:平成31年度春期分 問95一部改変)
答え:×
関係データベースの操作を行うための言語はSQL(Structured Query Language)です。なお、FAQ(Frequently Asked Questions) とは「よくある質問」のことで、問い合わせ対応の手間を減らし、ユーザー自身が迅速に解決策を見つけられるようにするためのものです。
次のa~gのうち、DBMSに備わる機能として、適切なものは4個ある。
a.アクセス権管理
b.障害回復
c.同時実行制御
d.ファイアウォール
e.ウイルスチェック
f.データ検索・更新
g.テーブルの正規化
(出典:令和3年度春期分 問75一部改変)
答え:〇
正しい記述です。以下のものはDBMSの機能ではありません。
d.ファイアウォール
e.ウイルスチェック
g.テーブルの正規化
よって、DBMSに備わる機能として、適切なものは4個(a.アクセス権管理、b.障害回復、c.同時実行制御、f.データ検索・更新)です。
データベース設計
データベース設計におけるデータ分析で行うこととしては、「必要なデータ項目を洗い出し、項目間の関連を整理する」といったことが挙げられる。
(出典:令和7年度春期分 問95一部改変)
答え:〇
記述の通りです。
データベース設計の前段階として、データ分析を行います。データの質を向上させるために、業務で使用するデータの洗出しと整理を行い、不正確、不完全、重複、または不適切なデータを特定して修正または削除する作業を行います。この作業のことをデータクレンジングと呼びます。
E-R図では、処理手順などのアルゴリズムを図で表記する。
(出典:平成29年度春期分 問87一部改変)
答え:×
E-R図では、データベースの設計に当たって、データ間(エンティティ同士)の関係を表記します。なお、設問の文章はフローチャートの説明になります。
出版社←著者→本
となる。
[条件]①出版社は、複数の著者と契約している。
②著者は、一つの出版社とだけ契約している。
③著者は、複数の本を書いている。
④1冊の本は、1人の著者が書いている。
ここで、E−R図の表記法は次のとおりとする。
[表記法]aとbが、1対多の関係であることを表す。
(出典:令和3年度春期分 問70一部改変)
答え:×
出版社→著者
となります。
著者→本
となります。
以上より、出版社と著者と本の関係を示すE−R図は
が適切な表記です。
関係データベースを構築する際にデータの正規化を行う目的は、データに冗長性をもたせて、データ誤りを検出することにある。
(出典:平成31年度春期分 問92一部改変)
答え:×
関係データベースを構築する際にデータの正規化を行う目的は、データの矛盾や重複を排除して、データの維持管理を容易にすることにあります。むしろ、データの冗長性を排除することが目的なので、設問の記述は誤りです。
関係データベースで管理された”会員管理”表を正規化して、”店舗”表、”会員種別”表及び”会員”表に分割した。このとき、”会員”表は次のようになる。ここで、表中の下線は主キーを表し、一人の会員が複数の店舗に登録した場合は、会員番号を店舗ごとに付与するものとする。
店舗コード | 会員コード | 会員名 |

(出典:令和5年度春期分 問59一部改変)
答え:×
【第1正規化】
繰り返しの項目を排除し表の構造をシンプルにするため、すべての列が単一の値で構成されている状態にします。設問の会員管理表は繰り返しの項目がないため、この作業は不要です。
【第2正規化】
複合主キーの一部にしか依存しない列を分離し、冗長性を排除します。「店舗コード」がわかれば店舗名が特定できるため、「店舗コード」とそれに連なる「店舗名」を別表に分離します。
なお、設問中に「会員番号を店舗ごとに付与する」とあるため、「会員番号」のみでは会員名を特定することはできないので、これを分離することはできません。
店舗コード | 会員番号 | 会員名 | 会員種別コード | 会員種別名 |
---|---|---|---|---|
001 | 1 | 試験花子 | 02 | ゴールド |
001 | 2 | 情報太郎 | 02 | ゴールド |
002 | 1 | 高度次郎 | 03 | 一般 |
002 | 2 | 午前桜子 | 01 | プラチナ |
003 | 1 | 午前桜子 | 03 | 一般 |
店舗コード | 店舗名 |
---|---|
001 | 札幌 |
002 | 東京 |
003 | 大阪 |
【第3正規化】
キー属性が他の非キー属性に依存している状態を排除して更新時の整合性を保ちます。非主キーの「会員種別コード」が分かれば「会員種別名」が特定できるため、これを別表に分離します。
店舗コード | 会員番号 | 会員名 | 会員種別コード |
---|---|---|---|
001 | 1 | 試験花子 | 02 |
001 | 2 | 情報太郎 | 02 |
002 | 1 | 高度次郎 | 03 |
002 | 2 | 午前桜子 | 01 |
003 | 1 | 午前桜子 | 03 |
店舗コード | 店舗コード |
---|---|
001 | 札幌 |
002 | 東京 |
003 | 大阪 |
会員種別コード | 会員種別名 |
---|---|
01 | プラチナ |
02 | ゴールド |
03 | 一般 |
以上より、”会員”表は次のようになります。
店舗コード | 会員コード | 会員名 | 会員種別コード |
一つの表で管理されていた受注データを、受注に関する情報と商品に関する情報に分割して、正規化を行った上で関係データベースの表で管理する。ここで、同一商品で単価が異なるときは商品番号も異なるものとする。また、発注者名には同姓同名はいないものとする。

このとき、正規化を行った結果の表の組合せは次のようになる。

(出典:令和6年度春期分 問81一部改変)
答え:〇
【第1正規化】
繰り返しの項目を排除し表の構造をシンプルにするため、すべての列が単一の値で構成されている状態にします。設問の受注データ表は繰り返しの項目がないため、この作業は不要です。
【第2正規化】
複合キーの一部にしか依存しない列を分離し、冗長性を排除します。「受注番号」のみがわかればレコードを特定できる(一意に識別できる)ため、主キーは「受注番号」となります。主キーが単一のため、この作業は不要です。
【第3正規化】
キー属性が他の非キー属性に依存している状態を排除して更新時の整合性を保ちます。非主キーの「商品番号」が分かれば「商品名」と「単価」が特定できるため、これを別表に分離します。
受注番号 | 発注者名 | 商品番号 | 個数 |
---|---|---|---|
T0001 | 試験花子 | M0001 | 5 |
T0002 | 情報太郎 | M0002 | 3 |
T0003 | 高度秋子 | M0001 | 2 |
商品番号 | 商品名 | 単価 |
---|---|---|
M0001 | 商品1 | 3,000 |
M0002 | 商品2 | 4,000 |
以上より、正規化を行った結果の表の組合せは次のようになります。
受注番号 | 発注者名 | 商品番号 | 個数 |
商品番号 | 商品名 | 単価 |
データ操作とトランザクション処理
表1と表2に、ある操作を行って表3が得られた。行った操作は「結合」と「選択」である。

(出典:平成28年度春期分 問95一部改変)
答え:×
表1と表2から表3を得るための操作は次のようになります。
①まず、品名コードによって表1と表2を結合します。
品名コード | 品名 | 価格 | メーカ | 棚番号 |
---|---|---|---|---|
001 | ラーメン | 150 | A社 | 1 |
002 | うどん | 130 | B社 | 5 |
②次に、「品名」「価格」「棚番号」の列を抽出します(射影)。
品名 | 価格 | 棚番号 |
---|---|---|
ラーメン | 150 | 1 |
うどん | 130 | 5 |
以上より、表1と表2から表3を得るための操作は「結合」と「射影」となります。なお、「選択」とは行(レコード)を抽出する操作です。
関係データベースで管理している”入館履歴”表と”建物”表から、建物名が”東館”を条件に抽出した結果を日付の降順でソートしたとき、2番目のレコードの社員番号は「S0004」である。

(出典:平成27年度秋期分 問64一部改変)
答え:〇
正しい記述です。
建物名が”東館”の建物コードは「B002」なので、”入館履歴”表から建物コードがB002のレコードを抽出します。
社員番号 | 建物コード | 日付 |
---|---|---|
S0001 | B002 | 10/30 |
S0002 | B002 | 10/10 |
S0003 | B002 | 10/12 |
S0004 | B002 | 10/20 |
次に、日付の降順(大きい順)でソート(並び替え)します。
社員番号 | 建物コード | 日付 |
---|---|---|
S0001 | B002 | 10/30 |
S0004 | B002 | 10/20 |
S0003 | B002 | 10/12 |
S0002 | B002 | 10/10 |
以上より、2番目のレコードの社員番号は「S0004」となります。
トランザクション処理に関する次の記述のうち、適切なものは2つある。
- コミットとは、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態に戻すことである。
- 排他制御とは、トランザクションが正常に処理されたときに、データベースの内容を確定させることである。
- ロールバックとは、複数のトランザクションが同時に同一データを更新しようとしたときに、データの矛盾が起きないようにすることである。
- ログとは、データベースの更新履歴を記録したファイルのことである。
(出典:令和6年度春期分 問74一部改変)
答え:×
- 誤り。記述はロールバックの説明です。
- 誤り。記述はコミットの説明です。
- 誤り。記述は排他制御の説明です。
- 正しい。
よって、適切な記述は4.の1つとなります。
処理一覧に示す実行順に、トランザクション1〜4を実行する。あるトランザクションが途中で異常終了し、トランザクションを中断してロールバックした結果、データAとデータBが残った。異常終了したトランザクションは「トランザクション4」である。ここで、トランザクションが正常終了したときにコミットを行い、次のトランザクションがあれば、それを実行する。異常終了したときは、当該トランザクション以降のトランザクションを実行しないものとする。

(出典:平成27年度秋期分 問71一部改変)
答え:〇
正しい記述です。
各トランザクションが正常に終了したときのデータは次のようになります。
コミットされたトランザクション | 生成されたデータ |
---|---|
トランザクション1 | データA |
トランザクション2 | データB |
トランザクション3 | データA、データB |
トランザクション4 | データA |
ここで、ロールバックとはトランザクションの処理を途中で取り消して、データベースをトランザクション開始前の状態に戻す操作のことです。設問には「ロールバックした結果、データAとデータBが残った」とあるため、トランザクション4の処理が正常に終了しなかった(つまり、トランザクション4の処理開始前の状態に戻った)ということが分かります。
複数のプロセスが共通の資源を排他的に利用する場合に、お互いに相手のプ口セスが占有している資源が解放されるのを待っている状態をデッドロックという。
(出典:平成24年度秋期分 問67一部改変)
答え:〇
正しい記述です。
ロック方式の課題(欠点)として、複数のトランザクションがお互いにロックの解除を待ち続けることで、永久に処理が進まなくなる状態になることがあります。この状態のことをデッドロックと呼びます。
ある在庫管理システムは、複数の入力を同時並行して処理し、在庫数を更新しているが、排他制御は行っていない。ある時点での在庫数が100であったとき、入力された二つの入力A、Bに応じて、図に示す処理が①→②→③→④の順序で実行された場合、処理④が終了した時点の在庫数は「120」となる。

(出典:平成24年度秋期分 問80一部改変)
答え:×
処理①:入力Aによって在庫数が150(=初期値100+50)になります。
処理②:「複数の入力を同時並行して処理」しているため、入力Bが読み込んだ在庫数は初期値(更新前)の100です。ここから30を引くので在庫数は70となります。
処理③:入力Bで、70が在庫数として上書きされます。
処理④:入力Aで、150が在庫数として上書きされます。
以上より、処理④が終了した時点の在庫数は「150」となります。
このような結果となるのは、複数のユーザーが同時にデータベースにアクセス・操作したために、データの整合性や一貫性が壊れてしまうのが原因です。これを回避するためには排他制御を行います。
仮に、排他制御を行った場合は次のようになります。
処理①:入力Aによって在庫が150(=初期値100+50)になります。このとき、入力Aはロックをかけて入力Bが在庫数のデータにアクセスできないようにします。
処理②③:入力Bは在庫数のデータを参照できないため、ロックが解除されるまで待ちます。
処理④:入力Aでは、150が在庫数として書き込まれます。ここで参照が終わったのでロックを解除します。
処理②´:入力Bが読み込んだ在庫数は更新後の150です。ここから30を引くので在庫数は120となります。
処理③´:入力Bでは、120が在庫数として上書きされます。
このように、排他制御を行うと処理がすべて終了した後の在庫数は120となり、期待通りの結果が得られます。