sql >> データベース >  >> RDS >> Mysql

データベーススキーマとは何ですか?

    データベース用語では、スキーマ (「skee-muh」または「skee-mah」と発音)は、データベースの構成と構造です。両方のスキーマ およびschemata 複数形として使用できます。

    スキーマには、テーブル、列、データ型、ビュー、ストアドプロシージャ、リレーションシップ、主キー、外部キーなどのスキーマオブジェクトが含まれます。

    データベーススキーマは、データベースオブジェクトとそれらの相互関係を示す視覚的な図で表すことができます。

    上記は、スキーマ図の簡単な例です。 3つのテーブルと、それらのデータ型、テーブル間の関係、および主キーと外部キーが表示されます。

    データベーススキーマのより複雑な例を次に示します。

    この場合、スキーマ図は4つのセクションに分かれています。

    • 顧客データ :名前、住所など、顧客に関連するデータ
    • ビジネス :スタッフ、店舗の場所、支払いの詳細など、ビジネスを運営するために必要なデータ
    • インベントリ :すべての製品の詳細。この場合、製品は映画であるため、映画のタイトル、そのカテゴリ、俳優などのデータが含まれています。
    • ビュー :評価に使用されるデータに関する特別な見解。

    したがって、これらのスキーマ図を確認することで、先に進んでデータベースを作成できます。実際、MySQL Workbenchを使用すると、CREATE TABLEを生成できます。 図から直接スクリプトを作成します。その後、スクリプトを使用してデータベースを作成できます。データベースをリバースエンジニアリングして図にすることもできます。

    スキーマとデータベースは同じものですか?

    データベースに関しては、スキーマについて多くの混乱があります。スキーマとデータベースに違いがあるかどうか、違いがある場合はどのような違いがあるのか​​という疑問がよく発生します。

    ベンダーによって異なります

    混乱の理由の1つは、データベースシステムが独自の方法でスキーマにアプローチする傾向があることです。

    • MySQLのドキュメントには、物理​​的には、スキーマはデータベースと同義であると記載されています。 。したがって、スキーマとデータベースは同じものです。 。
    • ただし、Oracle Databaseのドキュメントには、特定のオブジェクトをデータベース内に格納できるが、スキーマ内には格納できないと記載されています。したがって、スキーマとデータベースは2つの異なるものです。 。
    • このSQLServerの技術記事によると、スキーマはデータベース内の独立したエンティティです。つまり、それらは2つの異なるものです 。

    そのため、使用するRDBMSに応じて、スキーマとデータベースは同じものである場合とそうでない場合があります。

    SQL標準についてはどうですか?

    ISO / IEC 9075-1 SQL標準では、スキーマを永続的な名前付き記述子のコレクションとして定義しています。 。

    以前に混乱していた場合は、私が悪化させただけではないことを願っています…

    広い意味

    混乱のもう1つの理由は、スキーマという用語が原因である可能性があります。 とても広い意味があります。さまざまなコンテキスト内でさまざまな意味合いがあります。

    スキーマという単語は、ギリシャ語のskhēmaに由来します。 、これはフォームを意味します 、形状 、または計画

    スキーマは心理学で使用され、情報のカテゴリとそれらの間の関係を整理する思考または行動の整理されたパターンを記述します。

    データベースを設計する前に、情報のカテゴリとそれらの間の関係も確認する必要があります。 コンセプトを作成する必要があります 物理的から始める前のスキーマ DBMS内のスキーマ。

    ソフトウェア開発では、スキーマについて話し合うときに、概念について話し合うことができます。 スキーマ、物理的 スキーマ、内部 スキーマ、外部 スキーマ、論理 スキーマなど。これらにはそれぞれ固有の意味があります。

    DBMSによるスキーマ定義

    3つの主要なデータベースシステムからのスキーマの簡単な定義は次のとおりです。

    MySQL

    概念的には、スキーマは、テーブル、テーブル列、列のデータ型、インデックス、外部キーなど、相互に関連するデータベースオブジェクトのセットです。

    …。

    MySQLでは、物理的にはスキーマ データベースと同義です 。キーワードSCHEMAに置き換えることができます DATABASEの代わりに MySQL SQL構文で、たとえばCREATE SCHEMAを使用する CREATE DATABASEの代わりに 。

    出典:「MySQL用語集」。 MySQL5.7リファレンスマニュアル。 MySQL。 2016年6月6日取得。

    SQL Server

    データベースのテーブル、フィールド、データ型、および主キーと外部キーの名前。

    「用語集」。 SQLServer2016テクニカルドキュメント。 MicrosoftDeveloperNetwork。 2016年6月6日取得。

    Oracleデータベース

    Oracle Databaseのスキーマ・システムは、他のシステムとはかなり異なります。 Oracleのスキーマは、データベースユーザーと非常に密接に関連しています。

    スキーマは、データの論理構造またはスキーマオブジェクトのコレクションです。スキーマはデータベースユーザーによって所有されており、そのユーザーと同じ名前を持っています。各ユーザーは単一のスキーマを所有しています。

    出典:「データベースオブジェクト」。 Oracle Database Online Documentation 12cリリース1(12.1)。 Oracleヘルプセンター。 2016年6月6日取得。

    DBMSによるスキーマ定義に関するこの記事では、詳細を説明しています。

    スキーマの作成

    スキーマの定義には違いがありますが、前述の3つのDBMSはそれぞれ、CREATE SCHEMAをサポートしています。 ステートメント。

    そして、それが類似性の終わりです。

    MySQL

    MySQLでは、CREATE SCHEMA データベースを作成します。

    これは、CREATE SCHEMAが原因です CREATE DATABASEの同義語です 。つまり、CREATE SCHEMAを使用できます またはCREATE DATABASE 同じことをするために。

    Oracleデータベース

    Oracle Databaseでは、CREATE SCHEMA ステートメントは実際にはスキーマを作成しません。これは、各データベースユーザーでスキーマがすでに作成されているためです。

    Oracleでは、CREATE USER ステートメントはスキーマを作成します。

    Oracleでは、CREATE SCHEMA ステートメントを使用すると、複数のトランザクションで複数のSQLステートメントを発行しなくても、スキーマにテーブルとビューを入力し、それらのオブジェクトに対する権限を付与できます。

    SQL Server

    SQL Serverでは、CREATE SCHEMA 指定した名前でスキーマを作成します。

    MySQLとは異なり、CREATE SCHEMA ステートメントは、データベースとは別に定義されたスキーマを作成します。

    Oracleとは異なり、CREATE SCHEMA ステートメントは実際にスキーマを作成します。

    SQL Serverでは、スキーマを作成したら、ユーザーとオブジェクトをスキーマに追加できます。

    結論

    スキーマという用語 多くの異なるコンテキスト内で使用できます。特定のデータベース管理システム内でスキーマを作成する場合は、DBMSがスキーマを定義する方法で作業する必要があります。

    また、新しいDBMSに切り替えるときは、そのシステムがスキーマをどのように定義しているかを必ず調べてください。


    1. Oracleで月の名前の後の末尾のスペースを削除する方法

    2. オラクルのempテーブルで上位3つの最高給与を見つける方法は?

    3. 主キーSQLチュートリアル–データベースで主キーを定義する方法

    4. ListViewコントロールのドラッグドロップソートイベント