基本情報技術者 用語集データベース・前編

情報処理

この基本情報技術者 用語集(データベース・前編)では、シラバスのデータベース分野のうち、基礎概念・関係モデル・データベース設計(正規化・E-R図)・SQLの基本までをまとめています。具体例も添えているため、試験対策と実務の両方に役立ちます。後編1(トランザクション)・後編2(運用・応用)もあわせてご覧ください。

この基本情報技術者 用語集は試験範囲を網羅しているため、学習の辞書としてブックマークしておくと便利です。下の検索ボックスやカテゴリタブを使うと、目的の用語を素早く見つけられます。

0 件の用語を表示中

スポンサーリンク
スポンサーリンク

データベース方式・基礎 ― 基本情報技術者 用語集

データベースの基礎は、基本情報技術者試験で必出の分野です。したがって、ここではDBの基本概念、データモデル、関係モデルの基本までを順に解説します。また、関係演算の操作も整理しておきましょう。

データベースの基本概念

まず、データベースの基本概念を確認します。たとえば、DBMSはデータベースを管理するソフトウェアです。さらに、データ独立性や3層スキーマも基本情報技術者試験で頻出です。

データベース(DB)
関連するデータを整理・統合して蓄積し、複数の利用者やプログラムから共有利用できるようにしたデータの集まり。 例:顧客DB、商品DB、図書館の蔵書DB
データベース管理システム(DBMS)
データベースを構築・運用するソフトウェア。データ定義、操作、整合性維持、セキュリティなどを提供。 例:MySQL、PostgreSQL、Oracle Database、SQL Server
スキーマ
データベースの構造を定義したもの。外部・概念・内部の3層がある。 例:テーブルの列名・データ型・制約の定義
3層スキーマ
外部スキーマ(ユーザ視点)、概念スキーマ(論理構造)、内部スキーマ(物理格納)の3層構造。データの独立性を確保。 例:物理ストレージを変えても外部スキーマは影響を受けない
データ独立性
データの物理的な格納方法と論理的な構造を切り離し、片方の変更が他方に影響しない性質。 例:HDDからSSDに変更してもアプリ修正は不要
データディクショナリ
データベースの構造情報(テーブル、列、制約など)を格納した辞書。メタデータの管理に使う。 例:「customer表にはid・name・emailがある」という情報を保持

データベースのモデル

次に、データベースのモデルを見ていきます。たとえば、関係モデル・階層モデル・ネットワークモデルなど複数の方式があります。また、NoSQLなど近年の新しいモデルも重要です。

階層型データベース
データを木構造で表現する古典的なDBモデル。親子関係が1対多に限定される。 例:IBMのIMS、組織図のような構造
網型データベース
データ間の関係を網目状に表現するDBモデル。多対多の関係を表せる。 例:CODASYL型DB、古いメインフレームで使用
関係データベース(RDB)
データを表(テーブル)形式で管理するモデル。現在最も普及している。 例:Oracle、MySQL、PostgreSQL
オブジェクト指向データベース
データをオブジェクトとして格納するDB。継承や多態性をDBレベルで扱える。 例:複雑な構造を持つCAD、マルチメディアデータの管理
NoSQLデータベース
RDB以外の様々なDBの総称。スケーラビリティや柔軟性が高い。 例:MongoDB、Cassandra、Redis、Neo4j
キーバリュー型
キーと値のペアでデータを格納する単純な構造のNoSQL。 例:Redis、Amazon DynamoDB
ドキュメント型
JSONなどの文書形式でデータを格納するNoSQL。柔軟なスキーマが特徴。 例:MongoDB、CouchDB
カラム指向型
列単位でデータを格納するDB。大規模な分析処理に強い。 例:Cassandra、HBase、Amazon Redshift
グラフ型
ノードと関係でデータを表現するNoSQL。SNSの友達関係などに最適。 例:Neo4j、Amazon Neptune

関係モデルの基本

続いて、関係モデルの基本を確認します。たとえば、テーブルは行(タプル)と列(属性)で構成されます。さらに、主キーや外部キーの概念も基本情報技術者試験で必須です。

