データベース・プログラミングについて勉強しました
データベース・プログラミングの基礎知識として、次のような項目について学習しました。
- データベース(DB: Data Base):一定の規則に従い、関連性のあるデータを蓄積している。
- データベース管理システム(DBMS: Data Base Management System):データベースを複数の利用者で共有利用できるように管理するソフトウェア
- 関係データベース(RDB: Relational Data Base):データを2次元の表形式で表す。データの集まりを行と列で表す。行が集まって表を形成する。
- 表:テーブル、行:レコード、列:項目、フィールド
- データウェアハウス:様々なデータを整理・統合して蓄積したデータベース
- データマート:データウェアハウスの一部のデータを特定の用途のために抽出したデータベース
- BI(Business Intelligence)ツール:データウェアハウスのデータを分析しやすくするためのツール
- ビッグデータ:多種多様で高頻度で更新される大量のデータ、これらを分析して新しい価値を生み出そうとする
- データマイニング:大量のデータを分析して、単なる検索だけでは発見できない規則や相関関係を導き出す技術
- キー
- 主キー:一意(ユニーク)、重複がない
- 複合キー:複数の列を組み合わせたキー
- 外部キー:他の表の主キーを参照する
- インデックス:データを検索するときに使用する
- データの正規化:2次元の表を整理して複数の表に分割すること。目的はデータの重複や矛盾を排除すること。
- 非正規形:正規化されていない表
- 第一正規形:繰り返し項目を分割する
- 第二正規形:主キーになっている項目の一部だけで決定される項目を分割する
- 第三正規形:主キー以外の項目によって決定される項目を分割する。同時に計算で求められる項目を排除する
- 論理演算:データ抽出に使用
- 論理和(OR):少なくとも一方が1ならば1
- 論理積(AND):両方が1ならば1
- 否定(NOT):0ならば1,1ならば0
- 排他的論理和(EORまたはXOR):異なれば1
- 整列(ソート):データをある特定の規則に従って並べ替えること。
- 昇順(小さい順)、降順(大きい順)
- 整列キー(ソートキー):整列するときの基準となる項目
- 排他制御:データの不整合を防ぐために、処理中のデータに対して他からのアクセスを制御する機能
- ロック:データへのアクセスを制限すること
- デッドロック:複数の処理がお互いに相手の処理がロックしているデータの解除を待ち続ける状態
- 障害回復
- バックアップファイル:ある時点のデータベースの内容をコピーして保存したファイル
- ジャーナルファイル(ログファイル):更新前と更新後の更新履歴ファイル
- ロールフォワード:バックアップファイルと更新後ジャーナルで復旧
- ロールバック:更新前ジャーナルで復旧
- レプリケーション:別のサーバにリアルタイムでデータをコピーする
- トランザクション:データベース更新時の処理単位
- コミット:異常なく更新できたら結果を確定してHDDに書き込む
- 流れ図(フローチャート):処理、判断、ループ
- 構造化プログラミング:プログラムをサブプログラムに分割できるような構造で、順次、選択、繰り返しの3つだけを用いる。
- 変数:データを格納するための箱、箱を識別するための変数名、変数に値を格納することを代入する
- データ構造
- ツリー構造(木構造):階層の上位からたどってデータを取り出す
- キュー:格納した順序でデータを取り出す、FIFO
- スタック:格納した順序と逆でデータを取り出す、LIFO
- リスト:データ部とポインター部で構成される
- 配列:データを連続で並べ、添字でデータを取り出す
- プログラム言語
- 機械語に近い低水準言語:アセンブラ
- 人間の言語に近い高水準言語:COBOL・C・Java・Perl・PHP
- オブジェクト指向型言語:データとメソッドと呼ばれる手続きを一体化(カプセル化)したもので、データを外部から隠蔽し、メソッドによって処理される
- スクリプト言語:一連の処理を記述したもの、JavaScript
- 言語プロセッサ
- インタプリタ:ソースコードを1命令ずつ解釈して実行するプログラム
- コンパイラ:ソースコードを一括して機械語のプログラムに翻訳する
- マークアップ言語
- HTML(Hyper Text Markup Language):Webページを記述するための言語
- CSS(Cascading Style Sheets):HTMLに記述された文書にレイアウトスタイルを定義する。文字の大きさや色、行間などを指定
- XML(Extensible Markup Language):主にデータのやり取りや管理を簡単にする目的で使われるデータ記述用の言語
- RSS(RDF Site Summary):ニュースサイトやブログなどの見出しや要約などを記述したXMLベースの文書、RSSリーダはサイトを巡回して更新情報(フィード)を取得しリンク一覧を作成する
学習をしての気づき
普段仕事で使用していても、データベースについての関連用語についてはあまり意識していないことに気づきました。例えば、テーブルの結合・選択・射影などは、その用語を意識しなくても普段行っていますし、主キー・外部キー・インデックスも自然と頭で考えていますが、それをどのような用語で表すかについては明確に認識していなかったので、今回の学習でそれらを整理することができました。また、データベースの正規化も、プログラム経験があればテーブルの設計するときは自然と正規化されるように考えていますが、改めて正規化の手順も確認できました。
アルゴリズムについては、基本のフローは変わらないですし、データ構造も基本的なものは変わらないので、以前学習したことがそのまま役に立ちました。
この分野の基本知識については、一度しっかりと身につけておけば、いつでも活用できる知識だと思います。