Print Friendly, PDF & Email

この記事では、弊社の新人エンジニア研修の参考にMySQLを解説します。

前回はテーブルの作成と編集を解説しました。

今回は、MySQL Workbench のデータ・モデリング機能を使ってテーブルを作成する手順を解説します。

ER図の詳細な解説は別のテキストに譲り、ここではMySQL Workbenchの機能に絞った解説を行います。

※この章は研修時間の都合により丸ごとスキップすることがあります。

ER図からテーブルを作成する

ER図からテーブルを生成する手順は以下のとおりです。

MySQL Workbenchを起動した画面の左側から以下のアイコンをクリック

モデリング

新しいスキーマ(以下の図ではmydb)が作成される

名前を変えたりすることも可能です。

新しいER図を作成するには「Add Diagram」をクリックします。

主なアイコンのメニューを解説します

①のオブジェクトの選択はテーブル間でリレーションシップを貼るときなどに使用します。

②でテーブルを作成できます。

モデリングのメニュー

テーブル名や列の変更

テーブルをダブルクリックするとテーブル名を変更したりアトリビュートを追加できます。

モデリングでテーブル名を変更したりアトリビュートを追加できる

ER図からテーブルを生成

作成したER図からテーブルを生成するには以下の手順を踏みます。

シンクロナイズモデル

メニューの「Database」から「Synchronize Model」を選択します。

モデリング5

どのDBMSに作成するかを選択できます。

当社の新人エンジニア研修ではこれ以降も全てデフォルトのまま「Next」で結構です。

モデリング7

途中でどのようなSQLが生成されるかが表示されます。

必要に応じてコピーもできます。

「Execute>」ボタンを押すことで選択したDBMSに新しいスキーマが作成されます。

ER図の主な構成要素

 ①エンティティはテーブルのことです。データのまとまりです。

アトリビュートはテーブルの列名のことです。属性と訳されることもあります。

リレーションはエンティティ間の関係性のことです。

カーディナリティは多重度のことです。

以下にもう少し細かく解説します。

アトリビュートの記号

鍵のマークは主キーを表します。

ピンクのひし形は外部キーを表します。下記の例ではcountry表のCodeがcity表にCountryCodeという名前の外部キーとなっています。

水色のひし形は主キーや外部キー以外のアトリビュートで非NULL制約があることを表します。例えば、独立年(IndepYear)や平均寿命(LifeExpectancy)は不明の国がありますからNULLを許容します。

白抜きのひし形は主キーや外部キー以外のアトリビュートで非NULL制約がないことを表します。例えば、国名(Name)や面積(SurfaceArea)、人口(Population)の不明な国はありませんからNULLを許容しません。

ER図のアトリビュート

リレーションの記号

非依存関係とは、一方が存在しなくても他方が存在できる関係のことです。点線で表示されます。

例えば、上記の例ではcoutryエンティティが存在しなくてもcityエンティティは存在できます。またその逆も言えます。

依存関係とは、一方が存在しないと他方が存在できない関係のことです。実線で表されます。

例えば、上記の例ではcoutryエンティティが存在しないとcountrylanguage(母国語)エンティティは存在できません。

非依存関係と依存関係ではアイコンの表示も違います。(下記の例ではCountryCode)

リレーションの図

カーディナリティの記号

カーディナリティは多重度のことです。

カーディナリティは、1:1、1:多、多対多の3種類に分けられます。

①エンティティを2つ選ぶことで1:1の関係を作ります。

②1:多のバージョンです。多にするエンティティを先に選ぶことに注意しましょう。(以下同じ)

③依存版の1:1関係です。

④同じく1:多の関係です。

⑤多:多の関係です。間に中間エンティティが作られます

⑥既存のアトリビュートを使い1:多の関係を作ります。

カーディナリティ

なお、1:多の関係を設定する際にはエンティティの選択順序が決まっています。

「多」を先に選ぶ、と覚えて下さい。

カーディナリティの選択順序

新人エンジニア研修では上記のことを理解しておけば大丈夫です。

以上、今回は、ER図からテーブルを作成する方法について学びました。

次は、 検索(SELECT文)について学んでいきましょう。

SELECT文はSQLのDMLの中でもっとも使用頻度の高い文です。

当社の新人エンジニア研修でもガンガン使っていきます。

しっかり理解しましょう。

データベース(MySQL)へ戻る