LoginSignup
0
0

スキーマとは

  • 「概要、要旨」といった意味を持つ言葉
  • DBの構造や仕様をよ定義するもの
     (↑データの性質、形式、他のデータの関連などのデータ定義の集合)

3層スキーマ

  • 標準的に使用されている、ANSI/X3/SPARC(Standards Planning And Requirements Committee)規格では、3層スキーマ構造をとっている
    (ANSI:アンシー、SPARC:スパーク)
  • 以下の3層に定義を分けることで、データの独立性を高めている
    • 外部スキーマ
    • 概念スキーマ
    • 内部スキーマ

20240709_004215_Original.jpeg

外部スキーマ

  • SELECT結果がこれに当たるイメージ
  • ビュー表がこれに該当する
  • 利用者(個々のプログラムやユーザ)の必要とするデータの見方を表現する
  • プログラムやユーザに対して必要なデータだけを提供
  • プログラムに加えた変更は、このスキーマまでしか影響しない

概念スキーマ

  • DBの表の定義(テーブル)がこれに当たるイメージ
  • 対象となる外界の事象を抽象化してデータの論理的な構造を定義する
    →要するにDB本体のこと
  • データの論理的関係(←ER図で表せるようなやつ)を表現する
  • プログラムからも、ハードウェアからも切り離されているため、どこにも依存せず、データの独立性が保たれている

内部スキーマ

  • DBに登録しているデータの物理ファイル(コミット、保存したデータ)のイメージ
    (実ファイル、ハードディスク上に書いてある情報のこと)
  • データの物理的関係を表現する
  • 物理的にどう記憶させるかの定義をする
  • ハードウェア的な変更はこのスキーマで影響を吸収する

データの独立性

  • ビュー(外部スキーマ、SELECT結果)を弄っても、DBのデータ格納方法(概念スキーマ、テーブル)は変わらない
    (↑プログラムに加えた変更は、外部スキーマまでしか影響しない)
  • 物理的に記憶(内部スキーマ、コミット、保存したデータ)させているハードウェアが変わっても、プログラムの修正は必要ない
    (↑ハードウェア的な変更は、内部スキーマで影響を吸収する)

備考

  • 上記の「スキーマ」は、A5Mk2に表示される「カレントスキーマ」とは別物
  • Oracleの場合は、
    1つのOracleDBの中に、いくつもDBが立てられる
    この、ぽこぽこ立てたDBのことを、「スキーマ」と製品上は呼んでいる。
    そのため、A5Mk2で出ている「カレントスキーマ」とは、OracleDBやMySQL上に立てた複数のDBのうち、どれを見ているのかを表している!!
    スキーマ = DBオブジェクト
  • MySQLの場合は、スキーマではなく「データベース」と呼んでいる。
    この辺りは、製品によって呼び方がまちまち。

参考サイト

MySQLでは「データベース」という言葉は「スキーマ」と同じ意味で使われています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0