気の向くままに辿るIT/ICT/IoT
データベース

リレーショナルデータベースRDB(Relational DataBase)

ホーム前へ次へ
RDB リレーショナルデータベースとは?

RDB Relational DataBase リレーショナルデータベース

RDBリレーショナルデータベースとは

 RDBは、『Relational DataBase』(リレーショナルデータベース)の略です。

RDBとDB

 規則性を持って集められたデータ群であればテキストファイルやExcelファイルに格納されたデータ群も、またファイルシステムなどもDB/データベースです。

 例えば図の縦と横、つまり列(column/カラム)と行(tuple/タプル(トゥープル)・record/レコード)を持つ『テーブル/表』もデータベースと言えます。

 この図のようにまとめるのも一案ですが、『系統』の項目が重複していますし、列と行の関係がいま一つ希薄です。

RDB

 例えばこれを『TABLE(A)』と『TABLE(B)』のように分割してそれぞれのテーブルにコードというような行を唯一特定する項目を入れます。

 そうすると『TABLE(C)』のように『TABLE(B)』の情報に『TABLE(A)』の行を特定するコード「pgrefcode」を入れておけば、『TABLE(A)』と『TABLE(B)』を関連付けて最初の図の『テーブル/表』と同じ結果を得る事ができます。

 こうしておく事で情報が重複する事もないですし、『TABLE(A)』の情報だけでいい場合や『TABLE(B)』だけでいい場合、『TABLE(C)』から得られる情報が必要な場合などに対処する事ができます。

 記述ミスも少なくなりますし、こうした例ならもし間違いに気付いたとしてもあちこち訂正する事なく修正箇所を特定しやすく集約する事もできます。

 また、コードが特定できれば、他の情報が得られるのでシンプルかつ合理的と言えます。

 ちなみに、このリスト中のjscriptは実はJavaではありませんからTABLE(C)の『relpgcode:009』の『pgrefcode』が02となっているのは不適切なので削除するか、TABLE(A)のレコードを新規に追加して変更する必要があります。

主キーと外部キー

 このように行の情報を唯一特定するコードを『主キー』(主なカギ)、またはプライマリキー/primary keyと呼びます。

 若干キーになる各コードの名称が適当で申し訳ないですが、TABLE(A)の主キーは「コード」、TABLE(B)の主キーは「relpgcode」です。

 一方、TABLE(C)の主キーは「relpgcode」で「pgrefcode」の方は『外部キー/foreign key』と呼ばれる事があります。

 例えばTABLE(C)の列の情報がもっと増えたとして、C言語系の情報だけを取得したい場合には、TABLE(C)の外部キーである「pgrefcode」を参照して[01]のデータだけを取得すればよい事になります。

 TABLE(C)では、「pgrefcode」が[01]のデータは、TABLE(C)「relpgcode」を見ると主キーである[001]~[004]である事がわかっていますから、この例では、「c」「c++」「c#」「vc++」についても同時に列情報を取得する事ができます。

 尚、1つのテーブルにおいて1つのカラムだけではキーが決まらない場合に他のカラムと組み合わせる事によってキーが複数となる場合、(本来ならそのカラム1つで一意としたいような)主たるキーをプライマリキー(主キー)、他の補助的なキーをセカンダリキー/secondary key(補助キー・サブキー)などと呼ぶ事もあります。

 ちなみにキーが複数あるテーブルを参照する場合にそのテーブルの一意のレコードが必要である場合には複数のキーを参照する必要がありますが、もちろん目的によっては主キーだけサブキーだけで複数データを対象とする事もできます。

リレーショナルデータベースと呼ばれる理由

 さらに情報の集まりを持つテーブル同士がそれぞれコードによって関係(リレーション)・関連付けされた(リレーショナル)データベースをリレーショナルデータベース、関係データベースと呼びます。

トランザクション

 重複を極力なくし、情報量のスリム化を図ると同時に(マスターテーブルを除き)データ行の登録・編集・削除を行っても矛盾のない整合性のあるデータ保持ができます。

 ここではテーブルの数も内容もシンプルですが、顧客情報と商品サービスなど一連の情報を送信してもらって受信したデータで受注確認メールを送信したり、RDBの各テーブルに注文情報や発送処理が登録されたり、お届け伝票が発行されたりするオンラインショッピングなどのシステムなどがあります。

 オンラインで利用者が意識する事なく、システム的にRDB各テーブルなどデータ行の登録・更新(編集)・削除など複数の処理を行う一連のまとまりをトランザクション/Transaction、こうした処理を行う事をトランザクション処理などと呼びます。

マスターテーブルとトランザクションテーブルとテンポラリテーブルとワークテーブル

 このようなトランザクション/Transactionやトランザクション処理で利用されるテーブルをトランザクションテーブルと呼んだりもします。

 因みに、例えば登録後、確認画面があり、修正や取り消しができるような仕組みの場合の確認画面に出力するデータを書き込んだり、処理の過程でデータベースへの登録を行う前に複数のテーブル情報をまとめたりする場合などに備え、ワーク(作業)テーブル、テンポラリ(一時的な)テーブルといった仮のテーブルに書き込む事もあります。

 こうしたワークテーブル(テンポラリテーブル)やトランザクションテーブルから参照される例えば、商品コードと商品名から成るような情報を特定する為に必要な情報が格納された(新商品など新規に追加する場合を除き)頻繁に更新せずに参照の為に利用されるテーブルなどをマスタテーブルと呼びます。

 マスタテーブルの列はもちろん行情報も適当に改変できては、システム全体で不整合が起きシステム化した意味が皆無になりますのでマスタテーブルを編集できる人は限定されているのが普通です。

 但し、このような場合トランザクションテーブル、仮のテーブルとしてのワークテーブル、テンポラリテーブルという呼び方は一般的ではないようです。

 しかし、ICT業界ではこうしたフレーズを使う人もいて会話上出てくる事がありますし、話の流れによっては誤解があっては困る為、場合によっては確認は必要ですが、前述のようなニュアンス、意味合いで呼んでいる場合が多いと思います。

主なRelational Database

 主なRDBとしてはOracle・SQLServer・PostgreSQLMySQL等が有名です。

 こうしたRDBはそれぞれデータベース全般の管理機能を持っている為、RDBMS/Relational DataBase Management Systemと呼ばれます。

 小規模なデータ量で個々の端末にあれば、事足りるという場合には、MicrosoftのAccessといったものもあります。

RDB利用環境

 利用にあたっては、格納された情報を取り出すのにSQLといわれる問合せ言語が使われます。

 アプリケーションとして機能させる為にはいわゆるプログラミング言語といわれるJavaJSPJava ServletC言語、C++、C#VB・VB.NETASPなどからデータベース接続を利用してSQLを使ったRDBの操作をします。

SQL/問い合わせ言語って?

ホーム前へ次へ