今日のチュートリアルでは、ビジュアルデータベースモデリングユーティリティを使用してデータベース図を描画し、SQLを自動的に生成する方法を学習します。具体的には、クロスプラットフォームのビジュアルデータベース設計ツールであるMySQLWorkbenchの使用方法を確認します。
MySQL Workbenchとは何ですか?
MySQL Workbenchは、MySQLによって開発された強力なツールであり、次の3つの主要な機能領域を備えています。
- SQL開発 :MySQLクエリブラウザを置き換えます。ユーザーが既存のデータベースに接続し、SQLクエリを編集および実行できるようにします。
- データモデリング :完全なビジュアルデータベースの設計とモデリング。
- データベース管理 :MySQL管理者を置き換えます。サーバーの起動/停止、ユーザーアカウントの作成、構成ファイルの編集などを行うためのグラフィカルインターフェイス。
このチュートリアルでは、データモデリングに焦点を当てます。 データベースを最初から作成し、SQLエディターをざっと見て、生成されたSQLスクリプトを実行し、MySQL内にデータベースを作成するという側面。
MySQL Workbenchは、Windows、Linux、およびMacOSXで使用できます。 2つの異なるエディションがあります: Community OSS Edition および商用のStandardEdition 。コミュニティエディションは、ご想像のとおり、オープンソースおよびGPLライセンスです。これは完全に機能し、この記事で使用するものです。商用版では、スキーマやモデルの検証やドキュメントの生成など、いくつかの追加機能が追加されています。
注:このチュートリアルは、Community OSS Editionバージョン5.2(5.2.16)に基づいており、執筆時点(2010年4月)で現在ベータ版がリリースされています。
データベースの計画
MySQL Workbenchの使用方法を学ぶために、例としてオンラインクラス用の非常に単純なデータベースを使用します。教師のグループが、Skypeまたはその他のビデオ会議ソフトウェアを使用して、複数の科目のオンラインクラスを提供したいとします。私たちの小さなプロジェクトでは、次の情報を保存する必要があると判断しました。
ダイアグラムを描くときは、これらのデータグループ間の関係も知る必要があります。ですから、今それについて考えたほうがいいです!
- 1人の教師が多くの科目を教えることができます
- 1つの科目を多くの教師が教えることができます
- 各クラスには教師が1人しかいません
- 1人の教師が多くのクラスを教えることができます
- 1人の生徒が多くのクラスに参加できます
- 1つのクラスには多くの生徒がいます
- 1つのクラスに数時間(1週間)かかる場合があります
- 特定の曜日と時間に、複数のクラスが存在する場合があります
- クラスは約1つの主題です
- 1つの科目が多くのクラスで教えられる場合があります
この時点で、このショーのスターに会うために必要なすべての情報があります...
MySQLWorkbenchで送信
ワークベンチを起動する時が来ました。ホーム画面のデータモデリング部分で、[新しいEERモデルの作成]をクリックします。 、次の画面が表示されます:
新しいデータベースモデルを作成すると、デフォルトのmydbスキーマが含まれます。名前を変更して、DBスキーマとして使用できます。データベースモデルには、いくつかの異なるスキーマを含めることができます。
右側のカタログには、スキーマ内のすべての要素が表示され、必要に応じて要素を図にドラッグアンドドロップできます。
物理スキーマとEERダイアグラムに別々のセクションがあり、1つのデータベースモデルに複数のスキーマを含める可能性があると、混乱する可能性があります。次のセクションでは、これらの概念とそれらがどのように関連しているかについて説明します。
概念の明確化
物理スキーマには、データベースを定義するために必要なすべての要素(テーブル、列、型、インデックス、制約など)が含まれています。これが、実際に定義しているものです。グラフィカルモデルに追加されたすべてのオブジェクトは、物理スキーマにも表示されます。実際、これはスキーマを視覚的に定義する方法です。
MySQLサーバーに複数のデータベースを作成するのと同じ方法で、同じデータベースモデルに複数のスキーマを作成できます。各スキーマはMySQLデータベースになります。たとえば、次の画面には2つのスキーマタブがあります。
SQLスクリプトを生成すると、2つの別個のCREATE DATABASEステートメントが作成されます。実際には、単なる同義語であるCREATESCHEMAが作成されます。
CREATE SCHEMA IF NOT EXISTS `schema1`; CREATE SCHEMA IF NOT EXISTS `schema2`;
「EERはExtended(or Enhanced)Entity-Relationshipの略です。 。 EERダイアグラムは、標準の記号を使用してデータとデータ間の関係をモデル化するための単なる方法です。」
SHOW DATABASESを使用すると、MySQLサーバーホスト内のデータベースとして一覧表示されます。
さて、EER図とは何ですか? EERは、拡張(または拡張)エンティティ関係の略です。>。 EERダイアグラムは、標準の記号を使用してデータとデータ間の関係をモデル化するための単なる方法です。 EERモデルは複雑になる可能性がありますが、この図(このツール)の目的はすべての要素を物理スキーマにマップすることであるため、MySQLWorkbenchはすべての可能なグラフィカル要素のサブセットのみを使用します。
EERダイアグラムを使用して、データベース全体またはごく一部を定義できます。たとえば、5つのテーブルを定義したスキーマを作成し、ビジュアルエディターを使用してさらに2つのテーブルを定義する新しい図を作成できます。ダイアグラムには2つのテーブルのみが含まれますが、これら2つのテーブルも前の5つと一緒にスキーマに含まれます。
テーブルの作成
最初の例に戻ります。名前をダブルクリックして、デフォルトのスキーマの名前を変更する必要があります。この時点で、2つの可能性があります。テーブルの追加アイコンを使用して物理スキーマにテーブルを追加するか、EER図を開始してそこにすべてのテーブルを追加することができます。
最初から新しい図を追加して、スキーマを視覚的に作成することを好みます。ただし、両方の方法でそれを行う方法を示すために、[スキーマ]タブで最初の2つのテーブルを作成してから、EER図に進みます。
テーブルの追加をクリックすると アイコンをクリックすると、テーブルエディタが下のタブとして開きます:
テーブルエディタを使用して、テーブル名を変更し、(エディタの下のタブにある)[列]タブに切り替えて列を入力します。データ型を選択し(すべてのMySQLデータ型を含むドロップダウンリストがあります)、必要に応じてデフォルト値を割り当て、次のプロパティのいずれかをマークするための7つのチェックボックスがあります。
- PK-主キー
- NN-nullではない
- UQ-ユニーク
- BIN-バイナリ
- UN-署名なし
- ZF-ゼロフィル
- AI-自動インクリメント
視覚化
これはテーブルを追加する1つの方法ですが、図を使用してテーブルを作成することもできます。 図の追加をクリックすると アイコンが表示されたら、新しい空の図を開始しますが、それは私たちが望んでいることではありません。作成した2つのテーブルを図に含める必要があります。
メニューに移動する場合は、カタログオブジェクトからモデル/図を作成を選択します。 、これで図が完成し、続行する準備が整いました。
左側のテーブルアイコンを選択します。ポインターが小さなテーブルのある手に変わります。次に、キャンバス内の任意の場所をクリックして、新しいテーブルを作成します。
これで、テーブルをダブルクリックするだけで、[エディタ]タブが表示され、名前、列、タイプなどを編集できます。これは、以前と同じ方法です。
新しいテーブルの列の詳細を入力したら、関係の描画を開始する準備が整います。
関係を描く
左側の垂直ツールバーには、関係を作成するために使用できる6つのツールがあります。
最後のものについては心配しないでください。後で説明します。 1:1と1:nの関係では、識別と非識別の2種類の記号があります。それはどういう意味ですか?
関係は、一方のテーブルがもう一方のテーブルに完全に依存して存在する場合を識別すると見なされます。
関係は、一方のテーブルがもう一方のテーブルに完全に依存して存在する場合を識別すると見なされます。そのテーブルの行は、他のテーブルの行に依存します。一般的な例は、ユーザー用の電話を格納するための別のテーブルを用意することです。 1人のユーザーに複数の電話が存在する可能性があるため、別のテーブルに配置する必要がある場合がありますが、そのテーブルの各行は完全にユーザーに依存しています。所属 ユーザーに。
関係にはいくつかの影響があることに注意する必要があります。 MySQLで物理テーブルを作成する場合は、関係を何らかの方法でマッピングする必要があります。関係をテーブルにマップするためのいくつかのルールがあります:
- 1:1の関係 。一方のテーブルの主キーは、もう一方のテーブルに外部キーとして含まれています。
- 1:nの関係 。 「1」側のテーブルの主キーは、「n」側のテーブルに外部キーとして追加されます。
- n:mの関係 。新しいテーブル(結合テーブル)が作成されます。主キーは、2つの元のテーブルの主キーで構成されています。
識別関係は通常、多対多の関係から作成された結合テーブルに使用されます。これらの新しいテーブルは、元の2つのテーブルに完全に依存しています。
また、1:1および1:nの識別関係の場合、導入された外部キーはそのテーブルの主キーの一部となり、複合主キーを形成します。
幸いなことに、MySQLWorkbenchはこれらのルールを私たちのほとんどよりもよく知っています。線を引くだけで、外部キーまたは結合テーブルが自動的に作成されます。後で説明するように、手動で行うこともできます。
関係を描画するには、アイコンをクリックしてから、関連付ける2つのテーブルをクリックします。 1対多の関係の場合は、最初に「多」サイドテーブルをクリックしてから、「1」サイドテーブルをクリックします。 n:mの教師と科目の関係、および1:nの教師とクラスの関係でそれを行う方法を見てみましょう。
外部キーおよび結合テーブルに割り当てられたデフォルト名は、編集/設定/モデルタブでグローバルに変更できます。 、またはモデル/モデルオプションの現在のプロジェクトのみ 。
この方法でテーブルと外部キーを生成したくない場合は、不思議な「6番目の記号」を使用できます。
「6番目の記号」は、既存の列を使用して関係を作成します。つまり、必要な外部キーをテーブルにすでに含め、必要な結合テーブル(n:mマッピングテーブル)を作成していることを意味します。これらの結合テーブルはすでに作成されているため、n:mの関係は必要ありません。 1:nのみが利用可能です。
すべての関係を定義すると、図は次のようになります。
ダイアグラムにはデフォルトのMySQLWorkbench表記を使用していることに注意してください。ただし、 Model / Object Notationで変更できます。 およびモデル/関係表記。これは、クラシック表記のモデルの例です:
この時点で、モデルの準備が整い、SQLを生成してMySQLデータベースを作成できます。
SQLの生成
ファイル/エクスポート/フォワードエンジニアSQLCREATEスクリプトを選択します 。ファイルの生成からウィザード画面が3つしか離れていません!
保存する前に、生成されたSQLを確認および編集するオプションもあります:
以上です。 [完了]をクリックすると、SQLスクリプトが生成されて保存されます。これで、好きなように使用できます。コマンドラインのmysqlクライアントを使用してロードできます:
mysql> SOURCE scriptName.sql
または、MySQL Workbenchを使用して作業を終了し、MySQLサーバーに接続してスクリプトを実行することもできます。
MySQLサーバーへの接続
データベース/接続の管理を選択します メニューから[新規]をクリックします 。
ここでパスワードを設定したくない場合は、必要に応じてパスワードの入力を求められます。 [接続のテスト]をクリックしてパラメータが正しいかどうかを確認し、[閉じる]をクリックします。
次に、スクリプトをロードするために、SQLエディターを使用します。メインメニューで、データベース/クエリデータベースを選択します;接続を選択するように求めるウィンドウが表示されたら、[SQLエディター]タブが開きます。
次に、稲妻アイコンをクリックしてSQLスクリプトを実行すると、データベースが生成されます!
Database / Forward Engineer を使用して、実際のファイルを参照せずに、モデルから直接MySQLデータベースを生成することもできます。 メニューから;ただし、スクリプトを生成して、希望どおりに使用すると便利だと思います。