データベースのスキーマとは?初心者でも理解できる解説

データベースにおける重要な概念であるスキーマを理解するためには、データベースそのものの基礎知識が肝心です。データベースの基礎的な知識を理解し、自分でスキーマの設計ができるようになるための情報を紹介します。

Offers」は、時代の変化や環境にあわせてスキルを磨きたい、そんな人にぴったりのサービスです。「副業・複業」で、本業では経験できない、新しい環境/開発スタイルを経験しよう!

→「Offers」をもっと詳しくみる! かんたん60秒で副業を始めてみる

データベースの基礎知識

スキーマについて理解するために、まずはデータベースとは何なのか、定義を押さえておきましょう。

データベースの定義

大量のデータを集め、コンピューター上でデータの追加・削除・検索をしやすい状態に整理したものを『データベース』と呼びます。

データベースは、データを格納する構造やアルゴリズムによって、『階層型データベース』『リレーショナルデータベース』『オブジェクトデータベース』『カード型データベース』など、多数の種類が展開されています。

近年では、重複がなく視認しやすい『リレーショナルデータベース』が主流です。

参考:データベース(DB)とは - IT用語辞典 e-Words

インスタンスとの違い

データベースと混同されがちな『インスタンス』は、データベースとユーザーの間を仲介する役割があります。インスタンス作成後にデータベースを作成します。

データベースを直接操作すると、間違って削除してしまったり、不要な情報を追加したりなど、さまざまなヒューマンエラーを起こしかねません。

インスタンスを介してデータベースを操作することで、データの安全性やパフォーマンスの向上につながります。インスタンスは『データベースにアクセスするための過程』であり、データベースは『データを格納したファイル』という関係性です。

データベースのスキーマとは

データベースにおける『スキーマ』(schema)とは、データベースの構造で、『データベースの設計図』と考えると分かりやすいでしょう。

例えば、料理を作る際に、材料や手順を表す『レシピ』に従って作ることがあるでしょう。データベースも同じように、必要なデータの洗い出しや、そのデータの格納整理のルールを決めます。

データベースでは、そのような作業を『スキーマを定義する』と呼び、『外部スキーマ』『概念スキーマ』『内部スキーマ』の3構造に分けます。

データベースによって位置づけは異なる

スキーマは、データベース全体を理解するために割り当てられた『構造』ですが、それぞれのデータベースによって位置づけが異なる場合があります。

極端な例を挙げれば、データベースによっては、スキーマという概念を持っているデータベースと、持っていないデータベースが存在します。代表的なデータベースにおける『スキーマの定義』をみていきましょう。

Oracleのスキーマ定義

Oracle(オラクル)というデータベースの場合、1ユーザーに対して1つのスキーマが割り当てられます。

1つのスキーマの中に、ユーザーの所有するデータ(オブジェクト)を格納していきます。オラクルにおけるスキーマは、『1人1個しか持てないデータの格納庫』とイメージしておきましょう。

Oracleにはスキーマに属さない『非スキーマ・オブジェクト』も存在し、その場合はオブジェクトの所有者となるユーザーは定義されていません。つまり共有されたオブジェクトということになります。

MySQLのスキーマ定義

データベースの中でも主流の『リレーショナルデータベース』を管理するシステムをRDBMS(Relational Data Base Management System)と呼びます。Oracle社が出している『MySQL』というシステムもRDBMSです。

MySQLでは複数のデータベースを作成可能で、その一つ一つのデータベースを『スキーマ』と定義しています。複数のスキーマが作成できるため、個々のスキーマに同じ名前のテーブルを作ることが可能になります。

1人のユーザーが複数のスキーマを持てるので、実際の運用には、管理権限などをしっかり割り振ったほうが安全といえるでしょう。

3層スキーマ

データベースのスキーマを『外部スキーマ』『概念スキーマ』『内部スキーマ』の3階層に分け、定義する思想を『3層スキーマ』と呼びます。

  • 外部スキーマ:概念スキーマで定義された論理データから、必要なデータを取り出したビューなどに相当する部分
  • 概念スキーマ:データベース上の論理データで、保持するデータの要素や、データ同士の関係を定義するテーブルに相当する部分
  • 内部スキーマ:概念スキーマで定義された論理データを、具体的にどのように格納するかを定義する部分

この3階層を意識して設計することで、変更範囲を局所化でき、最小限の手間での変更が可能です。