関係(リレーション)
関係モデルにおける表に相当する概念。行と列で構成される。 例:「社員表」はリレーションの一例
テーブル(表)
RDBで2次元の表形式で表されたデータの集合体。 例:商品テーブル、注文テーブル
行(タプル、レコード)
テーブルの1件分のデータ。 例:社員表の「田中さんの1件の情報」
列(属性、カラム、フィールド)
テーブルの項目。データ型を持つ。 例:社員ID、氏名、入社日
定義域(ドメイン)
列が取りうる値の範囲。 例:「年齢」列のドメインは0〜150の整数
主キー(プライマリキー)
表の各行を一意に識別する列。NULL不可で重複も不可。 例:社員番号、顧客ID
候補キー
主キーになりうる属性の組。1つの表に複数存在しうる。 例:社員番号とマイナンバーがそれぞれ候補キー
外部キー
他の表の主キーを参照する列。表どうしの関連を表現する。 例:注文表の「顧客ID」が顧客表の主キーを参照
複合キー
2つ以上の列を組み合わせた主キー。 例:「学生ID+科目ID」で成績表の行を識別
NULL
値が存在しないことを示す特殊な状態。0や空文字とは区別される。 例:未入力の電話番号欄をNULLで保持

関係演算

さらに、関係演算の操作を見ていきます。たとえば、選択・射影・結合は基本演算です。また、和・差・積などの集合演算も理解しておきましょう。

射影(プロジェクション)
表から特定の列だけを取り出す演算。 例:社員表から「氏名」と「部署」だけを取り出す
選択(セレクション)
表から条件を満たす行だけを取り出す演算。 例:社員表から「年齢30歳以上」の行を抽出
結合(ジョイン)
2つの表を共通する列で結合する演算。 例:社員表と部署表を「部署コード」で結合し、社員に部署名を付与
和集合
2つの表の行を合わせた集合(重複は除く)。 例:東京支店と大阪支店の社員リストを統合
積集合
2つの表に共通する行の集合。 例:両方の支店に所属する社員を抽出
差集合
一方の表にあって他方にない行の集合。 例:東京支店にいるが大阪支店にいない社員
直積
2つの表のすべての行の組合せ。 例:3行×2行の直積は6行になる

データベース設計 ― 基本情報技術者 用語集

データベース設計は、品質の高いシステムを作るための重要な工程です。とくに、E-R図と正規化は基本情報技術者試験で頻出です。また、参照整合性などの制約も理解しておきましょう。

概念設計(E-R図)

まず、E-R図による概念設計を確認します。たとえば、エンティティ・属性・関連で対象を表現します。さらに、カーディナリティの種類も基本情報技術者試験で頻出です。

E-R図(実体関連図)
エンティティ(実体)とリレーションシップ(関連)でデータ構造を図式化する手法。 例:「顧客」「注文」「商品」を四角形と線で結ぶ
エンティティ(実体)
管理対象となるモノやコト。表に対応する。 例:顧客、商品、注文、社員
リレーションシップ(関連)
エンティティ間のつながり。 例:顧客が注文する、社員が部署に所属する
属性
エンティティが持つ性質や情報項目。 例:顧客エンティティの「氏名」「住所」「電話番号」
カーディナリティ(多重度)
関連の対応関係を表す数。1対1、1対多、多対多がある。 例:1人の顧客が複数の注文を持つ→1対多
1対多
一方のエンティティが他方の複数と関連する関係。 例:1つの部署に複数の社員が所属
多対多
互いに複数ずつ関連する関係。中間テーブルで実装される。 例:学生と科目(1人が複数科目、1科目を複数人が受講)

正規化

次に、正規化のステップを見ていきます。たとえば、第1正規形から第3正規形までが基本です。また、各正規形の条件を順に理解することが重要です。

正規化
データの重複や矛盾を避けるため、表を適切に分割する設計手法。 例:1つの表を、関連の薄い情報ごとに複数の表に分ける
非正規形
1つのセルに複数の値が入っているような未整理の表。繰り返し項目を含む。 例:1行に「商品1、商品2、商品3」と複数値が入っている表
第1正規形
各セルに1つの値だけが入る状態。繰り返し項目を排除した形。 例:商品名を別行に分割し、1セル1値にする
第2正規形
第1正規形を満たし、かつ主キーの一部だけに依存する項目(部分関数従属)を排除した形。 例:「注文ID+商品ID」が主キーの表から、商品名(商品IDのみに依存)を分離
第3正規形
第2正規形を満たし、かつ主キー以外の項目間の関数従属(推移的関数従属)を排除した形。 例:社員表の「部署コード→部署名」を別表に分離
ボイス・コッド正規形(BCNF)
第3正規形をさらに厳密にした形。すべての関数従属の左辺が候補キーであること。 例:複数の候補キーを持つ複雑な依存関係を解消
関数従属
ある属性の値が決まれば別の属性の値が決まる関係。「A→B」と表す。 例:社員ID→氏名(社員IDが決まれば氏名が決まる)
部分関数従属
主キーの一部だけに依存する関数従属。 例:複合キー「注文ID+商品ID」のうち、商品IDだけで商品名が決まる
推移的関数従属
A→B、B→Cという関係から、A→Cが導かれる関係。 例:社員ID→部署コード→部署名
非正規化(逆正規化)
性能向上のために意図的に正規化を緩める設計。読取り処理を高速化する目的。 例:頻繁にJOINする表を1つに統合してクエリを高速化

