見出し画像

『コンピュータはなぜ動くのか』まとめ(第8章 作ればわかるデータベース)

この調子で一気に書き上げたい!

この本なかなか良いですね。本のタイトルからするとコンピュータ内部の仕組みを説明している小難しい本のように思えますが、データベースとかネットワークとか「ITの基礎知識」を広く浅くわかりやすく解説してくれてます

データベースとは?

IT関係の話でよく聞く「データベース」。直訳はdata + baseでデータの基地という意味です。データがあちこちに散らばっていたら使いづらいので一箇所にまとめたのがデータベースです。言葉の意味上は書類を一箇所に集めておいたのもデータベースですね。

リレーショナル・データベース(RDB)とは?

上記の「同じ形式の書類を一箇所にまとめた」データベースを、そのままの形式でコンピュータ上に置いておいたものを「カード型データベース」といいます。名刺を読み取って保存する名刺管理アプリがその例ですね。

ただ、データをそのまま保管するだけだと規模が大きくなったときに不都合が生じます。データ間の関連性を記録できないので、たとえばある人物の名前を変更するときに全データを調べてその人の名前をすべて変えないといけなくなります。

そこで考えられたのがリレーショナル・データベースです。
これは、見た目はエクセルと同じで、列と行でできたテーブルにデータを格納します。エクセルと違うのは複数のテーブルに分けてデータを保管し、テーブル同士の関係性も記録しておく点です。たとえば「商品テーブル」「顧客テーブル」に分けて関連づけておけば、商品名と顧客名は全体で1つしか出てこないのでそこだけ変えればよくなります。Aさんがこの商品を買う、というときは両方のテーブルで検索をかけるイメージです。

いま「データベース」といえば、このリレーショナル・データベースのことを指します。

データベースを操作する仕組み

通常のプログラムの場合は、プログラムで直接コンピュータやファイルを操作することができます。データベースでも同様にできるのですが、殆どの場合はデータベース管理システム(DBMS)を介してデータベース内のデータを操作します。

DBMSはデータベースへの操作を簡単にしてくれたり、データを変に編集して壊してしまう(=テーブル同士の関係を書き換えてしまって次に使う人が検索や編集できなくなる、等)のを防いでくれたりするクッションのようなものです。

このDBMSを介して、という部分で、DBMSに対して指示するための命令がSQLというものです。まとめるとデータベースは以下3つでできています。

①プログラム(データ操作を指示する。=SQL)
②DBMS(実際にデータを操作する)
③データファイル(コンピュータに入っている実データ)

システムの規模によってこの3つをどう配置するかが変わります。
一般に、下の1→4に行くほど大規模なシステムで使われます。

1.3つとも一つのコンピュータ内に居るパターン
(=スタンドアロン型システム)
2.③データファイルだけを一箇所にまとめておき人が操作するコンピュータに①プログラムと②DBMSを配置するパターン
(=ファイル共有型システム)、
3.②DBMSと③データファイルを一箇所に集めて使う人のパソコンで③プログラムを書くパターン
(=クライアント/サーバー型システム)、
4.3つすべてを一箇所に集めてインターネットとWebブラウザを介して操作するパターン
(=Webシステム)

↑これは図がないと分かりづらいですね

キーとインデックス

キーとは各レコード(←テーブルの一行一行にあたる)を特定するためのものです。たとえば学籍番号や社員番号です。リレーショナル・データベースはテーブル同士が関連し合うので、関連性を定義したりテーブルを辿りながら特定のデータを検索したりする際に必須になります。

インデックスとは「どの値が何行目にあるか」を記録したテーブルです。値ごとに作成できるので列ごとに作成すると捉えられます。これを作成すると検索速度が上がりますが、反面元のテーブルとインデックスの両方を編集しなきゃいけなくなるのでデータ追加や編集の速度が下がります。

CRUD

データベース操作の種類は4種類あり、
登録(CREATE)
取得(READ)
更新(UPDATE)
削除(DELETE)
の頭文字がCRUDです。SQL文にはそれぞれに対応する構文があります、が、省略します。

トランザクション

トランザクションとは「ユーザー視点で見たデータベースに対する処理のまとまり」のことです。特に、その処理のまとまりが途中で中断されては困る場合に使われることが多いです。

銀行の振り込み処理がその例で、ユーザー側から見ると振り込んだだけですが、内部では複数の処理が走っています。口座Aの金額を減らす、口座Bの金額を増やす等。片方の口座の額が減ったのにもう片方が増えてないと結構な問題です。なのでもし一連の処理が途中で異常終了した際に、最初の状態に戻す、という処理を行います。これをロールバックといいます。

ふう、長い。でもがんばる。

この記事が気に入ったらサポートをしてみませんか?