【試験直前ッ】基本情報・応用情報の午前チートシート|データベース&プログラミング編

このコンテンツは、基本情報技術者試験・応用情報技術者試験に挑む方向けの午前チートシート(随時更新)です。

前日や試験直前に一瞬見るだけでも良いと思います。「おかげで2問解けた!見といて助かった!」となるコンテンツを目指します。

何の略語であるかをできるだけ記載しました。役立てていただけると幸いです。

他の分野は、以下からご覧ください。

【試験直前ッ】基本情報・応用情報の午前チートシート|セキュリティ編

【試験直前ッ】基本情報・応用情報の午前チートシート|ネットワーク編

【試験直前ッ】基本情報・応用情報の午前チートシート|システム編

【試験直前ッ】基本情報・応用情報の午前チートシート|テクノロジー編

【試験直前ッ】基本情報・応用情報の午前チートシート|開発・マネジメント編

データベース&プログラミング

CASCADE

データを削除したときに子表の同じ値をもつ絡むのデータもまとめて削除します。

INTERSECT

複数のSELECTの結果の積集合を得る命令です。

ロールフォワード?ロールバック?

以下のトランザクション3つにはロールバックとロールフォワードどちらの対象になるでしょうか。

1:障害回復はチェックポイントに戻って行うので、その前にコミットしている1は対象にしなくて良いです。

2:障害発生時にコミットされていないトランザクションは、ロールバックが必要です。

3:障害発生時点でコミットされているトランザクションは、ロールフォワードが必要です。

*ロールフォワードは、トランザクションログを用いて処理をやり直すものでしたが、ロールバックは更新前情報で上書きするというものでしたね。

RESTRICT

データを削除する際に小表と同じ値をもつカラムがあるとエラーになります。CASACADEとの混同に注意してください。

第2正規形や第3正規形でないと何が問題?

テーブルが第2正規形ではない時、一般的に更新時異常の問題が発生します。テーブルに更新がない場合は問題ありません。また、テーブルが第3正規形ではないとき、推移従属の変更で該当するすべての行を修正する必要があり、大変です。正しいカラムの集合を連結属性として主キーに設定する必要がある場合もあります。

データレイク

キーワードは「そのままの形」です。さまざまなデータソースの中から、データをそのままの形で必要な時に取り出せるようにしたものです。非構造データでもそのままの形で保管します。

デッドロックを解消するには

資源をお互い占有し合うことで、どちらの処理も進まなくなることをデッドロック(dead lock)と言いますが、一方のタスクの優先度を高くしても優先度の低いタスクが資源を占有している限り、タスクを実行することはできません。デッドロックを解消するには、資源の占有する順番を同じにすることです。

委譲(delegation)

あるオブジェクトに対する操作を他のオブジェクトに処理の一部を委ねることです。混同する言葉として、伝搬(propagation)がありますが、これはあるオブジェクトに対する操作を適用した時、関連するオブジェクトに対してもその操作が自動的に適用される仕組みです。

ニモニックコード(mnemonic code)

別名表意コードとも呼びます。対象物に合わせて人間がコードの意味を理解できるようにしたコードで、コードから対象物を連想することができます。人間は2進数で表された機械語の命令を理解することはできません。アセンブリ言語で使われます。

外部スキーマ

スキーマ(schema)とは、データベースで扱われるデータの構造や形式、性質、制約などの情報を記述した取扱い説明書のようなものです。そのうち外部スキーマとは、ユーザやアプリケーションなど、データベースの外側からみた場合のスキーマを指します。一方、内部スキーマは、定義されたデータをどのようにデータベースに格納するかを記述したものです。ちなみにデータの定義は概念スキーマに記述されます。

DOM(document object model)

HTML(hyper text markup language)やXML(extensible markup language)で記述されたドキュメントの一部を、タグにつけたIDを手がかりに操作するためのAPI(application programing interface)です。

JSON(javascript object notation)

javascript のオブジェクト表記法に準じた形で、データの名前と値の集まり、その配列をテキストデータとして記述するフォーマットです。可読性の高さに特徴があり、さまざまな言語でサポートされています。

