DBについて調べたり、本を読んでいると「スキーマ」という言葉を目にします。
ですが、スキーマってなんですがと改めて聞かれると、言葉が詰まったので、スキーマについて調べてみました。
DBのスキーマとは?
データの構造、性質、データベースを操作するときのルールや表現法などを定義したもの。データベースの設計図のようなものです。
3層スキーマ構造
引用:https://itmanabi.com/db-schema/
外部スキーマ
概念スキーマで定義された論理データから必要なデータです。私たちが、データを取得した時のデータですね。
概念スキーマ
データベース上の論理データです。データベースに保存しているデータや、データとデータ同志の関係性の定義したものです。
内部スキーマ
概念スキーマで定義された論理データを具体的にどのようにDBMS内部に格納するかを定義したものです。
OracleDBにとってのスキーマ
スキーマをユーザが所有するオブジェクトの論理集合と定義しています。
スキーマの目的は、
- 1 つのデータベースを多数のユーザが互いに干渉することなく使用できる
- ユーザにスキーマへのアクセス権限を与えることで、セキュリティを高める
PosgrelSQLのスキーマ
引用:https://www.dbonline.jp/postgresql/schema/index1.html
データベースに作成されるテーブルや関数といったオブジェクトをグループ化するものと定義しています。
スキーマを使用する理由は
- 1つのデータベースを多数のユーザが互いに干渉することなく使用できるように
するため。 - 管理しやすくなるよう、データベースオブジェクトを論理グループに編成するた
め。 - サードパーティのアプリケーションを別々のスキーマに入れることにより、他の
オブジェクトの名前と競合しないようにするため。
MySQLのスキーマ
リファレンスに明記がないので、正しくは理解できていないのですが、
他のDBのようなスキーマという概念はなく、DB=スキーマで使われるケースが多いようです。
MySQL Server に関する情報
- DB名
- テーブル名
- カラムのデータ型
- アクセス権限
などを提供する「INFOMATION_SCHEMA」は存在するため、DBで共通するスキーマを存在するようです。
参考