スキーマとデータベース用語

データベースを勉強する上で、ハードルが高く感じられるスキーマですが、関連する用語の定義を明確にしておくことで、理解しやすくなるでしょう。スキーマに関係するデータベース用語を紹介し、その意味を解説します。

スキーマとテーブル

テーブルとは、データを表として整理したもので、データベースを構成する基本要素です。一方、スキーマはテーブルよりも大きな枠組みであり、複数のテーブルを整理して格納しておく場所です。

RDBMSで使われるプログラム言語であるSQLでは『テーブル名の前にスキーマ名をつける』のがルールとなっています。

スキーマとディレクトリ

『ディレクトリ』はスキーマと混同されやすい言葉です。

OSで多数のファイルを作成したとき、ファイルの種類・目的・所有者などに応じ、複数のディレクトリ(フォルダ)に分類して保存します。

データベースをOSに置き換えた場合、データベース内に作成したテーブルは、OSでの『ファイル』に相当します。そしてOSにおけるディレクトリに相当し、テーブルの目的や所有者に応じて格納場所を別にするのがスキーマです。

データベースでは格納する場所が『スキーマ』で、OSでは『ディレクトリ』と認識しておきましょう。

スキーマの設計

『スキーマ設計』とは、取り扱うデータをデータベース上に定義していく処理全般を指します。ここでは、スキーマ設計に必要な概念を紹介していきます。

データを定義していく処理

リレーショナルデータベースではデータが表形式に格納されるので、『データをどのように表形式に定義していくか』を考える作業がスキーマ設計です。

データベースの活用は、この『定義』にかかっているといっても過言ではないため、目的に応じた定義の処理を心がける必要があります。

リレーショナルデータベースの場合は、ER図(Entity Relationship Diagram)と呼ばれる、データの関係図を書くことで、スキーマ設計を行います。

スキーマ変更しやすい設計が理想

プロジェクトの成長に応じ、データベースの構造は変化していきます。スキーマを変更する場面も多くあることから、変更しやすい設計にすることが重要です。

データベースは大人数で操作する場面が多いため、変更しやすいスキーマを設計しておくことが、安全性の向上と、作業の効率化につながります。

スキーマを変更・更新する際は、きちんとバージョン管理を行い、関係者全員で共有できるように記録することも重要です。

まとめ

OSのディレクトリと同じように、データベース上のスキーマは、情報を管理するために重要な機能です。目的に応じたデータの定義や、変更しやすいスキーマの設計をして、より安全に、作業を効率化できるデータベースを構築していきましょう。

Offers」は、時代の変化や環境にあわせてスキルを磨きたい、そんな人にぴったりのサービスです。

いくつもの転職媒体を使って、企業を探し回るのはもう終わり。「副業」から始まる新しい働き方を実現します!

本業では経験できない、新しい環境/開発スタイルを経験しよう!



この記事をシェア

関連記事


副業・フリーランス

プログラミング

インタビュー

Rubyエンジニア2名の爆速採用に成功!2ヶ月で30倍の事業拡大を支える農業ITスタートアップの複業活用法

野菜や米、果物などの生産者と消費者を繋ぐオンライン直販所『食べチョク』を運営するビビッドガーデン。在宅時間をより充実させたい消費者が集まり、事業が急成長している。そこで課題となったのがエンジニア...

オンライン面談のみでテックリードクラスを複数採用!注目ベンチャー企業のwithコロナ時代に向けた採用術とは

日本で唯一のeKYC対応のデジタル身分証アプリを提供するTRUSTDOCK。今後、身分証がデジタルに置き換わるであろう不可逆な未来を実現するためにもエンジニアが必要だった。同社にはコロナ禍にも関...

mrubyを採用したソフトウェアを広げた第一人者・松本亮介が、面倒を感じながらもC言語を愛する理由とは?

世の中にはさまざまなプログラミング言語が存在します。そして、人によってはただならぬ愛着を持つ人も。そこで本企画では、このプログラミング言語にフォーカス。お気に入りのプログラミング言語のことを中心...

エンジニアとして、社会に新しい価値を提供し続けたい。カンカク志甫氏が考える本業と副業のバランス術

本業と数々の副業を両立させてきた志甫氏。副業を受ける決め手や本業と副業を両立させるコツ、これからのエンジニアのチャンスの掴み方について伺った。

デザイン

お金

採用・組織

グルメ