データベース(DB)のスキーマについてわかりやすく解説します!
データベースにおける大切な概念でもあるスキーマをよく理解するには、データベース自体の基礎知識を知ることが重要です。そこで今回は、データベースの基礎知識やスキーマに関わるデータベース用語などをご紹介します。
データベース基礎知識などを知りたい方は、ぜひ参考にしてくださいね。
目次
データベースのスキーマとは?
データベースとは、膨大なデータを収集し、コンピューター上でのデータの追加や削除、検索などをしやすい状態にしっかり整理したものをデータベースと言います。
データベースは、データを格納するアルゴリズムや構造により、リレーショナルデータベースや階層型データベース、オブジェクトデータベース、カード型データベースなどいろいろな種類があります。
データベースにおけるスキーマとは、データベースの構造で、データベースの設計図のようなものです。データベースでは、必要なデータを洗い出したり、データの格納整理をしたりするルールを決めます。
こういった作業をデータベースではスキーマを定義するといい、外部スキーマや概念スキーマ、内部スキーマの三構造に分けられます。
外部スキーマ
概念スキーマで定義された論理データから、必要となるデータを取り出したビューなどに相当する部分です。
概念スキーマ
データベース上の論理データであり、保持するデータの要素やデータ同士の関係を定義するテーブルに相当する部分です。
内部スキーマ
概念スキーマで定義された論理データを具体的にどんなものに格納するかを定義する部分です。
このようにスキーマを三構造に分ける理由は、ある一つのスキーマを変更したい場合に、ほかの二つのスキーマへは影響しないようにするためです。
システムにおける性能を向上させるためにデータベースをチューニングすることが多いです。テーブル定義を変えることになった際でも、スキーマが影響しあわないので、ビューやハードウェア側を考慮しないで済むため、データベースの運用や保守をするにあたり、非常に効率が良いのです。
スキーマに関係するデータベース用語
次に、スキーマに関わるデータベース用語を見ていきましょう。
スキーマとテーブル
テーブルは、データを表として整理したものであり、データベースを構築する基本要素です。その一方で、スキーマはテーブルよりも大きな枠組みになっていて、いくつかのテーブルを整理しておく格納庫です。
RDBMSで使用されるSQLというプログラミング言語は、テーブル名の前にスキーマ名をつけるというルールがあります。
スキーマとディレクトリ
ディレクトリは、スキーマとよく混同されやすい言葉です。OSでいくつかのファイルを作成した際に、ファイルの種類や目的、所有者などに応じ、複数のディレクトリに分けて保存します。
データベースをOSに置き換えた際は、データベース内に作ったテーブルは、OSでのファイルに相当します。そして、OSにおけるディレクトリに相当し、テーブルの目的や所有者などに応じて格納場所を別にするのがスキーマの役割です。
データベースでは、格納する場所がスキーマでOSではディレクトリと認識しておくと良いでしょう。
スキーマの設計方法を解説
最後に、スキーマの設計方法などを解説していきます。
スキーマの設計に必要な概念を見ていきましょう。
データを定義する処理
リレーショナルデータベースではデータが表となって格納されるため、データをどのように表として定義していくのかを考える作業がスキーマの設計です。
データベースの活用では、この定義に重要な役割があるといっても過言ではないので、目的に合わせた定義の処理を心掛けることが大切です。
リレーショナルデータベースでは、ER図と言われるデータの関係図を書くことによって、スキーマの設計を行います。
スキーマを変更しやすい設計が理想的
プロジェクトの成長に合わせて、データベースの構造は変化します。スキーマを変更する場面もたくさんあるので、変更しやすい設計にすることが大切です。
また、データベースは大人数で操作する場面が多いので、変更しやすいスキーマ設計を目指すことが、作業の効率化と安全性の向上につながるでしょう。
もちろん、スキーマを変更したり更新したりする際は、バージョン管理をしっかり行い、関係者全員で共有できるように記録することも大切なポイントです。
まとめ
OSにおけるディレクトリと同様に、データベース上のスキーマは情報を管理するために大切な機能です。目的に合わせたデータの定義や、変更しやすいスキーマ設計をし、より安全で作業を効率化できるデータベースを構築することが大切です。
スキーマは、データベースの設計図というイメージを持っていると良いでしょう。それぞれ三層のスキーマがほかの層に影響しないようにすることで、データベースの変更のインパクトを吸収することも重要です。