⇧ amazing...
データベースのスキーマ(schema)の意味が分かり辛い
Wikipediaさんによりますと、
スキーマ(schema)とは、データベースの構造であり、データベース管理システム (DBMS) でサポートされている形式言語で記述される。関係データベースでは、スキーマは関係 (表) と関係内の属性 (フィールド) 、属性や関係の関連の定義である。
三層スキーマ(Three schema approach)にはいくつかタイプがある。例えば概念-論理-物理の3つに分けるものや、外部-概念-内部の3つに分けるものがある。
概念-論理-物理 方式
ANSI/X3/SPARC(SPARCはStandards Planning And Requirements Committee:標準化計画委員会のこと)では、概念スキーマ、外部スキーマ、内部スキーマの3層スキーマを用いている。
汎用機で用いられることが多いCOBOLを開発したCODASYLにおいては副スキーマ、スキーマ、記憶スキーマの3つとしている。
⇧ とあって、単にスキーマと言った場合の意味が何を意味するのかが分かり辛いのですが、
『関係データベースでは、スキーマは関係 (表) と関係内の属性 (フィールド) 、属性や関係の関連の定義である。』
とあるように、
- Oracle database
- MySQL
- PostgreSQL
- SQL Server
といったようなRDBMS(Relational DataBase Management System)において、それぞれのデータベースで定義が異なってきそう。
スキーマはデータベース・オブジェクトの集合です。スキーマはデータベース・ユーザーによって所有され、ユーザー名と同じ名前を共有します。スキーマ・オブジェクトは、ユーザーによって作成される論理構造です。表や索引などのいくつかのオブジェクトはデータを保持します。ビューやシノニムなどのその他のオブジェクトは定義のみで構成されます。
https://docs.oracle.com/cd/F32587_01/admqs/managing-schema-objects.html
⇧ 上記のような定義とされてます。
ネット上の情報によりますと、
- MySQLではデータベースとスキーマは同じと思って大丈夫。
- PostgreSQLではデータベースがあってその下にスキーマが存在する。
- デフォルトでは public スキーマが作成される。
DB→わかる。Table→わかる。Schema→お前は一体なんなんだ・・・! | miracleave Tech Blog
⇧ う~む、データベースによってスキーマ(schema)の意味合いが変わってくるっぽい...
ちなみに、IPAのデータベーススペシャリスト試験に出てくるらしい用語の「関係スキーマ」については、
⇧ Wikipediaの「スキーマ(データベース)」の説明に出てくる「ANSI/X3/SPARC(SPARCはStandards Planning And Requirements Committee:標準化計画委員会のこと)」の「概念スキーマ」と同じような定義になってますと。
「関係スキーマ」って何なの?
In databases, relational schema may refer to
- a database schema, in the relational paradigm
- a (single) relation schema
- Database schema. ... The term "schema" refers to the organization of data as a blueprint of how the database is constructed (divided into database tables in the case of relational databases). The formal definition of a database schema is a set of formulas (sentences) called integrity constraints imposed on a database.
⇧ 英語版のWikipediaによると、3つぐらい定義されてる。
The term relation schema refers to a heading paired with a set of constraints defined in terms of that heading. A relation can thus be seen as an instantiation of a relation schema if it has the heading of that schema and it satisfies the applicable constraints.
Sometimes a relation schema is taken to include a name. A relational database definition (database schema, sometimes referred to as a relational schema) can thus be thought of as a collection of named relation schemas.
⇧ う~む、分からん...
いつも思うけど、IT業界って用語の定義について根拠となる出典が有耶無耶なことが多過ぎる気がする...
毎度モヤモヤ感が半端ない...
今回はこのへんで。