【初心者向け】DB入門 RDBについて図解 SQLもカンタンに説明

当サイトは広告を含みます

DBの仕組み、種類や用語などをイラストで説明します。

こちらの記事概要
・初心者向け
・DBについて図解
テーブルカラムなどの用語について

ITとはなんぞや? という方は下記もご覧ください。

目次

DBとは

DBとは『データベース』です。
情報データにして、サーバーやPCなどの機械に電子保存する仕組みです。

ITの基本』おさらい
・情報とは『個人情報』、『企業情報』など人間が認識できるモノ
・データとは機械に理解できるように、情報をデータ化したモノ

情報をデータとして保存する流れ

『DBMS(データベース管理システム)』と呼ばれる仕組みを使って、DBに情報を送信・整理します。

図のように利用者の端末からインターネットやシステムを通じて、DBへ送信するケースが多いです。

DB本体はシステムの管理者が指定した端末にあります。
他にもユーザ自身の端末にDB自体を構築する種類もあります。

DBの種類について

DBには様々な種類があります。
今回は基本の3種類 + α のDBをご紹介します。

システムの目的に合わせたDBを選択しましょう。

基本的に主流である『リレーショナル型DB』を覚えておけば損はないです。

1. リレーショナル型 DB

データを関連付けして、表の形で保存するDBです。

略称として、『RDB(リレーショナルデータベース)』や『RDBMS(リレーショナルデータベース管理システム)』があります。

特徴

データが『』で構成されています。
』とは関連のあるデータをまとめて、でできたデータ形式です。

RDBではSQLという言語を使用して、データの操作を行います。
当記事ではこちらのRDBをメインに説明します。

メリット

・データの品質を保ちやすい
・初心者でも扱いが容易、資料が豊富
・データが人間にとって理解しやすい

メリット

・システムによっては、中身が複雑化しやすい
・柔軟性が低い
・処理速度が他DBと比べて遅い

代表的な言語

MySQL
PostgreSQL(日本PostgreSQLユーザ会 様のHP)
SQLite

2. 階層型 DB

名の通り、データがツリー構造になっているDBです。
ショッピングのカテゴリ構造などで使用します。

特徴

親から子へ展開するデータ構造をしています。

上が親、下が子となり階層が分かれ、木の形になっているためツリー構造とも呼びます。
一般のシステム開発では見かけません。

メリット

・データの階層構造が自然に表現できる
・データ検索の効率が良い

メリット

・データの変更や追加がむずかしい
・資料がRDBと比較して少ない

代表的なDB

IMS
Caché
・MUMPS(マサチューセッツ総合病院)

3. ネットワーク型 DB

データが網状(ネットワーク)になっているDBです。
AIなどに使用されています。

特徴

関連性のあるデータ同士が複数繋がっている構造をしています。
階層型同様、一般のシステム開発では見かけません。

大量の多種多様なデータを扱えます。

メリット

・データの追加が容易
・大量のデータを保存できる
・階層型データベースよりも、柔軟なデータモデル

メリット

・データの変更がむずかしい
・管理が複雑
・資料が少ない

代表的なDB

・IDMS
・Network Databases on IMS

オマケ. NoSQL型 DBとは

RDBではないDBの総称です。
SQLを使用しないため、NoSQLと呼びます。

階層型DBネットワーク型DBNoSQLの一部です。

他にもさまざまなDBがありますが、ほとんど使用されている場面に会いません。
必要な時になって調べるのもよいと思います。

その他NoSQLDB
・Key-Value型
・ドキュメント型
・カラム指向型
・グラフ型

RDBの中身

リレーショナル型DBでは多数のデータを保存します。
そしてDBのデータを操作するには『SQL』という言語が必要です。

SQLを使うことで機械と人間の両方がデータ・情報の意思疎通ができるようになります。

スキーマ