制約・参照整合性

続いて、データベースの制約を確認します。たとえば、NOT NULL・UNIQUE・CHECKなど様々な制約があります。さらに、参照整合性は外部キーで保証されます。

制約
データの整合性を保つためのルール。NOT NULL、UNIQUE、CHECKなどがある。 例:「年齢は0以上」「メールアドレスはユニーク」
NOT NULL制約
列にNULL値の格納を許さない制約。 例:氏名列にNULLを禁止して必須入力にする
UNIQUE制約
列の値の重複を許さない制約。 例:メールアドレス列を全顧客で一意にする
CHECK制約
列の値が特定の条件を満たすことを保証する制約。 例:CHECK (price > 0) で価格を正に限定
参照整合性制約
外部キーが参照する主キーが必ず存在することを保証する制約。 例:存在しない顧客IDの注文は登録できない
カスケード削除
親レコードを削除すると関連する子レコードも自動削除される動作。 例:顧客削除時にその顧客の注文も全削除
ドメイン制約
列の取りうる値の範囲を制限する制約。 例:性別列を「男」「女」のいずれかに限定

SQL ― 基本情報技術者 用語集

SQLは、リレーショナルデータベースを操作する標準言語です。とくに、SELECT文の使い方、結合、集計関数は基本情報技術者試験で頻出です。また、副問合せやビューも押さえておきましょう。

SQLの基本

まず、SQLの基本的な構文を確認します。たとえば、SQLは大きくDDL・DML・DCLに分類されます。また、各分類の役割を理解しておきましょう。

SQL
Structured Query Language。RDBを操作する標準的な問合せ言語。 例:SELECT, INSERT, UPDATE, DELETEなどの命令
DDL
Data Definition Language。データ定義言語。表や索引の作成・削除を行う。 例:CREATE TABLE, DROP TABLE, ALTER TABLE
DML
Data Manipulation Language。データ操作言語。データの取得・追加・更新・削除。 例:SELECT, INSERT, UPDATE, DELETE
DCL
Data Control Language。データ制御言語。アクセス権限やトランザクション制御。 例:GRANT, REVOKE, COMMIT, ROLLBACK

データ定義(DDL)

次に、データ定義言語DDLを見ていきます。たとえば、CREATE文でテーブルを作成し、ALTER文で変更します。さらに、DROP文で削除する一連の操作も基本情報技術者試験で頻出です。

CREATE TABLE
新しいテーブルを作成するSQL文。 例:CREATE TABLE 社員 (id INT PRIMARY KEY, 名前 VARCHAR(50))
ALTER TABLE
既存テーブルの構造を変更するSQL文。列の追加・削除・変更を行う。 例:ALTER TABLE 社員 ADD 部署 VARCHAR(20)
DROP TABLE
テーブルそのものを削除するSQL文。データもまとめて消える。 例:DROP TABLE 一時データ
TRUNCATE
テーブル構造は残してデータだけ全削除するSQL文。DELETEより高速。 例:TRUNCATE TABLE ログ
CREATE INDEX
索引を作成するSQL文。検索性能向上のために使う。 例:CREATE INDEX idx_email ON 顧客(email)

データ操作(DML)

続いて、データ操作言語DMLを確認します。たとえば、SELECT・INSERT・UPDATE・DELETEの4つが基本です。また、WHERE句やORDER BY句との組合せも重要です。

