リレーショナルデータベースとはなにか?特徴とメリット・デメリットを解説
この記事ではリレーショナルデータベースの特徴やメリット、デメリットについて、詳しく解説します。データベースに関心をお持ちの方は、ぜひお読みください。
この記事ではリレーショナルデータベースの特徴やメリット、デメリットについて、詳しく解説します。データベースに関心をお持ちの方は、ぜひお読みください。
知識・情報
2022/11/15 UP
- システムエンジニア
- インフラエンジニア
- 技術
リレーショナルデータベースはさまざまなシステムで活用され、社会を支えています。一方でエンジニアのなかには、リレーショナルデータベースがどのような特徴を持っているか、あまり意識していない方もいるのではないでしょうか。
この記事ではリレーショナルデータベースの特徴やメリット、デメリットについて、詳しく解説します。データベースに関心をお持ちの方は、ぜひお読みください。
リレーショナルデータベースとはなにか?
リレーショナルデータベースを適切に扱うためには、特徴を知ることが重要です。3つの観点から、どのような特徴があるか確認していきましょう。
複数の表(テーブル)の形式でデータを保存するデータベース
リレーショナルデータベースとは「RDB」とも呼ばれ、データを表(テーブル)の形式で管理することが特徴です。通常は複数の表を持ち、システムの動作に必要なデータを管理しています。表は、2つの要素から構成されています。
・行(レコード)
・列(カラム)
以下の表を例に、確認していきましょう。
部門コード | 部門名 |
---|---|
0010 | 総務部 |
0030 | 経理部 |
1010 | 営業部 |
2010 | 開発部 |
2020 | 製造部 |
横方向はレコードを示し、各データが持つ項目の組み合わせを示します。上の表では「総務部の部門コードは0010」というわけです。縦方向はカラムを示し、項目ごとのデータを示します。
またレコードとカラムの交点は、フィールドやセルと呼びます。「部門コード0010の部門名には、総務部というフィールドがある」というわけです。
ITエンジニアならばぜひ習得しておきたい技術
リレーショナルデータベースは、多くのシステムで使われています。インフラに関する技術と思われがちですが、インフラエンジニアや社内SEだけが知っていれば良いわけではありません。
開発業務においても、データの読み込みや更新にSQLを使う機会は多いです。速く適切に動作するコードを書くためにも、リレーショナルデータベースのスキルを習得する必要があります。ITエンジニアならば分野に関わらず、ぜひ習得しておきたい技術といえるでしょう。
なお、SQLについては、こちらの記事も合わせてご覧ください。
SQLとは何か?特徴と代表的なSQL文をご紹介
代表的なリレーショナルデータベース
リレーショナルデータベースにはさまざまなものがあります。なかでもOracle DatabaseやMicrosoft社のSQL Server、IBM社のDb2といったリレーショナルデータベース管理システム(RDBMS)は20世紀から使われており、実績のある商用データベースです。
近年ではMySQLやPostgreSQLといった、無料のRDBMSもよく使われています。なかでもMySQLは「LAMP」の一つに含まれるため、親しみやすいと感じる開発エンジニアも多いのではないでしょうか。
リレーショナルデータベースが持つ4つの特徴を紹介
リレーショナルデータベースは、4つの特徴を持っています。それぞれの特徴を理解し、効果的な活用につなげましょう。
表どうしの関係性を示せる
リレーショナルデータベースでは、表どうしの関係性を示せます。指定した列をキーにして複数の表を組み合わせることにより、目的に合わせたデータの活用が可能です。
まずは部門コードと部門を紐づける、表Aを示します。部門コードは、一意の情報となっています。
部門コード | 部門名 |
---|---|
0010 | 総務部 |
0030 | 経理部 |
1010 | 営業部 |
2010 | 開発部 |
2020 | 製造部 |
次に所在地コードと所在地を示す、表Bを見ていきましょう。所在地コードも、一意の情報となっています。
所在地コード | 所在地名 |
---|---|
10 | 本社 |
20 | 工場 |
30 | 研究所 |
表Cは部門コードに対応する所在地コードを示した表です。部門コードは表Aと、所在地コードは表Bと関連しています。表Cには、部門名や所在地名が書かれていません。しかし部門と所在地を関連付ける表となっています。
部門コード | 所在地コード |
---|---|
0010 | 10 |
0030 | 10 |
1010 | 10 |
2010 | 30 |
2020 | 20 |
これだけ見ると暗号のように見えますが、部門に対する所在地を特定できています。SQL文を適切に作れば、以下の結果を得られます。
部門名 | 所在地名 |
---|---|
総務部 | 本社 |
経理部 | 本社 |
営業部 | 本社 |
開発部 | 研究所 |
製造部 | 工場 |
データの操作にSQLを用いる
リレーショナルデータベースではデータのチェックからデータベースの作成や削除まで、SQLを使って行ないます。用途に応じた豊富なSQLが用意されているため、文法にしたがって使えば良いわけです。
SQLの文法は、RDBMSにより異なります。ただし標準SQLがベースとなっているため、基本的な考え方に大きな違いはありません。どれか1つのRDBMSをマスターすれば、応用が利くことはメリットに挙げられます。
正規化が重要とされる
リレーショナルデータベースではデータを分割し複数の表で保管する「正規化」が重要とされます。以下の表を見ながら解説していきましょう。
部門コード | 部門名 | 所在地コード | 所在地名 |
---|---|---|---|
0010 | 総務部 | 10 | 本社 |
0030 | 経理部 | 10 | 本社 |
1010 | 営業部 | 10 | 本社 |
2010 | 開発部 | 30 | 研究所 |
2020 | 製造部 | 20 | 工場 |
上の表は正規化により、3つの表に分割できます。
・部門コードと部門名の対応を示す表(表A)
・所在地コードと所在地の対応を示す表(表B)
・部門と所在地の対応を示す表(表C)
もし上のように情報を組み合わせたデータが欲しい場合は、その都度SQL文を用いて
作成すれば良いわけです。またビューも活用できます。
複数の表で同じデータを保管せずに済むため、データ量の削減につながります。加えて部門名や所在地名が変わっても、修正は1箇所で済みます。同じデータを複数の表で持つ際に起こりがちな、データの不整合を防げることは大きなメリットです。
トランザクションの実行に重要な「ACID特性」を有する
リレーショナルデータベースは、トランザクションの実行に欠かせない「ACID特性」を有しています。ACID特性とは、4つの項目を英語の頭文字で並べたものです。
・原子性(Atomicity)
・一貫性(Consistency)
・独立性(Isolation)
・永続性(Durability)
それぞれどのような性質か、またトランザクションの実行に重要な理由を確認していきましょう。
・原子性
原子性はトランザクションとして実行される一連の処理が、以下のどちらかの状態で終わることを示します。不可分性という名称で呼ばれる場合もあります。
・すべての処理が完全な形で実行される
・どの処理も実行されず、実行前の状態に戻る
このため「処理Aは実行されたが、処理Bは実行されない」といった、中途半端な状況で終わることはあり得ません。データの損失や意図しない改変を防ぐうえで、重要な要素の一つです。
・一貫性
トランザクションの処理中に書き込まれたデータが、事前に定義されたすべてのルールや制約に従うことを指します。制約の例として、トリガーやカスケードが挙げられます。
一貫性はルールや制約に基づかないデータが入らないようにして、データを正しく保つために重要な特性です。このことから、整合性とも呼ばれます。
・独立性
独立性は同一の表を操作・変更する複数のトランザクションを同時に実行しても、単独で実行した場合と同じ結果を得られる特性です。この性質から、隔離性とも呼ばれます。
交通機関の予約サイトを例に考えてみましょう。同じ席を予約する処理が2つ同時に実行された場合、空席だからといって両方とも予約完了にするとダブルブッキングが発生してしまいます。リレーショナルデータベースでは先に処理を始めたトランザクションが席をロックし、処理完了後にロックを解除する仕組みで独立性を担保しています。
・永続性
永続性は耐久性とも呼ばれており、トランザクション実行後の状況が失われない特性です。新たにトランザクションが発生しない限り、処理が完了したデータはいつまでも残り続けます。万が一障害が発生した場合は、バックアップやログファイルを用いて復旧可能です。安心してデータベースを使ううえで、欠かせない特性といえるでしょう。
リレーショナルデータベースを活用する3つのメリット
リレーショナルデータベースがよく使われる背景には、データの活用における大きなメリットがあるためです。おもな3つのメリットを確認していきましょう。
データの一貫性が保たれ、いつでも正確なデータを利用できる
常にデータの一貫性が保たれ、どの時点でも正確なデータを利用できることは大きなメリットに挙げられます。処理前や処理後はもちろん、トランザクションの途中や切り戻しが必要となった場合でも、正確なデータを提供できます。どれだけデータが大量で高速処理が求められる場面であっても、要件を満たせることは魅力です。
このためリレーショナルデータベースは金融業界やインターネット通販など、正確な情報提供が必要な用途でよく選ばれます。
複雑な検索や集計が可能
リレーショナルデータベースはSQL文を駆使することにより、複雑な検索や集計も行なえます。さまざまな条件が付加されている場合でも、SQL文を使えば要望に合った情報の提供が可能です。
このため多数の列を持つ表を、あらかじめ作成しておく必要はありません。正規化の手法を活用し、データを単純な構造を持つ複数の表に分けて保管する手法がスタンダードです。もし複雑な表をよく使う場合は、表の代わりにビューを作成する方法もあります。
誤った操作を行なっても、処理の確定前ならば戻せる
一連の処理を行なっていると、ときに誤りが生じる可能性もあります。トランザクションの仕組みを使うことで、処理の確定前ならば元通りに戻すことが可能です。
・データの更新
・データの追加
・データの削除
例えば処理が正しい場合はCOMMIT文を実行して処理を確定し、誤りが含まれる場合はROLLBACK文を実行して元の状態に戻せるわけです。実行後は「すべて更新された状態か、一連の更新作業を開始する前か」の状態となり、中途半端な状態にならないことはリレーショナルデータベースの大きなメリットに挙げられます。
リレーショナルデータベースを使うデメリット
リレーショナルデータベースは良いところを多く持つものの、万能ではありません。どのようなデメリットがあるか、3つの項目を取り上げ確認していきましょう。
大量データの更新に時間を要する場合が多い
大量のデータを更新する際に、あるいは大量データの挿入や削除に多くの時間を要することは、リレーショナルデータベースの代表的なデメリットです。ACID特性を満たしながら、トランザクションの仕組みを使って更新することはおもな理由に挙げられます。実務では処理速度をめぐり、システム会社と顧客の間で議論となるケースも少なくありません。
一方で大量データの検索はインデックスを適切に活用し、SQL文を工夫することで速度改善を図れるケースも多いです。
数値や文字列以外は保存できない場合がある
近年のシステムでは画像や動画、音声といった、多種多様なデータが用いられています。一方でリレーショナルデータベースは、文字列や数値にしか対応していない場合があります。その場合、音声や画像、動画は直接表に挿入できません。
どうしても音声や画像などを保存したい場合は別の箇所に保存し、表にはファイル名やURLを保存するといった方法を取る必要があります。
NoSQLとの相違点
近年では、表形式にこだわらずデータを保存する「NoSQL」もよく使われるようになりました。リレーショナルデータベースは以下の点で、NoSQLと異なります。
・データの一貫性を確保できる
・複雑な検索が可能
・1つのフィールドやセルには、1つの文字列や数値しか保存できない
・更新や挿入、削除の処理速度はNoSQLよりも下がりやすい
・機動的なサーバー追加は困難
リレーショナルデータベースとNoSQLに、優劣はありません。目的に応じて、適切なデータベースを選ぶことが重要です。
なお、NoSQLについては、こちらの記事も合わせてご覧ください。
NoSQLとはなにか?特徴と4つの種類、適するケースを解説
特徴をよく把握し、データベースの適切な活用につなげよう
実務でよく使われるリレーショナルデータベースも、万能ではありません。特徴をよく把握したうえで適材適所を考慮した設計・実装を行なうことは、プロジェクトの成功につながります。
まずは本記事で紹介した特徴やメリット、デメリットをよく確認しましょう。リレーショナルデータベースの良さを活かせるシステムに導入することは、データベースの適切な活用につながります。よく吟味して、どのデータベースを使うか決めてください。