DBの構造を『スキーマ』と呼びます。

  1. 外部スキーマ
    ユーザ視点から見たDBの構造。ユーザ向け
  2. 概念スキーマ
    DB全体の論理的な構造。システム開発者向け
  3. 内部スキーマ
    DBが物理的にどのように格納・管理されるか。システム管理者向け

SQL

DBのデータと人間の情報をやり取りする言語です。
正式名称は Structured Query Language (構造化問い合わせ言語)といいます。

DBの中にはデータが沢山入っており、人間が情報として理解するのは困難です。 
そのデータを人間が情報として操作する為には、SQLを使用します。

そして、SQLを使用して取得した情報を『表』と呼びます

表(テーブル)

学籍番号氏名性別住所
2023040101田中 たかし〇〇県△△市…
2023040102鈴木 ひろふみ〇〇県△△市…
2023040103森 あいか〇〇県☆☆市…
A. 個人情報のテーブル

上記の図(A. 個人情報のテーブル)が『』です。
テーブルとも呼びます。

SQLで操作するデータは『表』と呼ばれる情報の形で、人間に提供されます。

基本的に表は関連のある項目同士でまとめます
個人情報のテーブルは名前通り『生徒の個人情報』をまとめた表です。

なお、表の上部にある『学籍番号』、『氏名』、『性別』、『住所』が項目にあたります。

カラム

テーブル内にある垂直の列を指します。

A. 個人情報のテーブルでは、『学籍番号』、『2023040101』、『2023040102』、『2023040103』の部分です。

レコード

テーブル内にある水平の行を指します。

A. 個人情報のテーブルでは、『2023040101』、『田中 たかし』、『男』、『〇〇県△△市…』の部分です。

フィールド

データの一部分を指します。
カラムと同義されているケースもあります。

A. 個人情報のテーブルだと、学籍番号 2023040101 の氏名フィールドは『田中 たかし』になります。

トランザクション

『DBMSにおける一連の処理』の単位です。

DBに追加する操作が1単位だとします。
その1単位の中には、データの品質を保つために『開始』、『確認』、『追加』、『終了』の操作が含まれます。

トランザクションが必要な理由、それはACID特性を満たすためです。
DBにあるデータの整合性・信頼性の上昇に重要なルールを満たす特性についてご紹介します。

ACID特性

原子性(Atomicity)

全体が実行されるか、全く実行されないかのいずれかであるべき
操作が途中で失敗した場合、それまでに行われた変更は全て取り消す

一貫性(Consistency)

開始前と終了後でデータベースが一貫性を保つべき
実行前と実行後で、データベースはある事前定義の状態になる

隔離性(Isolation)

他のトランザクションの実行による影響を受けず、他のトランザクションに影響を与えないように独立して実行されるべき
トランザクション同士を干渉することなく並行して実行する

耐久性(Durability)

正常に終了すると、その結果はデータベースに永続的に保存され、システムの障害や再起動にもかかわらず、データは失われないべき

セキュリティ向上

DBには多数の情報が詰まっています。
故に悪意のある攻撃者から、DBを狙われます。

対策として、外から守るセキュリティ内部から守る権限についてご説明します。

セキュリティ

DBに対するセキュリティ方法は多数存在します。
様々な攻撃に対策を練っておきましょう。

SQLインジェクション攻撃
本来実行するはずのSQLを改ざんして、DBにあるデータを改ざんしたり盗む

対策
特定のSQLを受け付けない、もしくは別の文字列に変換するよう設定(エスケープ処理)

・DBサーバへの直接攻撃
サーバの脆弱性を利用して、サーバに侵入してDBのログイン情報を取得してDBにアクセス

対策
サーバを最新版に保つ
サーバの通信ルールを設定

・ウィルス感染
メール、USB、ダウンロードなどにバックドアウィルス等を仕込み、DBのログイン情報を取得してDBにアクセス

対策
セキュリティソフトの導入
怪しいサイトにアクセスしない