{
    "ID": 1,"Name": "sakamoto","MailAddress": "ryoma@XXXX.co.jp",
    "ID": 2,"Name": "katu","MailAddress": "kaisyu@XXXX.co.jp"
}

ワイルドカード(wild card)

どのような文字や文字列にもマッチする特殊な文字のことです。SQLで使われるワイルドカードは%と_です。

%:任意の長さの文字列(0文字でもok)

_:任意の文字列(0文字はだめ。1文字以上)

ワイルドカードを使う時には、WHERE句かLIKE演算子を使う必要があります

#1990年代を表したいとき。

LIKE '199_'

丸め誤差

指定された有効桁数で演算結果を表すために切り捨て、切り上げ、四捨五入で下位の桁数が消去されると発生する誤差のこと。似た言葉として「桁落ち」がありますが、桁落ちとは、値がほぼ等しい2つの数値の差を求めたときに有効桁数が減ることによって発生する誤差のことです。

ペトリネット(petri net)

並行して進行する事象間の同期を表す図です。プレースとトランジションという2つの節点とトークンという1つの要素を持つ有向グラフで表されます。目的としては並列する処理同士の制御の流れやシステムの動作を視覚的に表したい、ということです。

図はトランジション発火の様子を表しています。まず入力プレースにトークンがあることが前提です(上段の説明)。次にトランジション発火が起きると入力プレースからトークンが取り除かれ、先のプレースに新しいトークンがおかれます。入力プレースが2つなら先のプレースに置かれるトークンも2つです。

原始プログラムからローダまで(手続型)

原始プログラムというのは、人間がプログラミング言語の文法に従って書いたコードのことです。原始プログラムは、まずコンパイルにかけられ、コンピュータで実行できる目的プログラムになります。その後、目的プログラムを処理できる配置にさせるのがリンカというプログラムです。最後に大規模なプログラムであるロードモジュールが生成されます。

コンパイルを細分化すると、字句解析→構文解析→意味解析→最適化→コード生成という手順があります。イメージとしては、まずトークンという字句レベルまで細分化した後に、構文→意味のように大きな括りで捉えていくということです。

ポリモーフィズム(polymorphism)

同じ属性とメソッドを持つ異なるオブジェクトに同じメッセージを送ったとしても、異なる結果が返ってくることを指します。多相性とも呼ばれます。オブジェクト指向型の言語(javaなど)で実現され、スーパークラスで定義されたメソッドをサブクラスで再定義すること(override)で実行されます。親クラスで定義したメソッドを、子クラスで@Overrideすれば使えるよ、というわけです。

スーパークラス(抽象クラスとも呼ぶ)で定義だけされ、サブクラス(具象クラス)で呼び出されるメソッドを純粋仮想関数(抽象関数)とも呼びます。

GCC(GNU C Compiler)

GNUプロジェクトが開発しているプログラミング言語のコンパイラです。GNUプロジェクトとは、UNIX互換のフリーソフトウェア群を開発、配布するプロジェクトの総称です。そして、GNUとはオペレーティングシステムのことです。

ランレングス法(run-length method)

連続するデータをデータの種類と連続回数として表現して、データの圧縮を行うという符号化の一種です。FAXのデータなど連続したデータが多い場合の圧縮効率に優れています。ブロックの長さに数字を割り当てています。

KVS(key value store)

読んで字の如くで、Keyとvalueという組み合わせからなる単純な構造のデータベースのことです。分散処理とスケールアウトに適しています。特徴としては、多数のデータをリアルタイムに格納して解析を行なっていくことができますが、データ間の関係が表現できない(relational databaseではない)のでトランザクション処理を代表とする複雑な処理には向いていません。

リバースエンジニアリング(reverse engineering)

通常のソフトウェア開発プロセスとは逆に、対象物を解析して、その前段階のソースやドキュメントを調査する技術です。プログラムを見て、仕様書を作ったりする行為が該当します。プログラムの外部インターフェースを維持しながら、内部のプログラムを書き換えていくリファクタリングと混同しやすいのでご注意ください。

セキュリティやネットワークなど、範囲を横断して確認したい方は【忙しい人のための】基本情報・応用情報の午前チートシート|総集編をご覧ください。

FOLLOW ME !