SELECT
表からデータを取り出すSQL文。最もよく使う。 例:SELECT 氏名 FROM 社員 WHERE 部署 = '営業'
INSERT
表にデータを追加するSQL文。 例:INSERT INTO 社員 VALUES (1, '田中', '営業')
UPDATE
表のデータを更新するSQL文。WHERE句で対象を絞ることが多い。 例:UPDATE 社員 SET 部署 = '人事' WHERE id = 1
DELETE
表からデータを削除するSQL文。 例:DELETE FROM 社員 WHERE 退職フラグ = 1
WHERE句
SQLで条件を指定する句。検索や更新の対象行を絞り込む。 例:WHERE 年齢 >= 20 AND 性別 = '女'
ORDER BY句
結果を並べ替える句。ASC(昇順)またはDESC(降順)を指定。 例:ORDER BY 入社日 DESC
GROUP BY句
同じ値を持つ行をグループ化する句。集計関数と組み合わせて使う。 例:SELECT 部署, COUNT(*) FROM 社員 GROUP BY 部署
HAVING句
GROUP BYの結果に対する条件指定。WHERE句より後で評価される。 例:GROUP BY 部署 HAVING COUNT(*) >= 10
DISTINCT
重複した行を除外して結果を返す指定。 例:SELECT DISTINCT 部署 FROM 社員
LIKE
パターン一致による検索。「%」と「_」をワイルドカードに使う。 例:WHERE 氏名 LIKE '田%'で田で始まる名前を検索
BETWEEN
値の範囲を指定する条件式。 例:WHERE 年齢 BETWEEN 20 AND 30
IN
列の値が指定リストのいずれかに一致するかを判定する条件式。 例:WHERE 部署 IN ('営業', '人事', '総務')

結合・集計関数

さらに、テーブル結合と集計関数を見ていきます。たとえば、JOINには内部結合と外部結合があります。また、COUNT・SUM・AVGなどの集計関数も基本情報技術者試験で頻出です。

内部結合(INNER JOIN)
両方の表に対応する行があるときだけ結合する方式。 例:注文と顧客を顧客IDで結合し、顧客情報のある注文のみ取得
外部結合(OUTER JOIN)
片方の表に対応する行がなくても結合する方式。LEFT/RIGHT/FULLがある。 例:注文のない顧客もリストに含めるLEFT OUTER JOIN
LEFT JOIN
左の表のすべての行を残し、右の表から対応する行を結合する。 例:全顧客と注文を結合、注文なし顧客はNULLで表示
自己結合(セルフジョイン)
同じ表どうしを結合する方式。階層構造を表現する際などに使う。 例:社員表で上司と部下の関係を表示
クロス結合
両表の全行を組み合わせる直積結合。 例:3行×4行のクロス結合で12行の結果
集計関数
複数行の値から1つの値を返す関数。 例:SUM, AVG, COUNT, MAX, MIN
COUNT
行数を数える集計関数。 例:SELECT COUNT(*) FROM 注文で注文件数
SUM
合計を求める集計関数。 例:SELECT SUM(金額) FROM 注文で売上合計
AVG
平均を求める集計関数。 例:SELECT AVG(年齢) FROM 社員
MAX / MIN
最大値・最小値を求める集計関数。 例:SELECT MAX(給与), MIN(給与) FROM 社員

副問合せ・ビュー

次に、副問合せとビューの使い方を確認します。たとえば、副問合せはSQLの中にSQLを書く高度な技法です。さらに、ビューによる仮想テーブルも実務で広く使われます。

副問合せ(サブクエリ)
SQL文の中にネストされた別のSELECT文。 例:SELECT * FROM 社員 WHERE 部署 IN (SELECT 部署 FROM ...)
相関副問合せ
外側のクエリの値を参照する副問合せ。行ごとに評価される。 例:各部署の平均給与より高い社員を抽出
EXISTS
副問合せの結果が1行でもあるかを判定する演算子。 例:注文のある顧客のみ抽出 WHERE EXISTS (...)
ビュー
実体を持たない仮想的な表。SELECT文の結果に名前を付けて再利用する。 例:CREATE VIEW 営業社員 AS SELECT * FROM 社員 WHERE 部署 = '営業'
マテリアライズドビュー
結果を物理的に保持するビュー。集計済みのデータを高速に取得できる。 例:日次集計結果を保持して翌日まで再計算不要にする

権限管理

最後に、SQLによる権限管理を見ていきます。たとえば、GRANTで権限付与、REVOKEで権限剥奪を行います。また、ロールによる権限のグループ化も基本情報技術者試験で問われます。

GRANT
ユーザに権限を付与するSQL文。 例:GRANT SELECT ON 社員 TO user1
REVOKE
ユーザの権限を取り消すSQL文。 例:REVOKE INSERT ON 社員 FROM user1
ロール
権限をまとめたグループ。複数のユーザに一括付与できる。 例:「管理者ロール」を作成して必要なユーザに付与

該当する用語が見つかりませんでした。

関連の基本情報技術者 用語集

ほかの分野もあわせて学習すると、試験範囲を効率よくカバーできます。各分野の基本情報技術者 用語集は以下からアクセスできます。

試験の詳細や最新情報はIPA公式サイト(基本情報技術者試験)をご確認ください。

コメント

タイトルとURLをコピーしました