データベースの用語
全192語。
LIKE で、任意の1文字を表す記号。
⚠ % は0文字以上の任意の長さ。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
LIKE で、0文字以上の任意の文字列を表す記号。
⚠ _ はちょうど1文字。前に付ければ後方一致、後ろに付ければ前方一致、両側なら部分一致。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
分散データベースで、全サイトに確定できるかを問い合わせ、全サイトが可能な場合だけ一斉に確定する方式。
⚠ 2相ロック(ロックの取り方)や排他制御と混同させる選択肢が出る。「全サイトに確定可否を問い合わせる」なら 2相コミット。
トランザクションと排他制御(ロック・デッドロック)
複数のDBにまたがるトランザクションを、準備確認と確定の2段階で行い、全部確定か全部取消しにそろえる方式。
⚠ 目的は分散DBの整合性で、通信負荷の軽減ではない。
プログラムからのDB利用とクエリ処理
ロックを取る段階と外す段階を分け、一度外し始めたら新しいロックを取らない排他制御の方式。
⚠ 2相コミットは分散 DB で確定をそろえる方式。2相ロックでもデッドロックは起こり得る。
トランザクションと排他制御(ロック・デッドロック)
スキーマを外部・概念・内部の3層に分け、ある層の変更がほかの層やアプリに影響しないようにする構造。
⚠ 「物理スキーマ」という層はない。
関係データベースの基本とスキーマ
トランザクションが満たすべき原子性・一貫性・独立性・耐久性の 4 つの性質。
⚠ 関数従属性(正規化の話)やデータ独立性(スキーマ構造の話)はトランザクションの性質ではない。
トランザクションと排他制御(ロック・デッドロック)
両方の条件が真のときだけ真になる結合で、行を絞り込む。
⚠ OR と逆。「どの〜も」「すべて」は AND。AND は OR より先に計算される。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
分散ファイルシステム(HDFS)と MapReduce により、大規模データを多数のサーバで分散して保存・処理する OSS。
⚠ Spark(インメモリ処理)、Kafka(メッセージング)、Storm(ストリーム処理)と区別する。「分散ファイルシステム+MapReduce」なら Hadoop。
データ分析基盤とNoSQL
SELECT で出す列や集計値に、表示用の名前を付ける指定。
SQLの集計(集計関数・GROUP BY・HAVING)
ORDER BY で指定する並び順で、ASC は昇順(小さい順)、DESC は降順(大きい順)。
⚠ 何も書かなければ ASC になる。
SQLの集計(集計関数・GROUP BY・HAVING)
指定した列の値の平均(合計÷件数)を返す関数。
SQLの集計(集計関数・GROUP BY・HAVING)
データを葉にだけ持ち、葉どうしを順につないだB木の一種で、1件の検索も範囲検索も得意。
⚠ ハッシュは等価検索専用。範囲・前方一致・並べ替えはB+木。
インデックス・格納方式と性能
値が下限以上・上限以下の範囲に入れば真になる述語で、両端を含む。
⚠ IN は列挙した値だけが対象。BETWEEN は間の値(例:M003)も含む。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
1つのノードが多くの子を持ち、ノードの分割と併合ですべての葉の深さをそろえる平衡木。
⚠ 「キー値から関数で格納位置を求める」はハッシュ法の説明。
インデックス・格納方式と性能
WHEN の条件によって、出力する値を切り替える式。
⚠ WHERE と違って、行を減らさない。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
使い終わったカーソルを閉じ、検索結果を解放する操作。
プログラムからのDB利用とクエリ処理
条件に合う行の数を返す関数で、列の値の大きさには関係しない。
⚠ SUM(値の合計)と混同しやすい。COUNT は行数、SUM は中身の数値の合計。
SQLの集計(集計関数・GROUP BY・HAVING)
指定した列が NULL でない行だけを数える関数。
⚠ COUNT(*) は NULL の行も含めて全部の行を数える。
SQLの集計(集計関数・GROUP BY・HAVING)
CREATE VIEW ビュー名 AS SELECT 文 の形でビューを定義する DDL の文。
⚠ AS の後ろは必ず SELECT。INSERT や GRANT は入らない。
ビューと権限の付与
権限の付与や取消しを行う SQL の分類で、GRANT と REVOKE が該当する。
⚠ DDL(構造の定義)と取り違えやすい。権限なら DCL。
ビューと権限の付与
表やビューなどの構造を定義する SQL の分類で、CREATE や DROP が該当する。
⚠ DML は中身の操作、DCL は権限の制御。
ビューと権限の付与
エンティティとその間のリレーションシップを図にした、データモデルの描き方。
⚠ UMLクラス図と目的は同じ。汎化(白抜き三角)が出てくればUML。
データモデリング(E-R図・UMLの多重度)
副問合せが1行以上返せば真になるのが EXISTS、0行なら真になるのが NOT EXISTS。
⚠ NOT EXISTS(相関あり)は NOT IN と同じ結果。相関条件が無いと絞り込めない。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
カーソルを次の行に進め、その行の値をホスト変数に取り出す操作で、取り出した行がカレント行になる。
⚠ 「取り出してから次へ進む」ではない。進めてから取り出すので、FETCH後のカーソルは取り出した行を指している。
プログラムからのDB利用とクエリ処理
利用者に表やビューへの問合せ・更新・追加・削除などの操作権限を与える DCL の文。
⚠ 接続(CONNECT)・認証(パスワード)・暗号化・ビュー作成の説明は GRANT ではない。
ビューと権限の付与
指定した列の値(複数指定ならその組み合わせ)が同じ行を1つのグループにまとめる句。
⚠ ORDER BY は並べ替えるだけで、行をまとめない。
SQLの集計(集計関数・GROUP BY・HAVING)
GROUP BY でまとめた後のグループを、集計値などの条件で絞り込む句。
⚠ WHERE は集計前に1行ずつ絞る。集計関数を条件に使うなら HAVING。
SQLの集計(集計関数・GROUP BY・HAVING)
多数のサーバのディスクを1つの大きなファイルシステムとして扱う、Hadoop の分散ファイルシステム。
データ分析基盤とNoSQL
列の値が、一覧または副問合せの結果のどれかに等しければ真になる述語。
⚠ = を OR でつないだものと等価。AND や BETWEEN とは異なる。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
2つの SELECT 結果の両方に含まれる行だけを返す集合演算。
⚠ UNION は和集合(どちらかに含まれる行)。同じ列に異なる値を求める INTERSECT は0行になる。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
Javaのプログラムを再利用しやすい部品として作るための仕様。
⚠ DBアクセスのAPIではない。DBならJDBC。
プログラムからのDB利用とクエリ処理
Javaのプログラムからデータベースにアクセスするための標準API。
⚠ JVM(実行環境)、JavaBeans(部品化の仕様)、Javaアプレット(ブラウザで動くプログラム)、SQL(DB言語)と混ぜて出る。「Java+DBアクセス」ならJDBC。
プログラムからのDB利用とクエリ処理
Javaのプログラムを実行する仮想マシン。
⚠ JDBCと取り違えやすい。JVMは「動かす土台」、JDBCは「DBにつなぐ窓口」。
プログラムからのDB利用とクエリ処理
% や _ を使い、文字列が指定したパターンに当てはまるかを判定する述語。
⚠ = は完全一致。LIKE でも % を付けなければ完全一致と同じになる。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
処理を多数のサーバに分けて実行する Map と、その結果を集約する Reduce の2段階で、大量データを並列処理する方式。
データ分析基盤とNoSQL
指定した列の最大値/最小値を返す関数。
SQLの集計(集計関数・GROUP BY・HAVING)
行と列の表で管理する関係データベース以外のデータベースの総称で、大量のデータを分散して扱いやすい。
⚠ 「行と列の2次元の表・集合論」は関係データベースの説明なので、NoSQL の選択肢ではない。
データ分析基盤とNoSQL
条件の真と偽を反転させる演算子。
⚠ NOT (A AND B) は「両方真ではない」で、「両方偽」ではない。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
列の値が、一覧または副問合せの結果のどれとも等しくなければ真になる述語。
⚠ 相関副問合せを使った NOT EXISTS と等価(NULL が含まれる場合は厳密には異なる)。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
値が入っていない・決まっていないことを表す特別な状態。
⚠ 0 や空文字とは別物。NULL との比較(>= など)は成り立たないので、WHERE の条件に当てはまらない。
主キー・外部キーと整合性制約
値が入っていないことを表す特別な状態で、0や空文字とは別のもの。
⚠ 0 とは違う。COUNT(列) や AVG は NULL の行を計算に入れない。
SQLの集計(集計関数・GROUP BY・HAVING)
カーソルに対応するSELECTを実行し、カーソルを結果の最初の行の手前に置く操作。
⚠ OPEN直後はまだどの行も指していない。行を指すのはFETCHの後。
プログラムからのDB利用とクエリ処理
どちらかの条件が真なら真になる結合で、残る行を広げる。
⚠ AND と取り違えると条件がゆるくなりすぎる。同じ列の = を OR でつなぐと IN と同じになる。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
結果の行を指定した列の順に並べ替える句で、既定は昇順。
⚠ GROUP BY と違い、グループ化はしない。
SQLの集計(集計関数・GROUP BY・HAVING)
ソースコードが公開され、利用・改変・再配布が認められているソフトウェア。
⚠ 「無償であること」は要件ではない。有償で配布される OSS もある。
データ分析基盤とNoSQL
GRANT で与えた操作権限を取り消す DCL の文。
⚠ GRANT の逆。与えるのが GRANT、取り上げるのが REVOKE。
ビューと権限の付与
表から条件に合う行や列を取り出す DML の文。
⚠ ビュー定義の中身になる文。INSERT(行の追加)と取り違えない。
ビューと権限の付与
指定した列の値の合計を返す関数。
⚠ COUNT と区別する。数量3の行は SUM では3、COUNT では1と数える。
SQLの集計(集計関数・GROUP BY・HAVING)
システムの構造や振る舞いを図で表すための、標準化された記法の集まり。
データモデリング(E-R図・UMLの多重度)
UPDATEやDELETEで、カーソルが指しているカレント行(直前にFETCHした行)だけを対象にする指定。
プログラムからのDB利用とクエリ処理
グループ化の前に、表の行を1行ずつ条件で絞り込む句。
⚠ HAVING と違い、集計関数を書けない。
SQLの集計(集計関数・GROUP BY・HAVING)
表の各行に条件を当てはめ、真になった行だけを残す SQL の部分。
⚠ HAVING句はグループ化した後の集計結果に条件を付ける。行を絞るなら WHERE。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
利用者ごとに、どの表やビューにどの操作を許すかの設定。
⚠ ビューの権限は元の表の権限と別。ビューの SELECT 権限だけでビューに問合せできる。
ビューと権限の付与
列の値からデータの格納位置へ直接たどれるようにし、検索を速くする仕組み。
⚠ 外部キー制約(別の表との値の一致)や一意制約(重複禁止)とは目的が違う。インデックスの目的は検索速度。
インデックス・格納方式と性能
システム障害の後、最新のチェックポイントまで戻り、ログを使ってDBを回復して再始動する方式。
⚠ コールドスタートはチェックポイントを使わず、システムを初期状態から立ち上げ直す方式。
障害回復(ログ・ロールバック・ロールフォワード)
データとして管理する対象のまとまり(商品・社員・発注など)で、E-R図では箱で描く。
⚠ UMLではクラスと呼ぶ。E-R図ではエンティティ、UMLではクラスと覚える。
データモデリング(E-R図・UMLの多重度)
SQL文を実行するとき、索引の使い方や結合の順番などを比べ、効率の良いアクセス経路を選ぶRDBMSの機能。
⚠ ガーベジコレクション(メモリ回収)、クラスタリング(データの物理配置)、マージソート(整列法)と並べて出る。「アクセス経路の選択」ならオプティマイザ。
プログラムからのDB利用とクエリ処理
検索結果の複数行の表の上で、いまどの行を指しているかを示し、1行ずつプログラムに渡すための仕組み。
⚠ テーブル・ビュー・スキーマと並べて出る。OPEN/FETCH/CLOSE/WHERE CURRENT OF の対象になるのはカーソルだけ。
プログラムからのDB利用とクエリ処理
1対1・1対多・多対多といった、対応する個数の関係のこと。
⚠ 多重度と同じ意味で使われることが多い。試験ではほぼ同義と考えてよい。
データモデリング(E-R図・UMLの多重度)
プログラムが使わなくなったメモリ領域を自動で回収する機能。
⚠ DBのアクセス経路選択とは無関係。
プログラムからのDB利用とクエリ処理
保存したいデータ(値)と、それを一意に識別するキーを組にして保存する NoSQL の方式。
⚠ ドキュメント型は「JSON などのドキュメント」、列指向型は「キーごとに任意個数の列」。「キーと値の組」だけならキーバリュー型。
データ分析基盤とNoSQL
UMLの図の1つで、クラスと、その属性・関連・多重度を表す。
⚠ E-R図との違いは、汎化や関連クラスを描けること。
データモデリング(E-R図・UMLの多重度)
データとデータのつながりを、ノード(点)・リレーションシップ(線)・プロパティ(属性)で管理する NoSQL の方式。
⚠ 関係データベースの「表同士の関係性(リレーション)」と混同しやすい。「ノード」が出てきたらグラフ型。
データ分析基盤とNoSQL
複数のトランザクションのコミット時のログ書込みをまとめて1回で行い、ディスク書込みの回数を減らす方式。
⚠ 減らすのはディスクへの書込み回数で、クライアントとサーバ間の通信量ではない。
プログラムからのDB利用とクエリ処理
GROUP BY に書いた列のことで、SELECT ではこの列か集計関数の結果だけを表示できる。
⚠ グループ化列に学生番号などを足すと、グループが細かくなりすぎて集計の意味が変わる。
SQLの集計(集計関数・GROUP BY・HAVING)
最適化で決めた実行計画を、実際に実行できる手続きに変換する処理。
⚠ 最適化と順番を入れ替えるひっかけが多い。実行計画が決まってから作るので、最適化の後。
プログラムからのDB利用とクエリ処理
チェックポイントの情報を使わず、システムを初期状態から立ち上げ直す再始動方式。
⚠ 「チェックポイントまで戻ってログで回復」はウォームスタートの説明。
障害回復(ログ・ロールバック・ロールフォワード)
トランザクションの更新内容を確定させる操作。
⚠ ロールバックは取り消し。「更新結果を確定するためにロールバック」は誤り。
トランザクションと排他制御(ロック・デッドロック)
トランザクションの更新を確定させること。
⚠ コミットは回復操作ではない。「バックアップとログで回復する操作」を問われたら、答えはロールフォワード。
障害回復(ログ・ロールバック・ロールフォワード)
停電やOSのダウンなどでシステムが止まり、主記憶上のバッファの内容が失われる障害。
⚠ チェックポイントから、完了したトランザクションはロールフォワード、未完了のトランザクションはロールバックで回復する。
障害回復(ログ・ロールバック・ロールフォワード)
ログファイルの別名で、DBの更新記録のこと。
障害回復(ログ・ロールバック・ロールフォワード)
汎化で、共通の性質を持つ上位のクラスがスーパークラス、その一種である下位のクラスがサブクラス。
⚠ 三角の矢印が向いている側がスーパークラス。
データモデリング(E-R図・UMLの多重度)
データの性質・形式・他データとの関連などを定めたデータ定義の集合。
⚠ 仮想的な表ならビュー、操作の総称ならDML、制約の総称なら整合性制約。
関係データベースの基本とスキーマ
よく使う一連のSQL処理をDBMSに登録しておき、クライアントからは呼び出すだけで実行できるようにしたもの。
⚠ 2相コミットメントやグループコミットメントと並べて出る。「あらかじめDBMSに格納」「通信量・ネットワーク負荷の削減」ならストアドプロシージャ。
プログラムからのDB利用とクエリ処理
結合する列で両方の表を並べ替え、先頭から順に突き合わせて結合する方式。
⚠ ハッシュ表を作るのはハッシュ結合。片方を順に読みもう片方と照合するのはネストループ結合。インデックスを引くのはインデックスを使う結合。
インデックス・格納方式と性能
表の「行」のこと(1件のデータ)。
⚠ 属性(列)とは向きが違う。
関係代数と結合・集合演算
関係の中の1件分のデータで、表の「行」に当たる。
⚠ 関係モデルではタプルは重複しないが、実装の行は重複し得る。
関係データベースの基本とスキーマ
DBの内容をそのまま別の媒体に書き出した複写で、バックアップの取り方の一つ。
⚠ 更新の記録ではないので、「更新前後の値」を問われたらダンプは誤り。
障害回復(ログ・ロールバック・ロールフォワード)
バッファの更新内容を定期的にDBへ書き出し、その時点をログに記録して、回復時間を短くする処理。
⚠ ダンプ(DBの複写)やロールフォワード(回復処理そのもの)と混同しやすい。「定期的に書き出す」「回復時間の短縮」ならチェックポイント。
障害回復(ログ・ロールバック・ロールフォワード)
チェックポイントの時点を示すためにログに書き込む印。
⚠ バッファをDBに書き出し終えてから記録する。順番を入れ替えた選択肢に注意。
障害回復(ログ・ロールバック・ロールフォワード)
組織のデータを資源として捉え、重複をなくしたり一元管理したりする管理活動。
⚠ データウェアハウスは分析用のデータベースそのもの。こちらはデータを管理する「活動」。
データ分析基盤とNoSQL
複数の業務システムから集めた大量のデータを整理・統合して時系列で蓄積し、意思決定支援のための分析に使うデータベース。
⚠ データマイニングと混同しやすい。ウェアハウスは「ためる倉庫」、マイニングは「中身から法則を掘り出す作業」。
データ分析基盤とNoSQL
DBMSが管理するデータ・利用者・プログラムの定義情報と、それらの関係を保持するデータの集合体。
⚠ データウェアハウス(分析用の蓄積)、データマート(部門向けの切り出し)、データマイニング(分析手法)。
関係データベースの基本とスキーマ
データの項目名・型・桁数・意味などの定義情報をまとめて管理するもの。
⚠ メタデータと近い。どちらも「データの定義・説明」であり、蓄積や分析の仕組みではない。
データ分析基盤とNoSQL
データベースの設計・保守・運用の監視・障害からの回復を担当する役割。
⚠ アプリ作成は開発者、受入検査は発注側、要員配置はプロジェクトマネージャ。
関係データベースの基本とスキーマ
大量のデータから統計学的手法などで、まだ知られていない傾向・パターン・関係を見つけ出すこと。
⚠ データウェアハウスと混同しやすい。「見つけ出す」「新たな知識」とあればマイニング。
データ分析基盤とNoSQL
複数のトランザクションが互いに相手のロックしている資源を待ち合い、どれも進めなくなる状態。
⚠ 単に 1 つが待たされるだけの競合はデッドロックではない。待ちが輪になっているのが条件。
トランザクションと排他制御(ロック・デッドロック)
1件のデータを JSON や XML などのドキュメントとして保存し、ドキュメントごとに構造を自由に変えられる NoSQL の方式。
⚠ キーバリュー型と区別する。「ドキュメント」「データ構造が自由」がキーワード。
データ分析基盤とNoSQL
あるデータ項目が取り得る値の範囲や種類。
⚠ データ型(数値型・日付型など)とは別。命名規約で型はそろえられるが、ドメインはそろえられない。
主キー・外部キーと整合性制約
データベースに対する一連の処理を、まとめて 1 単位として扱うもの。
トランザクションと排他制御(ロック・デッドロック)
一方の表の行を1行ずつ読み、その行ごとにもう一方の表と照合して結合する方式。
⚠ 並べ替えをしない点でソートマージ結合と区別する。
インデックス・格納方式と性能
ある時点のDBの内容を、別の媒体にまるごと複写して保存したファイル。
⚠ ログファイルは更新の記録。媒体障害ではバックアップとログの両方を使う。
障害回復(ログ・ロールバック・ロールフォワード)
キー値をハッシュ関数で計算して格納位置を求めるインデックスで、「=」による等価検索に強い。
⚠ B+木と違い値の並び順を保たないので、範囲検索・前方一致には使えない。
インデックス・格納方式と性能
キー値を決まった計算で格納番地などの値に変換する関数。
インデックス・格納方式と性能
一方の表の結合列でハッシュ表を作り、もう一方の表の値でそのハッシュ表を引いて結合する方式。
⚠ 「ハッシュ表を作成」という語があればこれ。
インデックス・格納方式と性能
再生や処理が途切れないように、あらかじめデータを一時的にためておくこと。
データ分析基盤とNoSQL
量が膨大で種類も多様なため、従来の方法では扱いきれないデータの総称。
データ分析基盤とNoSQL
列の値ごとに、各行がその値に該当するかを0/1の並びで持つインデックスで、値の種類が少ない列に向く。
⚠ 格納位置を計算しないので衝突は起こらない。
インデックス・格納方式と性能
実在する表から関係演算で導出した、利用者の視点による仮想的な表。
⚠ スキーマ(データ定義の集合)の選択肢に混ぜられる。
関係データベースの基本とスキーマ
基底表への問合せ結果に名前を付けて定義した仮想的な表で、データ自体は持たない。
⚠ 実表のコピーとは違う。コピーはデータを持つが、ビューは開くたびに元の表から作り直される。
ビューと権限の付与
すべての関数従属の決める側が候補キーになっている、第3正規形より厳しい正規形。
⚠ 選択肢に出ても、繰返し項目の除去や推移的関数従属の解消の答えにはならない。
関数従属と正規化(第1〜第3正規形)
埋込みSQLで、SQLとプログラムの間で値を受け渡すためのプログラム側の変数で、SQL文中では先頭にコロン(:)を付けて書く。
プログラムからのDB利用とクエリ処理
同じデータを常に別のディスクや別のサイトにも書き込んでおく方式。
⚠ ログファイルの説明の問題で、誤りの選択肢として出る。
障害回復(ログ・ロールバック・ロールフォワード)
データそのものではなく、そのデータの形式・作成日・意味などを説明するデータ。
⚠ データディクショナリはメタデータを管理する辞書にあたる。データウェアハウスやマイニングの選択肢と区別する。
データ分析基盤とNoSQL
エンティティ同士のつながりで、図では線で描く。
⚠ 関係データベースの「関係(リレーション)」は表そのものを指すので別物。
データモデリング(E-R図・UMLの多重度)
失敗したトランザクションの更新を取り消し、実行前の状態に戻すこと。
⚠ アクセス効率の維持とは無関係。性能維持は再編成。
インデックス・格納方式と性能
トランザクションの更新を取り消して、開始前の状態に戻す操作。デッドロックの解消にも使う。
⚠ ロールフォワードは障害後にログを反映して復元すること。取り消し=ロールバック、やり直し=ロールフォワード。
トランザクションと排他制御(ロック・デッドロック)
更新前ジャーナルを使って、失敗したトランザクションの更新を取り消し、開始直前の状態に戻す処理。
⚠ ロールフォワードは更新後ジャーナルを使い、障害直前の状態まで進める処理。
障害回復(ログ・ロールバック・ロールフォワード)
媒体障害のとき、バックアップに更新後のログを順に反映して、障害直前の状態まで復元する操作。
⚠ 異常終了したトランザクションの取り消しやデッドロックの解消はロールバック。
トランザクションと排他制御(ロック・デッドロック)
バックアップなどの状態に、ログの更新後情報を反映して、障害直前の状態まで再現する処理。
⚠ ロールバックは更新前情報で取り消す処理。「媒体障害」「完了済みのトランザクション」ならロールフォワード。
障害回復(ログ・ロールバック・ロールフォワード)
DBを更新するたびに、更新前と更新後の値を書き残しておく更新記録のファイル。
⚠ バックアップ・ダンプはある時点の写しで、更新の記録ではない。「更新前後の値」と書かれていればログファイル。
障害回復(ログ・ロールバック・ロールフォワード)
1 回のロックで鍵をかけるデータの範囲の大きさ(表・ページ・行など)。
⚠ 大きいと待ちが増えて並行性が下がるがロック数は少ない。小さいと待ちは減るがロック数と管理メモリが増える。
トランザクションと排他制御(ロック・デッドロック)
異音同義語は名前が違うのに意味が同じ項目、同音異義語は名前が同じなのに意味が違う項目。
⚠ どちらも項目名と意味を登録した辞書で防げる。命名規約で防げないのは値の範囲。
主キー・外部キーと整合性制約
指定した列(または列の組)の値が重複しないことを保証する制約。
⚠ 主キー制約と違って NULL を入れられ、NULL を含む組は重複とみなされない。
主キー・外部キーと整合性制約
トランザクションの前後で、データの整合性(決められたルール)が保たれる性質。
⚠ 整合性制約(主キーなどのルールそのもの)とは別。一貫性はトランザクションが守る性質の名前。
トランザクションと排他制御(ロック・デッドロック)
どの値も同じ確率で現れる分布で、ハッシュ値がこれに近いほど衝突が起きにくい。
⚠ 正規・ポアソン・二項・幾何分布は値が偏るので、ハッシュ値の理想ではない。
インデックス・格納方式と性能
NOT → AND → OR の順に計算されるという決まり。
⚠ 括弧の無い X OR Y AND Z は X OR (Y AND Z) と解釈される。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
他の表の主キーの値を持ち、その表の行を参照する列。
⚠ 主キーと違い、外部キーは同じ値が何度出てきてもよい。
主キー・外部キーと整合性制約
他の表の主キーを参照する属性で、分解した表どうしをつなぐもの。
⚠ 分解のときに外部キーを元の表から消すと、表を結合できなくなる。これが分解問題の典型的なひっかけ。
関数従属と正規化(第1〜第3正規形)
利用者やアプリケーションから見たデータの見え方を定義したもの。
⚠ 論理構造全体は概念スキーマ。
関係データベースの基本とスキーマ
相手の見つからない行も残し、相手側の列を NULL にする結合。
⚠ FROM A, B WHERE … の形は内部結合なので、NULL 行は出ない。
関係代数と結合・集合演算
データベース全体の論理的な構造を定義したもの。
⚠ 「物理的関係を表す」とあれば誤り(それは内部スキーマ)。
関係データベースの基本とスキーマ
格納方式に関係なく、業務で扱うデータとその関係を表したモデル。
⚠ 物理データモデル(どう格納するか)は後の工程で作る。先に物理を考えるのは誤り。
データモデリング(E-R図・UMLの多重度)
Yが複合キー全体で初めて決まり、キーの一部だけでは決まらない従属。
⚠ 部分関数従属は、キーの一部だけでYが決まる場合。
関数従属と正規化(第1〜第3正規形)
関係データベースでの「表」のこと。
関係代数と結合・集合演算
関係モデルでのデータのまとまりで、関係データベースの「表」に当たる。
⚠ タプルは1行、属性は1列。関係は表全体。
関係データベースの基本とスキーマ
データを行と列からなる2次元の表で表して管理するデータベース。
⚠ ポインタで結ぶのは階層型・ネットワーク型、タグはXML、カプセル化はオブジェクト指向DB。
関係データベースの基本とスキーマ
Xの値が決まるとYの値がただ1つに決まる関係で、X → Y と書く。
⚠ 表の値で判定するときは、同じXでYが違う行が1つでもあれば不成立。
関数従属と正規化(第1〜第3正規形)
関連そのものに属性(金額など)を持たせるために、関連の線にぶら下げるクラス。
⚠ E-R図で言えば連関エンティティにあたる。
データモデリング(E-R図・UMLの多重度)
許されていない人にデータを見せたり変えさせたりしないこと。DBMS の機能ではアクセス権限の管理で実現する。
⚠ 整合性(データの矛盾を防ぐこと)と混同しない。
ビューと権限の付与
読み取り時にかけるロック。他の共有ロックとは両立するが、専有ロックとは両立しない。
⚠ 専有ロックはどのロックとも両立しない。○ になるのは共有×共有だけ。
トランザクションと排他制御(ロック・デッドロック)
共通の列の値が等しい行どうしをつないで、1つの表にする演算。
⚠ 直積は条件なしの総当たり。結合は直積に「キーが等しい」という条件を付けたもの。
関係代数と結合・集合演算
列の値が指定した条件(範囲など)を満たすことを保証する制約。
⚠ 参照制約は他の表との関係を見るが、検査制約は自分の表の値の条件だけを見る。
主キー・外部キーと整合性制約
トランザクション内の処理は、全部実行されるか全部取り消されるかのどちらかになる性質。
⚠ 「障害後も残る」は耐久性、「他の影響を受けない」は独立性。「全部か無か」なら原子性。
トランザクションと排他制御(ロック・デッドロック)
行を1つに特定できる最小限の列の組で、主キーにできる候補になるもの。
⚠ 候補キーの中から1つ選んだものが主キー。
主キー・外部キーと整合性制約
表の行を1つに特定できる、最小の属性の組。
⚠ 主キーは、候補キーの中から1つ選んだもの。
関数従属と正規化(第1〜第3正規形)
同時に読んだ古い値から計算した結果で上書きし合い、片方の更新が消えてしまう現象。
トランザクションと排他制御(ロック・デッドロック)
更新した後の値の記録で、ロールフォワードで更新を反映し直すときに使う。
⚠ 更新前ジャーナルはロールバックで使う。「後=積み直し(フォワード)」と結びつける。
障害回復(ログ・ロールバック・ロールフォワード)
冗長な表で、挿入・修正・削除のときに登録できない・矛盾する・消えすぎるといった不具合が起きること。
⚠ 「整合性制約」は異状を防ぐためのルール。正規化で整合性制約を排除するわけではない。
関数従属と正規化(第1〜第3正規形)
更新される前の値の記録で、ロールバックで更新を取り消すときに使う。
⚠ 更新後ジャーナルはロールフォワードで使う。「前=取り消し(バック)」と結びつける。
障害回復(ログ・ロールバック・ロールフォワード)
SQL文の文法や表名・列名の正しさを調べ、DBMSが扱える内部の形に分解する処理。
⚠ クエリ処理の最初の段階。最適化やコード生成より前。
プログラムからのDB利用とクエリ処理
一方の表にあって、もう一方には無い行を取る演算で、SQL では EXCEPT。
⚠ R−S と S−R は結果が違う(向きがある)。
関係代数と結合・集合演算
更新の繰返しで乱れた格納状態を、データを取り出して詰め直すことで整え、アクセス効率を回復する処理。
⚠ バックアップ・ダンプは障害対策、ロールバックはトランザクションの取消しで、性能回復ではない。
インデックス・格納方式と性能
外部キーの値が、参照先の表の主キーに存在することを保証する制約で、FOREIGN KEY と REFERENCES で指定する。
⚠ キー制約(PRIMARY KEY・UNIQUE)や検査制約(CHECK)と、SQL のキーワードで見分ける。
主キー・外部キーと整合性制約
外部キーが参照先の表に存在する値だけを持つように制限する整合性制約。
⚠ 更新権限を与える仕組みではない。権限は GRANT。
ビューと権限の付与
子表の外部キーが、親表に存在する行だけを指している状態。
⚠ 外部キーの目的はこれだけ。高速化・障害復旧・虫食い防止は無関係。
主キー・外部キーと整合性制約
同じ名前の列で結合し、その列を1本にまとめる結合。
関係代数と結合・集合演算
CREATE TABLE で定義され、データを実際に格納している表。
⚠ ビュー(仮想表)と対になる。ビューの元になる側が基底表。
ビューと権限の付与
表から指定した列だけを取り出す演算。
⚠ 選択は行を取る演算。列が減ったら射影。
関係代数と結合・集合演算
仕訳の左側の欄で、資産の増加や費用の発生を書く。
⚠ 貸方と逆に覚えやすい。「現金が入ったら借方」と例で覚える。
データモデリング(E-R図・UMLの多重度)
表の中の1行を1つに特定するための列(または列の組み合わせ)で、値の重複と NULL が許されない。
⚠ 一意性制約(UNIQUE)とは、NULL を入れられない点が違う。
主キー・外部キーと整合性制約
主キー列について、値が重複しないことと NULL でないことを保証する制約。
⚠ 一意性制約と合わせて「キー制約」と呼ぶ。参照制約とは別。
主キー・外部キーと整合性制約
複数の行の値をまとめて1つの値(件数・合計・平均・最大・最小)にする関数。
SQLの集計(集計関数・GROUP BY・HAVING)
関係代数の割り算にあたる演算(記号÷)。
⚠ R−(R−S) の答えにはならない。
関係代数と結合・集合演算
異なるキー値が同じハッシュ値になることで、同じ値になったキーどうしをシノニムと呼ぶ。
⚠ 衝突が起こりうるのは格納位置を計算するハッシュだけ。B+木・転置・ビットマップでは起こらない。
インデックス・格納方式と性能
同じ事実が複数の行や表に重複して記録されている状態。
関数従属と正規化(第1〜第3正規形)
参照される側の表を親表、外部キーを持って参照する側の表を子表と呼ぶ。
⚠ 新しく入力するのは親表が先。削除で問題になるのは、参照されている親表の行。
主キー・外部キーと整合性制約
A → B かつ B → C が成り立ち、B → A は成り立たないときの A → C の従属。
⚠ 部分関数従属と混同しやすい。中継役のBが非キー属性なら推移的関数従属。
関数従属と正規化(第1〜第3正規形)
データに矛盾や欠けがない状態を保つこと。トランザクション管理・参照制約・排他制御が担う。
⚠ 機密保護とは別の目的。「機密保護の手段」の問題ではひっかけ側に並ぶ。
ビューと権限の付与
データの重複がなくなるように表を分け、更新時異状を防ぐ設計作業。
⚠ 目的は「検索の高速化」や「記憶容量の削減」ではない。結合が増えるので、検索はむしろ遅くなることもある。
関数従属と正規化(第1〜第3正規形)
両方の表にある行だけを取る演算で、SQL では INTERSECT。R−(R−S) と同じ結果になる。
⚠ 直積(×)とは別物。積∩は「両方にある行」、直積は「総当たり」。
関係代数と結合・集合演算
更新中のデータに他の処理が読み書きできないようにかける鍵で、排他制御の一つ。
⚠ 同時更新でデータが壊れるのを防ぐ整合性の機能で、機密保護ではない。
ビューと権限の付与
更新時にかけるロック。かかっている間、他のトランザクションは共有ロックも専有ロックも取れない。
⚠ 「専有ロック中でも共有ロックなら取れる」は誤り。
トランザクションと排他制御(ロック・デッドロック)
表から条件に合う行だけを取り出す演算。
⚠ 射影は列を取る演算。SQL の SELECT 句は射影、WHERE 句が選択にあたるので名前にだまされない。
関係代数と結合・集合演算
条件に合うデータを探すために、表の全レコードを先頭から順に読むこと。
⚠ インデックスを使えば読む件数を減らせる。領域の拡張では読む件数は減らない。
インデックス・格納方式と性能
外側の表の列を参照し、外側の1行ごとに実行し直す副問合せ。
⚠ 相関条件の無い副問合せは1回だけ実行され、全行に同じ結果を返す。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
関係の項目で、表の「列」に当たり、名前で区別され並び順に意味はない。
⚠ 列も同じく順序に意味はない。同名の属性・無名の属性は作れない。
関係データベースの基本とスキーマ
表の「列」のこと。
⚠ タプル(行)と取り違えない。縦が属性、横がタプル。
関係代数と結合・集合演算
関連の線の端に書く数で、その側の箱が相手1つあたりいくつ対応するかの範囲を表す。
⚠ どちらの端の数字かを取り違えやすい。「調べたい側の横の数字」を読む。
データモデリング(E-R図・UMLの多重度)
コミットした更新結果は、その後に障害が起きても失われない性質。
⚠ 原子性は「途中で止まったら取り消す」話、耐久性は「確定後に残る」話。
トランザクションと排他制御(ロック・デッドロック)
仕訳の右側の欄で、資産の減少や収益の発生(負債・純資産の増加)を書く。
⚠ 売上は貸方。1取引の借方合計と貸方合計は必ず一致する。
データモデリング(E-R図・UMLの多重度)
各マスに値が1つだけ入り、繰返し項目がない表。
⚠ 繰返し項目を除いただけで満たすのは第1正規形まで。第2・第3正規形は従属関係の条件も必要。
関数従属と正規化(第1〜第3正規形)
第1正規形で、さらに部分関数従属がない(非キー属性が候補キー全体に完全関数従属する)表。
⚠ 第3正規形は、さらに推移的関数従属もない表。
関数従属と正規化(第1〜第3正規形)
第2正規形で、さらに非キー属性の推移的関数従属がない表。
⚠ ボイス・コッド正規形は、すべての関数従属の出発点が候補キーという、より厳しい形。
関数従属と正規化(第1〜第3正規形)
2つの表の全行どうしを総当たりで組み合わせる演算(m行×n行になる)。
⚠ SQL では条件なしの SELECT * FROM R, S。UNION(和)とは別物。
関係代数と結合・集合演算
2つの表の全行同士を組み合わせた表で、FROM に表を並べて結合条件を書かないとこうなる。
⚠ 結合(内部結合)は、直積から結合条件を満たす組合せだけを残したもの。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
キー値をハッシュなどで番地に変換し、その位置にレコードを置くファイル編成。
⚠ 順編成は先頭から順に読むだけ。区分編成は登録簿とメンバ(順編成)で構成。
インデックス・格納方式と性能
ある属性が取り得る値の集合。
⚠ 実現値は実際に入っている値。文字型・文字列型に限られない。
関係データベースの基本とスキーマ
DBMSの機能のうち、スキーマ(データ構造)を決める機能。
⚠ 機密保護・障害回復・保全はいずれも制御機能の仲間で、スキーマは決めない。
関係データベースの基本とスキーマ
語ごとに、その語を含む文書や行の一覧を持つインデックスで、全文検索に使う。
⚠ 格納位置を計算しないので衝突は起こらない。
インデックス・格納方式と性能
実表に何らかの問合せをして得られる表で、ビューはその一種。
⚠ 「実表の一部をコピーして別に保存した表」は誤り。保存ではなく問合せの結果。
ビューと権限の付与
同時に実行されているトランザクション同士が、互いの処理結果に影響しない性質。
⚠ データ独立性(プログラムとデータ構造を切り離す考え方)と名前が似ているが別物。
トランザクションと排他制御(ロック・デッドロック)
データをディスクにどう格納するかという物理的な構造を定義したもの。
⚠ 「論理的関係を表す」とあれば誤り(それは概念スキーマ)。
関係データベースの基本とスキーマ
両方の表に相手が見つかった行だけを残す結合。
⚠ 外部結合は相手の無い行も残し、NULL で埋める。
関係代数と結合・集合演算
1つのマスの中に複数の値や表が入っている、第1正規形を満たさない表(非正規形)。
⚠ 入れ子型の解消は第1正規形化のこと。推移的関数従属の解消(第3正規形化)とは別。
関数従属と正規化(第1〜第3正規形)
複数のトランザクションが同じデータを同時に更新しても矛盾が起きないよう、アクセスを制御する仕組み。
⚠ リカバリ制御は障害からの復旧。排他制御は性能向上やデッドロック防止が目的ではない。
トランザクションと排他制御(ロック・デッドロック)
2つの条件のどちらか一方だけが真のときに真になる論理演算。
⚠ OR は両方真でも真になる。XOR は (A OR B) AND NOT (A AND B)。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
DBが入っているディスクなどの記憶媒体そのものが壊れる障害。
⚠ システム障害はディスクが無事でバッファの中身だけが失われる障害。媒体障害ではバックアップから復元した後にロールフォワードする。
障害回復(ログ・ロールバック・ロールフォワード)
共通部分をスーパークラスにまとめ、サブクラスはその一種であるとする関係で、白抜き三角の矢印で描く。
⚠ 逆向きに見たものが特化。サブクラスはスーパークラスの関連も引き継ぐ。
データモデリング(E-R図・UMLの多重度)
どの候補キーにも含まれない属性。
⚠ 外部キーであっても、候補キーに含まれなければ非キー属性として扱う(例:受注明細の商品コード)。
関数従属と正規化(第1〜第3正規形)
複数の表にまたがる条件をデータベース全体の制約として宣言するもの。
⚠ 1つの表の値の条件を定める検査制約と区別する。
主キー・外部キーと整合性制約
音声や動画を1秒再生するのに必要なデータ量(ビット/秒)。
⚠ 通信速度(1秒にダウンロードできる量)と区別する。符号化速度で割ると再生時間、通信速度で割るとダウンロード時間。
データ分析基盤とNoSQL
非キー属性が、複合キーの一部の属性だけで決まってしまう従属。
⚠ 推移的関数従属との違いは矢印の出発点。キーの一部から出ていれば部分、非キー属性から出ていれば推移的。主キーが1属性なら部分関数従属は起こらない。
関数従属と正規化(第1〜第3正規形)
SQL 文の中に括弧で入れた別の SELECT 文で、その結果を条件などに使う。
⚠ 外側の列を参照するものは特に相関副問合せと呼ぶ。
SQLの検索条件(WHERE・LIKE・IN・EXISTS)
2つ以上の列を組み合わせて作るキー。
⚠ 「主キーは1列でなければならない」は誤り。複合キーを主キーにしてよい。
主キー・外部キーと整合性制約
データの物理的な格納構造を変えても、アプリケーションに影響が及ばない性質。
⚠ 概念スキーマの変更が外部スキーマに影響しない性質は論理データ独立性。
関係データベースの基本とスキーマ
記憶装置上のデータの格納方法を変えても、アプリケーションプログラムに影響が出ない性質。
⚠ ビューの目的として出たら誤り。ビューの目的は利用範囲の限定によるデータ保護。
ビューと権限の付与
どの葉までの深さもほぼ同じになるように保たれた木構造。
インデックス・格納方式と性能
COBOLやCなどのプログラムの中に、EXEC SQL で始まるSQL文を直接書き込む方式。
プログラムからのDB利用とクエリ処理
個々のキーに対して任意個数の列をもつ行データを管理する NoSQL の方式。
⚠ 関係データベースの「行と列の表」と混同しやすい。「キーごとに任意個数の列」がキーワード。
データ分析基盤とNoSQL
多対多の関係を、1対多と多対1に分けるために間に置くエンティティ。
⚠ 両側から「多」で指されている箱がこれにあたる。
データモデリング(E-R図・UMLの多重度)
2つの表の少なくとも一方にある行を集める演算で、SQL では UNION。
⚠ 直積(総当たり)と混同しない。和は縦に積み重ねるイメージ。
関係代数と結合・集合演算
2つの表の列の数と、対応する列の型がそろっていること。和・差・積の前提になる。
⚠ UNION でエラーになるのは、和両立でないとき(列数が違うなど)だけ。
関係代数と結合・集合演算
同じ処理を何度実行しても結果が同じになる性質。
⚠ ACID 特性には含まれない。原子性の選択肢に混ぜて出される。
トランザクションと排他制御(ロック・デッドロック)