MySQL Workbench でデータモデルを作成してみる – セルティスラボ
NetBeans E コマースのチュートリアル - データモデルの設計
PK Primary Key プライマリーキー
NN Not Null ノット ヌル
UQ Unique ユニーク
B Binary バイナリ
UN Unsigned アンサインド プラス/マイナスの符号のことで、signedは符号がつく、unsignedは符号がつかない
ZF Zero Fill ゼロ フル フィールド中のユーザ入力のなかった文字位置の値が空白の場合,ゼロで置き換える。
AI Auto Increment オート インクリメント
自動増加」という意味で、AUTO INCREMENTを設定したカラムに自動で番号を割り当てていきます。 デフォルト設定では値は1から始まり、データを追加する度に+1した値がAUTO INCREMENTに設定したカラムにデータとして挿入されます。
G Generated ジェネレイテド 生成された
CURRENT_TIMESTAMP カーレント タイムスタンプ 現在時刻
belongs ビロングズ 所属
placed プレイスド 置いた 配置する
不具合
下記図の MODEL の右側の+ボタンで 新規作成すると不具合が発生します
ER図は作成できるのですがデータベース作成でエラーが発生します
ER図の作成でもテーブル下にインデックスの表示が出ない
Ver 情報
障害対応
標準でインストールしてあれば下記ホルダーに sakila_full.mwb データがありますのでこれを使う
C:\Program Files\MySQL\MySQL Workbench 8.0 CE\extras
sakila_full.mwb をダブルクリック して モデルタブを選択 後 + をクリック
適切な名前に変更 して Add Diagram をクリックすると新規のEER が作成されます。
参考
NetBeans E コマースのチュートリアル - データモデルの設計
新規作成はバグが有るため すでに有るsakila_full.mwbモデルを使用して行なう
開いたら EER Dagram タブをとじます
モデルからEER Dagram を削除します。
モデルからデータベースを削除します
空のモデルができたら + ボタンをクリックする
Name: affablebean
Charset/Collation: Default Default
Comments: Schema used with the AffableBean application
アイコンをクリック。キャンバス上にマウスを移動し再度クリックします。キャンバス上に新しいテーブルが表示されます。
customer テーブル見出しをダブルクリックします。Workbench のテーブルエディターが立ち上がります。
テーブルエディタで、Columnsタブをクリックします。表示されたテーブル内をクリックして、最初の列を編集します。以下を入力してください
終了時に、customer エンティティ(実態)は次のように見えます
category
customer_order
productr
リレーションの作成
作成したエンティティ(テーブル)が他のエンティティを参照する場合の定義を行います
参照の実態は、主キーを外部キーに関連付けることです
参照には、1方向, 双方向 があり、1対多 あるいは 多対多の関係を作成していきます
あまりイメージが湧かないかも知れませんが、GUI操作から簡単にリレーションを作成することができます
1対多の関係を作成
Category と product の関係
カテゴリには1つまたは複数の製品が含まれる
Customer と customer_order の関係
顧客は1つまたは複数の注文をする
最初に Category と product の関係(1対多の非依存関係)を設定します
Diagram パネル左の place a New 1:n Non-Identifying Relationship アイコン をクリック
product テーブル をクリック
category テーブル をクリック
この3クリックだけで、product テーブルに category を参照するための category_id が 追加され、外部キーのインデックス fk_product_category がテーブルのインデックスに追加されます
外部キー category_id のデータ型は、category テーブルの主キーに合わせられ、TINYINT 型となります
relationship 関係(エンティティ間の破線)をダブルクリックすると画面下部に Relationship editor が表示されます
Caption を関係性を端的に表す文言として belongs to に変更します
Product belongs to category (製品xは、カテゴリーyに属している)
同様に customer と customer_order の関係(1対多の非依存関係)を設定します
Diagram パネル左の place a New 1:n Non-Identifying Relationship アイコン をクリック
Customer_order テーブルをクリック
customer テーブルをクリック
Relationship(エンティティ間の破線)をダブルクリックして Caption を is placed by に変更しておきます
Customer_order is placed by customer(注文×は 顧客yにより配置されます)
多対多の関係を作成
多対多の関係は、関係する双方が、関連するエンティティに対して多くの参照を持つことができます
データベース内で 多対多の関係を実装するためには、その関係を2つの 一対多 の関係に 分けて考えます
2つのテーブルの主キーが入った3番目のテーブルを設けることで関係を定義できます
顧客の注文データについて考えてみます
customer_order エンティティに次のプロパティがあります
金額(amount)
作成日付(date_created)
確認番号(confirmation_number)
注文を発行した顧客(customer_id)
しかし、注文した製品と数量のデータがありません
customer_order と product の間に 多対多 の依存関係を作成して、注文製品と数量のデータテーブルを作成します
Diagram パネル左の place a New n:m Identifying Relationship アイコン をクリック
Customer_order テーブルをクリック
product テーブルをクリック
これだけで自動的に新しいテーブル customer_order_has_product が現れます
customer_order_has_product テーブルは、2つの親テーブル(customer_order と product)と依存していて、両方のテーブルからの参照を必要とします
外部キー fk_customer_order_has_product_customer_order と fk_customer_order_has_product_product が作られ、customer_order と product テーブルの主キーを参照しています
ちょっと冗長な名前なので customer_order_has_product テーブルをダブルクリックし、テーブルエディタを開いて名前を、’ordered_product’ に変更します
次に数量データのカラムを作製します
ordered_product テーブルの空欄部をダブルクリックして、quantity 列を追加します
これでERD(エンティティ関係図)を完了です。
一旦、このデータモデルを保存しておきます
Menu → Save Model から affablebean と名前を付け保存します。
次回からは 画面下の affablebean をクリックすればデータモデルを開けます。
データベースのフォワードエンジニアリング(Forward-Engineering)
まだ設計図が出来ただけなので、実データベースに反映させる必要があります
作成したデータモデルをデータベースサーバーへ反映させてスキーマを作成します
この処理をフォワード・エンジニアリングと言う
メニューから Database → Forward Enginee・・・ を選択します
接続するデータベース・サーバーを指定して Next をクリックします
DROP Objects Before Each CREATE Object と Generate DROP SCHEMA を選択して Next をクリックします
スキーマ/スキーマテーブルを作成場合に、DROP(削除)オプションが指定されていると、最初にこれらの item を削除してから再作成します(既にサーバーにある item を作成しようとすると、サーバーはエラーフラグを立てます)
パスワードを入力します。
Export MySQL Table Objects オプションがチェックされていることを確認して Next ボタンをクリックします
Show Filter ボタンをクリックすると affablebeanスキーマの中に5つのテーブルが含まれていることが確認出来ます
データモデルに基づいて生成された SQL スクリプトが表示されます
必要に応じて、 Save to File をクリックすればスクリプトを保存することが出来ます
Nextボタンをクリックすると実行します
パスワードを入力します
実行結果が表示されます
うまく行ったようです。MySQLサーバ上に affablebean スキーマが作成されました
Close をクリックして、データベース・サーバーに接続してみます
affablebean スキーマが作成されていいるのが確認出来ます
以上がデータモデリングからフォワードエンジニアリングによるデータベースの作成手順です