・ソーシャル・エンジニアリング
DB関係者になりすましてログイン情報をだまし取り、DBにアクセス

対策
むやみにログイン情報を開示しない
ログイン情報を教える場合は本人確認を行う

権限

DBにアクセスする人間に、操作の権限を設定します。
内部の人に悪意がなくても、うっかり削除なんていう事態を防ぐのにも役立ちます。

対策
・データ管理者のみ、データを操作可能にする
・一般ユーザには閲覧のみ可能に設定
・データの削除専用のユーザを作成

DBのユーザ設定はSQL文などで操作できます

DBを上手に扱うために

DBのデータが消えたり、新規テーブルを追加したら挙動が変になったり。
そんな不具合を前提にDBを扱いましょう。

バックアップを取っておくといざという時に役立ちます。
他にもパフォーマンス、データの品質を向上する方法もご説明します。

バックアップ & リカバリ

バックアップ

DBの状態をある時点で保存し、必要に応じて復元できるようにする手段です。

DBにはデータの損失、破損など様々なリスクがあります。
災害や誤操作、攻撃に備えて必ずバックアップしておきましょう。

ポイント
・定期的にバックアップ
・元のDBとは別の場所、別の端末に保存しておく

リカバリ

DBが損傷や損失を受けた場合に、正常な状態に復元する手段です。
主にバックアップからのデータ復元、トランザクションログの利用などを指します。

トランザクションログとは
DBの操作履歴
DBへの変更が記録され、DBの異常終了や障害発生時に役立つ

データの整合性

データが正確で一貫性があり、指定された制約やルールに従って格納・更新されていることを指します。

整合性が取れていないデータだと、テーブル同士で内容が矛盾したり、項目の順番間違いが起こったりと大変な目に合います。

2度手間や余計なミスを防ぐためには重要な考え方です。

整合性に必要な概念

  • 主キー制約
    テーブル内の各行を一意に識別するための列
    後述する一意かつNULL(からっぽ)でない値が必要
  • 外部キー制約
    異なるテーブル間の関連性を定義
    例) 個人情報のテーブルにある『学籍番号』と図書貸出のテーブルにある『学籍番号』を関連付け
  • 一意制約
    指定された列(または列の組み合わせ)に重複する値が存在しないことを保証
    例) 個人情報のテーブルにある『学籍番号』の列に同じ値はない
  • デフォルト値
    カラムにはデフォルト値を指定できる
    データが挿入されなかった場合やNULLが許容されている場合でも、デフォルト値が自動的に使用される
  • チェック制約
    指定された条件が満たされているかどうかを確認
    データが特定の条件を満たしているかどうかを制御可能
  • トランザクション
    トランザクション内で行われる操作は、一貫性を保ち、整合性を確保する

パフォーマンス

DBの処理速度を向上させるためには、下記の点に注意しましょう。
ほかにもSQLの変更、テーブルの設定の仕方など、様々な切り口があります。

・SQLの最適化
・DBを保存している端末のハードウェア構成見直し
・列に適切なインデックスを適応する

インデックス

テーブルにおける特定の列(または複数の列)に対する高速なデータ検索をサポートするためのデータ構造です。

要するに、行数の多いテーブルを効率よく検索するためのマーク付けみたいなモノです。
最初のうちは気にしなくても大丈夫です。

不適切なインデックスはパフォーマンスの低下を招きます。
一旦本番ではないDBで実験してからの適応がおすすめです。

最後に

DBは、新人や初心者エンジニアが多く関わる重要な仕組みです。

安易に追加、変更、削除をするとDBが破損する恐れがあります。
そうならないためにも、参照をしてどのデータが選択されるかを確認してから操作しましょう。

プロジェクトやお仕事ではそもそもDBを周囲の同意なく追加、更新、削除する行為は厳禁です。

シェアお願いします!
  • URLをコピーしました!

この記事を書いた人

ご閲覧ありがとうございます。
少しでも、プラスになれたのなら幸いです。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次